mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-19 19:29:15 +12:00
Add Horse Pawneer
and Pawneer Orders.
This commit is contained in:
parent
2345b302fc
commit
d9cdd05acb
12 changed files with 653 additions and 263 deletions
|
@ -480,7 +480,7 @@ namespace HISP.Game.Horse
|
|||
private int experience;
|
||||
}
|
||||
|
||||
public struct Breed
|
||||
public class Breed
|
||||
{
|
||||
public int Id;
|
||||
public string Name;
|
||||
|
@ -491,8 +491,29 @@ namespace HISP.Game.Horse
|
|||
public string SpawnInArea;
|
||||
public string Swf;
|
||||
public string Type;
|
||||
}
|
||||
|
||||
public string[] GenderTypes()
|
||||
{
|
||||
string[] options = new string[2];
|
||||
if (Type == "camel")
|
||||
{
|
||||
options[0] = "cow";
|
||||
options[1] = "bull";
|
||||
}
|
||||
else if (Type == "llama")
|
||||
{
|
||||
options[0] = "male";
|
||||
options[1] = "female";
|
||||
}
|
||||
else
|
||||
{
|
||||
options[0] = "stallion";
|
||||
options[1] = "mare";
|
||||
}
|
||||
return options;
|
||||
}
|
||||
|
||||
}
|
||||
public struct HorseEquips
|
||||
{
|
||||
public Item.ItemInformation Saddle;
|
||||
|
|
|
@ -16,51 +16,19 @@ namespace HISP.Game.Horse
|
|||
if (breed.Type == "camel")
|
||||
{
|
||||
name = "Wild Camel";
|
||||
if (GameServer.RandomNumberGenerator.Next(0, 100) >= 50)
|
||||
{
|
||||
Sex = "cow";
|
||||
}
|
||||
else
|
||||
{
|
||||
Sex = "bull";
|
||||
}
|
||||
|
||||
}
|
||||
else if (breed.Type == "llama")
|
||||
{
|
||||
name = "Jungle Llama";
|
||||
if (GameServer.RandomNumberGenerator.Next(0, 100) >= 50)
|
||||
{
|
||||
Sex = "male";
|
||||
}
|
||||
else
|
||||
{
|
||||
Sex = "female";
|
||||
}
|
||||
}
|
||||
else if (breed.Type == "zebra")
|
||||
{
|
||||
name = "Wild Zebra";
|
||||
if (GameServer.RandomNumberGenerator.Next(0, 100) >= 50)
|
||||
{
|
||||
Sex = "stallion";
|
||||
}
|
||||
else
|
||||
{
|
||||
Sex = "mare";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
name = "Wild Horse";
|
||||
if (GameServer.RandomNumberGenerator.Next(0, 100) >= 50)
|
||||
{
|
||||
Sex = "stallion";
|
||||
}
|
||||
else
|
||||
{
|
||||
Sex = "mare";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -68,6 +36,8 @@ namespace HISP.Game.Horse
|
|||
name = loadName;
|
||||
}
|
||||
|
||||
Sex = breed.GenderTypes()[GameServer.RandomNumberGenerator.Next(0, 1)];
|
||||
|
||||
description = loadDescription;
|
||||
Breed = breed;
|
||||
Color = breed.Colors[GameServer.RandomNumberGenerator.Next(0, breed.Colors.Length)];
|
||||
|
|
|
@ -92,11 +92,7 @@ namespace HISP.Game.Items
|
|||
return pos;
|
||||
}
|
||||
}
|
||||
private static string capitalizeFirstLetter(string str)
|
||||
{
|
||||
char firstChar = char.ToUpper(str[0]);
|
||||
return firstChar + str.Substring(1);
|
||||
}
|
||||
|
||||
private static List<TackSet> tackSets = new List<TackSet>();
|
||||
public static TackSet[] TackSets
|
||||
{
|
||||
|
@ -126,14 +122,13 @@ namespace HISP.Game.Items
|
|||
|
||||
try
|
||||
{
|
||||
TackSet set = GetSetByName(capitalizeFirstLetter(itemInfo.EmbedSwf));
|
||||
TackSet set = GetSetByName(Converters.CapitalizeFirstLetter(itemInfo.EmbedSwf));
|
||||
set.Add(itemInfo);
|
||||
}
|
||||
catch(KeyNotFoundException)
|
||||
{
|
||||
TackSet tackSet = new TackSet();
|
||||
tackSet.SetName = capitalizeFirstLetter(itemInfo.EmbedSwf);
|
||||
Logger.DebugPrint("Created Tack Set: "+tackSet.SetName);
|
||||
tackSet.SetName = Converters.CapitalizeFirstLetter(itemInfo.EmbedSwf);
|
||||
tackSet.Add(itemInfo);
|
||||
tackSets.Add(tackSet);
|
||||
}
|
||||
|
|
|
@ -313,6 +313,7 @@ namespace HISP.Game
|
|||
public static string HorseCaptureTimer;
|
||||
public static string YouCapturedTheHorse;
|
||||
public static string HorseEvadedCapture;
|
||||
public static string HorseEscapedAnyway;
|
||||
public static string TooManyHorses;
|
||||
public static string HorsesMenuHeader;
|
||||
public static string UpdateHorseCategory;
|
||||
|
@ -643,6 +644,25 @@ namespace HISP.Game
|
|||
public static string LongFullLine;
|
||||
public static string MetaTerminator;
|
||||
|
||||
// Pawneer
|
||||
public static string PawneerUntackedHorsesICanBuy;
|
||||
public static string PawneerHorseFormat;
|
||||
public static string PawneerOrderMeta;
|
||||
public static string PawneerHorseConfirmationFormat;
|
||||
public static string PawneerHorseSoldMessagesFormat;
|
||||
public static string PawneerHorseNotFound;
|
||||
|
||||
public static string PawneerOrderSelectBreed;
|
||||
public static string PawneerOrderBreedEntryFormat;
|
||||
|
||||
public static string PawneerOrderSelectColorFormat;
|
||||
public static string PawneerOrderColorEntryFormat;
|
||||
|
||||
public static string PawneerOrderSelectGenderFormat;
|
||||
public static string PawneerOrderGenderEntryFormat;
|
||||
|
||||
public static string PawneerOrderHorseFoundFormat;
|
||||
|
||||
// Shortcuts
|
||||
public static string NoTelescope;
|
||||
|
||||
|
@ -702,6 +722,43 @@ namespace HISP.Game
|
|||
|
||||
// Click
|
||||
public static string NothingInterestingHere;
|
||||
public static string FormatPawneerOrderHorseFound(string breedName, string color, string gender, int height, int personality, int inteligence)
|
||||
{
|
||||
return PawneerOrderHorseFoundFormat.Replace("%BREEDNAME%", breedName).Replace("%COLOR%", color).Replace("%GENDER%", gender).Replace("%HEIGHT%", height.ToString()).Replace("%PERSONALITY%", personality.ToString()).Replace("%INTELIGENCE%", inteligence.ToString());
|
||||
}
|
||||
public static string FormatPawneerOrderGenderEntry(string genderName, string genderInternal)
|
||||
{
|
||||
return PawneerOrderGenderEntryFormat.Replace("%GENDERNAME%", genderName).Replace("%GENDERINTERNAL%", genderInternal);
|
||||
}
|
||||
public static string FormatPawneerOrderSelectGender(string color, string breedName)
|
||||
{
|
||||
return PawneerOrderSelectGenderFormat.Replace("%BREEDNAME%", breedName).Replace("%COLOR%", color);
|
||||
}
|
||||
|
||||
public static string FormatPawneerOrderColorEntry(string color)
|
||||
{
|
||||
return PawneerOrderColorEntryFormat.Replace("%COLOR%", color);
|
||||
}
|
||||
public static string FormatPawneerOrderSelectColor(string breedName)
|
||||
{
|
||||
return PawneerOrderSelectColorFormat.Replace("%BREEDNAME%", breedName);
|
||||
}
|
||||
public static string FormatPawneerOrderBreedEntry(string breedName, int breedId)
|
||||
{
|
||||
return PawneerOrderBreedEntryFormat.Replace("%BREEDNAME%", breedName).Replace("%BREEDID%", breedId.ToString());
|
||||
}
|
||||
public static string FormatPawneerHorseEntry(string horseName, int price, int randomId)
|
||||
{
|
||||
return PawneerHorseFormat.Replace("%HORSENAME%", horseName).Replace("%PRICE%", price.ToString("N0")).Replace("%RANDOMID%", randomId.ToString());
|
||||
}
|
||||
public static string FormatPawneerConfirmPawn(string breedName, int randomId)
|
||||
{
|
||||
return PawneerHorseConfirmationFormat.Replace("%BREEDNAME%", breedName).Replace("%RANDOMID%", randomId.ToString());
|
||||
}
|
||||
public static string FormatPawneerSold(string horseName, int price)
|
||||
{
|
||||
return PawneerHorseSoldMessagesFormat.Replace("%HORSENAME%", horseName).Replace("%PRICE%", price.ToString("N0"));
|
||||
}
|
||||
|
||||
|
||||
public static string FormatPlayerHereMessage(string playerName)
|
||||
|
|
|
@ -1430,7 +1430,13 @@ namespace HISP.Game
|
|||
message += Messages.MetaTerminator;
|
||||
return message;
|
||||
}
|
||||
|
||||
public static string BuildHorseEscapedAnyway()
|
||||
{
|
||||
string message = Messages.HorseEscapedAnyway;
|
||||
message += Messages.BackToMap;
|
||||
message += Messages.MetaTerminator;
|
||||
return message;
|
||||
}
|
||||
public static string BuildHorseCaughtMessage()
|
||||
{
|
||||
string message = Messages.YouCapturedTheHorse;
|
||||
|
@ -1879,6 +1885,74 @@ namespace HISP.Game
|
|||
message += buildCommonInfo(x, y);
|
||||
return message;
|
||||
}
|
||||
public static string BuildPawneerOrderFound(HorseInstance instance)
|
||||
{
|
||||
string message = Messages.FormatPawneerOrderHorseFound(instance.Breed.Name, instance.Color, instance.Sex, instance.AdvancedStats.Height, instance.AdvancedStats.Personality, instance.AdvancedStats.Inteligence);
|
||||
message += Messages.BackToMap;
|
||||
message += Messages.MetaTerminator;
|
||||
return message;
|
||||
}
|
||||
public static string BuildPawneerOrderGenderList(HorseInfo.Breed breed, string color)
|
||||
{
|
||||
string message = Messages.FormatPawneerOrderSelectGender(color, breed.Name);
|
||||
foreach (string gender in breed.GenderTypes())
|
||||
message += Messages.FormatPawneerOrderGenderEntry(Converters.CapitalizeFirstLetter(gender), gender);
|
||||
message += Messages.BackToMap;
|
||||
message += Messages.MetaTerminator;
|
||||
return message;
|
||||
}
|
||||
public static string BuildPawneerOrderColorList(HorseInfo.Breed breed)
|
||||
{
|
||||
string message = Messages.FormatPawneerOrderSelectColor(breed.Name);
|
||||
foreach (string color in breed.Colors)
|
||||
message += Messages.FormatPawneerOrderColorEntry(color);
|
||||
|
||||
message += Messages.BackToMap;
|
||||
message += Messages.MetaTerminator;
|
||||
return message;
|
||||
|
||||
}
|
||||
public static string BuildPawneerOrderBreedList()
|
||||
{
|
||||
string message = Messages.PawneerOrderSelectBreed;
|
||||
foreach (HorseInfo.Breed breed in HorseInfo.Breeds.OrderBy(o => o.Name).ToList())
|
||||
{
|
||||
if (breed.Swf == "")
|
||||
continue;
|
||||
if (breed.SpawnInArea == "none")
|
||||
continue;
|
||||
message += Messages.FormatPawneerOrderBreedEntry(breed.Name, breed.Id);
|
||||
}
|
||||
message += Messages.BackToMap;
|
||||
message += Messages.MetaTerminator;
|
||||
return message;
|
||||
}
|
||||
public static string BuildPawneerConfimation(HorseInstance horse)
|
||||
{
|
||||
string message = "";
|
||||
message += Messages.FormatPawneerConfirmPawn(horse.Breed.Name, horse.RandomId);
|
||||
message += Messages.BackToMap;
|
||||
message += Messages.MetaTerminator;
|
||||
return message;
|
||||
}
|
||||
|
||||
private static string buildPawneer(User user)
|
||||
{
|
||||
string message = "";
|
||||
if (user.Inventory.HasItemId(Item.PawneerOrder))
|
||||
message += Messages.PawneerOrderMeta;
|
||||
message += Messages.PawneerUntackedHorsesICanBuy;
|
||||
foreach(HorseInstance horse in user.HorseInventory.HorseList)
|
||||
{
|
||||
if(horse.Category == "TRADING" && horse.Equipment.Bridle == null && horse.Equipment.Saddle == null && horse.Equipment.SaddlePad == null && horse.Equipment.Companion == null)
|
||||
{
|
||||
message += Messages.FormatPawneerHorseEntry(horse.Name, Pawneer.CalculateTotalPrice(horse), horse.RandomId);
|
||||
}
|
||||
}
|
||||
message += Messages.ExitThisPlace;
|
||||
message += Messages.MetaTerminator;
|
||||
return message;
|
||||
}
|
||||
public static string BuildSpecialTileInfo(User user, World.SpecialTile specialTile)
|
||||
{
|
||||
string message = "";
|
||||
|
@ -1961,6 +2035,10 @@ namespace HISP.Game
|
|||
{
|
||||
message += buildWishingWell(user);
|
||||
}
|
||||
if(TileCode == "HORSEPAWNEER")
|
||||
{
|
||||
message += buildPawneer(user);
|
||||
}
|
||||
if (TileCode == "VENUSFLYTRAP")
|
||||
{
|
||||
message += buildVenusFlyTrap(user);
|
||||
|
|
57
Horse Isle Server/HorseIsleServer/Game/Services/Pawneer.cs
Normal file
57
Horse Isle Server/HorseIsleServer/Game/Services/Pawneer.cs
Normal file
|
@ -0,0 +1,57 @@
|
|||
using HISP.Game.Horse;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace HISP.Game.Services
|
||||
{
|
||||
public class Pawneer
|
||||
{
|
||||
public Pawneer(int breedId, int basePrice)
|
||||
{
|
||||
BreedId = breedId;
|
||||
BasePrice = basePrice;
|
||||
}
|
||||
public static List<Pawneer> PawneerPriceModels = new List<Pawneer>();
|
||||
public int BreedId;
|
||||
public int BasePrice;
|
||||
|
||||
|
||||
public static int GetPawneerBasePriceForHorse(HorseInfo.Breed breed)
|
||||
{
|
||||
foreach (Pawneer ppm in PawneerPriceModels)
|
||||
{
|
||||
if (ppm.BreedId == breed.Id)
|
||||
{
|
||||
return ppm.BasePrice;
|
||||
}
|
||||
}
|
||||
|
||||
throw new Exception("No pawneeer base price found >_> for breed #" + breed.Id + " " + breed.Name);
|
||||
}
|
||||
public static int CalculateTotalPrice(HorseInstance horse)
|
||||
{
|
||||
HorseInfo.StatCalculator speedStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.SPEED);
|
||||
HorseInfo.StatCalculator strengthStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.STRENGTH);
|
||||
HorseInfo.StatCalculator conformationStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.CONFORMATION);
|
||||
HorseInfo.StatCalculator agilityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.AGILITY);
|
||||
HorseInfo.StatCalculator enduranceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.ENDURANCE);
|
||||
|
||||
int basePrice = GetPawneerBasePriceForHorse(horse.Breed);
|
||||
|
||||
int additionalPrice = speedStat.BreedOffset * 350;
|
||||
additionalPrice += strengthStat.BreedOffset * 350;
|
||||
additionalPrice += conformationStat.BreedOffset * 350;
|
||||
additionalPrice += agilityStat.BreedOffset * 350;
|
||||
additionalPrice += enduranceStat.BreedOffset * 350;
|
||||
|
||||
additionalPrice += horse.BasicStats.Health * 40;
|
||||
additionalPrice += horse.BasicStats.Shoes * 20;
|
||||
|
||||
int price = basePrice + additionalPrice;
|
||||
return price;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -73,6 +73,10 @@ namespace HISP.Player
|
|||
return 7; // will change when ranches are implemented.
|
||||
}
|
||||
}
|
||||
public HorseInfo.Breed PawneerOrderBreed = null;
|
||||
public string PawneerOrderColor = "";
|
||||
public string PawneerOrderGender = "";
|
||||
|
||||
public Mailbox MailBox;
|
||||
public Friends Friends;
|
||||
public string Password; // For chat filter.
|
||||
|
|
|
@ -5,6 +5,7 @@ using HISP.Game.Horse;
|
|||
using HISP.Game.SwfModules;
|
||||
using HISP.Security;
|
||||
using HISP.Server;
|
||||
using HISP.Game.Services;
|
||||
|
||||
namespace HISP
|
||||
{
|
||||
|
@ -27,6 +28,7 @@ namespace HISP
|
|||
Brickpoet.LoadPoetryRooms();
|
||||
Drawingroom.LoadAllDrawingRooms();
|
||||
Item.DoSpecialCases();
|
||||
|
||||
GameServer.StartServer();
|
||||
|
||||
}
|
||||
|
|
|
@ -28,11 +28,15 @@ namespace HISP.Server
|
|||
|
||||
|
||||
|
||||
public static Double PointsToDistance(int x1, int y1, int x2, int y2)
|
||||
public static double PointsToDistance(int x1, int y1, int x2, int y2)
|
||||
{
|
||||
return Math.Sqrt(Math.Pow((x2 - x1), 2) + Math.Pow((y2 - y1), 2));
|
||||
}
|
||||
|
||||
public static string CapitalizeFirstLetter(string str)
|
||||
{
|
||||
char firstChar = char.ToUpper(str[0]);
|
||||
return firstChar + str.Substring(1);
|
||||
}
|
||||
public static DateTime UnixTimeStampToDateTime(double unixTimeStamp)
|
||||
{
|
||||
// Unix timestamp is seconds past epoch
|
||||
|
|
|
@ -511,6 +511,17 @@ namespace HISP.Server
|
|||
HorseInfo.Breeds.Add(horseBreed);
|
||||
Logger.DebugPrint("Registered Horse Breed: #" + horseBreed.Id + ": " + horseBreed.Name);
|
||||
}
|
||||
// Register Breed Prices @ Pawneer Order
|
||||
int totalBreedPrices = gameData.horses.pawneer_base_price.Count;
|
||||
for(int i = 0; i < totalBreedPrices; i++)
|
||||
{
|
||||
int id = gameData.horses.pawneer_base_price[i].breed_id;
|
||||
int price = gameData.horses.pawneer_base_price[i].price;
|
||||
Pawneer pawneerPricing = new Pawneer(id, price);
|
||||
Pawneer.PawneerPriceModels.Add(pawneerPricing);
|
||||
Logger.DebugPrint("Registered Pawneer Base Price " + pawneerPricing.BreedId + " for $" + pawneerPricing.BasePrice.ToString("N0"));
|
||||
}
|
||||
|
||||
int totalCategories = gameData.horses.categorys.Count;
|
||||
for(int i = 0; i < totalCategories; i++)
|
||||
{
|
||||
|
@ -913,6 +924,25 @@ namespace HISP.Server
|
|||
Messages.FarrierPutOnSteelShoesAllMesssageFormat = gameData.messages.meta.farrier.put_on_steel_all;
|
||||
Messages.FarrierShoesCantAffordMessage = gameData.messages.meta.farrier.cant_afford_farrier;
|
||||
|
||||
// Pawneer
|
||||
Messages.PawneerUntackedHorsesICanBuy = gameData.messages.meta.pawneer.untacked_i_can_buy;
|
||||
Messages.PawneerHorseFormat = gameData.messages.meta.pawneer.pawn_horse;
|
||||
Messages.PawneerOrderMeta = gameData.messages.meta.pawneer.pawneer_order;
|
||||
Messages.PawneerHorseConfirmationFormat = gameData.messages.meta.pawneer.are_you_sure;
|
||||
Messages.PawneerHorseSoldMessagesFormat = gameData.messages.meta.pawneer.horse_sold;
|
||||
Messages.PawneerHorseNotFound = gameData.messages.meta.pawneer.horse_not_found;
|
||||
|
||||
Messages.PawneerOrderSelectBreed = gameData.messages.meta.pawneer.order.select_breed;
|
||||
Messages.PawneerOrderBreedEntryFormat = gameData.messages.meta.pawneer.order.breed_entry;
|
||||
|
||||
Messages.PawneerOrderSelectColorFormat = gameData.messages.meta.pawneer.order.select_color;
|
||||
Messages.PawneerOrderColorEntryFormat = gameData.messages.meta.pawneer.order.color_entry;
|
||||
|
||||
Messages.PawneerOrderSelectGenderFormat = gameData.messages.meta.pawneer.order.select_gender;
|
||||
Messages.PawneerOrderGenderEntryFormat = gameData.messages.meta.pawneer.order.gender_entry;
|
||||
|
||||
Messages.PawneerOrderHorseFoundFormat = gameData.messages.meta.pawneer.order.found;
|
||||
|
||||
// Vet
|
||||
Messages.VetServiceHorseFormat = gameData.messages.meta.vet.service_horse;
|
||||
Messages.VetSerivcesNotNeeded = gameData.messages.meta.vet.not_needed;
|
||||
|
@ -1010,8 +1040,10 @@ namespace HISP.Server
|
|||
Messages.HorsesHere = gameData.messages.meta.horse.horses_here;
|
||||
Messages.WildHorseFormat = gameData.messages.meta.horse.wild_horse;
|
||||
Messages.HorseCaptureTimer = gameData.messages.meta.horse.horse_timer;
|
||||
Messages.YouCapturedTheHorse = gameData.messages.meta.horse.hore_caught;
|
||||
|
||||
Messages.YouCapturedTheHorse = gameData.messages.meta.horse.horse_caught;
|
||||
Messages.HorseEvadedCapture = gameData.messages.meta.horse.horse_escaped;
|
||||
Messages.HorseEscapedAnyway = gameData.messages.meta.horse.horse_escaped_anyway;
|
||||
|
||||
Messages.HorsesMenuHeader = gameData.messages.meta.horse.horses_menu;
|
||||
Messages.TooManyHorses = gameData.messages.meta.horse.too_many_horses;
|
||||
|
|
|
@ -1203,16 +1203,16 @@ namespace HISP.Server
|
|||
WildHorse capturing = WildHorse.GetHorseById(sender.LoggedinUser.CapturingHorseId);
|
||||
sender.LoggedinUser.CapturingHorseId = 0;
|
||||
|
||||
capturing.Escape();
|
||||
Logger.InfoPrint(sender.LoggedinUser.Username + " Failed to capture: " + capturing.Instance.Breed.Name + " new location: " + capturing.X + ", " + capturing.Y);
|
||||
if (capturing.X == sender.LoggedinUser.X && capturing.Y == sender.LoggedinUser.Y)
|
||||
{
|
||||
capturing.Escape();
|
||||
Logger.InfoPrint(sender.LoggedinUser.Username + " Failed to capture: " + capturing.Instance.Breed.Name + " new location: " + capturing.X + ", " + capturing.Y);
|
||||
|
||||
sender.LoggedinUser.MetaPriority = true;
|
||||
byte[] metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildHorseEscapedMessage());
|
||||
sender.SendPacket(metaPacket);
|
||||
|
||||
UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||
}
|
||||
}
|
||||
|
||||
sender.LoggedinUser.MetaPriority = true;
|
||||
byte[] hoseEscaped = PacketBuilder.CreateMetaPacket(Meta.BuildHorseEscapedMessage());
|
||||
sender.SendPacket(hoseEscaped);
|
||||
break;
|
||||
case PacketBuilder.HORSE_CAUGHT:
|
||||
if (WildHorse.DoesHorseExist(sender.LoggedinUser.CapturingHorseId))
|
||||
|
@ -1220,33 +1220,38 @@ namespace HISP.Server
|
|||
WildHorse capturing = WildHorse.GetHorseById(sender.LoggedinUser.CapturingHorseId);
|
||||
sender.LoggedinUser.CapturingHorseId = 0;
|
||||
|
||||
try
|
||||
if (capturing.X == sender.LoggedinUser.X && capturing.Y == sender.LoggedinUser.Y)
|
||||
{
|
||||
capturing.Capture(sender.LoggedinUser);
|
||||
}
|
||||
catch(InventoryFullException)
|
||||
{
|
||||
byte[] chatMsg = PacketBuilder.CreateChat(Messages.TooManyHorses, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(chatMsg);
|
||||
try
|
||||
{
|
||||
capturing.Capture(sender.LoggedinUser);
|
||||
}
|
||||
catch (InventoryFullException)
|
||||
{
|
||||
byte[] chatMsg = PacketBuilder.CreateChat(Messages.TooManyHorses, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(chatMsg);
|
||||
break;
|
||||
}
|
||||
|
||||
sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorseCapture).Count++;
|
||||
|
||||
if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorseCapture).Count >= 100)
|
||||
sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(24)); // Wrangler
|
||||
if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorseCapture).Count >= 1000)
|
||||
sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(25)); // Pro Wrangler
|
||||
|
||||
Logger.InfoPrint(sender.LoggedinUser.Username + " Captured a: " + capturing.Instance.Breed.Name);
|
||||
|
||||
sender.LoggedinUser.MetaPriority = true;
|
||||
byte[] horseCaught = PacketBuilder.CreateMetaPacket(Meta.BuildHorseCaughtMessage());
|
||||
sender.SendPacket(horseCaught);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorseCapture).Count++;
|
||||
|
||||
if(sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorseCapture).Count >= 100)
|
||||
sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(24)); // Wrangler
|
||||
if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorseCapture).Count >= 1000)
|
||||
sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(25)); // Pro Wrangler
|
||||
|
||||
Logger.InfoPrint(sender.LoggedinUser.Username + " Captured a: " + capturing.Instance.Breed.Name + " new location: " + capturing.X + ", " + capturing.Y);
|
||||
|
||||
sender.LoggedinUser.MetaPriority = true;
|
||||
byte[] metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildHorseCaughtMessage());
|
||||
sender.SendPacket(metaPacket);
|
||||
|
||||
UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||
}
|
||||
|
||||
sender.LoggedinUser.MetaPriority = true;
|
||||
byte[] horseAllreadyCaught = PacketBuilder.CreateMetaPacket(Meta.BuildHorseEscapedAnyway());
|
||||
sender.SendPacket(horseAllreadyCaught);
|
||||
break;
|
||||
case PacketBuilder.HORSE_TRY_CAPTURE:
|
||||
randomId = 0;
|
||||
|
@ -1820,6 +1825,11 @@ namespace HISP.Server
|
|||
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildBooksLibary());
|
||||
sender.SendPacket(metaPacket);
|
||||
break;
|
||||
case "47":
|
||||
sender.LoggedinUser.MetaPriority = true;
|
||||
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPawneerOrderBreedList());
|
||||
sender.SendPacket(metaPacket);
|
||||
break;
|
||||
case "53": // Misc Stats / Tracked Items
|
||||
sender.LoggedinUser.MetaPriority = true;
|
||||
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildMiscStats(sender.LoggedinUser));
|
||||
|
@ -1887,7 +1897,7 @@ namespace HISP.Server
|
|||
}
|
||||
break;
|
||||
}
|
||||
if(buttonIdStr.StartsWith("32c")) // Horse Whisperer
|
||||
if (buttonIdStr.StartsWith("32c")) // Horse Whisperer
|
||||
{
|
||||
string idStr = buttonIdStr.Substring(3);
|
||||
int breedId = -1;
|
||||
|
@ -1895,12 +1905,13 @@ namespace HISP.Server
|
|||
{
|
||||
breedId = int.Parse(idStr);
|
||||
}
|
||||
catch (FormatException) {
|
||||
catch (FormatException)
|
||||
{
|
||||
Logger.DebugPrint(sender.LoggedinUser.Username + " Tried to whisper a horse with BreedId NaN.");
|
||||
break;
|
||||
break;
|
||||
};
|
||||
|
||||
if(sender.LoggedinUser.Money < 50000)
|
||||
|
||||
if (sender.LoggedinUser.Money < 50000)
|
||||
{
|
||||
byte[] cannotAffordMessage = PacketBuilder.CreateChat(Messages.WhispererServiceCannotAfford, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cannotAffordMessage);
|
||||
|
@ -1908,15 +1919,15 @@ namespace HISP.Server
|
|||
}
|
||||
|
||||
List<WildHorse> horsesFound = new List<WildHorse>();
|
||||
foreach(WildHorse horse in WildHorse.WildHorses)
|
||||
foreach (WildHorse horse in WildHorse.WildHorses)
|
||||
{
|
||||
if(horse.Instance.Breed.Id == breedId)
|
||||
if (horse.Instance.Breed.Id == breedId)
|
||||
{
|
||||
horsesFound.Add(horse);
|
||||
}
|
||||
}
|
||||
int cost = 0;
|
||||
if(horsesFound.Count >= 1)
|
||||
if (horsesFound.Count >= 1)
|
||||
{
|
||||
cost = 50000;
|
||||
}
|
||||
|
@ -1931,11 +1942,11 @@ namespace HISP.Server
|
|||
|
||||
byte[] serachResultMeta = PacketBuilder.CreateMetaPacket(Meta.BuildWhisperSearchResults(horsesFound.ToArray()));
|
||||
sender.SendPacket(serachResultMeta);
|
||||
|
||||
|
||||
sender.LoggedinUser.Money -= cost;
|
||||
break;
|
||||
}
|
||||
else if(buttonIdStr.StartsWith("4c")) // Libary Breed Search
|
||||
else if (buttonIdStr.StartsWith("4c")) // Libary Breed Search
|
||||
{
|
||||
string idStr = buttonIdStr.Substring(2);
|
||||
int breedId = -1;
|
||||
|
@ -1945,9 +1956,10 @@ namespace HISP.Server
|
|||
breedId = int.Parse(idStr);
|
||||
horseBreed = HorseInfo.GetBreedById(breedId);
|
||||
}
|
||||
catch (Exception) {
|
||||
catch (Exception)
|
||||
{
|
||||
Logger.DebugPrint(sender.LoggedinUser.Username + " Sent invalid libary breed viewer request.");
|
||||
break;
|
||||
break;
|
||||
};
|
||||
sender.LoggedinUser.MetaPriority = true;
|
||||
string metaTag = Meta.BuildBreedViewerLibary(horseBreed);
|
||||
|
@ -1959,7 +1971,144 @@ namespace HISP.Server
|
|||
sender.SendPacket(loadSwf);
|
||||
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
else if(buttonIdStr.StartsWith("50c"))
|
||||
{
|
||||
string gender = buttonIdStr.Substring(3);
|
||||
if (sender.LoggedinUser.PawneerOrderBreed != null)
|
||||
{
|
||||
if (sender.LoggedinUser.PawneerOrderBreed.GenderTypes().Contains(gender))
|
||||
{
|
||||
if(sender.LoggedinUser.Inventory.HasItemId(Item.PawneerOrder))
|
||||
{
|
||||
sender.LoggedinUser.PawneerOrderGender = gender;
|
||||
|
||||
HorseInstance horseInstance = new HorseInstance(sender.LoggedinUser.PawneerOrderBreed);
|
||||
horseInstance.Color = sender.LoggedinUser.PawneerOrderColor;
|
||||
horseInstance.Sex = sender.LoggedinUser.PawneerOrderGender;
|
||||
horseInstance.Name = "Pawneer Order";
|
||||
|
||||
sender.LoggedinUser.Inventory.Remove(sender.LoggedinUser.Inventory.GetItemByItemId(Item.PawneerOrder).ItemInstances[0]);
|
||||
sender.LoggedinUser.HorseInventory.AddHorse(horseInstance);
|
||||
|
||||
sender.LoggedinUser.MetaPriority = true;
|
||||
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPawneerOrderFound(horseInstance));
|
||||
sender.SendPacket(metaPacket);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Logger.ErrorPrint(sender.LoggedinUser.Username + " Error occured when doing a Pawneer Order.");
|
||||
break;
|
||||
}
|
||||
else if(buttonIdStr.StartsWith("49c"))
|
||||
{
|
||||
string color = buttonIdStr.Substring(3);
|
||||
if(sender.LoggedinUser.PawneerOrderBreed != null)
|
||||
{
|
||||
if(sender.LoggedinUser.PawneerOrderBreed.Colors.Contains(color))
|
||||
{
|
||||
sender.LoggedinUser.PawneerOrderColor = color;
|
||||
|
||||
sender.LoggedinUser.MetaPriority = true;
|
||||
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPawneerOrderGenderList(sender.LoggedinUser.PawneerOrderBreed, color));
|
||||
sender.SendPacket(metaPacket);
|
||||
break;
|
||||
}
|
||||
}
|
||||
Logger.ErrorPrint(sender.LoggedinUser.Username + " Asked for a horse of an unknown color " + color);
|
||||
break;
|
||||
}
|
||||
else if (buttonIdStr.StartsWith("48c")) // Pawneer Order Breed Select
|
||||
{
|
||||
string idStr = buttonIdStr.Substring(3);
|
||||
int breedId = -1;
|
||||
HorseInfo.Breed breed;
|
||||
try
|
||||
{
|
||||
breedId = int.Parse(idStr);
|
||||
breed = HorseInfo.GetBreedById(breedId);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
Logger.DebugPrint(sender.LoggedinUser.Username + " Tried to pawner order a horse with id NaN.");
|
||||
break;
|
||||
}
|
||||
sender.LoggedinUser.PawneerOrderBreed = breed;
|
||||
|
||||
sender.LoggedinUser.MetaPriority = true;
|
||||
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPawneerOrderColorList(breed));
|
||||
sender.SendPacket(metaPacket);
|
||||
break;
|
||||
}
|
||||
else if (buttonIdStr.StartsWith("43c")) // Pawn Horse Confirm
|
||||
{
|
||||
string idStr = buttonIdStr.Substring(3);
|
||||
int horseId = -1;
|
||||
try
|
||||
{
|
||||
horseId = int.Parse(idStr);
|
||||
}
|
||||
catch (FormatException)
|
||||
{
|
||||
Logger.DebugPrint(sender.LoggedinUser.Username + " Tried to pawn a horse with id NaN.");
|
||||
break;
|
||||
}
|
||||
|
||||
if (sender.LoggedinUser.HorseInventory.HorseIdExist(horseId))
|
||||
{
|
||||
HorseInstance inst = sender.LoggedinUser.HorseInventory.GetHorseById(horseId);
|
||||
int price = Pawneer.CalculateTotalPrice(inst);
|
||||
string name = inst.Name;
|
||||
|
||||
sender.LoggedinUser.HorseInventory.DeleteHorse(inst); // 1000% a "distant land.."
|
||||
sender.LoggedinUser.LastViewedHorse = null;
|
||||
|
||||
sender.LoggedinUser.Money += price;
|
||||
byte[] soldHorseMessage = PacketBuilder.CreateChat(Messages.FormatPawneerSold(name, price), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(soldHorseMessage);
|
||||
|
||||
UpdateArea(sender);
|
||||
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] cantFindHorse = PacketBuilder.CreateChat(Messages.PawneerHorseNotFound, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cantFindHorse);
|
||||
}
|
||||
break;
|
||||
}
|
||||
else if (buttonIdStr.StartsWith("51c")) // Pawn Horse
|
||||
{
|
||||
string idStr = buttonIdStr.Substring(3);
|
||||
int horseId = -1;
|
||||
try
|
||||
{
|
||||
horseId = int.Parse(idStr);
|
||||
}
|
||||
catch (FormatException)
|
||||
{
|
||||
Logger.DebugPrint(sender.LoggedinUser.Username + " Tried to pawn a horse with id NaN.");
|
||||
break;
|
||||
}
|
||||
|
||||
if (sender.LoggedinUser.HorseInventory.HorseIdExist(horseId))
|
||||
{
|
||||
HorseInstance inst = sender.LoggedinUser.HorseInventory.GetHorseById(horseId);
|
||||
|
||||
sender.LoggedinUser.MetaPriority = true;
|
||||
byte[] confirmScreen = PacketBuilder.CreateMetaPacket(Meta.BuildPawneerConfimation(inst));
|
||||
sender.SendPacket(confirmScreen);
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] cantFindHorse = PacketBuilder.CreateChat(Messages.PawneerHorseNotFound, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cantFindHorse);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if(AbuseReport.DoesReasonExist(buttonIdStr))
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue