mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-06 05:05:40 +12:00
89 lines
3 KiB
C#
Executable file
89 lines
3 KiB
C#
Executable file
using HISP.Game.Horse;
|
|
using HISP.Game.Items;
|
|
using HISP.Player;
|
|
using HISP.Server;
|
|
using System.Collections.Generic;
|
|
|
|
namespace HISP.Game.Events
|
|
{
|
|
public class RandomEvent
|
|
{
|
|
public static List<RandomEvent> RandomEvents = new List<RandomEvent>();
|
|
public static RandomEvent GetRandomEvent()
|
|
{
|
|
int randomEvent = GameServer.RandomNumberGenerator.Next(0, RandomEvents.Count);
|
|
return RandomEvents[randomEvent];
|
|
}
|
|
|
|
public static void ExecuteRandomEvent(User user)
|
|
{
|
|
while (true)
|
|
{
|
|
RandomEvent rngEvent = RandomEvent.GetRandomEvent();
|
|
|
|
if (rngEvent.HorseHealthDown != 0 && user.HorseInventory.HorseList.Length <= 0)
|
|
continue;
|
|
if (rngEvent.Text.Contains("%HORSENAME%") && user.HorseInventory.HorseList.Length <= 0)
|
|
continue;
|
|
|
|
int moneyEarned = 0;
|
|
if (rngEvent.MinMoney != 0 || rngEvent.MaxMoney != 0)
|
|
moneyEarned = GameServer.RandomNumberGenerator.Next(rngEvent.MinMoney, rngEvent.MaxMoney);
|
|
|
|
|
|
if (moneyEarned < 0)
|
|
if (user.Money + moneyEarned < 0)
|
|
continue;
|
|
|
|
if (rngEvent.GiveObject != 0)
|
|
user.Inventory.AddIgnoringFull(new ItemInstance(rngEvent.GiveObject));
|
|
|
|
|
|
if(moneyEarned != 0)
|
|
user.AddMoney(moneyEarned);
|
|
|
|
HorseInstance effectedHorse = null;
|
|
|
|
if(user.HorseInventory.HorseList.Length > 0)
|
|
{
|
|
int randomHorseIndex = GameServer.RandomNumberGenerator.Next(0, user.HorseInventory.HorseList.Length);
|
|
effectedHorse = user.HorseInventory.HorseList[randomHorseIndex];
|
|
}
|
|
|
|
if (rngEvent.HorseHealthDown != 0)
|
|
effectedHorse.BasicStats.Health -= rngEvent.HorseHealthDown;
|
|
|
|
string horseName = "[This Message Should Not Appear, if it does its a bug.]";
|
|
if (effectedHorse != null)
|
|
horseName = effectedHorse.Name;
|
|
|
|
string msg = Messages.FormatRandomEvent(rngEvent.Text, moneyEarned, horseName);
|
|
byte[] chatPacket = PacketBuilder.CreateChat(Messages.RandomEventPrefix + msg, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
|
user.Client.SendPacket(chatPacket);
|
|
|
|
return;
|
|
}
|
|
}
|
|
|
|
public RandomEvent(int id, string text, int minMoney, int maxMoney, int horseHealth, int giveObject)
|
|
{
|
|
Id = id;
|
|
Text = text;
|
|
MinMoney = minMoney;
|
|
MaxMoney = maxMoney;
|
|
HorseHealthDown = horseHealth;
|
|
GiveObject = giveObject;
|
|
|
|
RandomEvents.Add(this);
|
|
}
|
|
public int Id;
|
|
public string Text;
|
|
public int MinMoney;
|
|
public int MaxMoney;
|
|
public int HorseHealthDown;
|
|
public int GiveObject;
|
|
|
|
|
|
|
|
}
|
|
}
|