mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-07 13:45:42 +12:00
Add Groomers
This commit is contained in:
parent
dfb177b3d1
commit
62a2e64ea5
6 changed files with 153 additions and 5 deletions
|
@ -232,11 +232,14 @@
|
|||
"not_subscribed_load":"Cannot load drawings when you are not a subscriber.",
|
||||
},
|
||||
"groomer":{
|
||||
"groomed_best_it_can":"Your horse %HORSEBREED% is now groomed as best as this groomer can!",
|
||||
"groomed_best_it_can":"Your horse %HORSENAME% is now groomed as best as this groomer can!",
|
||||
"cannot_afford_service":"You cannot afford the groomer's services at this time.",
|
||||
"groomed_best_all":"Your horses are now all groomed as best as this groomer can!",
|
||||
"dont_need":"Your horses do not require any grooming services right now.",
|
||||
|
||||
"currently_at":"^LYour horse %HORSENAME%: groom currently %TOTAL%/%MAX%^R1",
|
||||
"apply_service":"^I258^T8Apply grooming services for $%PRICE% ^B3G%RANDOMID%^R1",
|
||||
"apply_all":"^R1^R1^I258^T8Groom all %COUNT% horses for $%PRICE% ^B3g^R1",
|
||||
"apply_all":"^R1^I258^T8Groom all %COUNT% horses for $%PRICE% ^B3g^R1",
|
||||
"cannot_improve":"^I258^T9This groomer cannot improve this horse's groom.^R1",
|
||||
},
|
||||
"farrier":{
|
||||
|
|
|
@ -439,6 +439,9 @@ namespace HISP.Game
|
|||
|
||||
public static string GroomerBestToHisAbilitiesFormat;
|
||||
public static string GroomerCannotAffordMessage;
|
||||
public static string GroomerBestToHisAbilitiesALL;
|
||||
public static string GroomerDontNeed;
|
||||
|
||||
public static string GroomerHorseCurrentlyAtFormat;
|
||||
public static string GroomerApplyServiceFormat;
|
||||
public static string GroomerApplyServiceForAllFormat;
|
||||
|
@ -872,9 +875,9 @@ namespace HISP.Game
|
|||
{
|
||||
return GroomerHorseCurrentlyAtFormat.Replace("%HORSENAME%", horseName).Replace("%TOTAL%", currentGroom.ToString()).Replace("%MAX%", maxGroom.ToString());
|
||||
}
|
||||
public static string FormatHorseGroomedToBestAbilities(string breedName)
|
||||
public static string FormatHorseGroomedToBestAbilities(string horseName)
|
||||
{
|
||||
return GroomerBestToHisAbilitiesFormat.Replace("%HORSEBREED%", breedName);
|
||||
return GroomerBestToHisAbilitiesFormat.Replace("%HORSENAME%", horseName);
|
||||
}
|
||||
|
||||
public static string FormatBookReadMeta(string author, string title, string bookText)
|
||||
|
|
|
@ -1313,6 +1313,27 @@ namespace HISP.Game
|
|||
message += Messages.MetaTerminator;
|
||||
return message;
|
||||
}
|
||||
private static string buildGroomer(User User, Groomer groomer)
|
||||
{
|
||||
string message = "";
|
||||
int totalPrice = 0;
|
||||
int count = 0;
|
||||
foreach(HorseInstance horse in User.HorseInventory.HorseList)
|
||||
{
|
||||
message += Messages.FormatHorseGroomCurrentlyAt(horse.Name, horse.BasicStats.Groom, 1000);
|
||||
if(horse.BasicStats.Groom < groomer.Max)
|
||||
{
|
||||
int price = groomer.CalculatePrice(horse.BasicStats.Groom);
|
||||
totalPrice += price;
|
||||
count++;
|
||||
message += Messages.FormatGroomerApplyService(price, horse.RandomId);
|
||||
}
|
||||
}
|
||||
message += Messages.FormatGroomerApplyAllService(count, totalPrice);
|
||||
message += Messages.ExitThisPlace;
|
||||
message += Messages.MetaTerminator;
|
||||
return message;
|
||||
}
|
||||
private static string buildVet(Vet vet, User user)
|
||||
{
|
||||
string message = "";
|
||||
|
@ -1893,6 +1914,12 @@ namespace HISP.Game
|
|||
Vet vet = Vet.GetVetById(VetId);
|
||||
message += buildVet(vet, user);
|
||||
}
|
||||
if(TileCode == "GROOMER")
|
||||
{
|
||||
int groomId = int.Parse(TileArg);
|
||||
Groomer groomer = Groomer.GetGroomerById(groomId);
|
||||
message += buildGroomer(user, groomer);
|
||||
}
|
||||
if (TileCode == "BANK")
|
||||
{
|
||||
message += buildBank(user);
|
||||
|
|
|
@ -848,10 +848,14 @@ namespace HISP.Server
|
|||
// Groomer
|
||||
Messages.GroomerBestToHisAbilitiesFormat = gameData.messages.meta.groomer.groomed_best_it_can;
|
||||
Messages.GroomerCannotAffordMessage = gameData.messages.meta.groomer.cannot_afford_service;
|
||||
Messages.GroomerCannotImprove = gameData.messages.meta.groomer.cannot_improve;
|
||||
Messages.GroomerBestToHisAbilitiesALL = gameData.messages.meta.groomer.groomed_best_all;
|
||||
Messages.GroomerDontNeed = gameData.messages.meta.groomer.dont_need;
|
||||
|
||||
|
||||
Messages.GroomerHorseCurrentlyAtFormat = gameData.messages.meta.groomer.currently_at;
|
||||
Messages.GroomerApplyServiceFormat = gameData.messages.meta.groomer.apply_service;
|
||||
Messages.GroomerApplyServiceForAllFormat = gameData.messages.meta.groomer.apply_all;
|
||||
Messages.GroomerCannotImprove = gameData.messages.meta.groomer.cannot_improve;
|
||||
|
||||
// Farrier
|
||||
Messages.FarrierCurrentShoesFormat = gameData.messages.meta.farrier.current_shoes;
|
||||
|
|
|
@ -310,6 +310,7 @@ namespace HISP.Server
|
|||
{
|
||||
byte[] cantAffordMessage = PacketBuilder.CreateChat(Messages.VetCannotAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cantAffordMessage);
|
||||
break;
|
||||
}
|
||||
UpdateArea(sender);
|
||||
}
|
||||
|
@ -382,6 +383,7 @@ namespace HISP.Server
|
|||
{
|
||||
byte[] cantAffordMessage = PacketBuilder.CreateChat(Messages.FarrierShoesCantAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cantAffordMessage);
|
||||
break;
|
||||
}
|
||||
UpdateArea(sender);
|
||||
}
|
||||
|
@ -431,6 +433,113 @@ namespace HISP.Server
|
|||
{
|
||||
byte[] cantAffordMessage = PacketBuilder.CreateChat(Messages.FarrierShoesCantAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cantAffordMessage);
|
||||
break;
|
||||
}
|
||||
UpdateArea(sender);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PacketBuilder.HORSE_GROOM_SERVICE:
|
||||
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 groomHorseInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
|
||||
sender.LoggedinUser.LastViewedHorse = groomHorseInst;
|
||||
|
||||
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||
{
|
||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||
if (tile.Code.StartsWith("GROOMER-"))
|
||||
{
|
||||
string[] groomerInfo = tile.Code.Split('-');
|
||||
int groomerId = int.Parse(groomerInfo[1]);
|
||||
|
||||
Groomer groomer = Groomer.GetGroomerById(groomerId);
|
||||
int price = groomer.CalculatePrice(groomHorseInst.BasicStats.Groom);
|
||||
|
||||
|
||||
if (sender.LoggedinUser.Money >= price)
|
||||
{
|
||||
groomHorseInst.BasicStats.Groom = groomer.Max;
|
||||
sender.LoggedinUser.Money -= price;
|
||||
|
||||
byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatHorseGroomedToBestAbilities(groomHorseInst.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(messagePacket);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] cantAffordMessage = PacketBuilder.CreateChat(Messages.GroomerCannotAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cantAffordMessage);
|
||||
break;
|
||||
}
|
||||
UpdateArea(sender);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to use groomer services on a non existant horse.");
|
||||
break;
|
||||
}
|
||||
case PacketBuilder.HORSE_GROOM_SERVICE_ALL:
|
||||
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||
{
|
||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||
if (tile.Code.StartsWith("GROOMER-"))
|
||||
{
|
||||
string[] groomerInfo = tile.Code.Split('-');
|
||||
int groomId = int.Parse(groomerInfo[1]);
|
||||
Groomer groomer = Groomer.GetGroomerById(groomId);
|
||||
int price = 0;
|
||||
int count = 0;
|
||||
|
||||
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
||||
{
|
||||
if(horse.BasicStats.Groom < groomer.Max)
|
||||
{
|
||||
price += groomer.CalculatePrice(horse.BasicStats.Groom);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if (count == 0)
|
||||
{
|
||||
byte[] notNeededMessagePacket = PacketBuilder.CreateChat(Messages.GroomerDontNeed, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(notNeededMessagePacket);
|
||||
break;
|
||||
}
|
||||
else if (sender.LoggedinUser.Money >= price)
|
||||
{
|
||||
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
||||
if (horse.BasicStats.Groom < groomer.Max)
|
||||
horse.BasicStats.Groom = groomer.Max;
|
||||
|
||||
byte[] groomedAllHorsesPacket = PacketBuilder.CreateChat(Messages.GroomerBestToHisAbilitiesALL, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(groomedAllHorsesPacket);
|
||||
|
||||
sender.LoggedinUser.Money -= price;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] cannotAffordMessagePacket = PacketBuilder.CreateChat(Messages.GroomerCannotAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cannotAffordMessagePacket);
|
||||
break;
|
||||
}
|
||||
UpdateArea(sender);
|
||||
}
|
||||
|
|
|
@ -72,6 +72,8 @@ namespace HISP.Server
|
|||
public const byte HORSE_TACK_UNEQUIP = 0x3D;
|
||||
public const byte HORSE_VET_SERVICE = 0x2A;
|
||||
public const byte HORSE_VET_SERVICE_ALL = 0x2F;
|
||||
public const byte HORSE_GROOM_SERVICE_ALL = 0x33;
|
||||
public const byte HORSE_GROOM_SERVICE = 0x32;
|
||||
public const byte HORSE_MOUNT = 0x46;
|
||||
public const byte HORSE_SHOE_IRON = 0x28;
|
||||
public const byte HORSE_SHOE_STEEL = 0x29;
|
||||
|
|
Loading…
Add table
Reference in a new issue