diff --git a/DataCollection/gamedata.json b/DataCollection/gamedata.json index d3ddc22..0f85f21 100755 --- a/DataCollection/gamedata.json +++ b/DataCollection/gamedata.json @@ -143,7 +143,9 @@ }, "bank":{ "deposit_format":"You deposited $%MONEY% into the bank.", - "withdraw_format":"You withdrew $%MONEY% from the bank." + "withdraw_format":"You withdrew $%MONEY% from the bank.", + "cant_hold_that_much":"The bank cannot hold that amount of money for you!", + "cant_withdraw_that_much":"The bank does not condone walking around with over 2.1 billion dollars!" }, "inn":{ "cant_afford":"You cannot afford that service!", @@ -194,7 +196,8 @@ "brought_5":"You bought 5 %ITEM% for $%PRICE%.", "brought_25":"You bought 25 %ITEM% for $%PRICE%.", "sold_1":"You sold a %ITEM% for $%PRICE%.", - "sold_all":"You sold %AMOUNT% %ITEM% for $%PRICE%." + "sold_all":"You sold %AMOUNT% %ITEM% for $%PRICE%.", + "cant_hold_extra_money":"You cannot carry around the extra money this would earn you! (2.1B max)" }, "tools":{ "binoculars":"You search high and low all around, but find nothing interesting.", @@ -406,7 +409,10 @@ "trade_received":"You received $%MONEY% in the trade.", "trade_not_allowed_while_bidding":"No trades allowed while you are bidding on a Horse at auction.", - "trade_not_allowed_while_other_is_bidding":"No trades allowed while other player bidding on a Horse at auction." + "trade_not_allowed_while_other_is_bidding":"No trades allowed while other player bidding on a Horse at auction.", + + "trade_other_cannot_carry_that_much":"The other player can not carry that much more money", + "trade_you_cannot_carry_that_much":"You would not be able to carry all that money if trade completed. (2.1B max!)", }, }, "auction":{ diff --git a/Horse Isle Server/HorseIsleServer/Game/Arena.cs b/Horse Isle Server/HorseIsleServer/Game/Arena.cs index 886b7c1..d637bd5 100644 --- a/Horse Isle Server/HorseIsleServer/Game/Arena.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Arena.cs @@ -271,7 +271,7 @@ namespace HISP.Game if (place == 0) // WINNER! { int prize = EntryCost * Entries.Count; - entry.EnteredUser.Money += prize; + entry.EnteredUser.AddMoney(prize); byte[] youWinMessage = PacketBuilder.CreateChat(Messages.FormatArenaYouWinMessage(prize, expReward), PacketBuilder.CHAT_BOTTOM_RIGHT); diff --git a/Horse Isle Server/HorseIsleServer/Game/Chat/Command.cs b/Horse Isle Server/HorseIsleServer/Game/Chat/Command.cs index 3bd0cdf..0b7e0f6 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Chat/Command.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Chat/Command.cs @@ -39,7 +39,7 @@ namespace HISP.Game.Chat try { money = int.Parse(args[1]); - user.Money += money; + user.AddMoney(money); } catch (Exception) { diff --git a/Horse Isle Server/HorseIsleServer/Game/Events/IsleCardTradingGame.cs b/Horse Isle Server/HorseIsleServer/Game/Events/IsleCardTradingGame.cs index 6183131..d0ec51b 100644 --- a/Horse Isle Server/HorseIsleServer/Game/Events/IsleCardTradingGame.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Events/IsleCardTradingGame.cs @@ -98,7 +98,7 @@ namespace HISP.Game.Events byte[] wonIsleCardGame = PacketBuilder.CreateChat(Messages.EventWonIsleTradingGame, PacketBuilder.CHAT_BOTTOM_RIGHT); client.SendPacket(wonIsleCardGame); - client.LoggedinUser.Money += 25000; + client.LoggedinUser.AddMoney(25000); } diff --git a/Horse Isle Server/HorseIsleServer/Game/Events/ModsRevenge.cs b/Horse Isle Server/HorseIsleServer/Game/Events/ModsRevenge.cs index e8a9b0e..5de2348 100644 --- a/Horse Isle Server/HorseIsleServer/Game/Events/ModsRevenge.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Events/ModsRevenge.cs @@ -133,8 +133,8 @@ namespace HISP.Game.Events byte[] otherEarned = PacketBuilder.CreateChat(Messages.FormatModSplatterBallAwardedOther(thrower.Username), PacketBuilder.CHAT_BOTTOM_RIGHT); byte[] youEarned = PacketBuilder.CreateChat(Messages.FormatModSplatterBallAwardedYou(throwAt.Username), PacketBuilder.CHAT_BOTTOM_RIGHT); - thrower.Money += 50; - throwAt.Money += 500; + thrower.AddMoney(50); + throwAt.AddMoney(500); thrower.LoggedinClient.SendPacket(youEarned); throwAt.LoggedinClient.SendPacket(otherEarned); diff --git a/Horse Isle Server/HorseIsleServer/Game/Events/RandomEvent.cs b/Horse Isle Server/HorseIsleServer/Game/Events/RandomEvent.cs index 28a24bd..38f62b5 100644 --- a/Horse Isle Server/HorseIsleServer/Game/Events/RandomEvent.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Events/RandomEvent.cs @@ -35,7 +35,7 @@ namespace HISP.Game.Events user.Inventory.AddIgnoringFull(new ItemInstance(rngEvent.GiveObject)); if(moneyEarned != 0) - user.Money += moneyEarned; + user.AddMoney(moneyEarned); HorseInstance effectedHorse = null; diff --git a/Horse Isle Server/HorseIsleServer/Game/Events/RealTimeQuiz.cs b/Horse Isle Server/HorseIsleServer/Game/Events/RealTimeQuiz.cs index 192cc64..e2e6262 100644 --- a/Horse Isle Server/HorseIsleServer/Game/Events/RealTimeQuiz.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Events/RealTimeQuiz.cs @@ -242,7 +242,7 @@ namespace HISP.Game.Events participent.UserInstance.LoggedinClient.SendPacket(bonusMessage); } - participent.UserInstance.Money += money; + participent.UserInstance.AddMoney(money); } diff --git a/Horse Isle Server/HorseIsleServer/Game/Events/RealTimeRiddle.cs b/Horse Isle Server/HorseIsleServer/Game/Events/RealTimeRiddle.cs index 93aa3bb..d665bf0 100644 --- a/Horse Isle Server/HorseIsleServer/Game/Events/RealTimeRiddle.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Events/RealTimeRiddle.cs @@ -71,7 +71,7 @@ namespace HISP.Game.Events winner.Awards.AddAward(Award.GetAwardById(34)); // Riddle Genius - winner.Money += Reward; + winner.AddMoney(Reward); byte[] riddleWonMessage = PacketBuilder.CreateChat(Messages.FormatEventRealTimeRiddleWonForOthers(winner.Username), PacketBuilder.CHAT_BOTTOM_RIGHT); byte[] riddleYouWonMessage = PacketBuilder.CreateChat(Messages.FormatEventRealTimeRiddleWonForYou(Reward), PacketBuilder.CHAT_BOTTOM_RIGHT); foreach (GameClient client in GameServer.ConnectedClients) diff --git a/Horse Isle Server/HorseIsleServer/Game/Events/WaterBalloonGame.cs b/Horse Isle Server/HorseIsleServer/Game/Events/WaterBalloonGame.cs index 7e41dca..5b08be0 100644 --- a/Horse Isle Server/HorseIsleServer/Game/Events/WaterBalloonGame.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Events/WaterBalloonGame.cs @@ -73,7 +73,7 @@ namespace HISP.Game.Events foreach (ThrownCounter winner in winnerCounter) { byte[] youWinMsg = PacketBuilder.CreateChat(Messages.EventWonWaterBallonGame, PacketBuilder.CHAT_BOTTOM_RIGHT); - winner.UserHit.Money += 20000; + winner.UserHit.AddMoney(20000); winner.UserHit.LoggedinClient.SendPacket(youWinMsg); winner.UserHit.TrackedItems.GetTrackedItem(Tracking.TrackableItem.WaterbaloonGameWin).Count++; } diff --git a/Horse Isle Server/HorseIsleServer/Game/Items/DroppedItems.cs b/Horse Isle Server/HorseIsleServer/Game/Items/DroppedItems.cs index 6fdfcbe..b062a5a 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Items/DroppedItems.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Items/DroppedItems.cs @@ -142,7 +142,7 @@ namespace HISP.Game.Items if (isFirstLoad) Logger.InfoPrint("Generating items, (this may take awhile on a fresh database!)"); else - Logger.InfoPrint("Generating items."); + Logger.DebugPrint("Generating items."); int newItems = 0; foreach (Item.ItemInformation item in Item.Items) diff --git a/Horse Isle Server/HorseIsleServer/Game/Messages.cs b/Horse Isle Server/HorseIsleServer/Game/Messages.cs index 469a80b..ddf0ba2 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Messages.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Messages.cs @@ -212,6 +212,9 @@ namespace HISP.Game public static string TradeNotAllowedWhileBidding; public static string TradeNotAllowedWhileOtherBidding; + public static string TradeWillGiveYouTooMuchMoney; + public static string TradeWillGiveOtherTooMuchMoney; + // Player Interaction public static string PlayerHereMenuFormat; @@ -981,6 +984,7 @@ namespace HISP.Game public static string Brought25Format; public static string Sold1Format; public static string SoldAllFormat; + public static string CannotSellYoudGetTooMuchMoney; // Bank public static string BankMadeInIntrestFormat; @@ -991,6 +995,9 @@ namespace HISP.Game public static string BankWithdrewMoneyFormat; public static string BankDepositedMoneyFormat; + public static string BankCantHoldThisMuch; + public static string BankYouCantHoldThisMuch; + // Npc public static string NpcStartChatFormat; public static string NpcNoChatpoints; diff --git a/Horse Isle Server/HorseIsleServer/Game/Meta.cs b/Horse Isle Server/HorseIsleServer/Game/Meta.cs index 327da41..a5b3572 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Meta.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Meta.cs @@ -471,7 +471,7 @@ namespace HISP.Game int moneyLost = GameServer.RandomNumberGenerator.Next(0, 100); if (moneyLost > user.Money) moneyLost = user.Money; - user.Money -= moneyLost; + user.TakeMoney(moneyLost); return Messages.FormatVenusFlyTrapMeta(moneyLost); } public static string buildInn(Inn inn) diff --git a/Horse Isle Server/HorseIsleServer/Game/Quest.cs b/Horse Isle Server/HorseIsleServer/Game/Quest.cs index b21ab7b..e45ba1d 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Quest.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Quest.cs @@ -182,9 +182,10 @@ namespace HISP.Game user.Inventory.Remove(itm.ItemInstances[0]); } - user.Money -= quest.MoneyCost; + // Take Money + user.TakeMoney(quest.MoneyCost); // Give money - user.Money += quest.MoneyEarned; + user.AddMoney(quest.MoneyEarned); // Give items foreach (QuestItemInfo itemInfo in quest.ItemsEarned) { diff --git a/Horse Isle Server/HorseIsleServer/Game/Riddler.cs b/Horse Isle Server/HorseIsleServer/Game/Riddler.cs index 6773c56..e636b38 100644 --- a/Horse Isle Server/HorseIsleServer/Game/Riddler.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Riddler.cs @@ -33,7 +33,7 @@ namespace HISP.Game byte[] riddleAnswerCorrectPacket = PacketBuilder.CreateChat(Messages.FormatRiddlerAnswerCorrect(this.Reason), PacketBuilder.CHAT_BOTTOM_RIGHT); user.LoggedinClient.SendPacket(riddleAnswerCorrectPacket); - user.Money += 10000; + user.AddMoney(10000); if(Database.TotalRiddlesCompletedByPlayer(user.Id) >= riddlerRiddles.Count) user.Awards.AddAward(Award.GetAwardById(11)); // Riddlers Riddles diff --git a/Horse Isle Server/HorseIsleServer/Game/Services/Auction.cs b/Horse Isle Server/HorseIsleServer/Game/Services/Auction.cs index 8b30b33..1b5d0a0 100644 --- a/Horse Isle Server/HorseIsleServer/Game/Services/Auction.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Services/Auction.cs @@ -146,7 +146,7 @@ namespace HISP.Game.Services User userWon = GameServer.GetUserById(highestBidder); byte[] wonAuction = PacketBuilder.CreateChat(Messages.FormatAuctionBroughtHorse(highestBid), PacketBuilder.CHAT_BOTTOM_RIGHT); userWon.LoggedinClient.SendPacket(wonAuction); - userWon.Money -= highestBid; + userWon.TakeMoney(highestBid); userWon.HorseInventory.AddHorse(Horse, false); } else @@ -159,7 +159,7 @@ namespace HISP.Game.Services User userSold = GameServer.GetUserById(OwnerId); byte[] horseSold = PacketBuilder.CreateChat(Messages.FormatAuctionHorseSold(highestBid), PacketBuilder.CHAT_BOTTOM_RIGHT); userSold.LoggedinClient.SendPacket(horseSold); - userSold.Money += highestBid; + userSold.AddMoney(highestBid); userSold.HorseInventory.DeleteHorse(Horse, false); } else diff --git a/Horse Isle Server/HorseIsleServer/Game/Treasure.cs b/Horse Isle Server/HorseIsleServer/Game/Treasure.cs index d256bdc..71ab958 100644 --- a/Horse Isle Server/HorseIsleServer/Game/Treasure.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Treasure.cs @@ -142,7 +142,7 @@ namespace HISP.Game byte[] MovementPacket = PacketBuilder.CreateMovementPacket(user.X, user.Y, user.CharacterId, user.Facing, PacketBuilder.DIRECTION_TELEPORT, true); user.LoggedinClient.SendPacket(MovementPacket); - user.Money += Value; + user.AddMoney(Value); if(this.Type == "BURIED") { diff --git a/Horse Isle Server/HorseIsleServer/Player/Award.cs b/Horse Isle Server/HorseIsleServer/Player/Award.cs index d51f976..ade24af 100755 --- a/Horse Isle Server/HorseIsleServer/Player/Award.cs +++ b/Horse Isle Server/HorseIsleServer/Player/Award.cs @@ -68,7 +68,7 @@ namespace HISP.Player { Database.AddAward(baseUser.Id, award.Id); - baseUser.Money += award.MoneyBonus; + baseUser.AddMoney(award.MoneyBonus); byte[] chatPacket = PacketBuilder.CreateChat(award.CompletionText, PacketBuilder.CHAT_BOTTOM_RIGHT); baseUser.LoggedinClient.SendPacket(chatPacket); diff --git a/Horse Isle Server/HorseIsleServer/Player/Trade.cs b/Horse Isle Server/HorseIsleServer/Player/Trade.cs index 1abbea1..6e2785b 100644 --- a/Horse Isle Server/HorseIsleServer/Player/Trade.cs +++ b/Horse Isle Server/HorseIsleServer/Player/Trade.cs @@ -70,19 +70,30 @@ namespace HISP.Player Trader.LoggedinClient.SendPacket(tradeNotAllowedWhileBidding); fail = true; } - if (OtherTrade.Trader.HorseInventory.HorseList.Length > OtherTrade.Trader.MaxHorses) + if (OtherTrade.Trader.HorseInventory.HorseList.Length + HorsesOffered.Count > OtherTrade.Trader.MaxHorses) { byte[] tradeYouHaveTooManyHorses = PacketBuilder.CreateChat(Messages.TradeYouCantHandleMoreHorses, PacketBuilder.CHAT_BOTTOM_RIGHT); Trader.LoggedinClient.SendPacket(tradeYouHaveTooManyHorses); fail = true; } - if (Trader.HorseInventory.HorseList.Length > Trader.MaxHorses) + if (Trader.HorseInventory.HorseList.Length + OtherTrade.HorsesOffered.Count > Trader.MaxHorses) { byte[] tradeYouHaveTooManyHorses = PacketBuilder.CreateChat(Messages.TradeYouCantHandleMoreHorses, PacketBuilder.CHAT_BOTTOM_RIGHT); Trader.LoggedinClient.SendPacket(tradeYouHaveTooManyHorses); fail = true; } - + if(OtherTrade.Trader.Money + MoneyOffered > 2100000000) + { + byte[] tradeOtherHasTooMuchMoney = PacketBuilder.CreateChat(Messages.TradeWillGiveOtherTooMuchMoney, PacketBuilder.CHAT_BOTTOM_RIGHT); + Trader.LoggedinClient.SendPacket(tradeOtherHasTooMuchMoney); + fail = true; + } + if(Trader.Money + OtherTrade.MoneyOffered > 2100000000) + { + byte[] tradeYouHasTooMuchMoney = PacketBuilder.CreateChat(Messages.TradeWillGiveYouTooMuchMoney, PacketBuilder.CHAT_BOTTOM_RIGHT); + Trader.LoggedinClient.SendPacket(tradeYouHasTooMuchMoney); + fail = true; + } /* * Item Checks @@ -140,14 +151,14 @@ namespace HISP.Player if (MoneyOffered > 0) // Transfer Money { - Trader.Money -= MoneyOffered; + Trader.TakeMoney(MoneyOffered); byte[] tradeSpentMoney = PacketBuilder.CreateChat(Messages.FormatTradeYouSpent(MoneyOffered), PacketBuilder.CHAT_BOTTOM_RIGHT); Trader.LoggedinClient.SendPacket(tradeSpentMoney); } if(OtherTrade.MoneyOffered > 0) { - Trader.Money += OtherTrade.MoneyOffered; + Trader.AddMoney(OtherTrade.MoneyOffered); byte[] tradeReceivedMoney = PacketBuilder.CreateChat(Messages.FormatTradeYouReceived(OtherTrade.MoneyOffered), PacketBuilder.CHAT_BOTTOM_RIGHT); Trader.LoggedinClient.SendPacket(tradeReceivedMoney); } diff --git a/Horse Isle Server/HorseIsleServer/Player/User.cs b/Horse Isle Server/HorseIsleServer/Player/User.cs index bb39e7b..dc7c97e 100755 --- a/Horse Isle Server/HorseIsleServer/Player/User.cs +++ b/Horse Isle Server/HorseIsleServer/Player/User.cs @@ -110,6 +110,30 @@ namespace HISP.Player public bool ListingAuction = false; public int TotalGlobalChatMessages = 1; + public void TakeMoney(int amount) + { + money -= amount; + Database.SetPlayerMoney(money, Id); + GameServer.UpdatePlayer(LoggedinClient); + } + + public void AddMoney(int amount) + { + try + { + checked + { + money += amount; + } + } + catch(OverflowException) + { + money = 2147483647; + } + + Database.SetPlayerMoney(money, Id); + GameServer.UpdatePlayer(LoggedinClient); + } public string GetWeatherSeen() { string weather = "SUNNY"; @@ -256,25 +280,6 @@ namespace HISP.Player { return money; } - set - { - try - { - checked - { - money = value; - Database.SetPlayerMoney(value, Id); - GameServer.UpdatePlayer(LoggedinClient); - } - } - catch(OverflowException) - { - money = 2147483647; - Database.SetPlayerMoney(2147483647, Id); - GameServer.UpdatePlayer(LoggedinClient); - } - - } } diff --git a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs index cbc5e8c..f176a64 100755 --- a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs +++ b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs @@ -1138,6 +1138,9 @@ namespace HISP.Server Messages.TradeNotAllowedWhileBidding = gameData.messages.meta.player_interaction.trade.trade_not_allowed_while_bidding; Messages.TradeNotAllowedWhileOtherBidding = gameData.messages.meta.player_interaction.trade.trade_not_allowed_while_other_is_bidding; + Messages.TradeWillGiveYouTooMuchMoney = gameData.messages.meta.player_interaction.trade.trade_other_cannot_carry_that_much; + Messages.TradeWillGiveOtherTooMuchMoney = gameData.messages.meta.player_interaction.trade.trade_you_cannot_carry_that_much; + // Player Interation Messages.PlayerHereMenuFormat = gameData.messages.meta.player_interaction.menu; @@ -1617,6 +1620,9 @@ namespace HISP.Server Messages.BankDepositedMoneyFormat = gameData.messages.bank.deposit_format; Messages.BankWithdrewMoneyFormat = gameData.messages.bank.withdraw_format; + Messages.BankCantHoldThisMuch = gameData.messages.bank.cant_hold_that_much; + Messages.BankYouCantHoldThisMuch = gameData.messages.bank.cant_withdraw_that_much; + // Riddler Messages.RiddlerAnsweredAll = gameData.messages.meta.riddler.riddle_all_complete; Messages.RiddlerIncorrectAnswer = gameData.messages.meta.riddler.riddle_incorrect; @@ -1876,6 +1882,7 @@ namespace HISP.Server Messages.Brought25Format = gameData.messages.shop.brought_25; Messages.Sold1Format = gameData.messages.shop.sold_1; Messages.SoldAllFormat = gameData.messages.shop.sold_all; + Messages.CannotSellYoudGetTooMuchMoney = gameData.messages.shop.cant_hold_extra_money; Messages.Brought1ButInventoryFull = gameData.messages.shop.brought_1_but_inv_full; Messages.Brought5ButInventoryFull = gameData.messages.shop.brought_5_but_inv_full; diff --git a/Horse Isle Server/HorseIsleServer/Server/GameServer.cs b/Horse Isle Server/HorseIsleServer/Server/GameServer.cs index 8152d2c..3312748 100755 --- a/Horse Isle Server/HorseIsleServer/Server/GameServer.cs +++ b/Horse Isle Server/HorseIsleServer/Server/GameServer.cs @@ -79,7 +79,7 @@ namespace HISP.Server { int moneyToAdd = 5000 * ranch.GetBuildingCount(8); // Windmill if (GameServer.IsUserOnline(ranchOwner)) - GameServer.GetUserById(ranchOwner).Money += moneyToAdd; + GameServer.GetUserById(ranchOwner).AddMoney(moneyToAdd); else Database.SetPlayerMoney(Database.GetPlayerMoney(ranchOwner) + moneyToAdd, ranchOwner); } @@ -920,7 +920,7 @@ namespace HISP.Server byte[] healedMessagePacket = PacketBuilder.CreateChat(Messages.VetAllFullHealthRecoveredMessage, PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(healedMessagePacket); - sender.LoggedinUser.Money -= price; + sender.LoggedinUser.TakeMoney(price); } else @@ -968,7 +968,7 @@ namespace HISP.Server if(sender.LoggedinUser.Money >= price) { horseVetServiceInst.BasicStats.Health = 1000; - sender.LoggedinUser.Money -= price; + sender.LoggedinUser.TakeMoney(price); byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatVetHorseAtFullHealthMessage(horseVetServiceInst.Name), PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(messagePacket); @@ -1041,7 +1041,7 @@ namespace HISP.Server if (sender.LoggedinUser.Money >= price) { horseFarrierServiceInst.BasicStats.Shoes = incAmount; - sender.LoggedinUser.Money -= price; + sender.LoggedinUser.TakeMoney(price); byte[] messagePacket = PacketBuilder.CreateChat(msg, PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(messagePacket); @@ -1091,7 +1091,7 @@ namespace HISP.Server horse.BasicStats.Shoes = farrier.SteelShoesAmount; } } - sender.LoggedinUser.Money -= totalPrice; + sender.LoggedinUser.TakeMoney(totalPrice); byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatFarrierPutOnSteelShoesAllMesssage(farrier.SteelShoesAmount, 1000), PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(messagePacket); @@ -1143,7 +1143,7 @@ namespace HISP.Server if (sender.LoggedinUser.Money >= price) { groomHorseInst.BasicStats.Groom = groomer.Max; - sender.LoggedinUser.Money -= price; + sender.LoggedinUser.TakeMoney(price); byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatHorseGroomedToBestAbilities(groomHorseInst.Name), PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(messagePacket); @@ -1199,7 +1199,7 @@ namespace HISP.Server byte[] groomedAllHorsesPacket = PacketBuilder.CreateChat(Messages.GroomerBestToHisAbilitiesALL, PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(groomedAllHorsesPacket); - sender.LoggedinUser.Money -= price; + sender.LoggedinUser.TakeMoney(price); } else @@ -1251,7 +1251,7 @@ namespace HISP.Server barnHorseInst.BasicStats.Tiredness = 1000; barnHorseInst.BasicStats.Hunger = 1000; barnHorseInst.BasicStats.Thirst = 1000; - sender.LoggedinUser.Money -= price; + sender.LoggedinUser.TakeMoney(price); byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatBarnHorseFullyFed(barnHorseInst.Name), PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(messagePacket); @@ -1307,7 +1307,7 @@ namespace HISP.Server byte[] barnedAllHorsesPacket = PacketBuilder.CreateChat(Messages.BarnAllHorsesFullyFed, PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(barnedAllHorsesPacket); - sender.LoggedinUser.Money -= totalPrice; + sender.LoggedinUser.TakeMoney(totalPrice); } else @@ -1360,7 +1360,7 @@ namespace HISP.Server if(sender.LoggedinUser.Money >= trainer.MoneyCost) { - sender.LoggedinUser.Money -= trainer.MoneyCost; + sender.LoggedinUser.TakeMoney(trainer.MoneyCost); trainHorseInst.BasicStats.Mood -= trainer.MoodCost; trainHorseInst.BasicStats.Thirst -= trainer.ThirstCost; trainHorseInst.BasicStats.Hunger -= trainer.HungerCost; @@ -1623,7 +1623,7 @@ namespace HISP.Server if (sender.LoggedinUser.Money >= arena.EntryCost) { arena.AddEntry(sender.LoggedinUser, horseInstance); - sender.LoggedinUser.Money -= arena.EntryCost; + sender.LoggedinUser.TakeMoney(arena.EntryCost); byte[] enteredIntoCompetition = PacketBuilder.CreateChat(Messages.ArenaEnteredInto, PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(enteredIntoCompetition); @@ -2184,11 +2184,11 @@ namespace HISP.Server case 1: // Bank if (dynamicInput.Length >= 2) { - int moneyDeposited = 0; + Int64 moneyDeposited = 0; Int64 moneyWithdrawn = 0; try { - moneyDeposited = int.Parse(dynamicInput[1]); + moneyDeposited = Int64.Parse(dynamicInput[1]); moneyWithdrawn = Int64.Parse(dynamicInput[2]); } catch (Exception) @@ -2197,20 +2197,42 @@ namespace HISP.Server UpdateArea(sender); break; } + + // Check if trying to deposit more than can be held in the bank. + + if (Convert.ToInt64(sender.LoggedinUser.BankMoney) + moneyDeposited > 9999999999) + { + byte[] chatPacket = PacketBuilder.CreateChat(Messages.BankCantHoldThisMuch, PacketBuilder.CHAT_BOTTOM_RIGHT); + sender.SendPacket(chatPacket); + UpdateArea(sender); + break; + } + + // Check if trying to deposit more than 2.1B + + if (moneyWithdrawn > 2100000000) + { + byte[] chatPacket = PacketBuilder.CreateChat(Messages.BankYouCantHoldThisMuch, PacketBuilder.CHAT_BOTTOM_RIGHT); + sender.SendPacket(chatPacket); + UpdateArea(sender); + break; + } + + if((moneyDeposited <= sender.LoggedinUser.Money) && moneyDeposited != 0) { - sender.LoggedinUser.Money -= moneyDeposited; - sender.LoggedinUser.BankMoney += Convert.ToUInt64(moneyDeposited); + sender.LoggedinUser.TakeMoney(Convert.ToInt32(moneyDeposited)); + sender.LoggedinUser.BankMoney += moneyDeposited; - byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatDepositedMoneyMessage(moneyDeposited), PacketBuilder.CHAT_BOTTOM_RIGHT); + byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatDepositedMoneyMessage(Convert.ToInt32(moneyDeposited)), PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(chatPacket); } if ((moneyWithdrawn <= sender.LoggedinUser.BankMoney) && moneyWithdrawn != 0) { sender.LoggedinUser.BankMoney -= moneyWithdrawn; - sender.LoggedinUser.Money += Convert.ToInt32(moneyWithdrawn); + sender.LoggedinUser.AddMoney(Convert.ToInt32(moneyWithdrawn)); byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatWithdrawMoneyMessage(Convert.ToInt32(moneyWithdrawn)), PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(chatPacket); @@ -2237,7 +2259,7 @@ namespace HISP.Server { int playerId = Database.GetUserid(to); - sender.LoggedinUser.Money -= 3; + sender.LoggedinUser.TakeMoney(3); Mailbox.Mail mailMessage = new Mailbox.Mail(); mailMessage.RandomId = RandomID.NextRandomId(); mailMessage.FromUser = sender.LoggedinUser.Id; @@ -3131,7 +3153,7 @@ namespace HISP.Server byte[] serachResultMeta = PacketBuilder.CreateMetaPacket(Meta.BuildWhisperSearchResults(horsesFound.ToArray())); sender.SendPacket(serachResultMeta); - sender.LoggedinUser.Money -= cost; + sender.LoggedinUser.TakeMoney(cost); break; } else if (buttonIdStr.StartsWith("4c")) // Libary Breed Search @@ -3253,7 +3275,7 @@ namespace HISP.Server sender.LoggedinUser.HorseInventory.DeleteHorse(inst); // 1000% a "distant land.." sender.LoggedinUser.LastViewedHorse = null; - sender.LoggedinUser.Money += price; + sender.LoggedinUser.AddMoney(price); byte[] soldHorseMessage = PacketBuilder.CreateChat(Messages.FormatPawneerSold(name, price), PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(soldHorseMessage); @@ -3340,7 +3362,7 @@ namespace HISP.Server } if (sender.LoggedinUser.Money >= 1000) { - sender.LoggedinUser.Money -= 1000; + sender.LoggedinUser.TakeMoney(1000); Auction.AuctionEntry entry = new Auction.AuctionEntry(8, 0, sender.LoggedinUser.Id); entry.Horse = inst; entry.OwnerId = sender.LoggedinUser.Id; @@ -3378,7 +3400,7 @@ namespace HISP.Server else { sender.LoggedinUser.MetaPriority = true; - sender.LoggedinUser.Money -= horseLeaser.Price; + sender.LoggedinUser.TakeMoney(horseLeaser.Price); HorseInstance leaseHorse = horseLeaser.GenerateLeaseHorse(); @@ -4111,7 +4133,7 @@ namespace HISP.Server { case PacketBuilder.WISH_MONEY: int gainMoney = RandomNumberGenerator.Next(500, 1000); - sender.LoggedinUser.Money += gainMoney; + sender.LoggedinUser.AddMoney(gainMoney); message = Messages.FormatWishMoneyMessage(gainMoney); break; case PacketBuilder.WISH_ITEMS: @@ -4136,7 +4158,7 @@ namespace HISP.Server itm = wishableItmes[item]; - sender.LoggedinUser.Money += earnMoney; + sender.LoggedinUser.AddMoney(earnMoney); sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(itm.Id)); message = Messages.FormatWishWorldPeaceMessage(earnMoney, itm.Name); @@ -4367,7 +4389,7 @@ namespace HISP.Server { byte[] bestScoreBeaten = PacketBuilder.CreateChat(Messages.BeatBestHighscore, PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(bestScoreBeaten); - sender.LoggedinUser.Money += 2500; + sender.LoggedinUser.AddMoney(2500); } else if (newHighscore) { @@ -4455,7 +4477,7 @@ namespace HISP.Server int moneyEarned = value * 10; Logger.InfoPrint(sender.LoggedinUser.Username + " Earned $" + moneyEarned + " In: " + id); - sender.LoggedinUser.Money += moneyEarned; + sender.LoggedinUser.AddMoney(moneyEarned); byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatMoneyEarnedMessage(moneyEarned), PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(chatPacket); @@ -5101,7 +5123,7 @@ namespace HISP.Server sender.SendPacket(welcomeToIslePacket); if(cost > 0) - sender.LoggedinUser.Money -= cost; + sender.LoggedinUser.TakeMoney(cost); } else { @@ -5170,7 +5192,7 @@ namespace HISP.Server return; } int sellPrice = sender.LoggedinUser.OwnedRanch.GetSellPrice(); - sender.LoggedinUser.Money += sellPrice; + sender.LoggedinUser.AddMoney(sellPrice); byte[] sellPacket = PacketBuilder.CreateChat(Messages.FormatRanchSoldMessage(sellPrice), PacketBuilder.CHAT_BOTTOM_RIGHT); sender.LoggedinUser.OwnedRanch.OwnerId = -1; sender.SendPacket(sellPacket); @@ -5208,7 +5230,7 @@ namespace HISP.Server Ranch.RanchUpgrade nextUpgrade = Ranch.RanchUpgrade.GetRanchUpgradeById(currentUpgrade.Id + 1); if (sender.LoggedinUser.Money >= nextUpgrade.Cost) { - sender.LoggedinUser.Money -= nextUpgrade.Cost; + sender.LoggedinUser.TakeMoney(nextUpgrade.Cost); sender.LoggedinUser.OwnedRanch.InvestedMoney += nextUpgrade.Cost; sender.LoggedinUser.OwnedRanch.UpgradedLevel++; @@ -5271,7 +5293,7 @@ namespace HISP.Server if (ranchBuilding.Id == buildingId) { sender.LoggedinUser.OwnedRanch.SetBuilding(ranchBuild - 1, null); - sender.LoggedinUser.Money += ranchBuilding.GetTeardownPrice(); + sender.LoggedinUser.AddMoney(ranchBuilding.GetTeardownPrice()); sender.LoggedinUser.OwnedRanch.InvestedMoney -= building.Cost; byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatBuildingTornDown(ranchBuilding.GetTeardownPrice()), PacketBuilder.CHAT_BOTTOM_RIGHT); @@ -5325,7 +5347,7 @@ namespace HISP.Server { sender.LoggedinUser.OwnedRanch.SetBuilding(ranchBuild - 1, building); sender.LoggedinUser.OwnedRanch.InvestedMoney += building.Cost; - sender.LoggedinUser.Money -= building.Cost; + sender.LoggedinUser.TakeMoney(building.Cost); byte[] chatPacket = PacketBuilder.CreateChat(Messages.RanchBuildingComplete, PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(chatPacket); UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true); @@ -5360,7 +5382,7 @@ namespace HISP.Server { byte[] broughtRanch = PacketBuilder.CreateChat(Messages.FormatRanchBroughtMessage(ranch.Value), PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(broughtRanch); - sender.LoggedinUser.Money -= ranch.Value; + sender.LoggedinUser.TakeMoney(ranch.Value); ranch.OwnerId = sender.LoggedinUser.Id; ranch.InvestedMoney += ranch.Value; sender.LoggedinUser.OwnedRanch = ranch; @@ -6265,7 +6287,7 @@ namespace HISP.Server int looseAmount = RandomNumberGenerator.Next(0, 100); if (looseAmount > sender.LoggedinUser.Money) looseAmount = sender.LoggedinUser.Money; - sender.LoggedinUser.Money -= looseAmount; + sender.LoggedinUser.TakeMoney(looseAmount); msg = Messages.FormatDroppedMoneyMessage(looseAmount); } @@ -6429,7 +6451,7 @@ namespace HISP.Server sender.SendPacket(inventoryFullMessage); break; } - sender.LoggedinUser.Money -= itm.MoneyCost; + sender.LoggedinUser.TakeMoney(itm.MoneyCost); // Remove the required items.. foreach(Workshop.RequiredItem reqItem in itm.RequiredItems) @@ -6525,14 +6547,23 @@ namespace HISP.Server int sellPrice = shop.CalculateSellCost(itemInfo) * totalSold; if (shop.CanSell(itemInfo)) { - for(int i = 0; i < totalSold; i++) + // Check if goes over 2.1b + if (sender.LoggedinUser.Money + sellPrice > 2100000000) + { + byte[] cantSellMoneyCapCheck = PacketBuilder.CreateChat(Messages.CannotSellYoudGetTooMuchMoney, PacketBuilder.CHAT_BOTTOM_RIGHT); + sender.SendPacket(cantSellMoneyCapCheck); + break; + } + + // Remove items + for (int i = 0; i < totalSold; i++) { ItemInstance itemInstance = invItem.ItemInstances[0]; sender.LoggedinUser.Inventory.Remove(itemInstance); shop.Inventory.Add(itemInstance); } - sender.LoggedinUser.Money += sellPrice; + sender.LoggedinUser.AddMoney(sellPrice); UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true); if(message == 1) @@ -6587,7 +6618,7 @@ namespace HISP.Server int price = lastInn.CalculateBuyCost(itemInfo); if(sender.LoggedinUser.Money >= price) { - sender.LoggedinUser.Money -= price; + sender.LoggedinUser.TakeMoney(price); bool toMuch = Item.ConsumeItem(sender.LoggedinUser, itemInfo); string tooMuchMessage = Messages.ConsumedButMaxReached; @@ -6715,7 +6746,7 @@ namespace HISP.Server shop.Inventory.Remove(itemInstance); } - sender.LoggedinUser.Money -= buyCost; + sender.LoggedinUser.TakeMoney(buyCost); // Send chat message to client.