feat(Core/Scripting): Implement SetAutoAttackAllowed() to disable aut… (#20805)

* feat(Core/Scripting): Implement SetAutoAttackAllowed() to disable autoattacks

* Update ScriptedCreature.cpp
This commit is contained in:
Andrew
2024-12-02 08:11:18 -03:00
committed by GitHub
parent 3c706a8efc
commit 0f1618faf5
2 changed files with 10 additions and 2 deletions

View File

@@ -195,6 +195,7 @@ ScriptedAI::ScriptedAI(Creature* creature) : CreatureAI(creature),
_isHeroic = me->GetMap()->IsHeroic();
_difficulty = Difficulty(me->GetMap()->GetSpawnMode());
_invincible = false;
_canAutoAttack = true;
}
void ScriptedAI::AttackStartNoMove(Unit* who)
@@ -220,7 +221,8 @@ void ScriptedAI::UpdateAI(uint32 /*diff*/)
if (!UpdateVictim())
return;
DoMeleeAttackIfReady();
if (IsAutoAttackAllowed())
DoMeleeAttackIfReady();
}
void ScriptedAI::DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damagetype*/, SpellSchoolMask /*damageSchoolMask*/)
@@ -739,7 +741,8 @@ void BossAI::UpdateAI(uint32 diff)
}
}
DoMeleeAttackIfReady();
if (IsAutoAttackAllowed())
DoMeleeAttackIfReady();
}
void BossAI::DamageTaken(Unit* attacker, uint32& damage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask)

View File

@@ -442,10 +442,15 @@ struct ScriptedAI : public CreatureAI
void SetInvincibility(bool apply) { _invincible = apply; };
[[nodiscard]] bool IsInvincible() const { return _invincible; };
// Disables creature auto attacks.
void SetAutoAttackAllowed(bool allow) { _canAutoAttack = allow; };
[[nodiscard]] bool IsAutoAttackAllowed() const { return _canAutoAttack; };
private:
Difficulty _difficulty;
bool _isHeroic;
bool _invincible;
bool _canAutoAttack;
std::unordered_set<uint32> _uniqueTimedEvents;
};