mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-19 19:29:15 +12:00
Implement "View Horse Breeds" in libary.
This commit is contained in:
parent
b66fe013ba
commit
663a148b77
7 changed files with 77 additions and 4 deletions
|
@ -37,5 +37,14 @@ namespace HISP.Game
|
|||
|
||||
public static List<Breed> Breeds = new List<Breed>();
|
||||
|
||||
public static Breed GetBreedById(int id)
|
||||
{
|
||||
foreach(Breed breed in Breeds)
|
||||
{
|
||||
if (breed.Id == id)
|
||||
return breed;
|
||||
}
|
||||
throw new KeyNotFoundException("No horse breed with id " + id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -85,6 +85,8 @@ namespace HISP.Game
|
|||
|
||||
public static string HorseBreedFormat;
|
||||
public static string HorseRelativeFormat;
|
||||
public static string BreedViewerFormat;
|
||||
|
||||
|
||||
// Records
|
||||
|
||||
|
@ -159,6 +161,10 @@ namespace HISP.Game
|
|||
public static string MaxJewelryMessage;
|
||||
public static string RemoveJewelry;
|
||||
|
||||
// Horse
|
||||
public static string BreedViewerMaximumStats;
|
||||
public static string StatFormat;
|
||||
|
||||
// Consume
|
||||
|
||||
public static string ConsumeItemFormat;
|
||||
|
@ -349,7 +355,14 @@ namespace HISP.Game
|
|||
|
||||
// Click
|
||||
public static string NothingInterestingHere;
|
||||
|
||||
public static string FormatHorseBreedPreview(string name, string description)
|
||||
{
|
||||
return BreedViewerFormat.Replace("%NAME%", name).Replace("%DESCRIPTION%", description);
|
||||
}
|
||||
public static string FormatHorseStat(int baseStat, int companionBoost, int tackBoost, int maxStat)
|
||||
{
|
||||
return StatFormat.Replace("%BASE%", baseStat.ToString()).Replace("%COMPAINON%", companionBoost.ToString()).Replace("%TACK%", tackBoost.ToString()).Replace("%MAX%", maxStat.ToString());
|
||||
}
|
||||
public static string FormatHorseRelative(string name, int id)
|
||||
{
|
||||
return HorseRelativeFormat.Replace("%NAME%", name).Replace("%ID%", id.ToString());
|
||||
|
|
|
@ -620,13 +620,27 @@ namespace HISP.Game
|
|||
return message;
|
||||
}
|
||||
|
||||
public static string BuildBreedViewerLibary(Horse.Breed breed)
|
||||
{
|
||||
string message = Messages.FormatHorseBreedPreview(breed.Name, breed.Description);
|
||||
message += Messages.BreedViewerMaximumStats;
|
||||
message += Messages.FormatHorseStat(breed.BaseStats.Speed * 2, 0, 0, breed.BaseStats.Speed * 2);
|
||||
message += Messages.FormatHorseStat(breed.BaseStats.Strength * 2, 0, 0, breed.BaseStats.Strength * 2);
|
||||
message += Messages.FormatHorseStat(breed.BaseStats.Conformation * 2, 0, 0, breed.BaseStats.Conformation * 2);
|
||||
message += Messages.FormatHorseStat(breed.BaseStats.Agility * 2, 0, 0, breed.BaseStats.Agility * 2);
|
||||
message += Messages.FormatHorseStat(breed.BaseStats.Endurance * 2, 0, 0, breed.BaseStats.Endurance * 2);
|
||||
message += Messages.FormatHorseStat(breed.BaseStats.Inteligence * 2, 0, 0, breed.BaseStats.Inteligence * 2);
|
||||
message += Messages.FormatHorseStat(breed.BaseStats.Personality * 2, 0, 0, breed.BaseStats.Personality * 2);
|
||||
message += Messages.BackToMap;
|
||||
message += Messages.MetaTerminator;
|
||||
return message;
|
||||
}
|
||||
|
||||
public static string BuildHorseList()
|
||||
{
|
||||
string message = "";
|
||||
foreach(Horse.Breed breed in Horse.Breeds.OrderBy(o => o.Name).ToList())
|
||||
{
|
||||
if (breed.Type == "unicorn" || breed.Type == "pegasus")
|
||||
continue;
|
||||
if (breed.Type == "horse")
|
||||
message += Messages.FormatHorseBreed(breed.Name, breed.Id);
|
||||
else
|
||||
|
|
|
@ -503,6 +503,7 @@ namespace HISP.Server
|
|||
Messages.PrivateNotesSavedMessage = gameData.messages.private_notes_save;
|
||||
Messages.PrivateNotesMetaFormat = gameData.messages.meta.private_notes_format;
|
||||
|
||||
|
||||
// Announcements
|
||||
|
||||
Messages.WelcomeFormat = gameData.messages.welcome_format;
|
||||
|
@ -585,6 +586,9 @@ namespace HISP.Server
|
|||
Messages.BankDepositedMoneyFormat = gameData.messages.bank.deposit_format;
|
||||
Messages.BankWithdrewMoneyFormat = gameData.messages.bank.withdraw_format;
|
||||
|
||||
// Horses
|
||||
Messages.StatFormat = gameData.messages.meta.horse.stat_format;
|
||||
|
||||
|
||||
// Libary
|
||||
Messages.LibaryMainMenu = gameData.messages.meta.libary.main_menu;
|
||||
|
@ -596,6 +600,8 @@ namespace HISP.Server
|
|||
|
||||
Messages.HorseBreedFormat = gameData.messages.meta.libary.horse_breed_format;
|
||||
Messages.HorseRelativeFormat = gameData.messages.meta.libary.horse_relative_format;
|
||||
Messages.BreedViewerFormat = gameData.messages.meta.libary.breed_preview_format;
|
||||
Messages.BreedViewerMaximumStats = gameData.messages.meta.libary.maximum_stats;
|
||||
|
||||
// Chat
|
||||
|
||||
|
|
|
@ -379,6 +379,31 @@ namespace HISP.Server
|
|||
sender.SendPacket(metaPacket);
|
||||
break;
|
||||
default:
|
||||
if(buttonIdStr.StartsWith("4c"))
|
||||
{
|
||||
string idStr = buttonIdStr.Substring(2);
|
||||
int breedId = -1;
|
||||
Horse.Breed horseBreed;
|
||||
try
|
||||
{
|
||||
breedId = int.Parse(idStr);
|
||||
horseBreed = Horse.GetBreedById(breedId);
|
||||
}
|
||||
catch (Exception) {
|
||||
Logger.DebugPrint(sender.LoggedinUser.Username + " Sent invalid libary breed viewer request.");
|
||||
break;
|
||||
};
|
||||
string metaTag = Meta.BuildBreedViewerLibary(horseBreed);
|
||||
metaPacket = PacketBuilder.CreateMetaPacket(metaTag);
|
||||
sender.SendPacket(metaPacket);
|
||||
|
||||
string swf = "breedviewer.swf?terrain=book&breed=" + horseBreed.Swf + "&j=";
|
||||
byte[] loadSwf = PacketBuilder.CreateSwfModulePacket(swf, PacketBuilder.PACKET_SWF_MODULE_FORCE);
|
||||
sender.SendPacket(loadSwf);
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
if(AbuseReport.DoesReasonExist(buttonIdStr))
|
||||
{
|
||||
sender.LoggedinUser.MetaPriority = true;
|
||||
|
|
|
@ -21,6 +21,7 @@ namespace HISP.Server
|
|||
public const byte PACKET_WORLD = 0x7A;
|
||||
public const byte PACKET_BASE_STATS = 0x7B;
|
||||
public const byte PACKET_SWF_CUTSCENE = 0x29;
|
||||
public const byte PACKET_SWF_MODULE_FORCE = 0x28;
|
||||
public const byte PACKET_SWF_MODULE_GENTLE = 0x2A;
|
||||
public const byte PACKET_PLACE_INFO = 0x1E;
|
||||
public const byte PACKET_AREA_DEFS = 0x79;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue