mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-01-16 02:10:28 +00:00
Run clang-format
This commit is contained in:
@@ -1,8 +1,12 @@
|
||||
/*
|
||||
* 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.
|
||||
* 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 "GenericTriggers.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "BattlegroundWS.h"
|
||||
#include "CreatureAI.h"
|
||||
#include "ObjectGuid.h"
|
||||
@@ -10,45 +14,49 @@
|
||||
#include "SharedDefines.h"
|
||||
#include "TemporarySummon.h"
|
||||
#include "Timer.h"
|
||||
#include <string>
|
||||
|
||||
bool LowManaTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(bool, "has mana", "self target") && AI_VALUE2(uint8, "mana", "self target") < sPlayerbotAIConfig->lowMana;
|
||||
return AI_VALUE2(bool, "has mana", "self target") &&
|
||||
AI_VALUE2(uint8, "mana", "self target") < sPlayerbotAIConfig->lowMana;
|
||||
}
|
||||
|
||||
bool MediumManaTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(bool, "has mana", "self target") && AI_VALUE2(uint8, "mana", "self target") < sPlayerbotAIConfig->mediumMana;
|
||||
return AI_VALUE2(bool, "has mana", "self target") &&
|
||||
AI_VALUE2(uint8, "mana", "self target") < sPlayerbotAIConfig->mediumMana;
|
||||
}
|
||||
|
||||
bool NoPetTrigger::IsActive()
|
||||
{
|
||||
return (bot->GetMinionGUID().IsEmpty()) &&
|
||||
(!AI_VALUE(Unit*, "pet target")) &&
|
||||
(!bot->GetGuardianPet()) &&
|
||||
(!bot->GetFirstControlled()) &&
|
||||
(!AI_VALUE2(bool, "mounted", "self target"));
|
||||
return (bot->GetMinionGUID().IsEmpty()) && (!AI_VALUE(Unit*, "pet target")) && (!bot->GetGuardianPet()) &&
|
||||
(!bot->GetFirstControlled()) && (!AI_VALUE2(bool, "mounted", "self target"));
|
||||
}
|
||||
|
||||
bool HasPetTrigger::IsActive() {
|
||||
return (AI_VALUE(Unit*, "pet target")) && !AI_VALUE2(bool, "mounted", "self target");;
|
||||
bool HasPetTrigger::IsActive()
|
||||
{
|
||||
return (AI_VALUE(Unit*, "pet target")) && !AI_VALUE2(bool, "mounted", "self target");
|
||||
;
|
||||
}
|
||||
|
||||
bool PetAttackTrigger::IsActive()
|
||||
bool PetAttackTrigger::IsActive()
|
||||
{
|
||||
Guardian* pet = bot->GetGuardianPet();
|
||||
if (!pet) {
|
||||
if (!pet)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Unit* target = AI_VALUE(Unit*, "current target");
|
||||
if (!target) {
|
||||
if (!target)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (pet->GetVictim() == target && pet->GetCharmInfo()->IsCommandAttack()) {
|
||||
if (pet->GetVictim() == target && pet->GetCharmInfo()->IsCommandAttack())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (bot->GetMap()->IsDungeon() && bot->GetGroup() && !target->IsInCombat()) {
|
||||
if (bot->GetMap()->IsDungeon() && bot->GetGroup() && !target->IsInCombat())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -69,35 +77,21 @@ bool EnoughManaTrigger::IsActive()
|
||||
return AI_VALUE2(bool, "has mana", "self target") && AI_VALUE2(uint8, "mana", "self target") > 65;
|
||||
}
|
||||
|
||||
bool RageAvailable::IsActive()
|
||||
{
|
||||
return AI_VALUE2(uint8, "rage", "self target") >= amount;
|
||||
}
|
||||
bool RageAvailable::IsActive() { return AI_VALUE2(uint8, "rage", "self target") >= amount; }
|
||||
|
||||
bool EnergyAvailable::IsActive()
|
||||
{
|
||||
return AI_VALUE2(uint8, "energy", "self target") >= amount;
|
||||
}
|
||||
bool EnergyAvailable::IsActive() { return AI_VALUE2(uint8, "energy", "self target") >= amount; }
|
||||
|
||||
bool ComboPointsAvailableTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(uint8, "combo", "current target") >= amount;
|
||||
}
|
||||
bool ComboPointsAvailableTrigger::IsActive() { return AI_VALUE2(uint8, "combo", "current target") >= amount; }
|
||||
|
||||
bool LoseAggroTrigger::IsActive()
|
||||
{
|
||||
return !AI_VALUE2(bool, "has aggro", "current target");
|
||||
}
|
||||
bool LoseAggroTrigger::IsActive() { return !AI_VALUE2(bool, "has aggro", "current target"); }
|
||||
|
||||
bool HasAggroTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(bool, "has aggro", "current target");
|
||||
}
|
||||
bool HasAggroTrigger::IsActive() { return AI_VALUE2(bool, "has aggro", "current target"); }
|
||||
|
||||
bool PanicTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(uint8, "health", "self target") < sPlayerbotAIConfig->criticalHealth &&
|
||||
(!AI_VALUE2(bool, "has mana", "self target") || AI_VALUE2(uint8, "mana", "self target") < sPlayerbotAIConfig->lowMana);
|
||||
(!AI_VALUE2(bool, "has mana", "self target") ||
|
||||
AI_VALUE2(uint8, "mana", "self target") < sPlayerbotAIConfig->lowMana);
|
||||
}
|
||||
|
||||
bool OutNumberedTrigger::IsActive()
|
||||
@@ -143,27 +137,24 @@ bool OutNumberedTrigger::IsActive()
|
||||
bool BuffTrigger::IsActive()
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
return SpellTrigger::IsActive() && !botAI->HasAura(spell, target, false, checkIsOwner);
|
||||
return SpellTrigger::IsActive() && !botAI->HasAura(spell, target, false, checkIsOwner);
|
||||
}
|
||||
|
||||
Value<Unit*>* BuffOnPartyTrigger::GetTargetValue()
|
||||
{
|
||||
return context->GetValue<Unit*>("party member without aura", spell);
|
||||
return context->GetValue<Unit*>("party member without aura", spell);
|
||||
}
|
||||
|
||||
bool ProtectPartyMemberTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE(Unit*, "party member to protect");
|
||||
}
|
||||
bool ProtectPartyMemberTrigger::IsActive() { return AI_VALUE(Unit*, "party member to protect"); }
|
||||
|
||||
Value<Unit*>* DebuffOnAttackerTrigger::GetTargetValue()
|
||||
{
|
||||
return context->GetValue<Unit*>("attacker without aura", spell);
|
||||
return context->GetValue<Unit*>("attacker without aura", spell);
|
||||
}
|
||||
|
||||
Value<Unit*>* DebuffOnMeleeAttackerTrigger::GetTargetValue()
|
||||
{
|
||||
return context->GetValue<Unit*>("melee attacker without aura", spell);
|
||||
return context->GetValue<Unit*>("melee attacker without aura", spell);
|
||||
}
|
||||
|
||||
bool NoAttackersTrigger::IsActive()
|
||||
@@ -171,15 +162,9 @@ bool NoAttackersTrigger::IsActive()
|
||||
return !AI_VALUE(Unit*, "current target") && AI_VALUE(uint8, "my attacker count") > 0;
|
||||
}
|
||||
|
||||
bool InvalidTargetTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(bool, "invalid target", "current target");
|
||||
}
|
||||
bool InvalidTargetTrigger::IsActive() { return AI_VALUE2(bool, "invalid target", "current target"); }
|
||||
|
||||
bool NoTargetTrigger::IsActive()
|
||||
{
|
||||
return !AI_VALUE(Unit*, "current target");
|
||||
}
|
||||
bool NoTargetTrigger::IsActive() { return !AI_VALUE(Unit*, "current target"); }
|
||||
|
||||
bool MyAttackerCountTrigger::IsActive()
|
||||
{
|
||||
@@ -189,20 +174,22 @@ bool MyAttackerCountTrigger::IsActive()
|
||||
bool AoeTrigger::IsActive()
|
||||
{
|
||||
Unit* current_target = AI_VALUE(Unit*, "current target");
|
||||
if (!current_target) {
|
||||
return false;
|
||||
}
|
||||
GuidVector attackers = context->GetValue<GuidVector>("attackers")->Get();
|
||||
int attackers_count = 0;
|
||||
if (!current_target)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
GuidVector attackers = context->GetValue<GuidVector>("attackers")->Get();
|
||||
int attackers_count = 0;
|
||||
for (ObjectGuid const guid : attackers)
|
||||
{
|
||||
Unit* unit = botAI->GetUnit(guid);
|
||||
if (!unit || !unit->IsAlive())
|
||||
continue;
|
||||
|
||||
if (unit->GetExactDist2d(current_target) <= range) {
|
||||
attackers_count++;
|
||||
}
|
||||
if (unit->GetExactDist2d(current_target) <= range)
|
||||
{
|
||||
attackers_count++;
|
||||
}
|
||||
}
|
||||
return attackers_count >= amount;
|
||||
}
|
||||
@@ -225,38 +212,34 @@ bool NoDrinkTrigger::IsActive()
|
||||
return AI_VALUE2(std::vector<Item*>, "inventory items", "conjured water").empty();
|
||||
}
|
||||
|
||||
bool TargetInSightTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE(Unit*, "grind target");
|
||||
}
|
||||
bool TargetInSightTrigger::IsActive() { return AI_VALUE(Unit*, "grind target"); }
|
||||
|
||||
bool DebuffTrigger::IsActive()
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
if (!target || !target->IsAlive() || !target->IsInWorld()) {
|
||||
if (!target || !target->IsAlive() || !target->IsInWorld())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return BuffTrigger::IsActive() && (target->GetHealth() / AI_VALUE(float, "expected group dps")) >= needLifeTime;
|
||||
return BuffTrigger::IsActive() && (target->GetHealth() / AI_VALUE(float, "expected group dps")) >= needLifeTime;
|
||||
}
|
||||
|
||||
bool DebuffOnBossTrigger::IsActive()
|
||||
{
|
||||
if (!DebuffTrigger::IsActive()) {
|
||||
if (!DebuffTrigger::IsActive())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Creature *c = GetTarget()->ToCreature();
|
||||
Creature* c = GetTarget()->ToCreature();
|
||||
return c && ((c->IsDungeonBoss()) || (c->isWorldBoss()));
|
||||
}
|
||||
|
||||
bool SpellTrigger::IsActive()
|
||||
{
|
||||
return GetTarget();
|
||||
}
|
||||
bool SpellTrigger::IsActive() { return GetTarget(); }
|
||||
|
||||
bool SpellCanBeCastTrigger::IsActive()
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
return target && botAI->CanCastSpell(spell, target);
|
||||
Unit* target = GetTarget();
|
||||
return target && botAI->CanCastSpell(spell, target);
|
||||
}
|
||||
|
||||
bool SpellNoCooldownTrigger::IsActive()
|
||||
@@ -273,11 +256,12 @@ bool SpellCooldownTrigger::IsActive()
|
||||
uint32 spellId = AI_VALUE2(uint32, "spell id", name);
|
||||
if (!spellId)
|
||||
return false;
|
||||
|
||||
|
||||
return bot->HasSpellCooldown(spellId);
|
||||
}
|
||||
|
||||
RandomTrigger::RandomTrigger(PlayerbotAI* botAI, std::string const name, int32 probability) : Trigger(botAI, name), probability(probability), lastCheck(getMSTime())
|
||||
RandomTrigger::RandomTrigger(PlayerbotAI* botAI, std::string const name, int32 probability)
|
||||
: Trigger(botAI, name), probability(probability), lastCheck(getMSTime())
|
||||
{
|
||||
}
|
||||
|
||||
@@ -293,10 +277,7 @@ bool RandomTrigger::IsActive()
|
||||
return (rand() % k) == 0;
|
||||
}
|
||||
|
||||
bool AndTrigger::IsActive()
|
||||
{
|
||||
return ls && rs && ls->IsActive() && rs->IsActive();
|
||||
}
|
||||
bool AndTrigger::IsActive() { return ls && rs && ls->IsActive() && rs->IsActive(); }
|
||||
|
||||
std::string const AndTrigger::getName()
|
||||
{
|
||||
@@ -327,19 +308,13 @@ std::string const TwoTriggers::getName()
|
||||
return name;
|
||||
}
|
||||
|
||||
bool BoostTrigger::IsActive()
|
||||
{
|
||||
return BuffTrigger::IsActive() && AI_VALUE(uint8, "balance") <= balance;
|
||||
}
|
||||
bool BoostTrigger::IsActive() { return BuffTrigger::IsActive() && AI_VALUE(uint8, "balance") <= balance; }
|
||||
|
||||
bool ItemCountTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(uint32, "item count", item) < count;
|
||||
}
|
||||
bool ItemCountTrigger::IsActive() { return AI_VALUE2(uint32, "item count", item) < count; }
|
||||
|
||||
bool InterruptSpellTrigger::IsActive()
|
||||
{
|
||||
return SpellTrigger::IsActive() && botAI->IsInterruptableSpellCasting(GetTarget(), getName());
|
||||
return SpellTrigger::IsActive() && botAI->IsInterruptableSpellCasting(GetTarget(), getName());
|
||||
}
|
||||
|
||||
bool DeflectSpellTrigger::IsActive()
|
||||
@@ -385,21 +360,16 @@ bool DeflectSpellTrigger::IsActive()
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AttackerCountTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE(uint8, "attacker count") >= amount;
|
||||
}
|
||||
bool AttackerCountTrigger::IsActive() { return AI_VALUE(uint8, "attacker count") >= amount; }
|
||||
|
||||
bool HasAuraTrigger::IsActive()
|
||||
{
|
||||
return botAI->HasAura(getName(), GetTarget(), false, false, -1, true);
|
||||
}
|
||||
bool HasAuraTrigger::IsActive() { return botAI->HasAura(getName(), GetTarget(), false, false, -1, true); }
|
||||
|
||||
bool HasAuraStackTrigger::IsActive()
|
||||
{
|
||||
Aura *aura = botAI->GetAura(getName(), GetTarget(), false, true, stack);
|
||||
// sLog->outMessage("playerbot", LOG_LEVEL_DEBUG, "HasAuraStackTrigger::IsActive %s %d", getName(), aura ? aura->GetStackAmount() : -1);
|
||||
return aura;
|
||||
Aura* aura = botAI->GetAura(getName(), GetTarget(), false, true, stack);
|
||||
// sLog->outMessage("playerbot", LOG_LEVEL_DEBUG, "HasAuraStackTrigger::IsActive %s %d", getName(), aura ?
|
||||
// aura->GetStackAmount() : -1);
|
||||
return aura;
|
||||
}
|
||||
|
||||
bool TimerTrigger::IsActive()
|
||||
@@ -413,10 +383,7 @@ bool TimerTrigger::IsActive()
|
||||
return false;
|
||||
}
|
||||
|
||||
bool HasNoAuraTrigger::IsActive()
|
||||
{
|
||||
return !botAI->HasAura(getName(), GetTarget());
|
||||
}
|
||||
bool HasNoAuraTrigger::IsActive() { return !botAI->HasAura(getName(), GetTarget()); }
|
||||
|
||||
bool TankAssistTrigger::IsActive()
|
||||
{
|
||||
@@ -446,20 +413,14 @@ bool IsNotBehindTargetTrigger::IsActive()
|
||||
return target && !AI_VALUE2(bool, "behind", "current target");
|
||||
}
|
||||
|
||||
bool IsNotFacingTargetTrigger::IsActive()
|
||||
{
|
||||
return !AI_VALUE2(bool, "facing", "current target");
|
||||
}
|
||||
bool IsNotFacingTargetTrigger::IsActive() { return !AI_VALUE2(bool, "facing", "current target"); }
|
||||
|
||||
bool HasCcTargetTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(Unit*, "cc target", getName()) && !AI_VALUE2(Unit*, "current cc target", getName());
|
||||
}
|
||||
|
||||
bool NoMovementTrigger::IsActive()
|
||||
{
|
||||
return !AI_VALUE2(bool, "moving", "self target");
|
||||
}
|
||||
bool NoMovementTrigger::IsActive() { return !AI_VALUE2(bool, "moving", "self target"); }
|
||||
|
||||
bool NoPossibleTargetsTrigger::IsActive()
|
||||
{
|
||||
@@ -467,17 +428,14 @@ bool NoPossibleTargetsTrigger::IsActive()
|
||||
return !targets.size();
|
||||
}
|
||||
|
||||
bool PossibleAddsTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE(bool, "possible adds") && !AI_VALUE(ObjectGuid, "pull target");
|
||||
}
|
||||
bool PossibleAddsTrigger::IsActive() { return AI_VALUE(bool, "possible adds") && !AI_VALUE(ObjectGuid, "pull target"); }
|
||||
|
||||
bool NotDpsTargetActiveTrigger::IsActive()
|
||||
{
|
||||
Unit* target = AI_VALUE(Unit*, "current target");
|
||||
// do not switch if enemy target
|
||||
if (target && target->IsAlive()) {
|
||||
|
||||
if (target && target->IsAlive())
|
||||
{
|
||||
Unit* enemy = AI_VALUE(Unit*, "enemy player target");
|
||||
if (target == enemy)
|
||||
return false;
|
||||
@@ -500,10 +458,7 @@ bool NotDpsAoeTargetActiveTrigger::IsActive()
|
||||
return dps && target != dps;
|
||||
}
|
||||
|
||||
bool IsSwimmingTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(bool, "swimming", "self target");
|
||||
}
|
||||
bool IsSwimmingTrigger::IsActive() { return AI_VALUE2(bool, "swimming", "self target"); }
|
||||
|
||||
bool HasNearestAddsTrigger::IsActive()
|
||||
{
|
||||
@@ -513,7 +468,7 @@ bool HasNearestAddsTrigger::IsActive()
|
||||
|
||||
bool HasItemForSpellTrigger::IsActive()
|
||||
{
|
||||
std::string const spell = getName();
|
||||
std::string const spell = getName();
|
||||
uint32 spellId = AI_VALUE2(uint32, "spell id", spell);
|
||||
return spellId && AI_VALUE2(Item*, "item for spell", spellId);
|
||||
}
|
||||
@@ -530,10 +485,7 @@ Value<Unit*>* InterruptEnemyHealerTrigger::GetTargetValue()
|
||||
return context->GetValue<Unit*>("enemy healer target", spell);
|
||||
}
|
||||
|
||||
bool RandomBotUpdateTrigger::IsActive()
|
||||
{
|
||||
return RandomTrigger::IsActive() && AI_VALUE(bool, "random bot update");
|
||||
}
|
||||
bool RandomBotUpdateTrigger::IsActive() { return RandomTrigger::IsActive() && AI_VALUE(bool, "random bot update"); }
|
||||
|
||||
bool NoNonBotPlayersAroundTrigger::IsActive()
|
||||
{
|
||||
@@ -545,15 +497,9 @@ bool NoNonBotPlayersAroundTrigger::IsActive()
|
||||
*/
|
||||
}
|
||||
|
||||
bool NewPlayerNearbyTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE(ObjectGuid, "new player nearby");
|
||||
}
|
||||
bool NewPlayerNearbyTrigger::IsActive() { return AI_VALUE(ObjectGuid, "new player nearby"); }
|
||||
|
||||
bool CollisionTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(bool, "collision", "self target");
|
||||
}
|
||||
bool CollisionTrigger::IsActive() { return AI_VALUE2(bool, "collision", "self target"); }
|
||||
|
||||
bool GiveItemTrigger::IsActive()
|
||||
{
|
||||
@@ -570,10 +516,7 @@ bool GiveWaterTrigger::IsActive()
|
||||
return AI_VALUE(Unit*, "party member without water") && AI_VALUE2(uint32, "item count", item);
|
||||
}
|
||||
|
||||
Value<Unit*>* SnareTargetTrigger::GetTargetValue()
|
||||
{
|
||||
return context->GetValue<Unit*>("snare target", spell);
|
||||
}
|
||||
Value<Unit*>* SnareTargetTrigger::GetTargetValue() { return context->GetValue<Unit*>("snare target", spell); }
|
||||
|
||||
bool StayTimeTrigger::IsActive()
|
||||
{
|
||||
@@ -582,32 +525,17 @@ bool StayTimeTrigger::IsActive()
|
||||
return delay && stayTime && now > stayTime + 2 * delay / 1000;
|
||||
}
|
||||
|
||||
bool IsMountedTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(bool, "mounted", "self target");
|
||||
}
|
||||
bool IsMountedTrigger::IsActive() { return AI_VALUE2(bool, "mounted", "self target"); }
|
||||
|
||||
bool CorpseNearTrigger::IsActive()
|
||||
{
|
||||
return bot->GetCorpse() && bot->GetCorpse()->IsWithinDistInMap(bot, CORPSE_RECLAIM_RADIUS, true);
|
||||
}
|
||||
|
||||
bool IsFallingTrigger::IsActive()
|
||||
{
|
||||
return bot->HasUnitMovementFlag(MOVEMENTFLAG_FALLING);
|
||||
}
|
||||
bool IsFallingTrigger::IsActive() { return bot->HasUnitMovementFlag(MOVEMENTFLAG_FALLING); }
|
||||
|
||||
bool IsFallingFarTrigger::IsActive()
|
||||
{
|
||||
return bot->HasUnitMovementFlag(MOVEMENTFLAG_FALLING_FAR);
|
||||
}
|
||||
bool IsFallingFarTrigger::IsActive() { return bot->HasUnitMovementFlag(MOVEMENTFLAG_FALLING_FAR); }
|
||||
|
||||
bool HasAreaDebuffTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(bool, "has area debuff", "self target");
|
||||
}
|
||||
bool HasAreaDebuffTrigger::IsActive() { return AI_VALUE2(bool, "has area debuff", "self target"); }
|
||||
|
||||
Value<Unit*>* BuffOnMainTankTrigger::GetTargetValue()
|
||||
{
|
||||
return context->GetValue<Unit*>("main tank", spell);
|
||||
}
|
||||
Value<Unit*>* BuffOnMainTankTrigger::GetTargetValue() { return context->GetValue<Unit*>("main tank", spell); }
|
||||
Reference in New Issue
Block a user