diff options
Diffstat (limited to 'src/server')
| -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();  } | 
