aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp19
-rw-r--r--src/server/game/Entities/Unit/Unit.h2
-rw-r--r--src/server/game/Scripting/MapScripts.cpp2
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h11
-rw-r--r--src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp4
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