diff --git a/DataCollection/gamedata.json b/DataCollection/gamedata.json index a68c87e..54e71be 100755 --- a/DataCollection/gamedata.json +++ b/DataCollection/gamedata.json @@ -134,7 +134,9 @@ "location_format":" You are%META%
", "tile_format":"%TILENAME%
", "private_notes_format":"^ATMy Private Game Notes^H^PB160|%PRIVATENOTES%^PS7|SAVE NOTES", - "transport_format":"^LTransport via %METHOD% to %PLACE%^R1^I%ICON%^T4Trip Costs $%COST% one way. ^B1M%XY%^BY%ID%^R1", + "transport_format":"^LTransport via %METHOD% to %PLACE%^R1^I%ICON%%COSTFORMAT%^B1M%XY%^BY%ID%^R1", + "transport_cost":"^T4Trip Costs $%COST% one way. ", + "transport_free":"^T4Trip is FREE(wagon owner). ", "exit_this_place":"^X", "end_of_meta":"^Z", "back_to_map":"^M", diff --git a/Horse Isle Server/HorseIsleServer/Game/Messages.cs b/Horse Isle Server/HorseIsleServer/Game/Messages.cs index afb19e8..4f78757 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Messages.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Messages.cs @@ -204,6 +204,9 @@ namespace HISP.Game public static string CantAffordTransport; public static string WelcomeToAreaFormat; + public static string TransportFormat; + public static string TransportCostFormat; + public static string TransportWagonFree; //Dropped Items @@ -584,7 +587,6 @@ namespace HISP.Game public static string TownFormat; public static string AreaFormat; public static string LocationFormat; - public static string TransportFormat; public static string NearbyPlayers; public static string North; public static string East; @@ -1630,14 +1632,18 @@ namespace HISP.Game return xy; } - public static string FormatTransportMessage(string method, string place, int cost, int id, int x, int y) + public static string FormatTransportCost(int cost) + { + return TransportCostFormat.Replace("%COST%", cost.ToString("N0")); + } + public static string FormatTransportMessage(string method, string place, string costFormat, int id, int x, int y) { string xy = FormatMapLocation(x, y); int iconId = 253; if(method == "WAGON") iconId = 254; - return TransportFormat.Replace("%METHOD%", method).Replace("%PLACE%", place).Replace("%COST%", cost.ToString()).Replace("%ID%", id.ToString()).Replace("%ICON%",iconId.ToString()).Replace("%XY%", xy); + return TransportFormat.Replace("%METHOD%", method).Replace("%PLACE%", place).Replace("%COSTFORMAT%", costFormat).Replace("%ID%", id.ToString()).Replace("%ICON%",iconId.ToString()).Replace("%XY%", xy); } // For all public static string FormatGlobalChatMessage(string username, string message) diff --git a/Horse Isle Server/HorseIsleServer/Game/Meta.cs b/Horse Isle Server/HorseIsleServer/Game/Meta.cs index 99c742e..589a7cb 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Meta.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Meta.cs @@ -581,7 +581,7 @@ namespace HISP.Game message += Messages.MetaTerminator; return message; } - public static string BuildTransportInfo(Transport.TransportPoint transportPoint) + public static string BuildTransportInfo(User user, Transport.TransportPoint transportPoint) { string message = ""; // Build list of locations @@ -589,7 +589,20 @@ namespace HISP.Game { int transportLocationId = transportPoint.Locations[i]; Transport.TransportLocation transportLocation = Transport.GetTransportLocation(transportLocationId); - message += Messages.FormatTransportMessage(transportLocation.Type, transportLocation.LocationTitle, transportLocation.Cost, transportLocation.Id, transportLocation.GotoX, transportLocation.GotoY); + string costFormat = Messages.FormatTransportCost(transportLocation.Cost); + if(transportLocation.Type == "WAGON") + { + if (user.OwnedRanch != null) + { + if (user.OwnedRanch.GetBuildingCount(7) > 0) // Wagon + { + costFormat = Messages.TransportWagonFree; + } + } + } + + + message += Messages.FormatTransportMessage(transportLocation.Type, transportLocation.LocationTitle, costFormat, transportLocation.Id, transportLocation.GotoX, transportLocation.GotoY); } message += Messages.ExitThisPlace; message += Messages.MetaTerminator; @@ -1271,7 +1284,7 @@ namespace HISP.Game if (TileCode == "TRANSPORT") { Transport.TransportPoint point = Transport.GetTransportPoint(specialTile.X, specialTile.Y); - message += Meta.BuildTransportInfo(point); + message += Meta.BuildTransportInfo(user, point); } if (TileCode == "STRAWPILE") diff --git a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs index 4a981d5..9f291b7 100755 --- a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs +++ b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs @@ -881,6 +881,9 @@ namespace HISP.Server Messages.CantAffordTransport = gameData.messages.transport.not_enough_money; Messages.WelcomeToAreaFormat = gameData.messages.transport.welcome_to_format; + Messages.TransportFormat = gameData.messages.meta.transport_format; + Messages.TransportCostFormat = gameData.messages.meta.transport_cost; + Messages.TransportWagonFree = gameData.messages.meta.transport_free; // Abuse Reports Messages.AbuseReportMetaFormat = gameData.messages.meta.abuse_report.options_format; @@ -1187,7 +1190,6 @@ namespace HISP.Server Messages.AreaFormat = gameData.messages.meta.area_format; Messages.Seperator = gameData.messages.meta.seperator; Messages.TileFormat = gameData.messages.meta.tile_format; - Messages.TransportFormat = gameData.messages.meta.transport_format; Messages.ExitThisPlace = gameData.messages.meta.exit_this_place; Messages.BackToMap = gameData.messages.meta.back_to_map; Messages.BackToMapHorse = gameData.messages.meta.back_to_map_horse; diff --git a/Horse Isle Server/HorseIsleServer/Server/GameServer.cs b/Horse Isle Server/HorseIsleServer/Server/GameServer.cs index c07743b..809743f 100755 --- a/Horse Isle Server/HorseIsleServer/Server/GameServer.cs +++ b/Horse Isle Server/HorseIsleServer/Server/GameServer.cs @@ -1375,9 +1375,21 @@ namespace HISP.Server } Transport.TransportPoint newPoint = Transport.TransportPoints[smalestTransportPointId]; + int newX = newPoint.X; + int newY = newPoint.Y; + + if (World.InSpecialTile(newX, newY)) + { + World.SpecialTile tile = World.GetSpecialTile(newX, newY); + if (tile.ExitX != 0) + newX = tile.ExitX; + if (tile.ExitY != 0) + newY = tile.ExitY; + } + byte[] transported = PacketBuilder.CreateChat(Messages.RanchWagonDroppedYouOff, PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(transported); - sender.LoggedinUser.Teleport(newPoint.X, newPoint.Y); + sender.LoggedinUser.Teleport(newX, newY); } } break; @@ -2912,12 +2924,21 @@ namespace HISP.Server } Transport.TransportLocation transportLocation = Transport.GetTransportLocation(transportid); + int cost = transportLocation.Cost; - - if (sender.LoggedinUser.Money >= transportLocation.Cost) + if (transportLocation.Type == "WAGON") { - + if(sender.LoggedinUser.OwnedRanch != null) + { + if(sender.LoggedinUser.OwnedRanch.GetBuildingCount(7) > 0) // Wagon + { + cost = 0; + } + } + } + if (sender.LoggedinUser.Money >= cost) + { string swfToLoad = Messages.BoatCutscene; if (transportLocation.Type == "WAGON") swfToLoad = Messages.WagonCutscene; @@ -2940,7 +2961,8 @@ namespace HISP.Server byte[] welcomeToIslePacket = PacketBuilder.CreateChat(Messages.FormatWelcomeToAreaMessage(transportLocation.LocationTitle), PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(welcomeToIslePacket); - sender.LoggedinUser.Money -= transportLocation.Cost; + if(cost > 0) + sender.LoggedinUser.Money -= cost; } else {