Merge branch 'liyunfan1223:master' into bot_questing

This commit is contained in:
Atidote
2024-08-05 17:58:30 +02:00
committed by GitHub
12 changed files with 71 additions and 39 deletions

View File

@@ -1567,7 +1567,7 @@ bool PlayerbotAI::ContainsStrategy(StrategyType type)
{
for (uint8 i = 0; i < BOT_STATE_MAX; i++)
{
if (engines[i]->ContainsStrategy(type))
if (engines[i]->HasStrategyType(type))
return true;
}
@@ -3671,28 +3671,29 @@ bool PlayerbotAI::HasAuraToDispel(Unit* target, uint32 dispelType)
return false;
}
bool isFriend = bot->IsFriendlyTo(target);
for (uint32 type = SPELL_AURA_NONE; type < TOTAL_AURAS; ++type)
Unit::VisibleAuraMap const* visibleAuras = target->GetVisibleAuras();
for (Unit::VisibleAuraMap::const_iterator itr = visibleAuras->begin(); itr != visibleAuras->end(); ++itr)
{
Unit::AuraEffectList const& auras = target->GetAuraEffectsByType((AuraType)type);
for (AuraEffect const* aurEff : auras)
{
Aura const* aura = aurEff->GetBase();
SpellInfo const* spellInfo = aura->GetSpellInfo();
Aura* aura = itr->second->GetBase();
bool isPositiveSpell = spellInfo->IsPositive();
if (isPositiveSpell && isFriend)
continue;
if (aura->IsPassive())
continue;
if (!isPositiveSpell && !isFriend)
continue;
if (sPlayerbotAIConfig->dispelAuraDuration && aura->GetDuration() &&
aura->GetDuration() < (int32)sPlayerbotAIConfig->dispelAuraDuration)
continue;
if (sPlayerbotAIConfig->dispelAuraDuration && aura->GetDuration() &&
aura->GetDuration() < (int32)sPlayerbotAIConfig->dispelAuraDuration)
continue;
SpellInfo const* spellInfo = aura->GetSpellInfo();
if (canDispel(spellInfo, dispelType))
return true;
}
bool isPositiveSpell = spellInfo->IsPositive();
if (isPositiveSpell && isFriend)
continue;
if (!isPositiveSpell && !isFriend)
continue;
if (canDispel(spellInfo, dispelType))
return true;
}
return false;
}