From b4cb1b0a9c1e8ba562c8a75cc1af50c100fd1c54 Mon Sep 17 00:00:00 2001 From: Benedict Etzel Date: Wed, 8 May 2024 14:06:57 +0200 Subject: [PATCH] fix(BobsBuddy): Teron Gorefiend's hero power not working This reverts commit 1ba6f92e8a80f20ac52fae7b85ce0b473ee3aa90. --- .../BobsBuddy/BobsBuddyInvoker.cs | 15 +++++++++------ .../BobsBuddy/BobsBuddyUtils.cs | 5 +---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Hearthstone Deck Tracker/BobsBuddy/BobsBuddyInvoker.cs b/Hearthstone Deck Tracker/BobsBuddy/BobsBuddyInvoker.cs index 0d9552b91..604eb9b4f 100644 --- a/Hearthstone Deck Tracker/BobsBuddy/BobsBuddyInvoker.cs +++ b/Hearthstone Deck Tracker/BobsBuddy/BobsBuddyInvoker.cs @@ -377,11 +377,13 @@ private void SnapshotBoardState(int turn) var pHpData2 = playerHeroPower?.GetTag(GameTag.TAG_SCRIPT_DATA_NUM_2) ?? 0; if(playerHeroPower?.CardId == NonCollectible.Neutral.TeronGorefiend_RapidReanimation) { - var ench = _game.Player.PlayerEntities.FirstOrDefault(x => x.CardId == NonCollectible.Neutral.TeronGorefiend_ImpendingDeath && (x.IsInPlay || x.IsInSetAside)) - ?? _game.Player.Graveyard.LastOrDefault(x => x.CardId == NonCollectible.Neutral.TeronGorefiend_ImpendingDeath); - var target = ench?.GetTag(GameTag.ATTACHED) ?? 0; - if(target > 0) - pHpData = target; + var minionsInPlay = _game.Player.Board.Where(e => e.IsMinion && e.IsControlledBy(_game.Player.Id)).Select(x => x.Id); + var attachedToEntityId = _game.Player.PlayerEntities + .Where(x => x.CardId == NonCollectible.Neutral.TeronGorefiend_ImpendingDeath && x.IsInPlay) + .Select(x => x.GetTag(GameTag.ATTACHED)) + .FirstOrDefault(x => minionsInPlay.Any(y => y == x)); + if(attachedToEntityId > 0) + pHpData = attachedToEntityId; } input.SetPlayerHeroPower(playerHeroPower?.CardId ?? "", WasHeroPowerActivated(playerHeroPower), pHpData, pHpData2); @@ -391,7 +393,8 @@ private void SnapshotBoardState(int turn) if(opponentHeroPower?.CardId == NonCollectible.Neutral.TeronGorefiend_RapidReanimation) { // It appear this enchantment may be in the graveyard now in the opponents case - var ench = _game.Opponent.PlayerEntities.FirstOrDefault(x => x.CardId == NonCollectible.Neutral.TeronGorefiend_ImpendingDeath && (x.IsInPlay || x.IsInSetAside)) + var ench = _game.Opponent.PlayerEntities.FirstOrDefault(x => x.CardId == NonCollectible.Neutral.TeronGorefiend_ImpendingDeath && x.IsInPlay) + ?? _game.Opponent.PlayerEntities.LastOrDefault(x => x.CardId == NonCollectible.Neutral.TeronGorefiend_ImpendingDeath && x.IsInSetAside) ?? _game.Opponent.Graveyard.LastOrDefault(x => x.CardId == NonCollectible.Neutral.TeronGorefiend_ImpendingDeath); var target = ench?.GetTag(GameTag.ATTACHED) ?? 0; if(target > 0) diff --git a/Hearthstone Deck Tracker/BobsBuddy/BobsBuddyUtils.cs b/Hearthstone Deck Tracker/BobsBuddy/BobsBuddyUtils.cs index b1f21e58d..50fa87a92 100644 --- a/Hearthstone Deck Tracker/BobsBuddy/BobsBuddyUtils.cs +++ b/Hearthstone Deck Tracker/BobsBuddy/BobsBuddyUtils.cs @@ -110,10 +110,7 @@ internal static Minion GetMinionFromEntity(MinionFactory minionFactory, bool pla } } - // As of 198037 the shop identity of the card is more important, because e.g. Teron Gorefiends hero power - // encodes the id from the shop. Luckily we have COPIED_FROM_ENTITY_ID for that. - var copiedFromId = entity.GetTag(GameTag.COPIED_FROM_ENTITY_ID); - minion.game_id = copiedFromId > 0 ? copiedFromId : entity.Id; + minion.game_id = entity.Id; return minion; }