mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-14 17:09:48 +12:00
Implement farrier
This commit is contained in:
parent
324ed9c47f
commit
f20e67bfd6
6 changed files with 351 additions and 135 deletions
|
@ -242,6 +242,7 @@
|
||||||
"current_shoes":"^LYour horse %HORSENAME%: shoes currently %TOTAL%/%MAX%^R1",
|
"current_shoes":"^LYour horse %HORSENAME%: shoes currently %TOTAL%/%MAX%^R1",
|
||||||
"apply_iron":"^I255^T6Apply Iron Shoe for $%PRICE% (%INCBY%)^B3JI%HORSERANDOMID%^R1",
|
"apply_iron":"^I255^T6Apply Iron Shoe for $%PRICE% (%INCBY%)^B3JI%HORSERANDOMID%^R1",
|
||||||
"apply_steel":"^I256^T6Apply Steel Shoe for $%PRICE% (%INCBY%)^B3JS%HORSERANDOMID%^R1",
|
"apply_steel":"^I256^T6Apply Steel Shoe for $%PRICE% (%INCBY%)^B3JS%HORSERANDOMID%^R1",
|
||||||
|
"shoe_all":"^R1^I256^T6Apply Steel Shoe for $%PRICE% (%INCBY%)^B3j00^R1",
|
||||||
|
|
||||||
"put_on_steel_shoes":"Your horse has had new Steel Horseshoes put on. Now shoes=%TOTAL%/%MAX%.",
|
"put_on_steel_shoes":"Your horse has had new Steel Horseshoes put on. Now shoes=%TOTAL%/%MAX%.",
|
||||||
"put_on_iron_shoes":"Your horse has had new Iron Horseshoes put on. Now shoes=%TOTAL%/%MAX%.",
|
"put_on_iron_shoes":"Your horse has had new Iron Horseshoes put on. Now shoes=%TOTAL%/%MAX%.",
|
||||||
|
@ -905,7 +906,7 @@
|
||||||
},
|
},
|
||||||
"farrier":{
|
"farrier":{
|
||||||
"price_multipliers":[
|
"price_multipliers":[
|
||||||
{"id":1,"steel":1000,"steelcost":500,"iron":750, "ironcost":100}
|
{"id":1,"steel":1000,"steel_cost":500,"iron":750, "iron_cost":100}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -425,11 +425,12 @@ namespace HISP.Game
|
||||||
public static string FarrierCurrentShoesFormat;
|
public static string FarrierCurrentShoesFormat;
|
||||||
public static string FarrierApplyIronShoesFormat;
|
public static string FarrierApplyIronShoesFormat;
|
||||||
public static string FarrierApplySteelShoesFormat;
|
public static string FarrierApplySteelShoesFormat;
|
||||||
|
public static string FarrierShoeAllFormat;
|
||||||
|
|
||||||
public static string FarrierPutOnSteelShoesMessageFormat;
|
public static string FarrierPutOnSteelShoesMessageFormat;
|
||||||
public static string FarrierPutOnIronShoesMessageFormat;
|
public static string FarrierPutOnIronShoesMessageFormat;
|
||||||
public static string FarrierPutOnSteelShoesAllMessageFormat;
|
public static string FarrierPutOnSteelShoesAllMesssageFormat;
|
||||||
|
public static string FarrierShoesCantAffordMessage;
|
||||||
|
|
||||||
// Groomer
|
// Groomer
|
||||||
|
|
||||||
|
@ -680,6 +681,40 @@ namespace HISP.Game
|
||||||
// Click
|
// Click
|
||||||
public static string NothingInterestingHere;
|
public static string NothingInterestingHere;
|
||||||
|
|
||||||
|
|
||||||
|
// Farrier Formats
|
||||||
|
public static string FormatFarrierPutOnSteelShoesAllMesssage(int curShoes, int maxShoes)
|
||||||
|
{
|
||||||
|
return FarrierPutOnSteelShoesAllMesssageFormat.Replace("%TOTAL%", curShoes.ToString()).Replace("%MAX%", maxShoes.ToString());
|
||||||
|
}
|
||||||
|
public static string FormatFarrierPutOnIronShoesMessage(int curShoes, int maxShoes)
|
||||||
|
{
|
||||||
|
return FarrierPutOnIronShoesMessageFormat.Replace("%TOTAL%", curShoes.ToString()).Replace("%MAX%", maxShoes.ToString());
|
||||||
|
}
|
||||||
|
public static string FormatFarrierPutOnSteelShoesMessage(int curShoes, int maxShoes)
|
||||||
|
{
|
||||||
|
return FarrierPutOnSteelShoesMessageFormat.Replace("%TOTAL%", curShoes.ToString()).Replace("%MAX%", maxShoes.ToString());
|
||||||
|
}
|
||||||
|
public static string FormatFarrierApplySteelToAll(int price, int incBy)
|
||||||
|
{
|
||||||
|
return FarrierShoeAllFormat.Replace("%PRICE%", price.ToString("N0")).Replace("%INCBY%", incBy.ToString());
|
||||||
|
}
|
||||||
|
public static string FormatFarrierApplySteel(int price, int incBy, int horseRandomid)
|
||||||
|
{
|
||||||
|
return FarrierApplySteelShoesFormat.Replace("%PRICE%", price.ToString("N0")).Replace("%INCBY%", incBy.ToString()).Replace("%HORSERANDOMID%", horseRandomid.ToString());
|
||||||
|
}
|
||||||
|
public static string FormatFarrierApplyIron(int price, int incBy, int horseRandomid)
|
||||||
|
{
|
||||||
|
return FarrierApplyIronShoesFormat.Replace("%PRICE%", price.ToString("N0")).Replace("%INCBY%", incBy.ToString()).Replace("%HORSERANDOMID%", horseRandomid.ToString());
|
||||||
|
}
|
||||||
|
public static string FormatFarrierCurrentShoes(string horseName, int curShoes, int maxShoes)
|
||||||
|
{
|
||||||
|
return FarrierCurrentShoesFormat.Replace("%HORSENAME%", horseName).Replace("%TOTAL%", curShoes.ToString()).Replace("%MAX%", maxShoes.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Ranch Formats
|
||||||
|
|
||||||
public static string FormatRanchTrainFail(string horseName, int timeout)
|
public static string FormatRanchTrainFail(string horseName, int timeout)
|
||||||
{
|
{
|
||||||
return RanchTrainCantTrain.Replace("%HORSENAME%", horseName).Replace("%TIME%", timeout.ToString());
|
return RanchTrainCantTrain.Replace("%HORSENAME%", horseName).Replace("%TIME%", timeout.ToString());
|
||||||
|
|
|
@ -1330,6 +1330,30 @@ namespace HISP.Game
|
||||||
message += Messages.MetaTerminator;
|
message += Messages.MetaTerminator;
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
private static string buildFarrier(User user, Farrier farrier)
|
||||||
|
{
|
||||||
|
string message = "";
|
||||||
|
int totalPrice = 0;
|
||||||
|
int maxShoes = 1000;
|
||||||
|
foreach (HorseInstance horse in user.HorseInventory.HorseList)
|
||||||
|
{
|
||||||
|
message += Messages.FormatFarrierCurrentShoes(horse.Name, horse.BasicStats.Shoes, maxShoes);
|
||||||
|
if (horse.BasicStats.Shoes < farrier.IronShoesAmount)
|
||||||
|
message += Messages.FormatFarrierApplyIron(farrier.IronCost, farrier.IronShoesAmount, horse.RandomId);
|
||||||
|
|
||||||
|
if (horse.BasicStats.Shoes < farrier.SteelShoesAmount)
|
||||||
|
{
|
||||||
|
totalPrice += farrier.SteelCost;
|
||||||
|
message += Messages.FormatFarrierApplySteel(farrier.SteelCost, farrier.SteelShoesAmount, horse.RandomId);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if(totalPrice > 0)
|
||||||
|
message += Messages.FormatFarrierApplySteelToAll(totalPrice, farrier.SteelShoesAmount);
|
||||||
|
message += Messages.ExitThisPlace;
|
||||||
|
message += Messages.MetaTerminator;
|
||||||
|
return message;
|
||||||
|
}
|
||||||
private static string buildRiddlerRiddle(User user)
|
private static string buildRiddlerRiddle(User user)
|
||||||
{
|
{
|
||||||
Riddler riddle = Riddler.GetRandomRiddle(user);
|
Riddler riddle = Riddler.GetRandomRiddle(user);
|
||||||
|
@ -1341,138 +1365,7 @@ namespace HISP.Game
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string BuildSpecialTileInfo(User user, World.SpecialTile specialTile)
|
|
||||||
{
|
|
||||||
string message = "";
|
|
||||||
|
|
||||||
if (specialTile.Code == null)
|
|
||||||
message += buildLocationString(specialTile.X, specialTile.Y);
|
|
||||||
|
|
||||||
|
|
||||||
if (specialTile.Title != null && specialTile.Title != "")
|
|
||||||
message += Messages.FormatTileName(specialTile.Title);
|
|
||||||
|
|
||||||
|
|
||||||
if (specialTile.Description != null && specialTile.Description != "")
|
|
||||||
message += specialTile.Description;
|
|
||||||
|
|
||||||
string npc = buildNpc(user, specialTile.X, specialTile.Y);
|
|
||||||
message += npc;
|
|
||||||
|
|
||||||
if (specialTile.Code == null || specialTile.Code == "")
|
|
||||||
message += buildCommonInfo(specialTile.X, specialTile.Y);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
user.MetaPriority = true;
|
|
||||||
|
|
||||||
string TileCode = specialTile.Code;
|
|
||||||
|
|
||||||
string TileArg = "";
|
|
||||||
if (TileCode.Contains("-"))
|
|
||||||
{
|
|
||||||
TileArg = TileCode.Split('-')[1];
|
|
||||||
TileCode = TileCode.Split('-')[0];
|
|
||||||
}
|
|
||||||
if (TileCode == "EXITABLE")
|
|
||||||
message += Messages.ExitThisPlace;
|
|
||||||
|
|
||||||
if (TileCode == "TRANSPORT")
|
|
||||||
{
|
|
||||||
Transport.TransportPoint point = Transport.GetTransportPoint(specialTile.X, specialTile.Y);
|
|
||||||
message += Meta.BuildTransportInfo(user, point);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (TileCode == "STRAWPILE")
|
|
||||||
{
|
|
||||||
if (user.Inventory.HasItemId(Item.Pitchfork))
|
|
||||||
message += Messages.HasPitchforkMeta;
|
|
||||||
else
|
|
||||||
message += Messages.NoPitchforkMeta;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (TileCode == "STORE")
|
|
||||||
{
|
|
||||||
int ShopID = int.Parse(TileArg);
|
|
||||||
Shop shop = Shop.GetShopById(ShopID);
|
|
||||||
user.LastShoppedAt = shop;
|
|
||||||
message += buildShopInfo(shop,user.Inventory);
|
|
||||||
|
|
||||||
}
|
|
||||||
if(TileCode == "VET")
|
|
||||||
{
|
|
||||||
int VetId = int.Parse(TileArg);
|
|
||||||
Vet vet = Vet.GetVetById(VetId);
|
|
||||||
message += buildVet(vet, user);
|
|
||||||
}
|
|
||||||
if(TileCode == "BANK")
|
|
||||||
{
|
|
||||||
message += buildBank(user);
|
|
||||||
}
|
|
||||||
if(TileCode == "WISHINGWELL")
|
|
||||||
{
|
|
||||||
message += buildWishingWell(user);
|
|
||||||
}
|
|
||||||
if(TileCode == "VENUSFLYTRAP")
|
|
||||||
{
|
|
||||||
message += buildVenusFlyTrap(user);
|
|
||||||
}
|
|
||||||
if(TileCode == "RIDDLER")
|
|
||||||
{
|
|
||||||
message += buildRiddlerRiddle(user);
|
|
||||||
}
|
|
||||||
if(TileCode == "LIBRARY")
|
|
||||||
{
|
|
||||||
message += buildLibary();
|
|
||||||
}
|
|
||||||
if(TileCode == "POND")
|
|
||||||
{
|
|
||||||
message += buildPond(user);
|
|
||||||
}
|
|
||||||
if(TileCode == "WORKSHOP")
|
|
||||||
{
|
|
||||||
message += buildWorkshop(user);
|
|
||||||
}
|
|
||||||
if(TileCode == "MUDHOLE")
|
|
||||||
{
|
|
||||||
message += buildMudHole(user);
|
|
||||||
}
|
|
||||||
if(TileCode == "RANCH")
|
|
||||||
{
|
|
||||||
message += buildRanch(user, int.Parse(TileArg));
|
|
||||||
}
|
|
||||||
if(TileCode == "MULTIROOM")
|
|
||||||
{
|
|
||||||
user.MetaPriority = false; // acturally want to track updates here >-<
|
|
||||||
if(TileArg != "")
|
|
||||||
message += buildMultiroom(TileArg, user);
|
|
||||||
}
|
|
||||||
if(TileCode == "PASSWORD")
|
|
||||||
{
|
|
||||||
message += buildPassword();
|
|
||||||
}
|
|
||||||
if(TileCode == "HORSEWHISPERER")
|
|
||||||
{
|
|
||||||
message += buildHorseWhisperer();
|
|
||||||
}
|
|
||||||
if(TileCode == "INN")
|
|
||||||
{
|
|
||||||
int InnID = int.Parse(TileArg);
|
|
||||||
Inn inn = Inn.GetInnById(InnID);
|
|
||||||
user.LastVisitedInn = inn;
|
|
||||||
message += buildInn(inn);
|
|
||||||
}
|
|
||||||
if(TileCode == "FOUNTAIN")
|
|
||||||
{
|
|
||||||
message += buildFountain();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
public static string BuildHorseEscapedMessage()
|
public static string BuildHorseEscapedMessage()
|
||||||
{
|
{
|
||||||
string message = Messages.HorseEvadedCapture;
|
string message = Messages.HorseEvadedCapture;
|
||||||
|
@ -1846,6 +1739,7 @@ namespace HISP.Game
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static string BuildTackMenu(HorseInstance horse, User user)
|
public static string BuildTackMenu(HorseInstance horse, User user)
|
||||||
{
|
{
|
||||||
string message = Messages.FormatTackedAsFollowedMessage(horse.Name);
|
string message = Messages.FormatTackedAsFollowedMessage(horse.Name);
|
||||||
|
@ -1928,6 +1822,143 @@ namespace HISP.Game
|
||||||
message += buildCommonInfo(x, y);
|
message += buildCommonInfo(x, y);
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
public static string BuildSpecialTileInfo(User user, World.SpecialTile specialTile)
|
||||||
|
{
|
||||||
|
string message = "";
|
||||||
|
|
||||||
|
if (specialTile.Code == null)
|
||||||
|
message += buildLocationString(specialTile.X, specialTile.Y);
|
||||||
|
|
||||||
|
|
||||||
|
if (specialTile.Title != null && specialTile.Title != "")
|
||||||
|
message += Messages.FormatTileName(specialTile.Title);
|
||||||
|
|
||||||
|
|
||||||
|
if (specialTile.Description != null && specialTile.Description != "")
|
||||||
|
message += specialTile.Description;
|
||||||
|
|
||||||
|
string npc = buildNpc(user, specialTile.X, specialTile.Y);
|
||||||
|
message += npc;
|
||||||
|
|
||||||
|
if (specialTile.Code == null || specialTile.Code == "")
|
||||||
|
message += buildCommonInfo(specialTile.X, specialTile.Y);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
user.MetaPriority = true;
|
||||||
|
|
||||||
|
string TileCode = specialTile.Code;
|
||||||
|
|
||||||
|
string TileArg = "";
|
||||||
|
if (TileCode.Contains("-"))
|
||||||
|
{
|
||||||
|
TileArg = TileCode.Split('-')[1];
|
||||||
|
TileCode = TileCode.Split('-')[0];
|
||||||
|
}
|
||||||
|
if (TileCode == "EXITABLE")
|
||||||
|
message += Messages.ExitThisPlace;
|
||||||
|
|
||||||
|
if (TileCode == "TRANSPORT")
|
||||||
|
{
|
||||||
|
Transport.TransportPoint point = Transport.GetTransportPoint(specialTile.X, specialTile.Y);
|
||||||
|
message += Meta.BuildTransportInfo(user, point);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TileCode == "STRAWPILE")
|
||||||
|
{
|
||||||
|
if (user.Inventory.HasItemId(Item.Pitchfork))
|
||||||
|
message += Messages.HasPitchforkMeta;
|
||||||
|
else
|
||||||
|
message += Messages.NoPitchforkMeta;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TileCode == "STORE")
|
||||||
|
{
|
||||||
|
int ShopID = int.Parse(TileArg);
|
||||||
|
Shop shop = Shop.GetShopById(ShopID);
|
||||||
|
user.LastShoppedAt = shop;
|
||||||
|
message += buildShopInfo(shop, user.Inventory);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (TileCode == "VET")
|
||||||
|
{
|
||||||
|
int VetId = int.Parse(TileArg);
|
||||||
|
Vet vet = Vet.GetVetById(VetId);
|
||||||
|
message += buildVet(vet, user);
|
||||||
|
}
|
||||||
|
if (TileCode == "BANK")
|
||||||
|
{
|
||||||
|
message += buildBank(user);
|
||||||
|
}
|
||||||
|
if (TileCode == "WISHINGWELL")
|
||||||
|
{
|
||||||
|
message += buildWishingWell(user);
|
||||||
|
}
|
||||||
|
if (TileCode == "VENUSFLYTRAP")
|
||||||
|
{
|
||||||
|
message += buildVenusFlyTrap(user);
|
||||||
|
}
|
||||||
|
if (TileCode == "RIDDLER")
|
||||||
|
{
|
||||||
|
message += buildRiddlerRiddle(user);
|
||||||
|
}
|
||||||
|
if (TileCode == "LIBRARY")
|
||||||
|
{
|
||||||
|
message += buildLibary();
|
||||||
|
}
|
||||||
|
if (TileCode == "POND")
|
||||||
|
{
|
||||||
|
message += buildPond(user);
|
||||||
|
}
|
||||||
|
if (TileCode == "WORKSHOP")
|
||||||
|
{
|
||||||
|
message += buildWorkshop(user);
|
||||||
|
}
|
||||||
|
if (TileCode == "MUDHOLE")
|
||||||
|
{
|
||||||
|
message += buildMudHole(user);
|
||||||
|
}
|
||||||
|
if (TileCode == "RANCH")
|
||||||
|
{
|
||||||
|
message += buildRanch(user, int.Parse(TileArg));
|
||||||
|
}
|
||||||
|
if(TileCode == "FARRIER")
|
||||||
|
{
|
||||||
|
message += buildFarrier(user, Farrier.GetFarrierById(int.Parse(TileArg)));
|
||||||
|
}
|
||||||
|
if (TileCode == "MULTIROOM")
|
||||||
|
{
|
||||||
|
user.MetaPriority = false; // acturally want to track updates here >-<
|
||||||
|
if (TileArg != "")
|
||||||
|
message += buildMultiroom(TileArg, user);
|
||||||
|
}
|
||||||
|
if (TileCode == "PASSWORD")
|
||||||
|
{
|
||||||
|
message += buildPassword();
|
||||||
|
}
|
||||||
|
if (TileCode == "HORSEWHISPERER")
|
||||||
|
{
|
||||||
|
message += buildHorseWhisperer();
|
||||||
|
}
|
||||||
|
if (TileCode == "INN")
|
||||||
|
{
|
||||||
|
int InnID = int.Parse(TileArg);
|
||||||
|
Inn inn = Inn.GetInnById(InnID);
|
||||||
|
user.LastVisitedInn = inn;
|
||||||
|
message += buildInn(inn);
|
||||||
|
}
|
||||||
|
if (TileCode == "FOUNTAIN")
|
||||||
|
{
|
||||||
|
message += buildFountain();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -520,6 +520,8 @@ namespace HISP.Server
|
||||||
Tracking.TrackedItemsStatsMenu.Add(trackedItem);
|
Tracking.TrackedItemsStatsMenu.Add(trackedItem);
|
||||||
Logger.DebugPrint("Registered Tracked Item: " + trackedItem.What + " value: " + trackedItem.Value);
|
Logger.DebugPrint("Registered Tracked Item: " + trackedItem.What + " value: " + trackedItem.Value);
|
||||||
}
|
}
|
||||||
|
// Register Services
|
||||||
|
|
||||||
int totalVets = gameData.services.vet.price_multipliers.Count;
|
int totalVets = gameData.services.vet.price_multipliers.Count;
|
||||||
for (int i = 0; i < totalVets; i++)
|
for (int i = 0; i < totalVets; i++)
|
||||||
{
|
{
|
||||||
|
@ -537,6 +539,22 @@ namespace HISP.Server
|
||||||
Groomer groomer = new Groomer(id, cost, max);
|
Groomer groomer = new Groomer(id, cost, max);
|
||||||
Logger.DebugPrint("Registered Groomer: " + groomer.Id + " selling at: " + groomer.PriceMultiplier.ToString(CultureInfo.InvariantCulture));
|
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;
|
int totalBooks = gameData.books.Count;
|
||||||
for (int i = 0; i < totalBooks; i++)
|
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);
|
Logger.DebugPrint("Registered Libary Book: " + book.Id + " " + book.Title + " by " + book.Author);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Register Crafts
|
||||||
int totalWorkshops = gameData.workshop.Count;
|
int totalWorkshops = gameData.workshop.Count;
|
||||||
for (int i = 0; i < totalWorkshops; i++)
|
for (int i = 0; i < totalWorkshops; i++)
|
||||||
{
|
{
|
||||||
|
@ -830,6 +850,17 @@ namespace HISP.Server
|
||||||
Messages.GroomerApplyServiceForAllFormat = gameData.messages.meta.groomer.apply_all;
|
Messages.GroomerApplyServiceForAllFormat = gameData.messages.meta.groomer.apply_all;
|
||||||
Messages.GroomerCannotImprove = gameData.messages.meta.groomer.cannot_improve;
|
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
|
// Vet
|
||||||
Messages.VetServiceHorseFormat = gameData.messages.meta.vet.service_horse;
|
Messages.VetServiceHorseFormat = gameData.messages.meta.vet.service_horse;
|
||||||
Messages.VetSerivcesNotNeeded = gameData.messages.meta.vet.not_needed;
|
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.");
|
Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to use vet services on a non existant horse.");
|
||||||
break;
|
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:
|
case PacketBuilder.HORSE_GIVE_FEED:
|
||||||
randomId = 0;
|
randomId = 0;
|
||||||
packetStr = Encoding.UTF8.GetString(packet);
|
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 = 0x2A;
|
||||||
public const byte HORSE_VET_SERVICE_ALL = 0x2F;
|
public const byte HORSE_VET_SERVICE_ALL = 0x2F;
|
||||||
public const byte HORSE_MOUNT = 0x46;
|
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_DISMOUNT = 0x47;
|
||||||
public const byte HORSE_ESCAPE = 0x1E;
|
public const byte HORSE_ESCAPE = 0x1E;
|
||||||
public const byte HORSE_CAUGHT = 0x1D;
|
public const byte HORSE_CAUGHT = 0x1D;
|
||||||
|
|
Loading…
Add table
Reference in a new issue