mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-21 20:25:51 +12:00
Add Training Pens
This commit is contained in:
parent
99653314ed
commit
7b8583dcea
7 changed files with 274 additions and 13 deletions
|
@ -708,6 +708,21 @@ namespace HISP.Server
|
|||
BBCode code = new BBCode(tag, meta);
|
||||
Logger.DebugPrint("Registered BBCODE: " + code.Tag + " to " + code.MetaTranslation);
|
||||
}
|
||||
int totalTrainingPens = gameData.training_pens.Count;
|
||||
for (int i = 0; i < totalTrainingPens; i++)
|
||||
{
|
||||
Trainer trainer = new Trainer();
|
||||
trainer.Id = gameData.training_pens[i].trainer_id;
|
||||
trainer.ImprovesStat = gameData.training_pens[i].improves_stat;
|
||||
trainer.ImprovesAmount = gameData.training_pens[i].improves_amount;
|
||||
trainer.ThirstCost = gameData.training_pens[i].thirst_cost;
|
||||
trainer.MoodCost = gameData.training_pens[i].mood_cost;
|
||||
trainer.HungerCost = gameData.training_pens[i].hunger_cost;
|
||||
trainer.MoneyCost = gameData.training_pens[i].money_cost;
|
||||
trainer.ExperienceGained = gameData.training_pens[i].experience;
|
||||
Trainer.Trainers.Add(trainer);
|
||||
Logger.DebugPrint("Registered Training Pen: " + trainer.Id + " for " + trainer.ImprovesStat);
|
||||
}
|
||||
|
||||
HorseInfo.HorseNames = gameData.horses.names.ToObject<string[]>();
|
||||
|
||||
|
@ -924,6 +939,14 @@ namespace HISP.Server
|
|||
Messages.FarrierPutOnSteelShoesAllMesssageFormat = gameData.messages.meta.farrier.put_on_steel_all;
|
||||
Messages.FarrierShoesCantAffordMessage = gameData.messages.meta.farrier.cant_afford_farrier;
|
||||
|
||||
// Trainng Pen
|
||||
Messages.TrainedInStatFormat = gameData.messages.meta.trainer_pen.train_success;
|
||||
Messages.TrainerHeaderFormat = gameData.messages.meta.trainer_pen.train_header;
|
||||
Messages.TrainerHorseEntryFormat = gameData.messages.meta.trainer_pen.train_format;
|
||||
Messages.TrainerHorseFullyTrainedFormat = gameData.messages.meta.trainer_pen.fully_trained;
|
||||
Messages.TrainerCantTrainAgainInFormat = gameData.messages.meta.trainer_pen.train_again_in;
|
||||
Messages.TrainerCantAfford = gameData.messages.meta.trainer_pen.cant_afford;
|
||||
|
||||
// Santa
|
||||
Messages.SantaHiddenText = gameData.messages.meta.santa.hidden_text;
|
||||
Messages.SantaWrapItemFormat = gameData.messages.meta.santa.wrap_format;
|
||||
|
|
|
@ -675,6 +675,104 @@ namespace HISP.Server
|
|||
}
|
||||
}
|
||||
break;
|
||||
case PacketBuilder.HORSE_TRAIN:
|
||||
randomId = 0;
|
||||
packetStr = Encoding.UTF8.GetString(packet);
|
||||
randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
|
||||
|
||||
if (randomIdStr == "NaN")
|
||||
break;
|
||||
|
||||
try
|
||||
{
|
||||
randomId = int.Parse(randomIdStr);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
|
||||
break;
|
||||
}
|
||||
if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
|
||||
{
|
||||
HorseInstance trainHorseInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
|
||||
sender.LoggedinUser.LastViewedHorse = trainHorseInst;
|
||||
|
||||
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||
{
|
||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||
if (tile.Code.StartsWith("TRAINER-"))
|
||||
{
|
||||
if(trainHorseInst.TrainTimer > 0)
|
||||
{
|
||||
byte[] trainSuccessfulMessage = PacketBuilder.CreateChat(Messages.FormatTrainerCantTrainAgainIn(trainHorseInst.TrainTimer), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(trainSuccessfulMessage);
|
||||
break;
|
||||
}
|
||||
string[] trainerInfo = tile.Code.Split('-');
|
||||
int trainerId = int.Parse(trainerInfo[1]);
|
||||
|
||||
Trainer trainer = Trainer.GetTrainerById(trainerId);
|
||||
|
||||
if(sender.LoggedinUser.Money >= trainer.MoneyCost)
|
||||
{
|
||||
sender.LoggedinUser.Money -= trainer.MoneyCost;
|
||||
trainHorseInst.BasicStats.Mood -= trainer.MoodCost;
|
||||
trainHorseInst.BasicStats.Thirst -= trainer.ThirstCost;
|
||||
trainHorseInst.BasicStats.Hunger -= trainer.HungerCost;
|
||||
|
||||
|
||||
switch (trainer.ImprovesStat.ToUpper())
|
||||
{
|
||||
case "SPEED":
|
||||
trainHorseInst.AdvancedStats.Speed += trainer.ImprovesAmount;
|
||||
break;
|
||||
case "STRENGTH":
|
||||
trainHorseInst.AdvancedStats.Strength += trainer.ImprovesAmount;
|
||||
break;
|
||||
case "AGILITY":
|
||||
trainHorseInst.AdvancedStats.Agility += trainer.ImprovesAmount;
|
||||
break;
|
||||
case "ENDURANCE":
|
||||
trainHorseInst.AdvancedStats.Endurance += trainer.ImprovesAmount;
|
||||
break;
|
||||
case "CONFORMATION":
|
||||
trainHorseInst.AdvancedStats.Conformation += trainer.ImprovesAmount;
|
||||
break;
|
||||
default:
|
||||
trainHorseInst.AdvancedStats.Speed += trainer.ImprovesAmount;
|
||||
break;
|
||||
}
|
||||
trainHorseInst.BasicStats.Experience += trainer.ExperienceGained;
|
||||
trainHorseInst.TrainTimer = trainer.ImprovesAmount + trainer.ExperienceGained * 50;
|
||||
|
||||
byte[] trainSuccessfulMessage = PacketBuilder.CreateChat(Messages.FormatTrainedInStatFormat(trainHorseInst.Name, trainer.ImprovesStat), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(trainSuccessfulMessage);
|
||||
|
||||
|
||||
sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Training).Count++;
|
||||
|
||||
if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Training).Count >= 1000)
|
||||
sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(26)); // Pro Trainer
|
||||
if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Training).Count >= 10000)
|
||||
sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(53)); // Top Trainer
|
||||
|
||||
UpdateArea(sender);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] cantAffordPacket = PacketBuilder.CreateChat(Messages.TrainerCantAfford, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cantAffordPacket);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to use trauber services on a non existant horse.");
|
||||
break;
|
||||
}
|
||||
case PacketBuilder.HORSE_GIVE_FEED:
|
||||
randomId = 0;
|
||||
packetStr = Encoding.UTF8.GetString(packet);
|
||||
|
@ -2069,6 +2167,8 @@ namespace HISP.Server
|
|||
byte[] soldHorseMessage = PacketBuilder.CreateChat(Messages.FormatPawneerSold(name, price), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(soldHorseMessage);
|
||||
|
||||
sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorsePawn).Count++;
|
||||
|
||||
UpdateArea(sender);
|
||||
|
||||
break;
|
||||
|
|
|
@ -81,6 +81,7 @@ namespace HISP.Server
|
|||
public const byte HORSE_SHOE_IRON = 0x28;
|
||||
public const byte HORSE_SHOE_STEEL = 0x29;
|
||||
public const byte HORSE_SHOE_ALL = 0x2E;
|
||||
public const byte HORSE_TRAIN = 0x1A;
|
||||
public const byte HORSE_MOUNT = 0x46;
|
||||
public const byte HORSE_DISMOUNT = 0x47;
|
||||
public const byte HORSE_ESCAPE = 0x1E;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue