diff --git a/DataCollection/gamedata.json b/DataCollection/gamedata.json
index dd54bf9..99b27c2 100644
--- a/DataCollection/gamedata.json
+++ b/DataCollection/gamedata.json
@@ -136,7 +136,9 @@
"find_npc_results_header":"The following residents match closely:
",
"find_npc_results_format":"^T7%NPCNAME%, %NPCDESC%^B1M%MAPXY%^R1",
"find_npc_no_results":"The following residents match closely:
None were found by that name, try looking for a partial name.",
- "find_npc_limit5":"^L- Limited to 5 results. Try narrowing the search.^R1"
+ "find_npc_limit5":"^L- Limited to 5 results. Try narrowing the search.^R1",
+ "horse_breed_format":"^I252^T7Horse Breed %NAME%:^D4c%ID%|VIEW^R1",
+ "horse_relative_format":"^I252^T7A Horse Relative, the %NAME%:^D4c%ID%|VIEW^R1"
},
"multiroom":{
"other_players_participating":"
^LThe following other players are participating:",
diff --git a/Horse Isle Server/Horse Isle Server/Game/Messages.cs b/Horse Isle Server/Horse Isle Server/Game/Messages.cs
index 44a13d2..7b591b7 100644
--- a/Horse Isle Server/Horse Isle Server/Game/Messages.cs
+++ b/Horse Isle Server/Horse Isle Server/Game/Messages.cs
@@ -83,6 +83,9 @@ namespace HISP.Game
public static string LibaryFindNpcSearchNoResults;
public static string LibaryFindNpcLimit5;
+ public static string HorseBreedFormat;
+ public static string HorseRelativeFormat;
+
// Records
public static string ProfileSavedMessage;
@@ -347,6 +350,14 @@ namespace HISP.Game
// Click
public static string NothingInterestingHere;
+ public static string FormatHorseRelative(string name, int id)
+ {
+ return HorseRelativeFormat.Replace("%NAME%", name).Replace("%ID%", id.ToString());
+ }
+ public static string FormatHorseBreed(string name, int id)
+ {
+ return HorseBreedFormat.Replace("%NAME%", name).Replace("%ID%", id.ToString());
+ }
public static string FormatNpcSearchResult(string name, string desc,int x, int y)
{
string mapXy = FormatMapLocation(x, y);
diff --git a/Horse Isle Server/Horse Isle Server/Game/Meta.cs b/Horse Isle Server/Horse Isle Server/Game/Meta.cs
index 7938fff..2b41567 100644
--- a/Horse Isle Server/Horse Isle Server/Game/Meta.cs
+++ b/Horse Isle Server/Horse Isle Server/Game/Meta.cs
@@ -620,6 +620,22 @@ namespace HISP.Game
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
+ message += Messages.FormatHorseRelative(breed.Name, breed.Id);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
public static string BuildNpcSearch(string search)
{
List foundNpcs = new List();
diff --git a/Horse Isle Server/Horse Isle Server/Server/GameDataJson.cs b/Horse Isle Server/Horse Isle Server/Server/GameDataJson.cs
index 11d2e80..992bef7 100644
--- a/Horse Isle Server/Horse Isle Server/Server/GameDataJson.cs
+++ b/Horse Isle Server/Horse Isle Server/Server/GameDataJson.cs
@@ -594,6 +594,9 @@ namespace HISP.Server
Messages.LibaryFindNpcSearchNoResults = gameData.messages.meta.libary.find_npc_no_results;
Messages.LibaryFindNpcLimit5 = gameData.messages.meta.libary.find_npc_limit5;
+ Messages.HorseBreedFormat = gameData.messages.meta.libary.horse_breed_format;
+ Messages.HorseRelativeFormat = gameData.messages.meta.libary.horse_relative_format;
+
// Chat
Messages.ChatViolationMessageFormat = gameData.messages.chat.violation_format;
diff --git a/Horse Isle Server/Horse Isle Server/Server/GameServer.cs b/Horse Isle Server/Horse Isle Server/Server/GameServer.cs
index db2c915..85d43d9 100644
--- a/Horse Isle Server/Horse Isle Server/Server/GameServer.cs
+++ b/Horse Isle Server/Horse Isle Server/Server/GameServer.cs
@@ -356,7 +356,10 @@ namespace HISP.Server
break;
case "31": // Find Ranch
break;
- case "4": // View Horse Breed
+ case "4": // View Horse Breeds
+ sender.LoggedinUser.MetaPriority = true;
+ metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildHorseList());
+ sender.SendPacket(metaPacket);
break;
case "9": // View Tack
break;