diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f31117d30aa..2af8d3dcc79 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8371,6 +8371,11 @@ void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry) player->UnsummonPetTemporaryIfAny(); } + // if we have charmed npc, stun him also (everywhere) + if (Unit* charm = player->GetCharm()) + if (charm->GetTypeId() == TYPEID_UNIT) + charm->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED); + WorldPacket data(SMSG_MOVE_SET_COLLISION_HGT, GetPackGUID().size() + 4 + 4); data << GetPackGUID(); data << uint32(sWorld->GetGameTime()); // Packet counter @@ -8428,6 +8433,11 @@ void Unit::Dismount() } else player->ResummonPetTemporaryUnSummonedIfAny(); + + // if we have charmed npc, remove stun also + if (Unit* charm = player->GetCharm()) + if (charm->GetTypeId() == TYPEID_UNIT && charm->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED) && !charm->HasUnitState(UNIT_STATE_STUNNED)) + charm->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED); } } |