diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index c6485d813..c8af95af2 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1560,8 +1560,15 @@ void WorldSession::HandleRequestPetInfo(WorldPackets::Pet::RequestPetInfo& /*pac if (_player->GetPet()) _player->PetSpellInitialize(); - else if (_player->GetCharm()) - _player->CharmSpellInitialize(); + else if (Unit* charm = _player->GetCharm()) + { + if (charm->HasUnitState(UNIT_STATE_POSSESSED)) + _player->PossessSpellInitialize(); + else if (charm->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED) && charm->HasUnitFlag(UNIT_FLAG_POSSESSED)) + _player->VehicleSpellInitialize(); + else + _player->CharmSpellInitialize(); + } } void WorldSession::HandleSetTaxiBenchmarkOpcode(WorldPacket& recv_data)