diff --git a/DataCollection/gamedata.json b/DataCollection/gamedata.json
index 6660a78..b22cd05 100755
--- a/DataCollection/gamedata.json
+++ b/DataCollection/gamedata.json
@@ -780,7 +780,12 @@
"horse_could_not_finish":"The horse could not finish it all. Some was wasted.",
"current_status":"%HORSENAME%'s current stats:",
"holding_horse_feed":"^H
You are currently carrying the following horse feed:
",
- "horsefeed_format":"^I%ICONID%^T3[ %COUNT% ] %NAME%^B3I%RANDOMID%^R1"
+ "horsefeed_format":"^I%ICONID%^T3[ %COUNT% ] %NAME%^B3I%RANDOMID%^R1",
+
+ "feed_special_personality":"Amazingly, your horse suddenly has slightly more personality!",
+ "feed_special_inteligence":"Wonderously, your horse suddenly is slightly smarter!",
+ "feed_special_magic_bean":"Shockingly, your horse suddenly has changed height from %PREVHANDS%h to %NEWHANDS%h!",
+ "feed_special_magic_droplet":"Before your eyes, your horse has changed color from %PREVCOLOR% to %NEWCOLOR%!",
},
"horse_inventory":{
"your_horse_format":"Your horse: %NAME%:
",
@@ -9511,7 +9516,9 @@
"mod_splatterball":713,
"fishing_poll":146,
"earthworm":83,
- "birthday_token":1082
+ "birthday_token":1082,
+ "magic_droplet":1567,
+ "magic_bean":1566
},
"throwable":[
{"id":144,"message_hit":"SMACK!! %USERNAME% hit you with a Snowball, blanketing wet snow on you.", "message_throw":"SMACK!! You nailed %USERNAME% with a Snowball, blanketing wet snow on them.", "message_hit_yourself":"You toss the Snowball high into the air! SMACK! It comes back down and hits you on the head, blanketing wet snow on you."},
diff --git a/Horse Isle Server/HorseIsleServer/Game/Horse/HorseInfo.cs b/Horse Isle Server/HorseIsleServer/Game/Horse/HorseInfo.cs
index 1879d2e..f8d79b4 100755
--- a/Horse Isle Server/HorseIsleServer/Game/Horse/HorseInfo.cs
+++ b/Horse Isle Server/HorseIsleServer/Game/Horse/HorseInfo.cs
@@ -238,7 +238,7 @@ namespace HISP.Game.Horse
endurance = newEndurance;
inteligence = newInteligence;
personality = newPersonality;
- Height = newHeight;
+ height = newHeight;
}
@@ -342,7 +342,18 @@ namespace HISP.Game.Horse
personality = value;
}
}
- public int Height;
+ public int Height
+ {
+ get
+ {
+ return height;
+ }
+ set
+ {
+ height = value;
+ Database.SetHorseHeight(baseHorse.RandomId, value);
+ }
+ }
public int MinHeight;
public int MaxHeight;
@@ -354,6 +365,7 @@ namespace HISP.Game.Horse
private int endurance;
private int inteligence;
private int personality;
+ private int height;
}
public class BasicStats
{
diff --git a/Horse Isle Server/HorseIsleServer/Game/Horse/HorseInstance.cs b/Horse Isle Server/HorseIsleServer/Game/Horse/HorseInstance.cs
index 066b0a6..0868733 100755
--- a/Horse Isle Server/HorseIsleServer/Game/Horse/HorseInstance.cs
+++ b/Horse Isle Server/HorseIsleServer/Game/Horse/HorseInstance.cs
@@ -6,7 +6,7 @@ namespace HISP.Game.Horse
{
public class HorseInstance
{
- public HorseInstance(HorseInfo.Breed breed, int randomId = -1, string loadName=null, string loadDescription = "", int loadSpoiled=0, string loadCategory="KEEPER", int loadMagicUsed=0, int loadAutoSell=0, int leaseTimer=0, bool loadHidden=false, int loadOwner=0)
+ public HorseInstance(HorseInfo.Breed breed, int randomId = -1, string loadColor = null ,string loadName=null, string loadDescription = "", int loadSpoiled=0, string loadCategory="KEEPER", int loadMagicUsed=0, int loadAutoSell=0, int leaseTimer=0, bool loadHidden=false, int loadOwner=0)
{
RandomId = RandomID.NextRandomId(randomId);
owner = loadOwner;
@@ -42,7 +42,7 @@ namespace HISP.Game.Horse
description = loadDescription;
Breed = breed;
- Color = breed.Colors[GameServer.RandomNumberGenerator.Next(0, breed.Colors.Length)];
+
BasicStats = new HorseInfo.BasicStats(this, 1000, 0, 1000, 1000, 500, 200, 1000, 0);
int inteligence = (GameServer.RandomNumberGenerator.Next(breed.BaseStats.Inteligence, (breed.BaseStats.Inteligence * 2)) - breed.BaseStats.Inteligence);
@@ -57,11 +57,14 @@ namespace HISP.Game.Horse
magicUsed = loadMagicUsed;
leaseTime = leaseTimer;
hidden = loadHidden;
+ if(color != null)
+ color = loadColor;
+ else
+ color = breed.Colors[GameServer.RandomNumberGenerator.Next(0, breed.Colors.Length)];
Leaser = 0;
}
public int Leaser;
public int RandomId;
- public int owner;
public int Owner
{
get
@@ -124,7 +127,18 @@ namespace HISP.Game.Horse
}
}
public string Gender;
- public string Color;
+ public string Color
+ {
+ get
+ {
+ return color;
+ }
+ set
+ {
+ color = value;
+ Database.SetHorseColor(this.RandomId, color);
+ }
+ }
public int TrainTimer
{
get
@@ -193,6 +207,8 @@ namespace HISP.Game.Horse
}
}
+ private string color;
+ private int owner;
private string name;
private string description;
private int spoiled;
diff --git a/Horse Isle Server/HorseIsleServer/Game/Horse/Leaser.cs b/Horse Isle Server/HorseIsleServer/Game/Horse/Leaser.cs
index ae9ea98..3724975 100644
--- a/Horse Isle Server/HorseIsleServer/Game/Horse/Leaser.cs
+++ b/Horse Isle Server/HorseIsleServer/Game/Horse/Leaser.cs
@@ -60,9 +60,8 @@ namespace HISP.Game.Horse
public HorseInstance GenerateLeaseHorse()
{
- HorseInstance instance = new HorseInstance(this.Breed, -1, null, "", 0, "LEASED", 0, 0, this.Minutes);
+ HorseInstance instance = new HorseInstance(this.Breed, loadColor: this.Color, loadCategory: "LEASED", leaseTimer: this.Minutes);
instance.Name = this.HorseName;
- instance.Color = this.Color;
instance.Gender = this.Gender;
instance.Leaser = this.LeaseId;
diff --git a/Horse Isle Server/HorseIsleServer/Game/Items/Item.cs b/Horse Isle Server/HorseIsleServer/Game/Items/Item.cs
index 99b007f..48f233d 100755
--- a/Horse Isle Server/HorseIsleServer/Game/Items/Item.cs
+++ b/Horse Isle Server/HorseIsleServer/Game/Items/Item.cs
@@ -72,7 +72,8 @@ namespace HISP.Game.Items
public static int FishingPole;
public static int Earthworm;
public static int BirthdayToken;
-
+ public static int MagicBean;
+ public static int MagicDroplet;
public static ItemInformation[] GetAllWishableItems()
{
List itemInfo = new List();
diff --git a/Horse Isle Server/HorseIsleServer/Game/Messages.cs b/Horse Isle Server/HorseIsleServer/Game/Messages.cs
index 03c3a05..d2744c4 100755
--- a/Horse Isle Server/HorseIsleServer/Game/Messages.cs
+++ b/Horse Isle Server/HorseIsleServer/Game/Messages.cs
@@ -810,6 +810,11 @@ namespace HISP.Game
public static string HorseNeighsThanks;
public static string HorseCouldNotFinish;
+ public static string HorseFeedPersonalityIncreased;
+ public static string HorseFeedInteligenceIncreased;
+ public static string HorseFeedMagicBeanFormat;
+ public static string HorseFeedMagicDropletFormat;
+
// Tack horse menu
public static string HorseTackedAsFollowsFormat;
public static string HorseUnEquipSaddleFormat;
@@ -1132,6 +1137,7 @@ namespace HISP.Game
+
// Throwables
public static string FormatModSplatterBallAwardedOther(string username)
{
@@ -1604,7 +1610,14 @@ namespace HISP.Game
{
return TrainedInStatFormat.Replace("%HORSENAME%", horseName).Replace("%STAT%", stat);
}
-
+ public static string FormatHorseFeedMagicDropletUsed(string oldColor, string newColor)
+ {
+ return HorseFeedMagicDropletFormat.Replace("%PREVCOLOR%", oldColor).Replace("%NEWCOLOR%", newColor);
+ }
+ public static string FormatHorseFeedMagicBeanUsed(double oldH, double newH)
+ {
+ return HorseFeedMagicBeanFormat.Replace("%PREVHANDS%", oldH.ToString(CultureInfo.InvariantCulture)).Replace("%NEWHANDS%", newH.ToString(CultureInfo.InvariantCulture));
+ }
public static string FormatSantaOpenPresent(string itemName)
{
return SantaItemOpenedFormat.Replace("%ITEM%", itemName);
diff --git a/Horse Isle Server/HorseIsleServer/Server/Database.cs b/Horse Isle Server/HorseIsleServer/Server/Database.cs
index 42ddc1f..4809e86 100755
--- a/Horse Isle Server/HorseIsleServer/Server/Database.cs
+++ b/Horse Isle Server/HorseIsleServer/Server/Database.cs
@@ -1786,12 +1786,13 @@ namespace HISP.Server
int leaseTime = reader.GetInt32(2);
bool hidden = reader.GetString(34) == "YES";
int owner = reader.GetInt32(1);
+ string color = reader.GetString(8);
- HorseInstance inst = new HorseInstance(horseBreed, randomId, name, description, spoiled, category, magicUsed, autosell, leaseTime, hidden, owner);
+ HorseInstance inst = new HorseInstance(horseBreed, randomId, color, name, description, spoiled, category, magicUsed, autosell, leaseTime, hidden, owner);
inst.Leaser = reader.GetInt32(3);
inst.Gender = reader.GetString(7);
- inst.Color = reader.GetString(8);
+
int health = reader.GetInt32(9);
@@ -2778,7 +2779,20 @@ namespace HISP.Server
sqlCommand.Dispose();
}
}
-
+ public static void SetHorseColor(int horseRandomId, string Color)
+ {
+ using (MySqlConnection db = new MySqlConnection(ConnectionString))
+ {
+ db.Open();
+ MySqlCommand sqlCommand = db.CreateCommand();
+ sqlCommand.CommandText = "UPDATE Horses SET color=@color WHERE randomId=@randomId";
+ sqlCommand.Parameters.AddWithValue("@color", Color);
+ sqlCommand.Parameters.AddWithValue("@randomId", horseRandomId);
+ sqlCommand.Prepare();
+ sqlCommand.ExecuteNonQuery();
+ sqlCommand.Dispose();
+ }
+ }
public static void SetHorseCategory(int horseRandomId, string Category)
{
using (MySqlConnection db = new MySqlConnection(ConnectionString))
diff --git a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs
index 522bc0d..eb9cd58 100755
--- a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs
+++ b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs
@@ -872,6 +872,8 @@ namespace HISP.Server
Item.Earthworm = gameData.item.special.earthworm;
Item.BirthdayToken = gameData.item.special.birthday_token;
Item.ModSplatterball = gameData.item.special.mod_splatterball;
+ Item.MagicBean = gameData.item.special.magic_bean;
+ Item.MagicDroplet = gameData.item.special.magic_droplet;
GameServer.IdleWarning = Convert.ToInt32(gameData.messages.disconnect.client_timeout.warn_after);
GameServer.IdleTimeout = Convert.ToInt32(gameData.messages.disconnect.client_timeout.kick_after);
@@ -1696,6 +1698,11 @@ namespace HISP.Server
Messages.HorseNeighsThanks = gameData.messages.meta.horse.feed_horse.horse_neigh;
Messages.HorseCouldNotFinish = gameData.messages.meta.horse.feed_horse.horse_could_not_finish;
+ Messages.HorseFeedPersonalityIncreased = gameData.messages.meta.horse.feed_horse.feed_special_personality;
+ Messages.HorseFeedInteligenceIncreased = gameData.messages.meta.horse.feed_horse.feed_special_inteligence;
+ Messages.HorseFeedMagicBeanFormat = gameData.messages.meta.horse.feed_horse.feed_special_magic_bean;
+ Messages.HorseFeedMagicDropletFormat = gameData.messages.meta.horse.feed_horse.feed_special_magic_droplet;
+
// Tack menu (horses)
Messages.HorseTackedAsFollowsFormat = gameData.messages.meta.horse.tack_menu.tacked_as_follows;
Messages.HorseUnEquipSaddleFormat = gameData.messages.meta.horse.tack_menu.dequip_saddle;
diff --git a/Horse Isle Server/HorseIsleServer/Server/GameServer.cs b/Horse Isle Server/HorseIsleServer/Server/GameServer.cs
index fb07182..0706cff 100755
--- a/Horse Isle Server/HorseIsleServer/Server/GameServer.cs
+++ b/Horse Isle Server/HorseIsleServer/Server/GameServer.cs
@@ -1439,6 +1439,9 @@ namespace HISP.Server
Item.ItemInformation itemInfo = item.ItemInstances[0].GetItemInfo();
HorseInstance horseInstance = sender.LoggedinUser.LastViewedHorse;
bool tooMuch = false;
+ bool changePersonality = false;
+ bool changeInteligence = false;
+
foreach(Item.Effects effect in itemInfo.Effects)
{
switch(effect.EffectsWhat)
@@ -1478,14 +1481,13 @@ namespace HISP.Server
tooMuch = true;
horseInstance.BasicStats.Tiredness += effect.EffectAmount;
break;
-
case "INTELLIGENCEOFFSET":
horseInstance.AdvancedStats.Inteligence += effect.EffectAmount;
- horseInstance.MagicUsed++;
+ changeInteligence = true;
break;
case "PERSONALITYOFFSET":
horseInstance.AdvancedStats.Personality += effect.EffectAmount;
- horseInstance.MagicUsed++;
+ changePersonality = true;
break;
case "SPOILED":
horseInstance.Spoiled += effect.EffectAmount;
@@ -1494,6 +1496,42 @@ namespace HISP.Server
}
sender.LoggedinUser.Inventory.Remove(item.ItemInstances[0]);
+ if(changePersonality)
+ {
+ byte[] personalityIncreased = PacketBuilder.CreateChat(Messages.HorseFeedPersonalityIncreased, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ sender.SendPacket(personalityIncreased);
+ }
+ if (changeInteligence)
+ {
+ byte[] inteligenceIncreased = PacketBuilder.CreateChat(Messages.HorseFeedInteligenceIncreased, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ sender.SendPacket(inteligenceIncreased);
+ }
+
+ if(item.ItemId == Item.MagicDroplet)
+ {
+ string oldColor = horseInstance.Color;
+ string newColor = horseInstance.Breed.Colors[RandomNumberGenerator.Next(0, horseInstance.Breed.Colors.Length)];
+
+ horseInstance.Color = newColor;
+ horseInstance.MagicUsed++;
+
+ byte[] magicDropletUsed = PacketBuilder.CreateChat(Messages.FormatHorseFeedMagicDropletUsed(oldColor, newColor), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ sender.SendPacket(magicDropletUsed);
+ }
+
+ if(item.ItemId == Item.MagicBean)
+ {
+ double oldH = HorseInfo.CalculateHands(horseInstance.AdvancedStats.Height, false);
+ int newHeight = RandomNumberGenerator.Next(horseInstance.Breed.BaseStats.MinHeight, horseInstance.Breed.BaseStats.MaxHeight);
+ double newH = HorseInfo.CalculateHands(newHeight, false);
+
+ horseInstance.AdvancedStats.Height = newHeight;
+ horseInstance.MagicUsed++;
+
+ byte[] magicBeansUsed = PacketBuilder.CreateChat(Messages.FormatHorseFeedMagicBeanUsed(oldH, newH), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ sender.SendPacket(magicBeansUsed);
+ }
+
byte[] horseNeighThanksPacket = PacketBuilder.CreateChat(Messages.HorseNeighsThanks, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(horseNeighThanksPacket);
@@ -7431,8 +7469,11 @@ namespace HISP.Server
forClient.SendPacket(swfModulePacket);
}
- if (forClient.LoggedinUser.InRealTimeQuiz)
+ if (forClient.LoggedinUser.InRealTimeQuiz && QuizEvent != null)
+ {
+ QuizEvent.JoinEvent(forClient.LoggedinUser).UpdateParticipent();
return;
+ }
if (specialTile.Code != null)
if (!ProcessMapCodeWithArg(forClient, specialTile))