mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-21 20:25:51 +12:00
Implement farrier
This commit is contained in:
parent
324ed9c47f
commit
f20e67bfd6
6 changed files with 351 additions and 135 deletions
|
@ -520,6 +520,8 @@ namespace HISP.Server
|
|||
Tracking.TrackedItemsStatsMenu.Add(trackedItem);
|
||||
Logger.DebugPrint("Registered Tracked Item: " + trackedItem.What + " value: " + trackedItem.Value);
|
||||
}
|
||||
// Register Services
|
||||
|
||||
int totalVets = gameData.services.vet.price_multipliers.Count;
|
||||
for (int i = 0; i < totalVets; i++)
|
||||
{
|
||||
|
@ -537,6 +539,22 @@ namespace HISP.Server
|
|||
Groomer groomer = new Groomer(id, cost, max);
|
||||
Logger.DebugPrint("Registered Groomer: " + groomer.Id + " selling at: " + groomer.PriceMultiplier.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
int totalFarriers = gameData.services.farrier.price_multipliers.Count;
|
||||
for (int i = 0; i < totalFarriers; i++)
|
||||
{
|
||||
int id = gameData.services.farrier.price_multipliers[i].id;
|
||||
int steel = gameData.services.farrier.price_multipliers[i].steel;
|
||||
int steelcost = gameData.services.farrier.price_multipliers[i].steel_cost;
|
||||
int iron = gameData.services.farrier.price_multipliers[i].iron;
|
||||
int ironcost = gameData.services.farrier.price_multipliers[i].iron_cost;
|
||||
|
||||
Farrier farrier = new Farrier(id, steel, steelcost, iron, ironcost);
|
||||
Logger.DebugPrint("Registered Farrier: " + farrier.Id);
|
||||
}
|
||||
|
||||
|
||||
// Register Libary Books
|
||||
int totalBooks = gameData.books.Count;
|
||||
for (int i = 0; i < totalBooks; i++)
|
||||
{
|
||||
|
@ -548,6 +566,8 @@ namespace HISP.Server
|
|||
Logger.DebugPrint("Registered Libary Book: " + book.Id + " " + book.Title + " by " + book.Author);
|
||||
|
||||
}
|
||||
|
||||
// Register Crafts
|
||||
int totalWorkshops = gameData.workshop.Count;
|
||||
for (int i = 0; i < totalWorkshops; i++)
|
||||
{
|
||||
|
@ -830,6 +850,17 @@ namespace HISP.Server
|
|||
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;
|
||||
Messages.FarrierApplyIronShoesFormat = gameData.messages.meta.farrier.apply_iron;
|
||||
Messages.FarrierApplySteelShoesFormat = gameData.messages.meta.farrier.apply_steel;
|
||||
Messages.FarrierShoeAllFormat = gameData.messages.meta.farrier.shoe_all;
|
||||
|
||||
Messages.FarrierPutOnSteelShoesMessageFormat = gameData.messages.meta.farrier.put_on_steel_shoes;
|
||||
Messages.FarrierPutOnIronShoesMessageFormat = gameData.messages.meta.farrier.put_on_iron_shoes;
|
||||
Messages.FarrierPutOnSteelShoesAllMesssageFormat = gameData.messages.meta.farrier.put_on_steel_all;
|
||||
Messages.FarrierShoesCantAffordMessage = gameData.messages.meta.farrier.cant_afford_farrier;
|
||||
|
||||
// Vet
|
||||
Messages.VetServiceHorseFormat = gameData.messages.meta.vet.service_horse;
|
||||
Messages.VetSerivcesNotNeeded = gameData.messages.meta.vet.not_needed;
|
||||
|
|
|
@ -320,6 +320,121 @@ namespace HISP.Server
|
|||
Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to use vet services on a non existant horse.");
|
||||
break;
|
||||
}
|
||||
case PacketBuilder.HORSE_SHOE_STEEL:
|
||||
case PacketBuilder.HORSE_SHOE_IRON:
|
||||
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 horseFarrierServiceInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
|
||||
sender.LoggedinUser.LastViewedHorse = horseFarrierServiceInst;
|
||||
|
||||
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||
{
|
||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||
if (tile.Code.StartsWith("FARRIER-"))
|
||||
{
|
||||
string[] farrierInfo = tile.Code.Split('-');
|
||||
int farrierId = int.Parse(farrierInfo[1]);
|
||||
|
||||
Farrier farrier = Farrier.GetFarrierById(farrierId);
|
||||
int price = 0;
|
||||
int incAmount = 0;
|
||||
string msg = "";
|
||||
|
||||
if(method == PacketBuilder.HORSE_SHOE_STEEL)
|
||||
{
|
||||
price = farrier.SteelCost;
|
||||
incAmount = farrier.SteelShoesAmount;
|
||||
msg = Messages.FormatFarrierPutOnSteelShoesMessage(incAmount, 1000);
|
||||
}
|
||||
else
|
||||
{
|
||||
price = farrier.IronCost;
|
||||
incAmount = farrier.IronShoesAmount;
|
||||
msg = Messages.FormatFarrierPutOnIronShoesMessage(incAmount, 1000);
|
||||
}
|
||||
|
||||
if (sender.LoggedinUser.Money >= price)
|
||||
{
|
||||
horseFarrierServiceInst.BasicStats.Shoes = incAmount;
|
||||
sender.LoggedinUser.Money -= price;
|
||||
|
||||
byte[] messagePacket = PacketBuilder.CreateChat(msg, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(messagePacket);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] cantAffordMessage = PacketBuilder.CreateChat(Messages.FarrierShoesCantAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cantAffordMessage);
|
||||
}
|
||||
UpdateArea(sender);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to use farrier services on a non existant horse.");
|
||||
break;
|
||||
}
|
||||
case PacketBuilder.HORSE_SHOE_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("FARRIER-"))
|
||||
{
|
||||
string[] farrierInfo = tile.Code.Split('-');
|
||||
int farrierId = int.Parse(farrierInfo[1]);
|
||||
|
||||
Farrier farrier = Farrier.GetFarrierById(farrierId);
|
||||
|
||||
int totalPrice = 0;
|
||||
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
||||
{
|
||||
if (horse.BasicStats.Shoes < farrier.SteelShoesAmount)
|
||||
{
|
||||
totalPrice += farrier.SteelCost;
|
||||
}
|
||||
}
|
||||
|
||||
if (sender.LoggedinUser.Money >= totalPrice)
|
||||
{
|
||||
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
||||
{
|
||||
if (horse.BasicStats.Shoes < farrier.SteelShoesAmount)
|
||||
{
|
||||
horse.BasicStats.Shoes = farrier.SteelShoesAmount;
|
||||
}
|
||||
}
|
||||
sender.LoggedinUser.Money -= totalPrice;
|
||||
|
||||
byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatFarrierPutOnSteelShoesAllMesssage(farrier.SteelShoesAmount, 1000), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(messagePacket);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] cantAffordMessage = PacketBuilder.CreateChat(Messages.FarrierShoesCantAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cantAffordMessage);
|
||||
}
|
||||
UpdateArea(sender);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PacketBuilder.HORSE_GIVE_FEED:
|
||||
randomId = 0;
|
||||
packetStr = Encoding.UTF8.GetString(packet);
|
||||
|
|
|
@ -73,6 +73,9 @@ namespace HISP.Server
|
|||
public const byte HORSE_VET_SERVICE = 0x2A;
|
||||
public const byte HORSE_VET_SERVICE_ALL = 0x2F;
|
||||
public const byte HORSE_MOUNT = 0x46;
|
||||
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_DISMOUNT = 0x47;
|
||||
public const byte HORSE_ESCAPE = 0x1E;
|
||||
public const byte HORSE_CAUGHT = 0x1D;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue