mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-07 21:55:42 +12:00
fix more possible crashes
This commit is contained in:
parent
6cec9249ab
commit
e7b24c709f
1 changed files with 320 additions and 279 deletions
|
@ -899,39 +899,43 @@ namespace HISP.Server
|
||||||
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||||
{
|
{
|
||||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||||
if (tile.Code.StartsWith("VET-"))
|
if(tile.Code != null)
|
||||||
{
|
{
|
||||||
string[] vetInfo = tile.Code.Split('-');
|
if (tile.Code.StartsWith("VET-"))
|
||||||
int vetId = int.Parse(vetInfo[1]);
|
{
|
||||||
Vet vet = Vet.GetVetById(vetId);
|
string[] vetInfo = tile.Code.Split('-');
|
||||||
int price = 0;
|
int vetId = int.Parse(vetInfo[1]);
|
||||||
|
Vet vet = Vet.GetVetById(vetId);
|
||||||
|
int price = 0;
|
||||||
|
|
||||||
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
|
||||||
price += vet.CalculatePrice(horse.BasicStats.Health);
|
|
||||||
if(price == 0)
|
|
||||||
{
|
|
||||||
byte[] notNeededMessagePacket = PacketBuilder.CreateChat(Messages.VetServicesNotNeededAll, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
|
||||||
sender.SendPacket(notNeededMessagePacket);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if (sender.LoggedinUser.Money >= price)
|
|
||||||
{
|
|
||||||
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
||||||
horse.BasicStats.Health = 1000;
|
price += vet.CalculatePrice(horse.BasicStats.Health);
|
||||||
|
if (price == 0)
|
||||||
|
{
|
||||||
|
byte[] notNeededMessagePacket = PacketBuilder.CreateChat(Messages.VetServicesNotNeededAll, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
sender.SendPacket(notNeededMessagePacket);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (sender.LoggedinUser.Money >= price)
|
||||||
|
{
|
||||||
|
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
||||||
|
horse.BasicStats.Health = 1000;
|
||||||
|
|
||||||
byte[] healedMessagePacket = PacketBuilder.CreateChat(Messages.VetAllFullHealthRecoveredMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
byte[] healedMessagePacket = PacketBuilder.CreateChat(Messages.VetAllFullHealthRecoveredMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
sender.SendPacket(healedMessagePacket);
|
sender.SendPacket(healedMessagePacket);
|
||||||
|
|
||||||
sender.LoggedinUser.TakeMoney(price);
|
sender.LoggedinUser.TakeMoney(price);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
byte[] cannotAffordMessagePacket = PacketBuilder.CreateChat(Messages.VetCannotAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
sender.SendPacket(cannotAffordMessagePacket);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
UpdateArea(sender);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
byte[] cannotAffordMessagePacket = PacketBuilder.CreateChat(Messages.VetCannotAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
|
||||||
sender.SendPacket(cannotAffordMessagePacket);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UpdateArea(sender);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -960,28 +964,32 @@ namespace HISP.Server
|
||||||
if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||||
{
|
{
|
||||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||||
if(tile.Code.StartsWith("VET-"))
|
if(tile.Code != null)
|
||||||
{
|
{
|
||||||
string[] vetInfo = tile.Code.Split('-');
|
if (tile.Code.StartsWith("VET-"))
|
||||||
int vetId = int.Parse(vetInfo[1]);
|
|
||||||
|
|
||||||
Vet vet = Vet.GetVetById(vetId);
|
|
||||||
int price = vet.CalculatePrice(horseVetServiceInst.BasicStats.Health);
|
|
||||||
if(sender.LoggedinUser.Money >= price)
|
|
||||||
{
|
{
|
||||||
horseVetServiceInst.BasicStats.Health = 1000;
|
string[] vetInfo = tile.Code.Split('-');
|
||||||
sender.LoggedinUser.TakeMoney(price);
|
int vetId = int.Parse(vetInfo[1]);
|
||||||
|
|
||||||
byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatVetHorseAtFullHealthMessage(horseVetServiceInst.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
Vet vet = Vet.GetVetById(vetId);
|
||||||
sender.SendPacket(messagePacket);
|
int price = vet.CalculatePrice(horseVetServiceInst.BasicStats.Health);
|
||||||
|
if (sender.LoggedinUser.Money >= price)
|
||||||
|
{
|
||||||
|
horseVetServiceInst.BasicStats.Health = 1000;
|
||||||
|
sender.LoggedinUser.TakeMoney(price);
|
||||||
|
|
||||||
|
byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatVetHorseAtFullHealthMessage(horseVetServiceInst.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
sender.SendPacket(messagePacket);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
byte[] cantAffordMessage = PacketBuilder.CreateChat(Messages.VetCannotAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
sender.SendPacket(cantAffordMessage);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
UpdateArea(sender);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
byte[] cantAffordMessage = PacketBuilder.CreateChat(Messages.VetCannotAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
|
||||||
sender.SendPacket(cantAffordMessage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UpdateArea(sender);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1017,44 +1025,48 @@ namespace HISP.Server
|
||||||
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||||
{
|
{
|
||||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||||
if (tile.Code.StartsWith("FARRIER-"))
|
if(tile.Code != null)
|
||||||
{
|
{
|
||||||
string[] farrierInfo = tile.Code.Split('-');
|
if (tile.Code.StartsWith("FARRIER-"))
|
||||||
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;
|
string[] farrierInfo = tile.Code.Split('-');
|
||||||
incAmount = farrier.SteelShoesAmount;
|
int farrierId = int.Parse(farrierInfo[1]);
|
||||||
msg = Messages.FormatFarrierPutOnSteelShoesMessage(incAmount, 1000);
|
|
||||||
}
|
Farrier farrier = Farrier.GetFarrierById(farrierId);
|
||||||
else
|
int price = 0;
|
||||||
{
|
int incAmount = 0;
|
||||||
price = farrier.IronCost;
|
string msg = "";
|
||||||
incAmount = farrier.IronShoesAmount;
|
|
||||||
msg = Messages.FormatFarrierPutOnIronShoesMessage(incAmount, 1000);
|
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.TakeMoney(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);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
UpdateArea(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sender.LoggedinUser.Money >= price)
|
|
||||||
{
|
|
||||||
horseFarrierServiceInst.BasicStats.Shoes = incAmount;
|
|
||||||
sender.LoggedinUser.TakeMoney(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);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UpdateArea(sender);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1068,44 +1080,48 @@ namespace HISP.Server
|
||||||
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||||
{
|
{
|
||||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||||
if (tile.Code.StartsWith("FARRIER-"))
|
if(tile.Code != null)
|
||||||
{
|
{
|
||||||
string[] farrierInfo = tile.Code.Split('-');
|
if (tile.Code.StartsWith("FARRIER-"))
|
||||||
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)
|
string[] farrierInfo = tile.Code.Split('-');
|
||||||
{
|
int farrierId = int.Parse(farrierInfo[1]);
|
||||||
totalPrice += farrier.SteelCost;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sender.LoggedinUser.Money >= totalPrice)
|
Farrier farrier = Farrier.GetFarrierById(farrierId);
|
||||||
{
|
|
||||||
|
int totalPrice = 0;
|
||||||
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
||||||
{
|
{
|
||||||
if (horse.BasicStats.Shoes < farrier.SteelShoesAmount)
|
if (horse.BasicStats.Shoes < farrier.SteelShoesAmount)
|
||||||
{
|
{
|
||||||
horse.BasicStats.Shoes = farrier.SteelShoesAmount;
|
totalPrice += farrier.SteelCost;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sender.LoggedinUser.TakeMoney(totalPrice);
|
|
||||||
|
|
||||||
byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatFarrierPutOnSteelShoesAllMesssage(farrier.SteelShoesAmount, 1000), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
if (sender.LoggedinUser.Money >= totalPrice)
|
||||||
sender.SendPacket(messagePacket);
|
{
|
||||||
|
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
||||||
|
{
|
||||||
|
if (horse.BasicStats.Shoes < farrier.SteelShoesAmount)
|
||||||
|
{
|
||||||
|
horse.BasicStats.Shoes = farrier.SteelShoesAmount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sender.LoggedinUser.TakeMoney(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);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
UpdateArea(sender);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
byte[] cantAffordMessage = PacketBuilder.CreateChat(Messages.FarrierShoesCantAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
|
||||||
sender.SendPacket(cantAffordMessage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UpdateArea(sender);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketBuilder.HORSE_GROOM_SERVICE:
|
case PacketBuilder.HORSE_GROOM_SERVICE:
|
||||||
|
@ -1133,30 +1149,34 @@ namespace HISP.Server
|
||||||
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||||
{
|
{
|
||||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||||
if (tile.Code.StartsWith("GROOMER-"))
|
if(tile.Code != null)
|
||||||
{
|
{
|
||||||
string[] groomerInfo = tile.Code.Split('-');
|
if (tile.Code.StartsWith("GROOMER-"))
|
||||||
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;
|
string[] groomerInfo = tile.Code.Split('-');
|
||||||
sender.LoggedinUser.TakeMoney(price);
|
int groomerId = int.Parse(groomerInfo[1]);
|
||||||
|
|
||||||
byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatHorseGroomedToBestAbilities(groomHorseInst.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
Groomer groomer = Groomer.GetGroomerById(groomerId);
|
||||||
sender.SendPacket(messagePacket);
|
int price = groomer.CalculatePrice(groomHorseInst.BasicStats.Groom);
|
||||||
|
|
||||||
|
|
||||||
|
if (sender.LoggedinUser.Money >= price)
|
||||||
|
{
|
||||||
|
groomHorseInst.BasicStats.Groom = groomer.Max;
|
||||||
|
sender.LoggedinUser.TakeMoney(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);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
byte[] cantAffordMessage = PacketBuilder.CreateChat(Messages.GroomerCannotAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
|
||||||
sender.SendPacket(cantAffordMessage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UpdateArea(sender);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1170,47 +1190,51 @@ namespace HISP.Server
|
||||||
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||||
{
|
{
|
||||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||||
if (tile.Code.StartsWith("GROOMER-"))
|
if(tile.Code != null)
|
||||||
{
|
{
|
||||||
string[] groomerInfo = tile.Code.Split('-');
|
if (tile.Code.StartsWith("GROOMER-"))
|
||||||
int groomId = int.Parse(groomerInfo[1]);
|
{
|
||||||
Groomer groomer = Groomer.GetGroomerById(groomId);
|
string[] groomerInfo = tile.Code.Split('-');
|
||||||
int price = 0;
|
int groomId = int.Parse(groomerInfo[1]);
|
||||||
int count = 0;
|
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)
|
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
||||||
|
{
|
||||||
if (horse.BasicStats.Groom < groomer.Max)
|
if (horse.BasicStats.Groom < groomer.Max)
|
||||||
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);
|
byte[] groomedAllHorsesPacket = PacketBuilder.CreateChat(Messages.GroomerBestToHisAbilitiesALL, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
sender.SendPacket(groomedAllHorsesPacket);
|
sender.SendPacket(groomedAllHorsesPacket);
|
||||||
|
|
||||||
sender.LoggedinUser.TakeMoney(price);
|
sender.LoggedinUser.TakeMoney(price);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
byte[] cannotAffordMessagePacket = PacketBuilder.CreateChat(Messages.GroomerCannotAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
sender.SendPacket(cannotAffordMessagePacket);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
UpdateArea(sender);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
byte[] cannotAffordMessagePacket = PacketBuilder.CreateChat(Messages.GroomerCannotAffordMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
|
||||||
sender.SendPacket(cannotAffordMessagePacket);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UpdateArea(sender);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1239,32 +1263,36 @@ namespace HISP.Server
|
||||||
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||||
{
|
{
|
||||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||||
if (tile.Code.StartsWith("BARN-"))
|
if (tile.Code != null)
|
||||||
{
|
{
|
||||||
string[] barnInfo = tile.Code.Split('-');
|
if (tile.Code.StartsWith("BARN-"))
|
||||||
int barnId = int.Parse(barnInfo[1]);
|
|
||||||
|
|
||||||
Barn barn = Barn.GetBarnById(barnId);
|
|
||||||
int price = barn.CalculatePrice(barnHorseInst.BasicStats.Tiredness, barnHorseInst.BasicStats.Hunger, barnHorseInst.BasicStats.Thirst); ;
|
|
||||||
|
|
||||||
|
|
||||||
if (sender.LoggedinUser.Money >= price)
|
|
||||||
{
|
{
|
||||||
barnHorseInst.BasicStats.Tiredness = 1000;
|
string[] barnInfo = tile.Code.Split('-');
|
||||||
barnHorseInst.BasicStats.Hunger = 1000;
|
int barnId = int.Parse(barnInfo[1]);
|
||||||
barnHorseInst.BasicStats.Thirst = 1000;
|
|
||||||
sender.LoggedinUser.TakeMoney(price);
|
|
||||||
|
|
||||||
byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatBarnHorseFullyFed(barnHorseInst.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
Barn barn = Barn.GetBarnById(barnId);
|
||||||
sender.SendPacket(messagePacket);
|
int price = barn.CalculatePrice(barnHorseInst.BasicStats.Tiredness, barnHorseInst.BasicStats.Hunger, barnHorseInst.BasicStats.Thirst); ;
|
||||||
|
|
||||||
|
|
||||||
|
if (sender.LoggedinUser.Money >= price)
|
||||||
|
{
|
||||||
|
barnHorseInst.BasicStats.Tiredness = 1000;
|
||||||
|
barnHorseInst.BasicStats.Hunger = 1000;
|
||||||
|
barnHorseInst.BasicStats.Thirst = 1000;
|
||||||
|
sender.LoggedinUser.TakeMoney(price);
|
||||||
|
|
||||||
|
byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatBarnHorseFullyFed(barnHorseInst.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
sender.SendPacket(messagePacket);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
byte[] cantAffordMessage = PacketBuilder.CreateChat(Messages.BarnCantAffordService, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
sender.SendPacket(cantAffordMessage);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
UpdateArea(sender);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
byte[] cantAffordMessage = PacketBuilder.CreateChat(Messages.BarnCantAffordService, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
|
||||||
sender.SendPacket(cantAffordMessage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UpdateArea(sender);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1278,47 +1306,51 @@ namespace HISP.Server
|
||||||
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||||
{
|
{
|
||||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||||
if (tile.Code.StartsWith("BARN-"))
|
if(tile.Code != null)
|
||||||
{
|
{
|
||||||
string[] barnInfo = tile.Code.Split('-');
|
if (tile.Code.StartsWith("BARN-"))
|
||||||
int barnId = int.Parse(barnInfo[1]);
|
{
|
||||||
Barn barn = Barn.GetBarnById(barnId);
|
string[] barnInfo = tile.Code.Split('-');
|
||||||
int totalPrice = 0;
|
int barnId = int.Parse(barnInfo[1]);
|
||||||
|
Barn barn = Barn.GetBarnById(barnId);
|
||||||
|
int totalPrice = 0;
|
||||||
|
|
||||||
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
|
||||||
{
|
|
||||||
int price = barn.CalculatePrice(horse.BasicStats.Tiredness, horse.BasicStats.Hunger, horse.BasicStats.Thirst);
|
|
||||||
if (price > 0)
|
|
||||||
totalPrice += price;
|
|
||||||
}
|
|
||||||
if (totalPrice == 0)
|
|
||||||
{
|
|
||||||
byte[] notNeededMessagePacket = PacketBuilder.CreateChat(Messages.BarnServiceNotNeeded, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
|
||||||
sender.SendPacket(notNeededMessagePacket);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if (sender.LoggedinUser.Money >= totalPrice)
|
|
||||||
{
|
|
||||||
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
||||||
{
|
{
|
||||||
horse.BasicStats.Tiredness = 1000;
|
int price = barn.CalculatePrice(horse.BasicStats.Tiredness, horse.BasicStats.Hunger, horse.BasicStats.Thirst);
|
||||||
horse.BasicStats.Thirst = 1000;
|
if (price > 0)
|
||||||
horse.BasicStats.Hunger = 1000;
|
totalPrice += price;
|
||||||
}
|
}
|
||||||
|
if (totalPrice == 0)
|
||||||
|
{
|
||||||
|
byte[] notNeededMessagePacket = PacketBuilder.CreateChat(Messages.BarnServiceNotNeeded, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
sender.SendPacket(notNeededMessagePacket);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (sender.LoggedinUser.Money >= totalPrice)
|
||||||
|
{
|
||||||
|
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
|
||||||
|
{
|
||||||
|
horse.BasicStats.Tiredness = 1000;
|
||||||
|
horse.BasicStats.Thirst = 1000;
|
||||||
|
horse.BasicStats.Hunger = 1000;
|
||||||
|
}
|
||||||
|
|
||||||
byte[] barnedAllHorsesPacket = PacketBuilder.CreateChat(Messages.BarnAllHorsesFullyFed, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
byte[] barnedAllHorsesPacket = PacketBuilder.CreateChat(Messages.BarnAllHorsesFullyFed, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
sender.SendPacket(barnedAllHorsesPacket);
|
sender.SendPacket(barnedAllHorsesPacket);
|
||||||
|
|
||||||
sender.LoggedinUser.TakeMoney(totalPrice);
|
sender.LoggedinUser.TakeMoney(totalPrice);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
byte[] cannotAffordMessagePacket = PacketBuilder.CreateChat(Messages.BarnCantAffordService, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
sender.SendPacket(cannotAffordMessagePacket);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
UpdateArea(sender);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
byte[] cannotAffordMessagePacket = PacketBuilder.CreateChat(Messages.BarnCantAffordService, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
|
||||||
sender.SendPacket(cannotAffordMessagePacket);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UpdateArea(sender);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1587,68 +1619,72 @@ namespace HISP.Server
|
||||||
if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||||
{
|
{
|
||||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||||
if (tile.Code.StartsWith("ARENA-"))
|
if(tile.Code != null)
|
||||||
{
|
{
|
||||||
string[] arenaInfo = tile.Code.Split('-');
|
if (tile.Code.StartsWith("ARENA-"))
|
||||||
int arenaId = int.Parse(arenaInfo[1]);
|
|
||||||
Arena arena = Arena.GetAreaById(arenaId);
|
|
||||||
if (!Arena.UserHasEnteredHorseInAnyArena(sender.LoggedinUser))
|
|
||||||
{
|
{
|
||||||
if (horseInstance.BasicStats.Thirst <= 300)
|
string[] arenaInfo = tile.Code.Split('-');
|
||||||
|
int arenaId = int.Parse(arenaInfo[1]);
|
||||||
|
Arena arena = Arena.GetAreaById(arenaId);
|
||||||
|
if (!Arena.UserHasEnteredHorseInAnyArena(sender.LoggedinUser))
|
||||||
{
|
{
|
||||||
byte[] tooThirsty = PacketBuilder.CreateChat(Messages.ArenaTooThirsty, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
if (horseInstance.BasicStats.Thirst <= 300)
|
||||||
sender.SendPacket(tooThirsty);
|
{
|
||||||
break;
|
byte[] tooThirsty = PacketBuilder.CreateChat(Messages.ArenaTooThirsty, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
}
|
sender.SendPacket(tooThirsty);
|
||||||
else if (horseInstance.BasicStats.Hunger <= 300)
|
break;
|
||||||
{
|
}
|
||||||
byte[] tooHungry = PacketBuilder.CreateChat(Messages.ArenaTooHungry, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
else if (horseInstance.BasicStats.Hunger <= 300)
|
||||||
sender.SendPacket(tooHungry);
|
{
|
||||||
break;
|
byte[] tooHungry = PacketBuilder.CreateChat(Messages.ArenaTooHungry, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
}
|
sender.SendPacket(tooHungry);
|
||||||
else if (horseInstance.BasicStats.Shoes <= 300)
|
break;
|
||||||
{
|
}
|
||||||
byte[] needsFarrier = PacketBuilder.CreateChat(Messages.ArenaNeedsFarrier, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
else if (horseInstance.BasicStats.Shoes <= 300)
|
||||||
sender.SendPacket(needsFarrier);
|
{
|
||||||
break;
|
byte[] needsFarrier = PacketBuilder.CreateChat(Messages.ArenaNeedsFarrier, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
}
|
sender.SendPacket(needsFarrier);
|
||||||
else if (horseInstance.BasicStats.Tiredness <= 300)
|
break;
|
||||||
{
|
}
|
||||||
byte[] tooTired = PacketBuilder.CreateChat(Messages.ArenaTooTired, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
else if (horseInstance.BasicStats.Tiredness <= 300)
|
||||||
sender.SendPacket(tooTired);
|
{
|
||||||
break;
|
byte[] tooTired = PacketBuilder.CreateChat(Messages.ArenaTooTired, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
}
|
sender.SendPacket(tooTired);
|
||||||
else if (horseInstance.BasicStats.Health <= 300)
|
break;
|
||||||
{
|
}
|
||||||
byte[] needsVet = PacketBuilder.CreateChat(Messages.ArenaNeedsVet, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
else if (horseInstance.BasicStats.Health <= 300)
|
||||||
sender.SendPacket(needsVet);
|
{
|
||||||
break;
|
byte[] needsVet = PacketBuilder.CreateChat(Messages.ArenaNeedsVet, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
}
|
sender.SendPacket(needsVet);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (sender.LoggedinUser.Money >= arena.EntryCost)
|
if (sender.LoggedinUser.Money >= arena.EntryCost)
|
||||||
{
|
{
|
||||||
arena.AddEntry(sender.LoggedinUser, horseInstance);
|
arena.AddEntry(sender.LoggedinUser, horseInstance);
|
||||||
sender.LoggedinUser.TakeMoney(arena.EntryCost);
|
sender.LoggedinUser.TakeMoney(arena.EntryCost);
|
||||||
|
|
||||||
byte[] enteredIntoCompetition = PacketBuilder.CreateChat(Messages.ArenaEnteredInto, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
byte[] enteredIntoCompetition = PacketBuilder.CreateChat(Messages.ArenaEnteredInto, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
sender.SendPacket(enteredIntoCompetition);
|
sender.SendPacket(enteredIntoCompetition);
|
||||||
UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
|
UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
byte[] cantAffordEntryFee = PacketBuilder.CreateChat(Messages.ArenaCantAfford, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
sender.SendPacket(cantAffordEntryFee);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
byte[] cantAffordEntryFee = PacketBuilder.CreateChat(Messages.ArenaCantAfford, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
byte[] allreadyEntered = PacketBuilder.CreateChat(Messages.ArenaAlreadyEntered, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
sender.SendPacket(cantAffordEntryFee);
|
sender.SendPacket(allreadyEntered);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
byte[] allreadyEntered = PacketBuilder.CreateChat(Messages.ArenaAlreadyEntered, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
|
||||||
sender.SendPacket(allreadyEntered);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2656,37 +2692,40 @@ namespace HISP.Server
|
||||||
if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
|
||||||
{
|
{
|
||||||
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||||
if(tile.Code.StartsWith("PASSWORD-"))
|
if(tile.Code != null)
|
||||||
{
|
{
|
||||||
string[] args = tile.Code.Replace("!","-").Split('-');
|
if (tile.Code.StartsWith("PASSWORD-"))
|
||||||
if(args.Length >= 3)
|
|
||||||
{
|
{
|
||||||
string expectedPassword = args[1];
|
string[] args = tile.Code.Replace("!", "-").Split('-');
|
||||||
int questId = int.Parse(args[2]);
|
if (args.Length >= 3)
|
||||||
if(password.ToLower() == expectedPassword.ToLower())
|
|
||||||
{
|
{
|
||||||
Quest.CompleteQuest(sender.LoggedinUser, Quest.GetQuestById(questId), false);
|
string expectedPassword = args[1];
|
||||||
|
int questId = int.Parse(args[2]);
|
||||||
|
if (password.ToLower() == expectedPassword.ToLower())
|
||||||
|
{
|
||||||
|
Quest.CompleteQuest(sender.LoggedinUser, Quest.GetQuestById(questId), false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Quest.QuestResult result = Quest.FailQuest(sender.LoggedinUser, Quest.GetQuestById(questId), true);
|
||||||
|
if (result.NpcChat == null || result.NpcChat == "")
|
||||||
|
result.NpcChat = Messages.IncorrectPasswordMessage;
|
||||||
|
byte[] ChatPacket = PacketBuilder.CreateChat(result.NpcChat, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
sender.SendPacket(ChatPacket);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Quest.QuestResult result = Quest.FailQuest(sender.LoggedinUser, Quest.GetQuestById(questId), true);
|
Logger.ErrorPrint(sender.LoggedinUser.Username + " Send invalid password input request. (Too few arguments!)");
|
||||||
if (result.NpcChat == null || result.NpcChat == "")
|
break;
|
||||||
result.NpcChat = Messages.IncorrectPasswordMessage;
|
|
||||||
byte[] ChatPacket = PacketBuilder.CreateChat(result.NpcChat, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
|
||||||
sender.SendPacket(ChatPacket);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Logger.ErrorPrint(sender.LoggedinUser.Username + " Send invalid password input request. (Too few arguments!)");
|
Logger.ErrorPrint(sender.LoggedinUser.Username + " Send password input request. (Not on password tile!)");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
Logger.ErrorPrint(sender.LoggedinUser.Username + " Send password input request. (Not on password tile!)");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -7992,6 +8031,8 @@ namespace HISP.Server
|
||||||
public static bool ProcessMapCodeWithArg(GameClient forClient, World.SpecialTile tile)
|
public static bool ProcessMapCodeWithArg(GameClient forClient, World.SpecialTile tile)
|
||||||
{
|
{
|
||||||
string mapCode = tile.Code;
|
string mapCode = tile.Code;
|
||||||
|
if (mapCode == null)
|
||||||
|
return false;
|
||||||
if(mapCode.Contains('-'))
|
if(mapCode.Contains('-'))
|
||||||
{
|
{
|
||||||
string[] codeInfo = mapCode.Split('-');
|
string[] codeInfo = mapCode.Split('-');
|
||||||
|
|
Loading…
Add table
Reference in a new issue