mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-18 19:35:42 +00:00
refactor(Core): apply clang-tidy modernize-use-override (#3817)
This commit is contained in:
@@ -44,7 +44,7 @@ public:
|
||||
_targetGUID = 0;
|
||||
}
|
||||
|
||||
void MovementInform(uint32 type, uint32 point)
|
||||
void MovementInform(uint32 type, uint32 point) override
|
||||
{
|
||||
if (type == POINT_MOTION_TYPE && point == 1)
|
||||
{
|
||||
@@ -53,7 +53,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void InitializeAI()
|
||||
void InitializeAI() override
|
||||
{
|
||||
ScriptedAI::InitializeAI();
|
||||
Unit* owner = me->GetOwner();
|
||||
@@ -98,7 +98,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void AttackStart(Unit* who)
|
||||
void AttackStart(Unit* who) override
|
||||
{
|
||||
RemoveTargetAura();
|
||||
_targetGUID = who->GetGUID();
|
||||
@@ -112,7 +112,7 @@ public:
|
||||
target->RemoveAura(SPELL_DK_SUMMON_GARGOYLE_1, me->GetGUID());
|
||||
}
|
||||
|
||||
void Reset()
|
||||
void Reset() override
|
||||
{
|
||||
_selectionTimer = 0;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
@@ -147,7 +147,7 @@ public:
|
||||
_despawning = true;
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (_initialSelection)
|
||||
{
|
||||
@@ -206,7 +206,7 @@ public:
|
||||
bool _initialSelection;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_pet_dk_ebon_gargoyleAI(creature);
|
||||
}
|
||||
@@ -221,14 +221,14 @@ public:
|
||||
{
|
||||
npc_pet_dk_ghoulAI(Creature* c) : CombatAI(c) { }
|
||||
|
||||
void JustDied(Unit* /*who*/)
|
||||
void JustDied(Unit* /*who*/) override
|
||||
{
|
||||
if (me->IsGuardian() || me->IsSummon())
|
||||
me->ToTempSummon()->UnSummon();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* pCreature) const
|
||||
CreatureAI* GetAI(Creature* pCreature) const override
|
||||
{
|
||||
return new npc_pet_dk_ghoulAI (pCreature);
|
||||
}
|
||||
@@ -243,7 +243,7 @@ public:
|
||||
{
|
||||
npc_pet_dk_army_of_the_deadAI(Creature* creature) : CombatAI(creature) { }
|
||||
|
||||
void InitializeAI()
|
||||
void InitializeAI() override
|
||||
{
|
||||
CombatAI::InitializeAI();
|
||||
((Minion*)me)->SetFollowAngle(rand_norm() * 2 * M_PI);
|
||||
@@ -254,7 +254,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_pet_dk_army_of_the_deadAI (creature);
|
||||
}
|
||||
@@ -269,7 +269,7 @@ public:
|
||||
{
|
||||
npc_pet_dk_dancing_rune_weaponAI(Creature* creature) : NullCreatureAI(creature) { }
|
||||
|
||||
void InitializeAI()
|
||||
void InitializeAI() override
|
||||
{
|
||||
// Xinef: Hit / Expertise scaling
|
||||
me->AddAura(61017, me);
|
||||
@@ -280,7 +280,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_pet_dk_dancing_rune_weaponAI (creature);
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public:
|
||||
{
|
||||
npc_pet_gen_mojoAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
void Reset()
|
||||
void Reset() override
|
||||
{
|
||||
_victimGUID = 0;
|
||||
|
||||
@@ -45,10 +45,10 @@ public:
|
||||
me->GetMotionMaster()->MoveFollow(owner, 0.0f, 0.0f);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) { }
|
||||
void UpdateAI(uint32 /*diff*/) { }
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
void UpdateAI(uint32 /*diff*/) override { }
|
||||
|
||||
void ReceiveEmote(Player* player, uint32 emote)
|
||||
void ReceiveEmote(Player* player, uint32 emote) override
|
||||
{
|
||||
me->HandleEmoteCommand(emote);
|
||||
Unit* owner = me->GetOwner();
|
||||
@@ -75,7 +75,7 @@ public:
|
||||
uint64 _victimGUID;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_pet_gen_mojoAI(creature);
|
||||
}
|
||||
@@ -116,7 +116,7 @@ public:
|
||||
|
||||
Player* GetOwner() const { return ObjectAccessor::GetPlayer(*me, ownerGUID); }
|
||||
|
||||
void SpellHitTarget(Unit* target, const SpellInfo* spellInfo)
|
||||
void SpellHitTarget(Unit* target, const SpellInfo* spellInfo) override
|
||||
{
|
||||
if (spellInfo->Id == SPELL_STEAL_ESSENCE_VISUAL && target == me)
|
||||
{
|
||||
@@ -126,7 +126,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
events.Update(diff);
|
||||
switch (events.ExecuteEvent())
|
||||
@@ -143,7 +143,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_pet_gen_soul_trader_beaconAI (creature);
|
||||
}
|
||||
@@ -455,7 +455,7 @@ public:
|
||||
uint32 bombSpellId;
|
||||
uint32 checkTimer;
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
checkTimer += diff;
|
||||
if (checkTimer >= 1000)
|
||||
@@ -481,7 +481,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* pCreature) const
|
||||
CreatureAI* GetAI(Creature* pCreature) const override
|
||||
{
|
||||
return new npc_pet_gen_target_following_bombAI (pCreature);
|
||||
}
|
||||
@@ -501,12 +501,12 @@ public:
|
||||
|
||||
uint32 checkTimer;
|
||||
|
||||
void Reset()
|
||||
void Reset() override
|
||||
{
|
||||
me->GetMotionMaster()->Clear(false);
|
||||
}
|
||||
|
||||
void AttackStart(Unit* who)
|
||||
void AttackStart(Unit* who) override
|
||||
{
|
||||
if (!who)
|
||||
return;
|
||||
@@ -515,7 +515,7 @@ public:
|
||||
DoStartNoMovement(who);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 /*diff*/)
|
||||
void UpdateAI(uint32 /*diff*/) override
|
||||
{
|
||||
if (!me->GetVictim())
|
||||
return;
|
||||
@@ -528,7 +528,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_pet_gen_gnomish_flame_turretAI (creature);
|
||||
}
|
||||
@@ -551,7 +551,7 @@ public:
|
||||
|
||||
uint32 targetCheck;
|
||||
|
||||
void InitializeAI()
|
||||
void InitializeAI() override
|
||||
{
|
||||
if (Player* owner = me->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||
if (Unit* target = owner->GetSelectedUnit())
|
||||
@@ -559,7 +559,7 @@ public:
|
||||
AttackStart(target);
|
||||
}
|
||||
|
||||
void OwnerAttacked(Unit* target)
|
||||
void OwnerAttacked(Unit* target) override
|
||||
{
|
||||
if (!target || (me->GetVictim() && me->GetVictim()->IsAlive() && !me->GetVictim()->HasBreakableByDamageCrowdControlAura()))
|
||||
return;
|
||||
@@ -567,7 +567,7 @@ public:
|
||||
AttackStart(target);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
{
|
||||
@@ -588,7 +588,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* pCreature) const
|
||||
CreatureAI* GetAI(Creature* pCreature) const override
|
||||
{
|
||||
return new npc_pet_gen_valkyr_guardianAI (pCreature);
|
||||
}
|
||||
@@ -614,13 +614,13 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
void Register() override
|
||||
{
|
||||
OnHit += SpellHitFn(spell_pet_gen_valkyr_guardian_smite_SpellScript::RecalculateDamage);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
SpellScript* GetSpellScript() const override
|
||||
{
|
||||
return new spell_pet_gen_valkyr_guardian_smite_SpellScript();
|
||||
}
|
||||
@@ -645,7 +645,7 @@ public:
|
||||
uint64 _ownerGUID;
|
||||
bool _hasParty;
|
||||
|
||||
void InitializeAI()
|
||||
void InitializeAI() override
|
||||
{
|
||||
NullCreatureAI::InitializeAI();
|
||||
|
||||
@@ -674,7 +674,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
_talkTimer += diff;
|
||||
if (_talkTimer >= 5000)
|
||||
@@ -698,7 +698,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* pCreature) const
|
||||
CreatureAI* GetAI(Creature* pCreature) const override
|
||||
{
|
||||
return new npc_pet_gen_imp_in_a_bottleAI (pCreature);
|
||||
}
|
||||
@@ -723,7 +723,7 @@ public:
|
||||
uint32 checkTimer;
|
||||
uint32 checkTimer2;
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
checkTimer2 += diff;
|
||||
if (checkTimer2 > 2000)
|
||||
@@ -749,7 +749,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* pCreature) const
|
||||
CreatureAI* GetAI(Creature* pCreature) const override
|
||||
{
|
||||
return new npc_pet_gen_wind_rider_cubAI (pCreature);
|
||||
}
|
||||
@@ -781,7 +781,7 @@ public:
|
||||
uint32 checkTimer;
|
||||
bool jumping;
|
||||
|
||||
void MovementInform(uint32 type, uint32 id)
|
||||
void MovementInform(uint32 type, uint32 id) override
|
||||
{
|
||||
if (type == EFFECT_MOTION_TYPE && id == 1)
|
||||
{
|
||||
@@ -790,7 +790,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (jumping)
|
||||
return;
|
||||
@@ -824,7 +824,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* pCreature) const
|
||||
CreatureAI* GetAI(Creature* pCreature) const override
|
||||
{
|
||||
return new npc_pet_gen_plump_turkeyAI (pCreature);
|
||||
}
|
||||
@@ -843,19 +843,19 @@ public:
|
||||
|
||||
uint32 checkTimer;
|
||||
|
||||
void Reset() { checkTimer = 3000; }
|
||||
void Reset() override { checkTimer = 3000; }
|
||||
|
||||
void EnterEvadeMode()
|
||||
void EnterEvadeMode() override
|
||||
{
|
||||
}
|
||||
|
||||
void MovementInform(uint32 type, uint32 id)
|
||||
void MovementInform(uint32 type, uint32 id) override
|
||||
{
|
||||
if (type == EFFECT_MOTION_TYPE && id == 1)
|
||||
checkTimer = 1;
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (checkTimer)
|
||||
{
|
||||
@@ -876,7 +876,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* pCreature) const
|
||||
CreatureAI* GetAI(Creature* pCreature) const override
|
||||
{
|
||||
return new npc_pet_gen_toxic_wastelingAI (pCreature);
|
||||
}
|
||||
@@ -896,7 +896,7 @@ public:
|
||||
uint32 checkTimer;
|
||||
uint64 targetGUID;
|
||||
|
||||
void IsSummonedBy(Unit* summoner)
|
||||
void IsSummonedBy(Unit* summoner) override
|
||||
{
|
||||
if (!summoner)
|
||||
return;
|
||||
@@ -907,7 +907,7 @@ public:
|
||||
me->CastSpell(me, 48649 /*SPELL_PET_TOY_FETCH_BALL_COME_HERE*/, true);
|
||||
}
|
||||
|
||||
void SpellHitTarget(Unit* target, const SpellInfo* spellInfo)
|
||||
void SpellHitTarget(Unit* target, const SpellInfo* spellInfo) override
|
||||
{
|
||||
if (spellInfo->Id == 48649 /*SPELL_PET_TOY_FETCH_BALL_COME_HERE*/)
|
||||
{
|
||||
@@ -916,7 +916,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
checkTimer += diff;
|
||||
if (checkTimer >= 1000)
|
||||
@@ -933,7 +933,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* pCreature) const
|
||||
CreatureAI* GetAI(Creature* pCreature) const override
|
||||
{
|
||||
return new npc_pet_gen_fetch_ballAI (pCreature);
|
||||
}
|
||||
@@ -954,7 +954,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* pCreature) const
|
||||
CreatureAI* GetAI(Creature* pCreature) const override
|
||||
{
|
||||
return new npc_pet_gen_mothAI (pCreature);
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ public:
|
||||
{
|
||||
npc_pet_hunter_snake_trapAI(Creature* creature) : ScriptedAI(creature) { _init = false; }
|
||||
|
||||
void Reset()
|
||||
void Reset() override
|
||||
{
|
||||
_spellTimer = urand(1500, 3000);
|
||||
|
||||
@@ -48,7 +48,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void EnterEvadeMode()
|
||||
void EnterEvadeMode() override
|
||||
{
|
||||
// _EnterEvadeMode();
|
||||
me->DeleteThreatList();
|
||||
@@ -65,7 +65,7 @@ public:
|
||||
}
|
||||
|
||||
//Redefined for random target selection:
|
||||
void MoveInLineOfSight(Unit* who)
|
||||
void MoveInLineOfSight(Unit* who) override
|
||||
{
|
||||
if (!me->GetVictim() && who->isTargetableForAttack() && (me->IsHostileTo(who)) && who->isInAccessiblePlaceFor(me))
|
||||
{
|
||||
@@ -80,7 +80,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
@@ -136,7 +136,7 @@ public:
|
||||
uint32 _spellTimer;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_pet_hunter_snake_trapAI(creature);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ class DeathEvent : public BasicEvent
|
||||
public:
|
||||
DeathEvent(Creature& owner) : BasicEvent(), _owner(owner) { }
|
||||
|
||||
bool Execute(uint64 /*eventTime*/, uint32 /*diff*/)
|
||||
bool Execute(uint64 /*eventTime*/, uint32 /*diff*/) override
|
||||
{
|
||||
Unit::Kill(&_owner, &_owner);
|
||||
return true;
|
||||
@@ -56,7 +56,7 @@ public:
|
||||
uint32 checktarget;
|
||||
uint32 dist = urand(1, 5);
|
||||
|
||||
void InitializeAI()
|
||||
void InitializeAI() override
|
||||
{
|
||||
CasterAI::InitializeAI();
|
||||
Unit* owner = me->GetOwner();
|
||||
@@ -127,7 +127,7 @@ public:
|
||||
}
|
||||
|
||||
// Do not reload Creature templates on evade mode enter - prevent visual lost
|
||||
void EnterEvadeMode()
|
||||
void EnterEvadeMode() override
|
||||
{
|
||||
if (me->IsInEvadeMode() || !me->IsAlive())
|
||||
return;
|
||||
@@ -170,13 +170,13 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void Reset()
|
||||
void Reset() override
|
||||
{
|
||||
selectionTimer = 0;
|
||||
checktarget = 0;
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
events.Update(diff);
|
||||
if (events.GetTimer() < 1200)
|
||||
@@ -211,7 +211,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_pet_mage_mirror_imageAI(creature);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ public:
|
||||
{
|
||||
npc_pet_pri_lightwellAI(Creature* creature) : TotemAI(creature) { }
|
||||
|
||||
void InitializeAI()
|
||||
void InitializeAI() override
|
||||
{
|
||||
if (Unit* owner = me->ToTempSummon()->GetSummoner())
|
||||
{
|
||||
@@ -47,7 +47,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_pet_pri_lightwellAI(creature);
|
||||
}
|
||||
@@ -62,7 +62,7 @@ public:
|
||||
{
|
||||
npc_pet_pri_shadowfiendAI(Creature* creature) : PetAI(creature) { }
|
||||
|
||||
void Reset()
|
||||
void Reset() override
|
||||
{
|
||||
PetAI::Reset();
|
||||
if (!me->HasAura(SPELL_PRIEST_SHADOWFIEND_DODGE))
|
||||
@@ -72,7 +72,7 @@ public:
|
||||
AttackStart(target);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (me->IsSummon())
|
||||
if (Unit* owner = me->ToTempSummon()->GetSummoner())
|
||||
@@ -81,7 +81,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_pet_pri_shadowfiendAI(creature);
|
||||
}
|
||||
|
||||
@@ -41,18 +41,18 @@ public:
|
||||
npc_pet_shaman_earth_elementalAI(Creature* creature) : ScriptedAI(creature), _initAttack(true) { }
|
||||
|
||||
|
||||
void EnterCombat(Unit*)
|
||||
void EnterCombat(Unit*) override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_SHAMAN_ANGEREDEARTH, 0);
|
||||
}
|
||||
|
||||
void InitializeAI()
|
||||
void InitializeAI() override
|
||||
{
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (_initAttack)
|
||||
{
|
||||
@@ -83,7 +83,7 @@ public:
|
||||
bool _initAttack;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_pet_shaman_earth_elementalAI(creature);
|
||||
}
|
||||
@@ -98,12 +98,12 @@ public:
|
||||
{
|
||||
npc_pet_shaman_fire_elementalAI(Creature* creature) : ScriptedAI(creature), _initAttack(true) { }
|
||||
|
||||
void InitializeAI()
|
||||
void InitializeAI() override
|
||||
{
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit*)
|
||||
void EnterCombat(Unit*) override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_SHAMAN_FIRENOVA, urand(5000, 20000));
|
||||
@@ -114,7 +114,7 @@ public:
|
||||
me->CastSpell(me, SPELL_SHAMAN_FIRESHIELD, true);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (_initAttack)
|
||||
{
|
||||
@@ -155,7 +155,7 @@ public:
|
||||
bool _initAttack;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_pet_shaman_fire_elementalAI(creature);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user