diff --git a/DataCollection/gamedata.json b/DataCollection/gamedata.json
index 51e98bc..c88aa21 100755
--- a/DataCollection/gamedata.json
+++ b/DataCollection/gamedata.json
@@ -156,6 +156,12 @@
"mute_help":"Mute Channel Not Recognized. (ALL/ADS/GLOBAL/ISLAND/NEAR/HERE/BUDDY/PM/BR/SOCIALS/LOGINS)",
"player_command_completed":"PLAYER COMMAND [%COMMAND%] COMPLETED",
"admin_command_completed":"COMMAND [%COMMAND%]:",
+ "warp":{
+ "player":"Unicorn Successfully Warped to Player",
+ "location":"Unicorn Successfully Warped to Location",
+ "only_unicorn":"Only a ridden unicorn can respond to such a request.",
+ "location_unknown":"Unicorn Failed to understand location or player name to warp to."
+ },
"mod_isle":{
"x":165,
"y":465,
diff --git a/Horse Isle Server/HorseIsleServer/Game/Chat/Chat.cs b/Horse Isle Server/HorseIsleServer/Game/Chat/Chat.cs
index 508492d..8352f0e 100755
--- a/Horse Isle Server/HorseIsleServer/Game/Chat/Chat.cs
+++ b/Horse Isle Server/HorseIsleServer/Game/Chat/Chat.cs
@@ -102,6 +102,9 @@ namespace HISP.Game.Chat
else if (message.StartsWith("!MUTE"))
return Command.Mute(message, args, user);
+ else if (message.StartsWith("!WARP"))
+ return Command.Warp(message, args, user);
+
}
return false;
}
diff --git a/Horse Isle Server/HorseIsleServer/Game/Chat/Command.cs b/Horse Isle Server/HorseIsleServer/Game/Chat/Command.cs
index 72882d2..86d4f93 100755
--- a/Horse Isle Server/HorseIsleServer/Game/Chat/Command.cs
+++ b/Horse Isle Server/HorseIsleServer/Game/Chat/Command.cs
@@ -222,7 +222,6 @@ namespace HISP.Game.Chat
user.LoggedinClient.SendPacket(chatPacket);
return true;
}
-
public static bool Goto(string message, string[] args, User user)
{
if (args.Length <= 0)
@@ -320,6 +319,73 @@ namespace HISP.Game.Chat
user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+ }
+ public static bool Warp(string message, string[] args, User user)
+ {
+
+ string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message.Substring(1));
+
+ if (user.CurrentlyRidingHorse == null)
+ goto onlyRiddenUnicorn;
+
+ if (user.CurrentlyRidingHorse.Breed.Type == "unicorn")
+ goto doCommand;
+
+ goto onlyRiddenUnicorn;
+
+ onlyRiddenUnicorn:;
+ formattedmessage = Messages.OnlyUnicornCanWarp;
+ goto sendText;
+
+
+ cantUnderstandCommand:;
+ formattedmessage += Messages.FailedToUnderstandLocation;
+ goto sendText;
+
+
+ doCommand:;
+ if (args.Length <= 0)
+ {
+ goto cantUnderstandCommand;
+ }
+ else
+ {
+ foreach (GameClient client in GameServer.ConnectedClients)
+ {
+ if (client.LoggedIn)
+ {
+ if(client.LoggedinUser.Username.ToLower().Contains(args[0].ToLower()))
+ {
+ user.Teleport(client.LoggedinUser.X, client.LoggedinUser.Y);
+ formattedmessage += Messages.SuccessfullyWarpedToPlayer;
+ goto playSwf;
+ }
+ }
+ }
+
+ foreach(World.Waypoint waypoint in World.Waypoints)
+ {
+ if(waypoint.Name.ToLower().Contains(args[0].ToLower()))
+ {
+ user.Teleport(waypoint.PosX, waypoint.PosY);
+ formattedmessage += Messages.SuccessfullyWarpedToLocation;
+ goto playSwf;
+ }
+ }
+
+ goto cantUnderstandCommand;
+ }
+
+ playSwf:;
+ byte[] swfPacket = PacketBuilder.CreateSwfModulePacket("warpcutscene", PacketBuilder.PACKET_SWF_CUTSCENE);
+ user.LoggedinClient.SendPacket(swfPacket);
+
+
+ sendText:;
+ byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+
return true;
}
public static bool Mute(string message, string[] args, User user)
diff --git a/Horse Isle Server/HorseIsleServer/Game/Horse/HorseInstance.cs b/Horse Isle Server/HorseIsleServer/Game/Horse/HorseInstance.cs
index 7dc6b09..a4fa2b1 100755
--- a/Horse Isle Server/HorseIsleServer/Game/Horse/HorseInstance.cs
+++ b/Horse Isle Server/HorseIsleServer/Game/Horse/HorseInstance.cs
@@ -45,8 +45,8 @@ namespace HISP.Game.Horse
Color = breed.Colors[GameServer.RandomNumberGenerator.Next(0, breed.Colors.Length)];
BasicStats = new HorseInfo.BasicStats(this, 1000, 0, 1000, 1000, 500, 1000, 1000, 0);
- int inteligence = (GameServer.RandomNumberGenerator.Next(breed.BaseStats.Inteligence, breed.BaseStats.Inteligence * 2)) - breed.BaseStats.Inteligence;
- int personality = (GameServer.RandomNumberGenerator.Next(breed.BaseStats.Personality, breed.BaseStats.Personality * 2)) - breed.BaseStats.Personality;
+ int inteligence = (GameServer.RandomNumberGenerator.Next(breed.BaseStats.Inteligence, (breed.BaseStats.Inteligence * 2)-1) - breed.BaseStats.Inteligence);
+ int personality = (GameServer.RandomNumberGenerator.Next(breed.BaseStats.Personality, (breed.BaseStats.Personality * 2)-1) - breed.BaseStats.Personality);
int height = GameServer.RandomNumberGenerator.Next(breed.BaseStats.MinHeight, breed.BaseStats.MaxHeight);
AdvancedStats = new HorseInfo.AdvancedStats(this, 0, 0, 0, 0, inteligence, 0, personality, height);
diff --git a/Horse Isle Server/HorseIsleServer/Game/Messages.cs b/Horse Isle Server/HorseIsleServer/Game/Messages.cs
index 9f6079d..422d840 100755
--- a/Horse Isle Server/HorseIsleServer/Game/Messages.cs
+++ b/Horse Isle Server/HorseIsleServer/Game/Messages.cs
@@ -12,6 +12,11 @@ namespace HISP.Game
// Mod isle
public static string ModIsleMessage;
+ // Warp Command
+ public static string SuccessfullyWarpedToLocation;
+ public static string SuccessfullyWarpedToPlayer;
+ public static string OnlyUnicornCanWarp;
+ public static string FailedToUnderstandLocation;
// Click
public static string PlayerHereFormat;
@@ -321,6 +326,7 @@ namespace HISP.Game
public static string AdminCommandFormat;
public static string PlayerCommandFormat;
+
public static string MuteHelp;
public static string GlobalChatFormatForModerators;
diff --git a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs
index 19c2204..51ce845 100755
--- a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs
+++ b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs
@@ -810,6 +810,12 @@ namespace HISP.Server
Map.NewUserStartX = gameData.messages.new_user.starting_x;
Map.NewUserStartY = gameData.messages.new_user.starting_y;
+ // Warp Command
+ Messages.SuccessfullyWarpedToPlayer = gameData.messages.commands.warp.player;
+ Messages.SuccessfullyWarpedToLocation = gameData.messages.commands.warp.location;
+ Messages.OnlyUnicornCanWarp = gameData.messages.commands.warp.only_unicorn;
+ Messages.FailedToUnderstandLocation = gameData.messages.commands.warp.location_unknown;
+
// Mod Isle
Messages.ModIsleMessage = gameData.messages.commands.mod_isle.message;
Map.ModIsleX = gameData.messages.commands.mod_isle.x;