Add Magic Pellets and Droplets

This commit is contained in:
SilicaAndPina 2021-04-21 21:23:02 +12:00
parent 160688bf2d
commit 375731ada9
9 changed files with 129 additions and 19 deletions

View file

@ -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))

View file

@ -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;

View file

@ -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))