Pet/DK: Make Risen Ghoul and Bloodworms no longer suicidally charge into not-yet-engaged mob packs.

This commit is contained in:
treeston
2016-08-17 11:38:31 +02:00
parent dc78f1ecfc
commit 8c690f9edc
2 changed files with 31 additions and 30 deletions

View File

@@ -0,0 +1,2 @@
-- add AI to bloodworms to make them not stupid and suicidal
UPDATE `creature_template` SET `ScriptName`='npc_pet_dk_guardian', `AIName`='' WHERE `entry` IN (26125,28017);

View File

@@ -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,25 +101,8 @@ 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;
}
CasterAI::UpdateAI(diff);
}
private:
uint32 _despawnTimer;
};
CreatureAI* GetAI(Creature* creature) const override
@@ -139,7 +111,34 @@ class npc_pet_dk_ebon_gargoyle : public CreatureScript
}
};
class npc_pet_dk_guardian : public CreatureScript
{
public:
npc_pet_dk_guardian() : CreatureScript("npc_pet_dk_guardian") { }
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_guardianAI(creature);
}
};
void AddSC_deathknight_pet_scripts()
{
new npc_pet_dk_ebon_gargoyle();
new npc_pet_dk_guardian();
}