diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/ItemsSystem/Item.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/ItemsSystem/Item.cs index b137afc..ffde2b7 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/ItemsSystem/Item.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/ItemsSystem/Item.cs @@ -872,12 +872,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem public override void OnTargeted(Player player, TargetMessage message) { player.Inventory.RefreshInventoryToClient(); - //var playerAcc = player.InGameClient.BnetClient.Account.GameAccount; - switch (this.SNO) + var playerAcc = player.InGameClient.BnetClient.Account.GameAccount; + switch (SNO) { case ActorSno._tieredlootrunkey_0: - player.Toon.GameAccount.BigPortalKey++; - this.Destroy(); + playerAcc.BigPortalKey++; + Destroy(); break; default: player.Inventory.PickUp(this); @@ -885,7 +885,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem } var Moneys = D3.Items.CurrencySavedData.CreateBuilder(); - var playerAcc = player.InGameClient.BnetClient.Account.GameAccount; D3.Items.CurrencyData GoldData = D3.Items.CurrencyData.CreateBuilder().SetId(0).SetCount((long)player.Inventory.GetGoldAmount()).Build(); D3.Items.CurrencyData BloodShardData = D3.Items.CurrencyData.CreateBuilder().SetId(1).SetCount(playerAcc.BloodShards).Build(); D3.Items.CurrencyData PlatinumData = D3.Items.CurrencyData.CreateBuilder().SetId(2).SetCount(playerAcc.Platinum).Build(); @@ -909,24 +908,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem D3.Items.CurrencyData Craft7Data = D3.Items.CurrencyData.CreateBuilder().SetId(20).SetCount(playerAcc.BigPortalKey).Build(); // KeyStone Greater Rift. - Moneys.AddCurrency(GoldData); - Moneys.AddCurrency(BloodShardData); - Moneys.AddCurrency(PlatinumData); - Moneys.AddCurrency(Craft1Data); - Moneys.AddCurrency(Craft2Data); - Moneys.AddCurrency(Craft3Data); - Moneys.AddCurrency(Craft4Data); - Moneys.AddCurrency(Craft5Data); - Moneys.AddCurrency(Craft7Data); - Moneys.AddCurrency(Horadric1Data); - Moneys.AddCurrency(Horadric2Data); - Moneys.AddCurrency(Horadric3Data); - Moneys.AddCurrency(Horadric4Data); - Moneys.AddCurrency(Horadric5Data); - Moneys.AddCurrency(Craft8Data); - Moneys.AddCurrency(Craft9Data); - Moneys.AddCurrency(Craft10Data); - Moneys.AddCurrency(Craft11Data); + object[] consumables = {GoldData, BloodShardData, PlatinumData, Craft1Data, Craft2Data, Craft3Data, Craft4Data, Craft5Data, Craft7Data, Horadric1Data, Horadric2Data, Horadric3Data, Horadric4Data, Horadric5Data, Craft8Data, Craft9Data, Craft10Data, Craft11Data}; + + foreach (object consumable in consumables) + { + Moneys.AddCurrency(consumable); + } player.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Base.GenericBlobMessage(Opcodes.CurrencyDataFull) { Data = Moneys.Build().ToByteArray() }); @@ -1029,24 +1016,13 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem D3.Items.CurrencyData Craft7Data = D3.Items.CurrencyData.CreateBuilder().SetId(20).SetCount(playerAcc.BigPortalKey).Build(); // KeyStone Greater Rift. - Moneys.AddCurrency(GoldData); - Moneys.AddCurrency(BloodShardData); - Moneys.AddCurrency(PlatinumData); - Moneys.AddCurrency(Craft1Data); - Moneys.AddCurrency(Craft2Data); - Moneys.AddCurrency(Craft3Data); - Moneys.AddCurrency(Craft4Data); - Moneys.AddCurrency(Craft5Data); - Moneys.AddCurrency(Craft7Data); - Moneys.AddCurrency(Horadric1Data); - Moneys.AddCurrency(Horadric2Data); - Moneys.AddCurrency(Horadric3Data); - Moneys.AddCurrency(Horadric4Data); - Moneys.AddCurrency(Horadric5Data); - Moneys.AddCurrency(Craft8Data); - Moneys.AddCurrency(Craft9Data); - Moneys.AddCurrency(Craft10Data); - Moneys.AddCurrency(Craft11Data); + object[] consumables = {GoldData, BloodShardData, PlatinumData, Craft1Data, Craft2Data, Craft3Data, Craft4Data, Craft5Data, Craft7Data, Horadric1Data, Horadric2Data, Horadric3Data, Horadric4Data, Horadric5Data, Craft8Data, Craft9Data, Craft10Data, Craft11Data}; + + foreach (object consumable in consumables) + { + Moneys.AddCurrency(consumable); + } + #endregion switch (GBHandle.GBID) { @@ -1148,15 +1124,17 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem player.World.SpawnBloodShards(player, player, RandomHelper.Next(10, 25)); break; #endregion - default: + default: Logger.Warn("This treasure bag - not implemented"); break; } Craft4Data = D3.Items.CurrencyData.CreateBuilder().SetId(6).SetCount(playerAcc.CraftItem4).Build(); - Moneys.AddCurrency(Horadric1Data); - Moneys.AddCurrency(Horadric2Data); - Moneys.AddCurrency(Horadric3Data); - Moneys.AddCurrency(Horadric4Data); - Moneys.AddCurrency(Horadric5Data); + + object[] HoradricBoxes = {Horadric1Data, Horadric2Data, Horadric3Data, Horadric4Data, Horadric5Data}; + foreach (object HoradricBoxe in HoradricBoxes) + { + Moneys.AddCurrency(HoradricBoxe); + } + player.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Base.GenericBlobMessage(Opcodes.CurrencyDataFull) { Data = Moneys.Build().ToByteArray() }); player.Inventory.DestroyInventoryItem(this); diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Inventory.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Inventory.cs index efe256d..a41a3ae 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Inventory.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Inventory.cs @@ -2332,24 +2332,12 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem D3.Items.CurrencyData Craft7Data = D3.Items.CurrencyData.CreateBuilder().SetId(20).SetCount(playerAcc.BigPortalKey).Build(); // KeyStone Greater Rift. - Moneys.AddCurrency(GoldData); - Moneys.AddCurrency(BloodShardData); - Moneys.AddCurrency(PlatinumData); - Moneys.AddCurrency(Craft1Data); - Moneys.AddCurrency(Craft2Data); - Moneys.AddCurrency(Craft3Data); - Moneys.AddCurrency(Craft4Data); - Moneys.AddCurrency(Craft5Data); - Moneys.AddCurrency(Craft7Data); - Moneys.AddCurrency(Horadric1Data); - Moneys.AddCurrency(Horadric2Data); - Moneys.AddCurrency(Horadric3Data); - Moneys.AddCurrency(Horadric4Data); - Moneys.AddCurrency(Horadric5Data); - Moneys.AddCurrency(Craft8Data); - Moneys.AddCurrency(Craft9Data); - Moneys.AddCurrency(Craft10Data); - Moneys.AddCurrency(Craft11Data); + object[] consumables = {GoldData, BloodShardData, PlatinumData, Craft1Data, Craft2Data, Craft3Data, Craft4Data, Craft5Data, Craft7Data, Horadric1Data, Horadric2Data, Horadric3Data, Horadric4Data, Horadric5Data, Craft8Data, Craft9Data, Craft10Data, Craft11Data}; + + foreach (object consumable in consumables) + { + Moneys.AddCurrency(consumable); + } _owner.InGameClient.SendMessage(new GenericBlobMessage(Opcodes.CurrencyDataFull) { Data = Moneys.Build().ToByteArray() }); } @@ -2362,7 +2350,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem public void RemoveBloodShardsAmount(int amount) { - this.BloodShards -= amount; + this.BloodShards -= amount; _owner.Toon.GameAccount.BloodShards -= amount; UpdateCurrencies(); } diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Player.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Player.cs index 083537c..78ba0e8 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Player.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Player.cs @@ -2487,7 +2487,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem Attributes[GameAttribute.Corpse_Resurrection_Charges] = 3; // Reset resurrection charges on zone change (TODO: do not reset charges on reentering the same zone) #if DEBUG - Logger.Warn("Player Location {0}, Scene: {1} SNO: {2} LevelArea: {3}", this.Toon.Name, this.CurrentScene.SceneSNO.Name, this.CurrentScene.SceneSNO.Id, this.CurrentScene.Specification.SNOLevelAreas[0]); + Logger.Warn("Player Location {0}, Scene: {1} SNO: {2} LevelArea: {3}", Toon.Name, CurrentScene.SceneSNO.Name, CurrentScene.SceneSNO.Id, CurrentScene.Specification.SNOLevelAreas[0]); #else #endif @@ -2964,8 +2964,8 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem // Check the gold if (InGameClient.Game.TickCounter % 120 == 0 && World != null && GoldCollectedTempCount > 0) { - this.Toon.GameAccount.Gold += (ulong)this.GoldCollectedTempCount; - this.Toon.CollectedGold += (ulong)this.GoldCollectedTempCount; + Toon.GameAccount.Gold += (ulong)GoldCollectedTempCount; + Toon.CollectedGold += (ulong)GoldCollectedTempCount; if (World.Game.IsHardcore) Toon.CollectedGoldSeasonal += GoldCollectedTempCount; @@ -2978,9 +2978,9 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem // Check the blood shards if (InGameClient.Game.TickCounter % 120 == 0 && World != null && BloodShardsCollectedTempCount > 0) { - this.Toon.GameAccount.BloodShards += this.BloodShardsCollectedTempCount; - this.Toon.GameAccount.TotalBloodShards += this.BloodShardsCollectedTempCount; - this.BloodShardsCollectedTempCount = 0; + Toon.GameAccount.BloodShards += BloodShardsCollectedTempCount; + Toon.GameAccount.TotalBloodShards += BloodShardsCollectedTempCount; + BloodShardsCollectedTempCount = 0; } if (World != null && SkillSet.HasPassive(298038) && (InGameClient.Game.TickCounter - LastMovementTick) > 90) @@ -3098,19 +3098,19 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem { if (KilledMonstersTempCount != 0) { - this.Toon.TotalKilled += (ulong)this.KilledMonstersTempCount; - this.KilledMonstersTempCount = 0; + Toon.TotalKilled += (ulong)KilledMonstersTempCount; + KilledMonstersTempCount = 0; if (KilledElitesTempCount != 0) { - this.Toon.ElitesKilled += (ulong)this.KilledElitesTempCount; - this.KilledElitesTempCount = 0; + Toon.ElitesKilled += (ulong)KilledElitesTempCount; + KilledElitesTempCount = 0; } if (KilledSeasonalTempCount != 0) { - this.Toon.SeasonalKills += this.KilledSeasonalTempCount; - this.KilledSeasonalTempCount = 0; + Toon.SeasonalKills += KilledSeasonalTempCount; + KilledSeasonalTempCount = 0; } } diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Payloads/DeathPayload.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Payloads/DeathPayload.cs index c6c68c3..aa96419 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Payloads/DeathPayload.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Payloads/DeathPayload.cs @@ -805,22 +805,22 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads } }); //StartConversation(this.Target.World, 340878); - var HubWorld = this.Target.World.Game.GetWorld(WorldSno.x1_tristram_adventure_mode_hub); - var Orek = (HubWorld.GetActorBySNO(ActorSno._x1_lr_nephalem) as InteractiveNPC); - Orek.Conversations.Add(new ActorSystem.Interactions.ConversationInteraction(340878)); - Orek.ForceConversationSNO = 340878; - Orek.Attributes[GameAttribute.Conversation_Icon, 0] = 2; - Orek.Attributes[GameAttribute.Conversation_Icon, 1] = 2; - Orek.Attributes[GameAttribute.Conversation_Icon, 2] = 2; - Orek.Attributes[GameAttribute.Conversation_Icon, 3] = 2; - Orek.Attributes.BroadcastChangedIfRevealed(); - //Уникальный спавн - this.Target.World.SpawnBloodShards(this.Target, plr, RandomHelper.Next(10, 30)); - this.Target.World.SpawnGold(this.Target, plr); - this.Target.World.SpawnGold(this.Target, plr); - this.Target.World.SpawnGold(this.Target, plr); + var hubWorld = this.Target.World.Game.GetWorld(WorldSno.x1_tristram_adventure_mode_hub); + var orek = (hubWorld.GetActorBySNO(ActorSno._x1_lr_nephalem) as InteractiveNPC); + orek.Conversations.Add(new ActorSystem.Interactions.ConversationInteraction(340878)); + orek.ForceConversationSNO = 340878; + orek.Attributes[GameAttribute.Conversation_Icon, 0] = 2; + orek.Attributes[GameAttribute.Conversation_Icon, 1] = 2; + orek.Attributes[GameAttribute.Conversation_Icon, 2] = 2; + orek.Attributes[GameAttribute.Conversation_Icon, 3] = 2; + orek.Attributes.BroadcastChangedIfRevealed(); + // Unique spawn + Target.World.SpawnBloodShards(Target, plr, RandomHelper.Next(10, 30)); + Target.World.SpawnGold(Target, plr); + Target.World.SpawnGold(Target, plr); + Target.World.SpawnGold(Target, plr); plr.Toon.GameAccount.BigPortalKey++; - this.Target.World.Game.ActiveNephalemProgress = 0f; + Target.World.Game.ActiveNephalemProgress = 0f; } } diff --git a/src/DiIiSNet/D3/Items/Items.cs b/src/DiIiSNet/D3/Items/Items.cs index 11f8cfa..b315118 100644 --- a/src/DiIiSNet/D3/Items/Items.cs +++ b/src/DiIiSNet/D3/Items/Items.cs @@ -2,6 +2,7 @@ #pragma warning disable 1591, 0612 #region Designer generated code +using System; using pb = global::Google.ProtocolBuffers; using pbc = global::Google.ProtocolBuffers.Collections; using pbd = global::Google.ProtocolBuffers.Descriptors; @@ -6577,7 +6578,12 @@ namespace D3.Items { result.currency_.Clear(); return this; } - } + + public void AddCurrency(object consumable) + { + throw new NotImplementedException(); + } + } static CurrencySavedData() { object.ReferenceEquals(global::D3.Items.Items.Descriptor, null); }