diff options
| author | treeston <treeston.mmoc@gmail.com> | 2016-08-19 23:54:44 +0200 |
|---|---|---|
| committer | treeston <treeston.mmoc@gmail.com> | 2016-08-19 23:54:44 +0200 |
| commit | aeeae8d09c81e48d68ee3ff5a9588f8f94f5ad4d (patch) | |
| tree | aac108cdf1496ddad893fadc8c0b12e5376c2f6e /src | |
| parent | ba4d6f63936fe3269e6c8b75358bc00a78fd49df (diff) | |
| parent | 8c690f9edc3e4e7edd4cf4886ff616c8e6ac4e7e (diff) | |
Merge remote-tracking branch 'Treeston/3.3.5-petaggro' into 3.3.5 (PR #17800)
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/scripts/Pet/pet_dk.cpp | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/src/server/scripts/Pet/pet_dk.cpp b/src/server/scripts/Pet/pet_dk.cpp index 113b14a0d54..ceb400bf4a3 100644 --- a/src/server/scripts/Pet/pet_dk.cpp +++ b/src/server/scripts/Pet/pet_dk.cpp @@ -43,21 +43,10 @@ class npc_pet_dk_ebon_gargoyle : public CreatureScript struct npc_pet_dk_ebon_gargoyleAI : CasterAI { - npc_pet_dk_ebon_gargoyleAI(Creature* creature) : CasterAI(creature) - { - Initialize(); - } - - void Initialize() - { - // Not needed to be despawned now - _despawnTimer = 0; - } + npc_pet_dk_ebon_gargoyleAI(Creature* creature) : CasterAI(creature) { } void InitializeAI() override { - Initialize(); - CasterAI::InitializeAI(); ObjectGuid ownerGuid = me->GetOwnerGUID(); if (!ownerGuid) @@ -112,34 +101,44 @@ class npc_pet_dk_ebon_gargoyle : public CreatureScript me->GetMotionMaster()->MovePoint(0, x, y, z); // Despawn as soon as possible - _despawnTimer = 4 * IN_MILLISECONDS; + me->DespawnOrUnsummon(Seconds(4)); } + }; - void UpdateAI(uint32 diff) override - { - if (_despawnTimer > 0) - { - if (_despawnTimer > diff) - _despawnTimer -= diff; - else - me->DespawnOrUnsummon(); - return; - } + CreatureAI* GetAI(Creature* creature) const override + { + return new npc_pet_dk_ebon_gargoyleAI(creature); + } +}; - CasterAI::UpdateAI(diff); - } +class npc_pet_dk_guardian : public CreatureScript +{ + public: + npc_pet_dk_guardian() : CreatureScript("npc_pet_dk_guardian") { } - private: - uint32 _despawnTimer; + struct npc_pet_dk_guardianAI : public AggressorAI + { + npc_pet_dk_guardianAI(Creature* creature) : AggressorAI(creature) { } + + bool CanAIAttack(Unit const* target) const override + { + if (!target) + return false; + Unit* owner = me->GetOwner(); + if (owner && !target->IsInCombatWith(owner)) + return false; + return AggressorAI::CanAIAttack(target); + } }; CreatureAI* GetAI(Creature* creature) const override { - return new npc_pet_dk_ebon_gargoyleAI(creature); + return new npc_pet_dk_guardianAI(creature); } }; void AddSC_deathknight_pet_scripts() { new npc_pet_dk_ebon_gargoyle(); + new npc_pet_dk_guardian(); } |
