mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-20 19:59:15 +12:00
Add Random Events
This commit is contained in:
parent
d7e350fef6
commit
9add26a6fa
5 changed files with 165 additions and 4 deletions
84
Horse Isle Server/HorseIsleServer/Game/Events/RandomEvent.cs
Normal file
84
Horse Isle Server/HorseIsleServer/Game/Events/RandomEvent.cs
Normal file
|
@ -0,0 +1,84 @@
|
|||
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 (rngEvent.GiveObject != 0)
|
||||
user.Inventory.AddIgnoringFull(new ItemInstance(rngEvent.GiveObject));
|
||||
|
||||
if(moneyEarned != 0)
|
||||
user.Money += 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.LoggedinClient.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;
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -69,6 +69,9 @@ namespace HISP.Game
|
|||
public static string SocialTypeFormat;
|
||||
public static string SocialPlayerNoLongerNearby;
|
||||
|
||||
// Random Event
|
||||
public static string RandomEventPrefix;
|
||||
|
||||
// Events : Mods Revenge
|
||||
public static string EventStartModsRevenge;
|
||||
public static string EventEndModsRevenge;
|
||||
|
@ -1171,6 +1174,12 @@ namespace HISP.Game
|
|||
return itemFormat.Replace("%USERNAME%", username);
|
||||
}
|
||||
|
||||
// Random Events
|
||||
public static string FormatRandomEvent(string txt, int moneyEarned, string horseName)
|
||||
{
|
||||
return txt.Replace("%HORSENAME%", horseName).Replace("%MONEYEARNED%", "$" + moneyEarned.ToString("N0", CultureInfo.InvariantCulture).Replace("-", ""));
|
||||
}
|
||||
|
||||
// Event : Water Ballon Game
|
||||
public static string FormatWaterBalloonGameWinner(string username, int timesHit)
|
||||
{
|
||||
|
|
|
@ -6,6 +6,7 @@ using System.Threading;
|
|||
using HISP.Player;
|
||||
using HISP.Game;
|
||||
using HISP.Game.Horse;
|
||||
using HISP.Game.Events;
|
||||
|
||||
namespace HISP.Server
|
||||
{
|
||||
|
@ -84,6 +85,12 @@ namespace HISP.Server
|
|||
SendPacket(playTimeMessage);
|
||||
}
|
||||
|
||||
|
||||
if (GameServer.RandomNumberGenerator.Next(0, 100) == 59) // RANDOM EVENT HAS OCCURED!
|
||||
{
|
||||
RandomEvent.ExecuteRandomEvent(LoggedinUser);
|
||||
}
|
||||
|
||||
bool gotoPrision = false;
|
||||
foreach(HorseInstance horse in LoggedinUser.HorseInventory.HorseList)
|
||||
{
|
||||
|
@ -196,16 +203,16 @@ namespace HISP.Server
|
|||
if (totalMinutesElapsed % 5 == 0)
|
||||
LoggedinUser.Thirst--;
|
||||
|
||||
if (totalMinutesElapsed % 10 == 0)
|
||||
if (totalMinutesElapsed % 15 == 0)
|
||||
LoggedinUser.Hunger--;
|
||||
|
||||
|
||||
if (totalMinutesElapsed % 15 == 0)
|
||||
LoggedinUser.Tiredness--;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if (!isDisconnecting)
|
||||
minuteTimer.Change(oneMinute, oneMinute);
|
||||
dcLock = false;
|
||||
|
|
|
@ -858,6 +858,32 @@ namespace HISP.Server
|
|||
Logger.DebugPrint("Registered Real Time Quiz Category: " + name);
|
||||
}
|
||||
|
||||
// Register Random Event
|
||||
|
||||
int totalRandomEvent = gameData.events.random_events.Count;
|
||||
for (int i = 0; i < totalRandomEvent; i++)
|
||||
{
|
||||
int minmoney = 0;
|
||||
int maxmoney = 0;
|
||||
int lowerHorseHealth = 0;
|
||||
int giveObj = 0;
|
||||
|
||||
int id = gameData.events.random_events[i].id;
|
||||
string txt = gameData.events.random_events[i].text;
|
||||
|
||||
if(gameData.events.random_events[i].min_money != null)
|
||||
minmoney = gameData.events.random_events[i].min_money;
|
||||
if(gameData.events.random_events[i].max_money != null)
|
||||
maxmoney = gameData.events.random_events[i].max_money;
|
||||
if(gameData.events.random_events[i].lower_horse_health != null)
|
||||
lowerHorseHealth = gameData.events.random_events[i].lower_horse_health;
|
||||
if(gameData.events.random_events[i].give_object != null)
|
||||
giveObj = gameData.events.random_events[i].give_object;
|
||||
|
||||
new RandomEvent(id, txt, minmoney, maxmoney, lowerHorseHealth, giveObj);
|
||||
|
||||
Logger.DebugPrint("Registered Random Event: " + txt);
|
||||
}
|
||||
|
||||
HorseInfo.HorseNames = gameData.horses.names.ToObject<string[]>();
|
||||
|
||||
|
@ -964,6 +990,9 @@ namespace HISP.Server
|
|||
// Message Queue
|
||||
Messages.MessageQueueHeader = gameData.messages.message_queue;
|
||||
|
||||
// Random Event
|
||||
Messages.RandomEventPrefix = gameData.messages.random_event_prefix;
|
||||
|
||||
// Events : Mods Revenge
|
||||
Messages.EventStartModsRevenge = gameData.messages.events.mods_revenge.event_start;
|
||||
Messages.EventEndModsRevenge = gameData.messages.events.mods_revenge.event_end;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue