diff --git a/src/server/game/Entities/Creature/TemporarySummon/NewPet.cpp b/src/server/game/Entities/Creature/TemporarySummon/NewPet.cpp index b50e2cb4a0..5c772f8a11 100644 --- a/src/server/game/Entities/Creature/TemporarySummon/NewPet.cpp +++ b/src/server/game/Entities/Creature/TemporarySummon/NewPet.cpp @@ -312,7 +312,7 @@ void NewPet::UpdatePlayerPetData(PlayerPetData* petData) petData->SavedHealth = GetHealth(); petData->SavedPower = GetPower(GetPowerType()); petData->LastSaveTime = static_cast(GameTime::GetGameTime()); - petData->ReactState = _disableActionSettings.has_value() ? _disableActionSettings->OriginalReactState : GetReactState(); + petData->ReactState = _disableActionsOriginalReactState.value_or(GetReactState()); petData->Slot = _playerPetDataKey->first; petData->Name = GetName(); petData->ActionBar = GenerateActionBarDataString(); @@ -435,22 +435,12 @@ void NewPet::DisablePetActions(bool disable) ASSERT(GetCharmInfo()); - // Store the original settings before we change them + // Store the original react state before we change it if (disable) - { - PetDisableActionSettings& settings = _disableActionSettings.emplace(); - settings.OriginalReactState = GetReactState(); - settings.OriginalCommandState = GetCharmInfo()->GetCommandState(); - } + _disableActionsOriginalReactState = GetReactState(); else - { - // Restore the settings - if (_disableActionSettings.has_value()) - { - SetReactState(_disableActionSettings->OriginalReactState); - GetCharmInfo()->SetCommandState(_disableActionSettings->OriginalCommandState); - } - } + if (_disableActionsOriginalReactState.has_value()) + SetReactState(*_disableActionsOriginalReactState); if (IsInWorld()) { diff --git a/src/server/game/Entities/Creature/TemporarySummon/NewPet.h b/src/server/game/Entities/Creature/TemporarySummon/NewPet.h index 8f3d6e418e..ce718865e4 100644 --- a/src/server/game/Entities/Creature/TemporarySummon/NewPet.h +++ b/src/server/game/Entities/Creature/TemporarySummon/NewPet.h @@ -125,7 +125,7 @@ class TC_GAME_API NewPet final : public NewGuardian bool _isClassPet; PetSpellMap _spells; Optional _playerPetDataKey; - Optional _disableActionSettings; + Optional _disableActionsOriginalReactState; PetTalentMap _talents; std::unique_ptr _declinedNames; EnumFlag _petModeFlags;