fix(Scripts/Karazhan): Fix Aran combat movement behavior (#17359)

* fix(Scripts/Karazhan): Fix Aran combat movement behavior

* Update SmartScript.cpp
This commit is contained in:
Skjalf
2023-09-26 18:27:23 -03:00
committed by GitHub
parent c05acf4f96
commit ae99ce586a
3 changed files with 38 additions and 1 deletions

View File

@@ -3707,6 +3707,24 @@ uint32 Creature::GetPlayerDamageReq() const
return _playerDamageReq;
}
bool Creature::CanCastSpell(uint32 spellID) const
{
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellID);
int32 currentPower = GetPower(getPowerType());
if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SILENCED) || IsSpellProhibited(spellInfo->GetSchoolMask()))
{
return false;
}
if (spellInfo && (currentPower < spellInfo->CalcPowerCost(this, spellInfo->GetSchoolMask())))
{
return false;
}
return true;
}
std::string Creature::GetDebugInfo() const
{
std::stringstream sstr;

View File

@@ -399,6 +399,12 @@ public:
* */
void ResumeChasingVictim() { GetMotionMaster()->MoveChase(GetVictim()); };
/**
* @brief Returns true if the creature is able to cast the spell.
*
* */
bool CanCastSpell(uint32 spellID) const;
std::string GetDebugInfo() const override;
protected:

View File

@@ -256,7 +256,20 @@ struct boss_shade_of_aran : public BossAI
if (AvailableSpells)
{
CurrentNormalSpell = Spells[rand() % AvailableSpells];
DoCast(target, CurrentNormalSpell);
if (!me->CanCastSpell(CurrentNormalSpell))
{
me->SetWalk(false);
me->ResumeChasingVictim();
}
else
{
DoCast(target, CurrentNormalSpell);
if (me->GetVictim())
{
me->GetMotionMaster()->MoveChase(me->GetVictim(), 45.0f);
}
}
}
}
context.Repeat(2s);