diff options
author | xinef1 <w.szyszko2@gmail.com> | 2017-01-21 14:50:09 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2018-12-09 14:18:42 +0100 |
commit | e1cda579558c90395d125eb04e16aea29c07782e (patch) | |
tree | faafae2a335bdf1123470a78737f85c895281a6f /src | |
parent | 4afee01b0186da0533905eabfbded5a25a3992b5 (diff) |
Core/Pets: Disable pet interface for charmed units while mounted (#18607)
(cherry-picked from 44388bc8fb7d51c2454372d40a4c929b887ee668)
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 b42177f62c0..bd375f96b6c 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -7547,6 +7547,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); + player->SendMovementSetCollisionHeight(player->GetCollisionHeight(true)); } @@ -7589,6 +7594,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); } } |