fix party member dispel.

This commit is contained in:
Yunfan Li
2023-05-29 23:03:21 +08:00
parent aaa358bdbe
commit d45a7dc5b8
27 changed files with 316 additions and 89 deletions

View File

@@ -61,3 +61,68 @@ void TellLosAction::ListGameObjects(std::string const title, GuidVector gos)
botAI->TellMaster(chat->FormatGameobject(go));
}
}
bool TellAuraAction::Execute(Event event)
{
botAI->TellMaster("--- Auras ---");
sLog->outMessage("playerbot", LOG_LEVEL_DEBUG, "--- Auras ---");
Unit::AuraApplicationMap& map = bot->GetAppliedAuras();
for (Unit::AuraApplicationMap::iterator i = map.begin(); i != map.end(); ++i)
{
Aura * aura = i->second->GetBase();
if (!aura)
continue;
const std::string auraName = aura->GetSpellInfo()->SpellName[0];
sLog->outMessage("playerbot", LOG_LEVEL_DEBUG, "Info of Aura - name: " + auraName);
AuraObjectType type = aura->GetType();
WorldObject* owner = aura->GetOwner();
std::string owner_name = owner ? owner->GetName() : "unknown";
float distance = bot->GetDistance2d(owner);
Unit* caster = aura->GetCaster();
std::string caster_name = caster ? caster->GetName() : "unknown";
bool is_area = aura->IsArea();
int32 duration = aura->GetDuration();
const SpellInfo* spellInfo = aura->GetSpellInfo();
int32 spellId = aura->GetSpellInfo()->Id;
bool isPositive = aura->GetSpellInfo()->IsPositive();
sLog->outMessage("playerbot", LOG_LEVEL_DEBUG, "Info of Aura - name: " + auraName +
" caster: " + caster_name +
" type: " + std::to_string(type) +
" owner: " + owner_name +
" distance: " + std::to_string(distance) +
" isArea: " + std::to_string(is_area) +
" duration: " + std::to_string(duration) +
" spellId: " + std::to_string(spellId) +
" isPositive: " + std::to_string(isPositive));
botAI->TellMaster("Info of Aura - name: " + auraName +
" caster: " + caster_name +
" type: " + std::to_string(type) +
" owner: " + owner_name +
" distance: " + std::to_string(distance) +
" isArea: " + std::to_string(is_area) +
" duration: " + std::to_string(duration) +
" spellId: " + std::to_string(spellId) +
" isPositive: " + std::to_string(isPositive));
if (type == DYNOBJ_AURA_TYPE) {
DynamicObject* dyn_owner = aura->GetDynobjOwner();
float radius = dyn_owner->GetRadius();
int32 spellId = dyn_owner->GetSpellId();
int32 duration = dyn_owner->GetDuration();
sLog->outMessage("playerbot", LOG_LEVEL_DEBUG, std::string("Info of DynamicObject -") +
" name: " + dyn_owner->GetName() +
" radius: " + std::to_string(radius) +
" spell id: " + std::to_string(spellId) +
" duration: " + std::to_string(duration));
botAI->TellMaster(std::string("Info of DynamicObject -") +
" name: " + dyn_owner->GetName() +
" radius: " + std::to_string(radius) +
" spell id: " + std::to_string(spellId) +
" duration: " + std::to_string(duration));
}
}
return true;
}