Core/Scripts: SMSG_PLAY_ONE_SHOT_ANIM_KIT corrections. Thx to Arci

This commit is contained in:
Lopfest
2016-01-26 18:58:02 +01:00
parent 2b9d40d423
commit 54ab2e0bdb
6 changed files with 34 additions and 12 deletions

View File

@@ -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)

View File

@@ -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);

View File

@@ -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:

View File

@@ -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;

View File

@@ -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:

View File

@@ -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