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>2017-01-21 14:50:09 +0100
commit44388bc8fb7d51c2454372d40a4c929b887ee668 (patch)
treeeba2366e14e5f5964fdeb565719bbf0faf229665 /src
parent38f9919a37e0a3f17c454d4353d9ff2b79382e6b (diff)
Core/Pets: Disable pet interface for charmed units while mounted (#18607)
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 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);
}
}