diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 19 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 | ||||
-rw-r--r-- | src/server/game/Scripting/MapScripts.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.h | 11 | ||||
-rw-r--r-- | src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp | 4 |
6 files changed, 34 insertions, 12 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 8b26988726d..cd0213c0f58 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -13429,6 +13429,17 @@ void Unit::SendDurabilityLoss(Player* receiver, uint32 percent) receiver->GetSession()->SendPacket(packet.Write()); } +void Unit::PlayOneShotAnimKitId(uint16 animKitId) +{ + if (animKitId && !sAnimKitStore.LookupEntry(animKitId)) + return; + + WorldPackets::Misc::PlayOneShotAnimKit data; + data.Unit = GetGUID(); + data.AnimKitID = animKitId; + SendMessageToSet(data.Write(), true); +} + void Unit::SetAIAnimKitId(uint16 animKitId) { if (_aiAnimKitId == animKitId) @@ -13477,14 +13488,6 @@ void Unit::SetMeleeAnimKitId(uint16 animKitId) SendMessageToSet(data.Write(), true); } -void Unit::PlayOneShotAnimKit(uint16 animKitId) -{ - WorldPacket data(SMSG_PLAY_ONE_SHOT_ANIM_KIT, 7+2); - data << GetPackGUID(); - data << uint16(animKitId); - SendMessageToSet(&data, true); -} - void Unit::Kill(Unit* victim, bool durabilityLoss) { // Prevent killing unit twice (and giving reward from kill twice) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 3ef6800c7e7..4c945365640 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1499,13 +1499,13 @@ class Unit : public WorldObject MountCapabilityEntry const* GetMountCapability(uint32 mountType) const; void SendDurabilityLoss(Player* receiver, uint32 percent); + void PlayOneShotAnimKitId(uint16 animKitId); void SetAIAnimKitId(uint16 animKitId); uint16 GetAIAnimKitId() const override { return _aiAnimKitId; } void SetMovementAnimKitId(uint16 animKitId); uint16 GetMovementAnimKitId() const override { return _movementAnimKitId; } void SetMeleeAnimKitId(uint16 animKitId); uint16 GetMeleeAnimKitId() const override { return _meleeAnimKitId; } - void PlayOneShotAnimKit(uint16 animKitId); uint16 GetMaxSkillValueForLevel(Unit const* target = NULL) const { return (target ? getLevelForTarget(target) : getLevel()) * 5; } void DealDamageMods(Unit* victim, uint32 &damage, uint32* absorb); diff --git a/src/server/game/Scripting/MapScripts.cpp b/src/server/game/Scripting/MapScripts.cpp index 34b87a378d3..8caabbbe1ec 100644 --- a/src/server/game/Scripting/MapScripts.cpp +++ b/src/server/game/Scripting/MapScripts.cpp @@ -892,7 +892,7 @@ void Map::ScriptsProcess() case SCRIPT_COMMAND_PLAY_ANIMKIT: // Source must be Creature. if (Creature* cSource = _GetScriptCreature(source, true, step.script)) - cSource->PlayOneShotAnimKit(step.script->PlayAnimKit.AnimKitID); + cSource->PlayOneShotAnimKitId(step.script->PlayAnimKit.AnimKitID); break; default: diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index ab9acfe2172..4b5fbf40a2d 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -524,6 +524,14 @@ WorldPacket const* WorldPackets::Misc::LoadCUFProfiles::Write() return &_worldPacket; } +WorldPacket const* WorldPackets::Misc::PlayOneShotAnimKit::Write() +{ + _worldPacket << Unit; + _worldPacket << uint16(AnimKitID); + + return &_worldPacket; +} + WorldPacket const* WorldPackets::Misc::SetAIAnimKit::Write() { _worldPacket << Unit; diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index b653bf4a00a..bb090525b9d 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -666,6 +666,17 @@ namespace WorldPackets std::vector<CUFProfile const*> CUFProfiles; }; + class PlayOneShotAnimKit final : public ServerPacket + { + public: + PlayOneShotAnimKit() : ServerPacket(SMSG_PLAY_ONE_SHOT_ANIM_KIT, 7 + 2) { } + + WorldPacket const* Write() override; + + ObjectGuid Unit; + uint16 AnimKitID = 0; + }; + class SetAIAnimKit final : public ServerPacket { public: diff --git a/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp b/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp index 839e214fde7..ae608a86413 100644 --- a/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp +++ b/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp @@ -281,7 +281,7 @@ class npc_blazing_monstrosity : public CreatureScript { DoZoneInCombat(); me->RemoveAurasDueToSpell(SPELL_SLEEP_ULTRA_HIGH_PRIORITY); - me->PlayOneShotAnimKit(ANIM_KIT_BIRD_WAKE); + me->PlayOneShotAnimKitId(ANIM_KIT_BIRD_WAKE); _events.Reset(); _events.ScheduleEvent(EVENT_START_SPITTING, 6000); _events.ScheduleEvent(EVENT_CONTINUE_SPITTING, 9000); @@ -602,7 +602,7 @@ class spell_alysrazor_turn_monstrosity : public SpellScriptLoader void TurnBird(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetHitUnit()->PlayOneShotAnimKit(ANIM_KIT_BIRD_TURN); + GetHitUnit()->PlayOneShotAnimKitId(ANIM_KIT_BIRD_TURN); } void Register() override |