[Avoid aoe] Enhance spell judge

This commit is contained in:
Yunfan Li 2024-04-19 19:25:50 +08:00
parent 7af4f3bb95
commit a94f626106
2 changed files with 19 additions and 15 deletions

View File

@ -123,7 +123,8 @@ Aura* AreaDebuffValue::Calculate()
// Unit::AuraApplicationMap& map = bot->GetAppliedAuras(); // Unit::AuraApplicationMap& map = bot->GetAppliedAuras();
Unit::AuraEffectList const& aurasPeriodicDamage = bot->GetAuraEffectsByType(SPELL_AURA_PERIODIC_DAMAGE); Unit::AuraEffectList const& aurasPeriodicDamage = bot->GetAuraEffectsByType(SPELL_AURA_PERIODIC_DAMAGE);
Unit::AuraEffectList const& aurasPeriodicTriggerSpell = bot->GetAuraEffectsByType(SPELL_AURA_PERIODIC_TRIGGER_SPELL); Unit::AuraEffectList const& aurasPeriodicTriggerSpell = bot->GetAuraEffectsByType(SPELL_AURA_PERIODIC_TRIGGER_SPELL);
for (const Unit::AuraEffectList& list : {aurasPeriodicDamage, aurasPeriodicTriggerSpell}) { Unit::AuraEffectList const& aurasPeriodicTriggerWithValueSpell = bot->GetAuraEffectsByType(SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE);
for (const Unit::AuraEffectList& list : {aurasPeriodicDamage, aurasPeriodicTriggerSpell, aurasPeriodicTriggerWithValueSpell}) {
for (auto i = list.begin(); i != list.end(); ++i) for (auto i = list.begin(); i != list.end(); ++i)
{ {
AuraEffect* aurEff = *i; AuraEffect* aurEff = *i;

View File

@ -39,22 +39,25 @@ bool PossibleTriggersValue::AcceptUnit(Unit* unit)
if (!unit->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE)) { if (!unit->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE)) {
return false; return false;
} }
Unit::AuraEffectList const& auras = unit->GetAuraEffectsByType(SPELL_AURA_PERIODIC_TRIGGER_SPELL); Unit::AuraEffectList const& aurasPeriodicTriggerSpell = bot->GetAuraEffectsByType(SPELL_AURA_PERIODIC_TRIGGER_SPELL);
for (auto i = auras.begin(); i != auras.end(); ++i) Unit::AuraEffectList const& aurasPeriodicTriggerWithValueSpell = bot->GetAuraEffectsByType(SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE);
{ for (const Unit::AuraEffectList& list : {aurasPeriodicTriggerSpell, aurasPeriodicTriggerWithValueSpell}) {
AuraEffect* aurEff = *i; for (auto i = list.begin(); i != list.end(); ++i)
const SpellInfo* spellInfo = aurEff->GetSpellInfo(); {
if (!spellInfo) AuraEffect* aurEff = *i;
continue; const SpellInfo* spellInfo = aurEff->GetSpellInfo();
const SpellInfo* triggerSpellInfo = sSpellMgr->GetSpellInfo(spellInfo->Effects[aurEff->GetEffIndex()].TriggerSpell); if (!spellInfo)
if (!triggerSpellInfo) continue;
continue; const SpellInfo* triggerSpellInfo = sSpellMgr->GetSpellInfo(spellInfo->Effects[aurEff->GetEffIndex()].TriggerSpell);
for (int j = 0; j < MAX_SPELL_EFFECTS; j++) { if (!triggerSpellInfo)
if (triggerSpellInfo->Effects[j].Effect == SPELL_EFFECT_SCHOOL_DAMAGE) { continue;
return true; for (int j = 0; j < MAX_SPELL_EFFECTS; j++) {
if (triggerSpellInfo->Effects[j].Effect == SPELL_EFFECT_SCHOOL_DAMAGE) {
return true;
}
} }
} }
} }
return false; return false;
// return true; // AttackersValue::IsPossibleTarget(unit, bot, range); // return true; // AttackersValue::IsPossibleTarget(unit, bot, range);
} }