From 18b99cd67c7e49a76974f1fbdcf1be97360a2f97 Mon Sep 17 00:00:00 2001 From: Lucca Faria Ferri Date: Fri, 27 Jan 2023 13:11:46 -0800 Subject: [PATCH] Fixed currencies (bugfix: they weren't being updated due to an empty stub on consumables); Logging changed on MonsterBrain.cs --- .../GSSystem/AISystem/Brains/MonsterBrain.cs | 2 +- .../D3-GameServer/GSSystem/ItemsSystem/Item.cs | 6 +++--- .../GSSystem/PlayerSystem/Inventory.cs | 16 ++++++++++++++-- src/DiIiSNet/D3/Items/Items.cs | 4 +--- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/AISystem/Brains/MonsterBrain.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/AISystem/Brains/MonsterBrain.cs index 63a87e0..7e2020c 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/AISystem/Brains/MonsterBrain.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/AISystem/Brains/MonsterBrain.cs @@ -454,7 +454,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains { if (PresetPowers.ContainsKey(powerSNO)) { - Logger.Warn($"Monster $[red]$\"{Body.Name}\"$[/]$ already has power {powerSNO}."); + Logger.Trace($"Monster $[red]$\"{Body.Name}\"$[/]$ already has power {powerSNO}."); // Logger.Debug("AddPresetPower(): power sno {0} already defined for monster \"{1}\"", //powerSNO, this.Body.ActorSNO.Name); return; diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/ItemsSystem/Item.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/ItemsSystem/Item.cs index 0359386..b762e8e 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/ItemsSystem/Item.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/ItemsSystem/Item.cs @@ -894,7 +894,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem var Craft7Data = D3.Items.CurrencyData.CreateBuilder().SetId(20) .SetCount(playerAcc.BigPortalKey).Build(); // KeyStone Greater Rift. - object[] consumables = + D3.Items.CurrencyData[] consumables = { GoldData, BloodShardData, PlatinumData, Craft1Data, Craft2Data, Craft3Data, Craft4Data, Craft5Data, Craft7Data, Horadric1Data, Horadric2Data, Horadric3Data, Horadric4Data, Horadric5Data, Craft8Data, @@ -1039,7 +1039,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem var craft7Data = D3.Items.CurrencyData.CreateBuilder().SetId(20) .SetCount(playerAcc.BigPortalKey).Build(); // KeyStone Greater Rift. - object[] consumables = + D3.Items.CurrencyData[] consumables = { goldData, bloodShardData, platinumData, craft1Data, craft2Data, craft3Data, craft4Data, craft5Data, craft7Data, horadric1Data, horadric2Data, horadric3Data, horadric4Data, horadric5Data, craft8Data, @@ -1193,7 +1193,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem craft4Data = D3.Items.CurrencyData.CreateBuilder().SetId(6).SetCount(playerAcc.CraftItem4).Build(); - object[] horadricBoxes = { horadric1Data, horadric2Data, horadric3Data, horadric4Data, horadric5Data }; + D3.Items.CurrencyData[] horadricBoxes = { horadric1Data, horadric2Data, horadric3Data, horadric4Data, horadric5Data }; foreach (var horadricBoxe in horadricBoxes) moneys.AddCurrency(horadricBoxe); player.InGameClient.SendMessage( diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Inventory.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Inventory.cs index 36c998c..c0cefd4 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Inventory.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Inventory.cs @@ -2251,10 +2251,18 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem public int GetGoldAmount() { + if (_inventoryGold != null) + { + Logger.Warn($"InventoryGold is $[bold red]$NOT$[/]$ null: {_inventoryGold.Attributes[GameAttribute.Gold]}"); return _inventoryGold.Attributes[GameAttribute.Gold]; + } else + { + Logger.Warn($"InventoryGold is $[bold red]$NULL$[/]$"); + return -1; + } } public void AddBloodShardsAmount(int amount, bool immediately = true) @@ -2306,9 +2314,9 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem D3.Items.CurrencyData Craft7Data = D3.Items.CurrencyData.CreateBuilder().SetId(20).SetCount(playerAcc.BigPortalKey).Build(); // KeyStone Greater Rift. - object[] consumables = {GoldData, BloodShardData, PlatinumData, Craft1Data, Craft2Data, Craft3Data, Craft4Data, Craft5Data, Craft7Data, Horadric1Data, Horadric2Data, Horadric3Data, Horadric4Data, Horadric5Data, Craft8Data, Craft9Data, Craft10Data, Craft11Data}; + D3.Items.CurrencyData[] consumables = {GoldData, BloodShardData, PlatinumData, Craft1Data, Craft2Data, Craft3Data, Craft4Data, Craft5Data, Craft7Data, Horadric1Data, Horadric2Data, Horadric3Data, Horadric4Data, Horadric5Data, Craft8Data, Craft9Data, Craft10Data, Craft11Data}; - foreach (object consumable in consumables) + foreach (var consumable in consumables) { Moneys.AddCurrency(consumable); } @@ -2340,6 +2348,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem Item item = null; int goldAmount = (int)_owner.World.Game.GameDBSession.SessionGet(_owner.Toon.GameAccount.PersistentID).Gold; + Logger.Warn($"User {this._owner.Toon.PersistentID} has {goldAmount} gold."); this.BloodShards = (int)_owner.World.Game.GameDBSession.SessionGet(_owner.Toon.GameAccount.PersistentID).BloodShards; // Clear already present items // LoadFromDB is called every time World is changed, even entering a dungeon @@ -2402,9 +2411,12 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem //}).ContinueWith((a) =>{ _inventoryGold = ItemGenerator.CreateGold(_owner, goldAmount); _inventoryGold.Attributes[GameAttribute.Gold] = goldAmount; + Logger.Warn($"User {this._owner.Toon.PersistentID} - inventory gold has {_inventoryGold.Attributes[GameAttribute.Gold]} gold."); + _inventoryGold.Attributes[GameAttribute.ItemStackQuantityLo] = goldAmount; // This is the attribute that makes the gold visible in gamethe gold visible in game _inventoryGold.Owner = _owner; _inventoryGold.SetInventoryLocation((int)EquipmentSlotId.Gold, 0, 0); + _inventoryGold.Attributes.SendChangedMessage(_owner.InGameClient); //this.inventoryPotion = ItemGenerator.CreateItem(this._owner, ItemGenerator.GetItemDefinition(DiIiS_NA.Core.Helpers.Hash.StringHashHelper.HashItemName("HealthPotionBottomless"))); //this.inventoryPotion.Owner = _owner; diff --git a/src/DiIiSNet/D3/Items/Items.cs b/src/DiIiSNet/D3/Items/Items.cs index 21e7fb4..7c3ae7f 100644 --- a/src/DiIiSNet/D3/Items/Items.cs +++ b/src/DiIiSNet/D3/Items/Items.cs @@ -6579,9 +6579,7 @@ namespace D3.Items { return this; } - public void AddCurrency(object consumable) - { - } + } static CurrencySavedData() { object.ReferenceEquals(global::D3.Items.Items.Descriptor, null);