aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorxinef1 <w.szyszko2@gmail.com>2017-01-21 14:50:09 +0100
committerShauren <shauren.trinity@gmail.com>2018-12-09 14:18:42 +0100
commite1cda579558c90395d125eb04e16aea29c07782e (patch)
treefaafae2a335bdf1123470a78737f85c895281a6f /src
parent4afee01b0186da0533905eabfbded5a25a3992b5 (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.cpp10
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);
}
}