mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
70 lines
2.0 KiB
C++
70 lines
2.0 KiB
C++
/*
|
|
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
|
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
|
*/
|
|
|
|
#include "ShamanActions.h"
|
|
|
|
#include "Playerbots.h"
|
|
#include "Totem.h"
|
|
|
|
bool CastTotemAction::isUseful()
|
|
{
|
|
if (needLifeTime > 0.1f)
|
|
{
|
|
Unit* target = AI_VALUE(Unit*, "current target");
|
|
if (!target)
|
|
{
|
|
return false;
|
|
}
|
|
float dps = AI_VALUE(float, "estimated group dps");
|
|
if (target->GetHealth() / dps < needLifeTime)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
return CastBuffSpellAction::isUseful() && !AI_VALUE2(bool, "has totem", name) && !botAI->HasAura(buff, bot);
|
|
}
|
|
|
|
bool CastManaSpringTotemAction::isUseful()
|
|
{
|
|
return CastTotemAction::isUseful() && !AI_VALUE2(bool, "has totem", "healing stream totem");
|
|
}
|
|
|
|
bool CastFlametongueTotemAction::isUseful()
|
|
{
|
|
return CastTotemAction::isUseful() && !AI_VALUE2(bool, "has totem", "magma totem") &&
|
|
!botAI->HasAura("totem of wrath", bot);
|
|
}
|
|
|
|
bool CastSearingTotemAction::isUseful()
|
|
{
|
|
return CastTotemAction::isUseful() && !AI_VALUE2(bool, "has totem", "flametongue totem");
|
|
}
|
|
|
|
bool CastMagmaTotemAction::isUseful() {
|
|
Unit* target = AI_VALUE(Unit*, "current target");
|
|
if (!target || !bot->IsWithinMeleeRange(target))
|
|
return false;
|
|
|
|
return CastTotemAction::isUseful() && !AI_VALUE2(bool, "has totem", name);
|
|
}
|
|
|
|
bool CastFireNovaAction::isUseful() {
|
|
Unit* target = AI_VALUE(Unit*, "current target");
|
|
if (!target)
|
|
return false;
|
|
Creature* fireTotem = bot->GetMap()->GetCreature(bot->m_SummonSlot[1]);
|
|
if (!fireTotem)
|
|
return false;
|
|
|
|
if (target->GetDistance(fireTotem) > 8.0f)
|
|
return false;
|
|
|
|
return CastMeleeSpellAction::isUseful();
|
|
}
|
|
|
|
bool CastCleansingTotemAction::isUseful()
|
|
{
|
|
return CastTotemAction::isUseful() && !AI_VALUE2(bool, "has totem", "mana tide totem");
|
|
} |