mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-01-21 20:46:22 +00:00
Run clang-format
This commit is contained in:
@@ -1,11 +1,14 @@
|
||||
/*
|
||||
* 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 "ChatCommandTrigger.h"
|
||||
|
||||
#include "Playerbots.h"
|
||||
|
||||
ChatCommandTrigger::ChatCommandTrigger(PlayerbotAI* botAI, std::string const command) : Trigger(botAI, command), triggered(false), owner(nullptr)
|
||||
ChatCommandTrigger::ChatCommandTrigger(PlayerbotAI* botAI, std::string const command)
|
||||
: Trigger(botAI, command), triggered(false), owner(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -24,7 +27,4 @@ Event ChatCommandTrigger::Check()
|
||||
return Event(getName(), param, owner);
|
||||
}
|
||||
|
||||
void ChatCommandTrigger::Reset()
|
||||
{
|
||||
triggered = false;
|
||||
}
|
||||
void ChatCommandTrigger::Reset() { triggered = false; }
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_CHATCOMMANDTRIGGER_H
|
||||
@@ -13,17 +14,17 @@ class PlayerbotAI;
|
||||
|
||||
class ChatCommandTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
ChatCommandTrigger(PlayerbotAI* botAI, std::string const command);
|
||||
public:
|
||||
ChatCommandTrigger(PlayerbotAI* botAI, std::string const command);
|
||||
|
||||
void ExternalEvent(std::string const param, Player* owner = nullptr) override;
|
||||
Event Check() override;
|
||||
void Reset() override;
|
||||
void ExternalEvent(std::string const param, Player* owner = nullptr) override;
|
||||
Event Check() override;
|
||||
void Reset() override;
|
||||
|
||||
private:
|
||||
std::string param;
|
||||
bool triggered;
|
||||
Player* owner;
|
||||
private:
|
||||
std::string param;
|
||||
bool triggered;
|
||||
Player* owner;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_CHATTRIGGERCONTEXT_H
|
||||
@@ -12,214 +13,214 @@ class PlayerbotAI;
|
||||
|
||||
class ChatTriggerContext : public NamedObjectContext<Trigger>
|
||||
{
|
||||
public:
|
||||
ChatTriggerContext()
|
||||
{
|
||||
creators["quests"] = &ChatTriggerContext::quests;
|
||||
creators["stats"] = &ChatTriggerContext::stats;
|
||||
creators["leave"] = &ChatTriggerContext::leave;
|
||||
creators["rep"] = &ChatTriggerContext::reputation;
|
||||
creators["reputation"] = &ChatTriggerContext::reputation;
|
||||
creators["log"] = &ChatTriggerContext::log;
|
||||
creators["los"] = &ChatTriggerContext::los;
|
||||
creators["aura"] = &ChatTriggerContext::aura;
|
||||
creators["drop"] = &ChatTriggerContext::drop;
|
||||
creators["share"] = &ChatTriggerContext::share;
|
||||
creators["q"] = &ChatTriggerContext::q;
|
||||
creators["ll"] = &ChatTriggerContext::ll;
|
||||
creators["ss"] = &ChatTriggerContext::ss;
|
||||
creators["loot all"] = &ChatTriggerContext::loot_all;
|
||||
creators["add all loot"] = &ChatTriggerContext::loot_all;
|
||||
creators["release"] = &ChatTriggerContext::release;
|
||||
creators["teleport"] = &ChatTriggerContext::teleport;
|
||||
creators["taxi"] = &ChatTriggerContext::taxi;
|
||||
creators["repair"] = &ChatTriggerContext::repair;
|
||||
creators["u"] = &ChatTriggerContext::use;
|
||||
creators["use"] = &ChatTriggerContext::use;
|
||||
creators["c"] = &ChatTriggerContext::item_count;
|
||||
creators["items"] = &ChatTriggerContext::item_count;
|
||||
creators["inventory"] = &ChatTriggerContext::item_count;
|
||||
creators["inv"] = &ChatTriggerContext::item_count;
|
||||
creators["e"] = &ChatTriggerContext::equip;
|
||||
creators["equip"] = &ChatTriggerContext::equip;
|
||||
creators["ue"] = &ChatTriggerContext::uneqip;
|
||||
creators["s"] = &ChatTriggerContext::sell;
|
||||
creators["b"] = &ChatTriggerContext::buy;
|
||||
creators["r"] = &ChatTriggerContext::reward;
|
||||
creators["t"] = &ChatTriggerContext::trade;
|
||||
creators["nt"] = &ChatTriggerContext::nontrade;
|
||||
creators["talents"] = &ChatTriggerContext::talents;
|
||||
creators["spells"] = &ChatTriggerContext::spells;
|
||||
creators["co"] = &ChatTriggerContext::co;
|
||||
creators["nc"] = &ChatTriggerContext::nc;
|
||||
creators["de"] = &ChatTriggerContext::dead;
|
||||
creators["trainer"] = &ChatTriggerContext::trainer;
|
||||
creators["maintenance"] = &ChatTriggerContext::maintenance;
|
||||
creators["remove glyph"] = &ChatTriggerContext::remove_glyph;
|
||||
creators["autogear"] = &ChatTriggerContext::autogear;
|
||||
creators["equip upgrade"] = &ChatTriggerContext::equip_upgrade;
|
||||
creators["attack"] = &ChatTriggerContext::attack;
|
||||
creators["chat"] = &ChatTriggerContext::chat;
|
||||
creators["accept"] = &ChatTriggerContext::accept;
|
||||
creators["home"] = &ChatTriggerContext::home;
|
||||
creators["reset botAI"] = &ChatTriggerContext::reset_ai;
|
||||
creators["destroy"] = &ChatTriggerContext::destroy;
|
||||
creators["emote"] = &ChatTriggerContext::emote;
|
||||
creators["buff"] = &ChatTriggerContext::buff;
|
||||
creators["help"] = &ChatTriggerContext::help;
|
||||
creators["gb"] = &ChatTriggerContext::gb;
|
||||
creators["gbank"] = &ChatTriggerContext::gb;
|
||||
creators["bank"] = &ChatTriggerContext::bank;
|
||||
creators["follow"] = &ChatTriggerContext::follow;
|
||||
creators["stay"] = &ChatTriggerContext::stay;
|
||||
creators["flee"] = &ChatTriggerContext::flee;
|
||||
creators["grind"] = &ChatTriggerContext::grind;
|
||||
creators["tank attack"] = &ChatTriggerContext::tank_attack;
|
||||
creators["talk"] = &ChatTriggerContext::talk;
|
||||
creators["cast"] = &ChatTriggerContext::cast;
|
||||
creators["castnc"] = &ChatTriggerContext::castnc;
|
||||
creators["invite"] = &ChatTriggerContext::invite;
|
||||
creators["spell"] = &ChatTriggerContext::spell;
|
||||
creators["rti"] = &ChatTriggerContext::rti;
|
||||
creators["revive"] = &ChatTriggerContext::revive;
|
||||
creators["runaway"] = &ChatTriggerContext::runaway;
|
||||
creators["warning"] = &ChatTriggerContext::warning;
|
||||
creators["position"] = &ChatTriggerContext::position;
|
||||
creators["summon"] = &ChatTriggerContext::summon;
|
||||
creators["who"] = &ChatTriggerContext::who;
|
||||
creators["save mana"] = &ChatTriggerContext::save_mana;
|
||||
creators["max dps"] = &ChatTriggerContext::max_dps;
|
||||
creators["attackers"] = &ChatTriggerContext::attackers;
|
||||
creators["target"] = &ChatTriggerContext::target;
|
||||
creators["formation"] = &ChatTriggerContext::formation;
|
||||
creators["stance"] = &ChatTriggerContext::stance;
|
||||
creators["sendmail"] = &ChatTriggerContext::sendmail;
|
||||
creators["mail"] = &ChatTriggerContext::mail;
|
||||
creators["outfit"] = &ChatTriggerContext::outfit;
|
||||
creators["go"] = &ChatTriggerContext::go;
|
||||
creators["ready"] = &ChatTriggerContext::ready_check;
|
||||
creators["debug"] = &ChatTriggerContext::debug;
|
||||
creators["cdebug"] = &ChatTriggerContext::cdebug;
|
||||
creators["cs"] = &ChatTriggerContext::cs;
|
||||
creators["wts"] = &ChatTriggerContext::wts;
|
||||
creators["hire"] = &ChatTriggerContext::hire;
|
||||
creators["craft"] = &ChatTriggerContext::craft;
|
||||
creators["flag"] = &ChatTriggerContext::craft;
|
||||
creators["range"] = &ChatTriggerContext::range;
|
||||
creators["ra"] = &ChatTriggerContext::ra;
|
||||
creators["give leader"] = &ChatTriggerContext::give_leader;
|
||||
creators["cheat"] = &ChatTriggerContext::cheat;
|
||||
creators["ginvite"] = &ChatTriggerContext::ginvite;
|
||||
creators["guild promote"] = &ChatTriggerContext::guild_promote;
|
||||
creators["guild demote"] = &ChatTriggerContext::guild_demote;
|
||||
creators["guild remove"] = &ChatTriggerContext::guild_remove;
|
||||
creators["guild leave"] = &ChatTriggerContext::guild_leave;
|
||||
creators["rtsc"] = &ChatTriggerContext::rtsc;
|
||||
creators["drink"] = &ChatTriggerContext::drink;
|
||||
creators["naxx"] = &ChatTriggerContext::naxx;
|
||||
creators["bwl"] = &ChatTriggerContext::bwl;
|
||||
creators["dps"] = &ChatTriggerContext::dps;
|
||||
creators["disperse"] = &ChatTriggerContext::disperse;
|
||||
}
|
||||
public:
|
||||
ChatTriggerContext()
|
||||
{
|
||||
creators["quests"] = &ChatTriggerContext::quests;
|
||||
creators["stats"] = &ChatTriggerContext::stats;
|
||||
creators["leave"] = &ChatTriggerContext::leave;
|
||||
creators["rep"] = &ChatTriggerContext::reputation;
|
||||
creators["reputation"] = &ChatTriggerContext::reputation;
|
||||
creators["log"] = &ChatTriggerContext::log;
|
||||
creators["los"] = &ChatTriggerContext::los;
|
||||
creators["aura"] = &ChatTriggerContext::aura;
|
||||
creators["drop"] = &ChatTriggerContext::drop;
|
||||
creators["share"] = &ChatTriggerContext::share;
|
||||
creators["q"] = &ChatTriggerContext::q;
|
||||
creators["ll"] = &ChatTriggerContext::ll;
|
||||
creators["ss"] = &ChatTriggerContext::ss;
|
||||
creators["loot all"] = &ChatTriggerContext::loot_all;
|
||||
creators["add all loot"] = &ChatTriggerContext::loot_all;
|
||||
creators["release"] = &ChatTriggerContext::release;
|
||||
creators["teleport"] = &ChatTriggerContext::teleport;
|
||||
creators["taxi"] = &ChatTriggerContext::taxi;
|
||||
creators["repair"] = &ChatTriggerContext::repair;
|
||||
creators["u"] = &ChatTriggerContext::use;
|
||||
creators["use"] = &ChatTriggerContext::use;
|
||||
creators["c"] = &ChatTriggerContext::item_count;
|
||||
creators["items"] = &ChatTriggerContext::item_count;
|
||||
creators["inventory"] = &ChatTriggerContext::item_count;
|
||||
creators["inv"] = &ChatTriggerContext::item_count;
|
||||
creators["e"] = &ChatTriggerContext::equip;
|
||||
creators["equip"] = &ChatTriggerContext::equip;
|
||||
creators["ue"] = &ChatTriggerContext::uneqip;
|
||||
creators["s"] = &ChatTriggerContext::sell;
|
||||
creators["b"] = &ChatTriggerContext::buy;
|
||||
creators["r"] = &ChatTriggerContext::reward;
|
||||
creators["t"] = &ChatTriggerContext::trade;
|
||||
creators["nt"] = &ChatTriggerContext::nontrade;
|
||||
creators["talents"] = &ChatTriggerContext::talents;
|
||||
creators["spells"] = &ChatTriggerContext::spells;
|
||||
creators["co"] = &ChatTriggerContext::co;
|
||||
creators["nc"] = &ChatTriggerContext::nc;
|
||||
creators["de"] = &ChatTriggerContext::dead;
|
||||
creators["trainer"] = &ChatTriggerContext::trainer;
|
||||
creators["maintenance"] = &ChatTriggerContext::maintenance;
|
||||
creators["remove glyph"] = &ChatTriggerContext::remove_glyph;
|
||||
creators["autogear"] = &ChatTriggerContext::autogear;
|
||||
creators["equip upgrade"] = &ChatTriggerContext::equip_upgrade;
|
||||
creators["attack"] = &ChatTriggerContext::attack;
|
||||
creators["chat"] = &ChatTriggerContext::chat;
|
||||
creators["accept"] = &ChatTriggerContext::accept;
|
||||
creators["home"] = &ChatTriggerContext::home;
|
||||
creators["reset botAI"] = &ChatTriggerContext::reset_ai;
|
||||
creators["destroy"] = &ChatTriggerContext::destroy;
|
||||
creators["emote"] = &ChatTriggerContext::emote;
|
||||
creators["buff"] = &ChatTriggerContext::buff;
|
||||
creators["help"] = &ChatTriggerContext::help;
|
||||
creators["gb"] = &ChatTriggerContext::gb;
|
||||
creators["gbank"] = &ChatTriggerContext::gb;
|
||||
creators["bank"] = &ChatTriggerContext::bank;
|
||||
creators["follow"] = &ChatTriggerContext::follow;
|
||||
creators["stay"] = &ChatTriggerContext::stay;
|
||||
creators["flee"] = &ChatTriggerContext::flee;
|
||||
creators["grind"] = &ChatTriggerContext::grind;
|
||||
creators["tank attack"] = &ChatTriggerContext::tank_attack;
|
||||
creators["talk"] = &ChatTriggerContext::talk;
|
||||
creators["cast"] = &ChatTriggerContext::cast;
|
||||
creators["castnc"] = &ChatTriggerContext::castnc;
|
||||
creators["invite"] = &ChatTriggerContext::invite;
|
||||
creators["spell"] = &ChatTriggerContext::spell;
|
||||
creators["rti"] = &ChatTriggerContext::rti;
|
||||
creators["revive"] = &ChatTriggerContext::revive;
|
||||
creators["runaway"] = &ChatTriggerContext::runaway;
|
||||
creators["warning"] = &ChatTriggerContext::warning;
|
||||
creators["position"] = &ChatTriggerContext::position;
|
||||
creators["summon"] = &ChatTriggerContext::summon;
|
||||
creators["who"] = &ChatTriggerContext::who;
|
||||
creators["save mana"] = &ChatTriggerContext::save_mana;
|
||||
creators["max dps"] = &ChatTriggerContext::max_dps;
|
||||
creators["attackers"] = &ChatTriggerContext::attackers;
|
||||
creators["target"] = &ChatTriggerContext::target;
|
||||
creators["formation"] = &ChatTriggerContext::formation;
|
||||
creators["stance"] = &ChatTriggerContext::stance;
|
||||
creators["sendmail"] = &ChatTriggerContext::sendmail;
|
||||
creators["mail"] = &ChatTriggerContext::mail;
|
||||
creators["outfit"] = &ChatTriggerContext::outfit;
|
||||
creators["go"] = &ChatTriggerContext::go;
|
||||
creators["ready"] = &ChatTriggerContext::ready_check;
|
||||
creators["debug"] = &ChatTriggerContext::debug;
|
||||
creators["cdebug"] = &ChatTriggerContext::cdebug;
|
||||
creators["cs"] = &ChatTriggerContext::cs;
|
||||
creators["wts"] = &ChatTriggerContext::wts;
|
||||
creators["hire"] = &ChatTriggerContext::hire;
|
||||
creators["craft"] = &ChatTriggerContext::craft;
|
||||
creators["flag"] = &ChatTriggerContext::craft;
|
||||
creators["range"] = &ChatTriggerContext::range;
|
||||
creators["ra"] = &ChatTriggerContext::ra;
|
||||
creators["give leader"] = &ChatTriggerContext::give_leader;
|
||||
creators["cheat"] = &ChatTriggerContext::cheat;
|
||||
creators["ginvite"] = &ChatTriggerContext::ginvite;
|
||||
creators["guild promote"] = &ChatTriggerContext::guild_promote;
|
||||
creators["guild demote"] = &ChatTriggerContext::guild_demote;
|
||||
creators["guild remove"] = &ChatTriggerContext::guild_remove;
|
||||
creators["guild leave"] = &ChatTriggerContext::guild_leave;
|
||||
creators["rtsc"] = &ChatTriggerContext::rtsc;
|
||||
creators["drink"] = &ChatTriggerContext::drink;
|
||||
creators["naxx"] = &ChatTriggerContext::naxx;
|
||||
creators["bwl"] = &ChatTriggerContext::bwl;
|
||||
creators["dps"] = &ChatTriggerContext::dps;
|
||||
creators["disperse"] = &ChatTriggerContext::disperse;
|
||||
}
|
||||
|
||||
private:
|
||||
static Trigger* ra(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "ra"); }
|
||||
static Trigger* range(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "range"); }
|
||||
static Trigger* flag(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "flag"); }
|
||||
static Trigger* craft(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "craft"); }
|
||||
static Trigger* hire(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "hire"); }
|
||||
static Trigger* wts(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "wts"); }
|
||||
static Trigger* cs(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "cs"); }
|
||||
static Trigger* debug(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "debug"); }
|
||||
static Trigger* cdebug(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "cdebug"); }
|
||||
static Trigger* go(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "go"); }
|
||||
static Trigger* outfit(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "outfit"); }
|
||||
static Trigger* mail(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "mail"); }
|
||||
static Trigger* sendmail(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "sendmail"); }
|
||||
static Trigger* formation(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "formation"); }
|
||||
static Trigger* stance(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "stance"); }
|
||||
static Trigger* attackers(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "attackers"); }
|
||||
static Trigger* target(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "target"); }
|
||||
static Trigger* max_dps(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "max dps"); }
|
||||
static Trigger* save_mana(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "save mana"); }
|
||||
static Trigger* who(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "who"); }
|
||||
static Trigger* summon(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "summon"); }
|
||||
static Trigger* position(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "position"); }
|
||||
static Trigger* runaway(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "runaway"); }
|
||||
static Trigger* warning(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "warning"); }
|
||||
static Trigger* revive(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "revive"); }
|
||||
static Trigger* rti(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "rti"); }
|
||||
static Trigger* invite(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "invite"); }
|
||||
static Trigger* cast(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "cast"); }
|
||||
static Trigger* castnc(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "castnc"); }
|
||||
static Trigger* talk(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "talk"); }
|
||||
static Trigger* flee(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "flee"); }
|
||||
static Trigger* grind(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "grind"); }
|
||||
static Trigger* tank_attack(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "tank attack"); }
|
||||
static Trigger* stay(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "stay"); }
|
||||
static Trigger* follow(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "follow"); }
|
||||
static Trigger* gb(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "gb"); }
|
||||
static Trigger* bank(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "bank"); }
|
||||
static Trigger* help(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "help"); }
|
||||
static Trigger* buff(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "buff"); }
|
||||
static Trigger* emote(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "emote"); }
|
||||
static Trigger* destroy(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "destroy"); }
|
||||
static Trigger* home(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "home"); }
|
||||
static Trigger* accept(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "accept"); }
|
||||
static Trigger* chat(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "chat"); }
|
||||
static Trigger* attack(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "attack"); }
|
||||
static Trigger* trainer(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "trainer"); }
|
||||
static Trigger* maintenance(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "maintenance"); }
|
||||
static Trigger* remove_glyph(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "remove glyph"); }
|
||||
static Trigger* autogear(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "autogear"); }
|
||||
static Trigger* equip_upgrade(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "equip upgrade"); }
|
||||
static Trigger* co(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "co"); }
|
||||
static Trigger* nc(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "nc"); }
|
||||
static Trigger* dead(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "de"); }
|
||||
static Trigger* spells(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "spells"); }
|
||||
static Trigger* talents(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "talents"); }
|
||||
static Trigger* equip(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "e"); }
|
||||
static Trigger* uneqip(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "ue"); }
|
||||
static Trigger* sell(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "s"); }
|
||||
static Trigger* buy(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "b"); }
|
||||
static Trigger* reward(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "r"); }
|
||||
static Trigger* trade(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "t"); }
|
||||
static Trigger* nontrade(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "nt"); }
|
||||
static Trigger* item_count(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "c"); }
|
||||
static Trigger* use(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "use"); }
|
||||
static Trigger* repair(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "repair"); }
|
||||
static Trigger* taxi(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "taxi"); }
|
||||
static Trigger* teleport(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "teleport"); }
|
||||
static Trigger* q(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "q"); }
|
||||
static Trigger* ll(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "ll"); }
|
||||
static Trigger* ss(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "ss"); }
|
||||
static Trigger* drop(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "drop"); }
|
||||
static Trigger* share(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "share"); }
|
||||
static Trigger* quests(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "quests"); }
|
||||
static Trigger* stats(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "stats"); }
|
||||
static Trigger* leave(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "leave"); }
|
||||
static Trigger* reputation(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "reputation"); }
|
||||
static Trigger* log(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "log"); }
|
||||
static Trigger* los(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "los"); }
|
||||
static Trigger* aura(PlayerbotAI* ai) { return new ChatCommandTrigger(ai, "aura"); }
|
||||
static Trigger* loot_all(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "add all loot"); }
|
||||
static Trigger* release(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "release"); }
|
||||
static Trigger* reset_ai(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "reset botAI"); }
|
||||
static Trigger* spell(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "spell"); }
|
||||
static Trigger* ready_check(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "ready check"); }
|
||||
static Trigger* give_leader(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "give leader"); }
|
||||
static Trigger* cheat(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "cheat"); }
|
||||
static Trigger* ginvite(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "ginvite"); }
|
||||
static Trigger* guild_promote(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "guild promote"); }
|
||||
static Trigger* guild_demote(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "guild demote"); }
|
||||
static Trigger* guild_remove(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "guild remove"); }
|
||||
static Trigger* guild_leave(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "guild leave"); }
|
||||
static Trigger* rtsc(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "rtsc"); }
|
||||
static Trigger* drink(PlayerbotAI* ai) { return new ChatCommandTrigger(ai, "drink"); }
|
||||
static Trigger* naxx(PlayerbotAI* ai) { return new ChatCommandTrigger(ai, "naxx"); }
|
||||
static Trigger* bwl(PlayerbotAI* ai) { return new ChatCommandTrigger(ai, "bwl"); }
|
||||
static Trigger* dps(PlayerbotAI* ai) { return new ChatCommandTrigger(ai, "dps"); }
|
||||
static Trigger* disperse(PlayerbotAI* ai) { return new ChatCommandTrigger(ai, "disperse"); }
|
||||
private:
|
||||
static Trigger* ra(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "ra"); }
|
||||
static Trigger* range(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "range"); }
|
||||
static Trigger* flag(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "flag"); }
|
||||
static Trigger* craft(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "craft"); }
|
||||
static Trigger* hire(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "hire"); }
|
||||
static Trigger* wts(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "wts"); }
|
||||
static Trigger* cs(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "cs"); }
|
||||
static Trigger* debug(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "debug"); }
|
||||
static Trigger* cdebug(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "cdebug"); }
|
||||
static Trigger* go(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "go"); }
|
||||
static Trigger* outfit(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "outfit"); }
|
||||
static Trigger* mail(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "mail"); }
|
||||
static Trigger* sendmail(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "sendmail"); }
|
||||
static Trigger* formation(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "formation"); }
|
||||
static Trigger* stance(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "stance"); }
|
||||
static Trigger* attackers(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "attackers"); }
|
||||
static Trigger* target(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "target"); }
|
||||
static Trigger* max_dps(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "max dps"); }
|
||||
static Trigger* save_mana(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "save mana"); }
|
||||
static Trigger* who(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "who"); }
|
||||
static Trigger* summon(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "summon"); }
|
||||
static Trigger* position(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "position"); }
|
||||
static Trigger* runaway(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "runaway"); }
|
||||
static Trigger* warning(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "warning"); }
|
||||
static Trigger* revive(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "revive"); }
|
||||
static Trigger* rti(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "rti"); }
|
||||
static Trigger* invite(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "invite"); }
|
||||
static Trigger* cast(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "cast"); }
|
||||
static Trigger* castnc(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "castnc"); }
|
||||
static Trigger* talk(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "talk"); }
|
||||
static Trigger* flee(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "flee"); }
|
||||
static Trigger* grind(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "grind"); }
|
||||
static Trigger* tank_attack(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "tank attack"); }
|
||||
static Trigger* stay(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "stay"); }
|
||||
static Trigger* follow(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "follow"); }
|
||||
static Trigger* gb(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "gb"); }
|
||||
static Trigger* bank(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "bank"); }
|
||||
static Trigger* help(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "help"); }
|
||||
static Trigger* buff(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "buff"); }
|
||||
static Trigger* emote(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "emote"); }
|
||||
static Trigger* destroy(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "destroy"); }
|
||||
static Trigger* home(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "home"); }
|
||||
static Trigger* accept(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "accept"); }
|
||||
static Trigger* chat(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "chat"); }
|
||||
static Trigger* attack(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "attack"); }
|
||||
static Trigger* trainer(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "trainer"); }
|
||||
static Trigger* maintenance(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "maintenance"); }
|
||||
static Trigger* remove_glyph(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "remove glyph"); }
|
||||
static Trigger* autogear(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "autogear"); }
|
||||
static Trigger* equip_upgrade(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "equip upgrade"); }
|
||||
static Trigger* co(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "co"); }
|
||||
static Trigger* nc(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "nc"); }
|
||||
static Trigger* dead(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "de"); }
|
||||
static Trigger* spells(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "spells"); }
|
||||
static Trigger* talents(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "talents"); }
|
||||
static Trigger* equip(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "e"); }
|
||||
static Trigger* uneqip(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "ue"); }
|
||||
static Trigger* sell(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "s"); }
|
||||
static Trigger* buy(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "b"); }
|
||||
static Trigger* reward(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "r"); }
|
||||
static Trigger* trade(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "t"); }
|
||||
static Trigger* nontrade(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "nt"); }
|
||||
static Trigger* item_count(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "c"); }
|
||||
static Trigger* use(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "use"); }
|
||||
static Trigger* repair(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "repair"); }
|
||||
static Trigger* taxi(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "taxi"); }
|
||||
static Trigger* teleport(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "teleport"); }
|
||||
static Trigger* q(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "q"); }
|
||||
static Trigger* ll(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "ll"); }
|
||||
static Trigger* ss(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "ss"); }
|
||||
static Trigger* drop(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "drop"); }
|
||||
static Trigger* share(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "share"); }
|
||||
static Trigger* quests(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "quests"); }
|
||||
static Trigger* stats(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "stats"); }
|
||||
static Trigger* leave(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "leave"); }
|
||||
static Trigger* reputation(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "reputation"); }
|
||||
static Trigger* log(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "log"); }
|
||||
static Trigger* los(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "los"); }
|
||||
static Trigger* aura(PlayerbotAI* ai) { return new ChatCommandTrigger(ai, "aura"); }
|
||||
static Trigger* loot_all(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "add all loot"); }
|
||||
static Trigger* release(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "release"); }
|
||||
static Trigger* reset_ai(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "reset botAI"); }
|
||||
static Trigger* spell(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "spell"); }
|
||||
static Trigger* ready_check(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "ready check"); }
|
||||
static Trigger* give_leader(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "give leader"); }
|
||||
static Trigger* cheat(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "cheat"); }
|
||||
static Trigger* ginvite(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "ginvite"); }
|
||||
static Trigger* guild_promote(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "guild promote"); }
|
||||
static Trigger* guild_demote(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "guild demote"); }
|
||||
static Trigger* guild_remove(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "guild remove"); }
|
||||
static Trigger* guild_leave(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "guild leave"); }
|
||||
static Trigger* rtsc(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "rtsc"); }
|
||||
static Trigger* drink(PlayerbotAI* ai) { return new ChatCommandTrigger(ai, "drink"); }
|
||||
static Trigger* naxx(PlayerbotAI* ai) { return new ChatCommandTrigger(ai, "naxx"); }
|
||||
static Trigger* bwl(PlayerbotAI* ai) { return new ChatCommandTrigger(ai, "bwl"); }
|
||||
static Trigger* dps(PlayerbotAI* ai) { return new ChatCommandTrigger(ai, "dps"); }
|
||||
static Trigger* disperse(PlayerbotAI* ai) { return new ChatCommandTrigger(ai, "disperse"); }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
/*
|
||||
* 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 "CureTriggers.h"
|
||||
|
||||
#include "Playerbots.h"
|
||||
#include "WorldBuffAction.h"
|
||||
|
||||
bool NeedCureTrigger::IsActive()
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
return target && target->IsInWorld() && botAI->HasAuraToDispel(target, dispelType);
|
||||
Unit* target = GetTarget();
|
||||
return target && target->IsInWorld() && botAI->HasAuraToDispel(target, dispelType);
|
||||
}
|
||||
|
||||
Value<Unit*>* PartyMemberNeedCureTrigger::GetTargetValue()
|
||||
{
|
||||
return context->GetValue<Unit*>("party member to dispel", dispelType);
|
||||
return context->GetValue<Unit*>("party member to dispel", dispelType);
|
||||
}
|
||||
|
||||
bool NeedWorldBuffTrigger::IsActive()
|
||||
{
|
||||
return !WorldBuffAction::NeedWorldBuffs(bot).empty();
|
||||
}
|
||||
bool NeedWorldBuffTrigger::IsActive() { return !WorldBuffAction::NeedWorldBuffs(bot).empty(); }
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_CURETRIGGERS_H
|
||||
@@ -12,38 +13,47 @@ class Unit;
|
||||
|
||||
class NeedCureTrigger : public SpellTrigger
|
||||
{
|
||||
public:
|
||||
NeedCureTrigger(PlayerbotAI* botAI, std::string const spell, uint32 dispelType) : SpellTrigger(botAI, spell, 1 * 1000), dispelType(dispelType) { }
|
||||
public:
|
||||
NeedCureTrigger(PlayerbotAI* botAI, std::string const spell, uint32 dispelType)
|
||||
: SpellTrigger(botAI, spell, 1 * 1000), dispelType(dispelType)
|
||||
{
|
||||
}
|
||||
|
||||
std::string const GetTargetName() override { return "self target"; }
|
||||
bool IsActive() override;
|
||||
std::string const GetTargetName() override { return "self target"; }
|
||||
bool IsActive() override;
|
||||
|
||||
protected:
|
||||
uint32 dispelType;
|
||||
protected:
|
||||
uint32 dispelType;
|
||||
};
|
||||
|
||||
class TargetAuraDispelTrigger : public NeedCureTrigger
|
||||
{
|
||||
public:
|
||||
TargetAuraDispelTrigger(PlayerbotAI* botAI, std::string const spell, uint32 dispelType) : NeedCureTrigger(botAI, spell, dispelType) { }
|
||||
public:
|
||||
TargetAuraDispelTrigger(PlayerbotAI* botAI, std::string const spell, uint32 dispelType)
|
||||
: NeedCureTrigger(botAI, spell, dispelType)
|
||||
{
|
||||
}
|
||||
|
||||
std::string const GetTargetName() override { return "current target"; }
|
||||
std::string const GetTargetName() override { return "current target"; }
|
||||
};
|
||||
|
||||
class PartyMemberNeedCureTrigger : public NeedCureTrigger
|
||||
{
|
||||
public:
|
||||
PartyMemberNeedCureTrigger(PlayerbotAI* botAI, std::string const spell, uint32 dispelType) : NeedCureTrigger(botAI, spell, dispelType) { }
|
||||
public:
|
||||
PartyMemberNeedCureTrigger(PlayerbotAI* botAI, std::string const spell, uint32 dispelType)
|
||||
: NeedCureTrigger(botAI, spell, dispelType)
|
||||
{
|
||||
}
|
||||
|
||||
Value<Unit*>* GetTargetValue() override;
|
||||
Value<Unit*>* GetTargetValue() override;
|
||||
};
|
||||
|
||||
class NeedWorldBuffTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
NeedWorldBuffTrigger(PlayerbotAI* botAI) : Trigger(botAI) { }
|
||||
public:
|
||||
NeedWorldBuffTrigger(PlayerbotAI* botAI) : Trigger(botAI) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -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); }
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,14 +1,17 @@
|
||||
/*
|
||||
* 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 "GuildTriggers.h"
|
||||
|
||||
#include "GuildMgr.h"
|
||||
#include "Playerbots.h"
|
||||
|
||||
bool PetitionTurnInTrigger::IsActive()
|
||||
{
|
||||
return !bot->GetGuildId() && AI_VALUE2(uint32, "item count", chat->FormatQItem(5863)) && AI_VALUE(uint8, "petition signs") >= sWorld->getIntConfig(CONFIG_MIN_PETITION_SIGNS);
|
||||
return !bot->GetGuildId() && AI_VALUE2(uint32, "item count", chat->FormatQItem(5863)) &&
|
||||
AI_VALUE(uint8, "petition signs") >= sWorld->getIntConfig(CONFIG_MIN_PETITION_SIGNS);
|
||||
}
|
||||
|
||||
bool BuyTabardTrigger::IsActive()
|
||||
@@ -18,37 +21,37 @@ bool BuyTabardTrigger::IsActive()
|
||||
|
||||
bool LeaveLargeGuildTrigger::IsActive()
|
||||
{
|
||||
if (!bot->GetGuildId())
|
||||
return false;
|
||||
if (!bot->GetGuildId())
|
||||
return false;
|
||||
|
||||
if (botAI->IsRealPlayer())
|
||||
return false;
|
||||
if (botAI->IsRealPlayer())
|
||||
return false;
|
||||
|
||||
if (botAI->IsAlt())
|
||||
return false;
|
||||
if (botAI->IsAlt())
|
||||
return false;
|
||||
|
||||
if (botAI->IsInRealGuild())
|
||||
return false;
|
||||
|
||||
GuilderType type = botAI->GetGuilderType();
|
||||
GuilderType type = botAI->GetGuilderType();
|
||||
|
||||
Guild* guild = sGuildMgr->GetGuildById(bot->GetGuildId());
|
||||
Guild* guild = sGuildMgr->GetGuildById(bot->GetGuildId());
|
||||
|
||||
Player* leader = ObjectAccessor::FindPlayer(guild->GetLeaderGUID());
|
||||
Player* leader = ObjectAccessor::FindPlayer(guild->GetLeaderGUID());
|
||||
|
||||
//Only leave the guild if we know the leader is not a real player.
|
||||
if (!leader || !GET_PLAYERBOT_AI(leader) || !GET_PLAYERBOT_AI(leader)->IsRealPlayer())
|
||||
return false;
|
||||
// Only leave the guild if we know the leader is not a real player.
|
||||
if (!leader || !GET_PLAYERBOT_AI(leader) || !GET_PLAYERBOT_AI(leader)->IsRealPlayer())
|
||||
return false;
|
||||
|
||||
PlayerbotAI* leaderBotAI = GET_PLAYERBOT_AI(leader);
|
||||
if (!leaderBotAI || leaderBotAI->IsRealPlayer())
|
||||
return false;
|
||||
return false;
|
||||
|
||||
if (type == GuilderType::SOLO && guild->GetLeaderGUID() != bot->GetGUID())
|
||||
return true;
|
||||
if (type == GuilderType::SOLO && guild->GetLeaderGUID() != bot->GetGUID())
|
||||
return true;
|
||||
|
||||
uint32 members = guild->GetMemberSize();
|
||||
uint32 maxMembers = uint8(type);
|
||||
uint32 members = guild->GetMemberSize();
|
||||
uint32 maxMembers = uint8(type);
|
||||
|
||||
return members > maxMembers;
|
||||
return members > maxMembers;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_GUILDTRIGGER_H
|
||||
@@ -11,26 +12,26 @@ class PlayerbotAI;
|
||||
|
||||
class PetitionTurnInTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
PetitionTurnInTrigger(PlayerbotAI* botAI) : Trigger(botAI) { }
|
||||
public:
|
||||
PetitionTurnInTrigger(PlayerbotAI* botAI) : Trigger(botAI) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class BuyTabardTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
BuyTabardTrigger(PlayerbotAI* botAI) : Trigger(botAI) { }
|
||||
public:
|
||||
BuyTabardTrigger(PlayerbotAI* botAI) : Trigger(botAI) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class LeaveLargeGuildTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
LeaveLargeGuildTrigger(PlayerbotAI* botAI) : Trigger(botAI) { }
|
||||
public:
|
||||
LeaveLargeGuildTrigger(PlayerbotAI* botAI) : Trigger(botAI) {}
|
||||
|
||||
bool IsActive();
|
||||
bool IsActive();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
/*
|
||||
* 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 "HealthTriggers.h"
|
||||
|
||||
#include "Playerbots.h"
|
||||
|
||||
bool HealthInRangeTrigger::IsActive()
|
||||
@@ -10,33 +12,19 @@ bool HealthInRangeTrigger::IsActive()
|
||||
return ValueInRangeTrigger::IsActive() && !AI_VALUE2(bool, "dead", GetTargetName());
|
||||
}
|
||||
|
||||
float HealthInRangeTrigger::GetValue()
|
||||
{
|
||||
return AI_VALUE2(uint8, "health", GetTargetName());
|
||||
}
|
||||
float HealthInRangeTrigger::GetValue() { return AI_VALUE2(uint8, "health", GetTargetName()); }
|
||||
|
||||
bool PartyMemberDeadTrigger::IsActive()
|
||||
{
|
||||
return GetTarget();
|
||||
}
|
||||
bool PartyMemberDeadTrigger::IsActive() { return GetTarget(); }
|
||||
|
||||
bool CombatPartyMemberDeadTrigger::IsActive()
|
||||
{
|
||||
return GetTarget();
|
||||
}
|
||||
bool CombatPartyMemberDeadTrigger::IsActive() { return GetTarget(); }
|
||||
|
||||
bool DeadTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(bool, "dead", GetTargetName());
|
||||
}
|
||||
bool DeadTrigger::IsActive() { return AI_VALUE2(bool, "dead", GetTargetName()); }
|
||||
|
||||
bool AoeHealTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(uint8, "aoe heal", type) >= count;
|
||||
}
|
||||
bool AoeHealTrigger::IsActive() { return AI_VALUE2(uint8, "aoe heal", type) >= count; }
|
||||
|
||||
bool AoeInGroupTrigger::IsActive()
|
||||
{
|
||||
Group *group = bot->GetGroup();
|
||||
return group && group->GetMembersCount() >= 5 && AI_VALUE2(uint8, "aoe heal", type) >= (group->GetMembersCount() * ratio);
|
||||
Group* group = bot->GetGroup();
|
||||
return group && group->GetMembersCount() >= 5 &&
|
||||
AI_VALUE2(uint8, "aoe heal", type) >= (group->GetMembersCount() * ratio);
|
||||
}
|
||||
@@ -1,154 +1,200 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_HEALTHTRIGGERS_H
|
||||
#define _PLAYERBOT_HEALTHTRIGGERS_H
|
||||
|
||||
#include "Trigger.h"
|
||||
#include "PlayerbotAIConfig.h"
|
||||
#include <stdexcept>
|
||||
|
||||
#include "PlayerbotAIConfig.h"
|
||||
#include "Trigger.h"
|
||||
|
||||
class PlayerbotAI;
|
||||
|
||||
class ValueInRangeTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
ValueInRangeTrigger(PlayerbotAI* botAI, std::string const name, float maxValue, float minValue) : Trigger(botAI, name), maxValue(maxValue), minValue(minValue) { }
|
||||
public:
|
||||
ValueInRangeTrigger(PlayerbotAI* botAI, std::string const name, float maxValue, float minValue)
|
||||
: Trigger(botAI, name), maxValue(maxValue), minValue(minValue)
|
||||
{
|
||||
}
|
||||
|
||||
virtual float GetValue() = 0;
|
||||
bool IsActive() override
|
||||
{
|
||||
float value = GetValue();
|
||||
return value < maxValue && value >= minValue;
|
||||
}
|
||||
virtual float GetValue() = 0;
|
||||
bool IsActive() override
|
||||
{
|
||||
float value = GetValue();
|
||||
return value < maxValue && value >= minValue;
|
||||
}
|
||||
|
||||
protected:
|
||||
float maxValue, minValue;
|
||||
protected:
|
||||
float maxValue, minValue;
|
||||
};
|
||||
|
||||
class HealthInRangeTrigger : public ValueInRangeTrigger
|
||||
{
|
||||
public:
|
||||
HealthInRangeTrigger(PlayerbotAI* botAI, std::string const name, float maxValue, float minValue = 0) : ValueInRangeTrigger(botAI, name, maxValue, minValue) { }
|
||||
public:
|
||||
HealthInRangeTrigger(PlayerbotAI* botAI, std::string const name, float maxValue, float minValue = 0)
|
||||
: ValueInRangeTrigger(botAI, name, maxValue, minValue)
|
||||
{
|
||||
}
|
||||
|
||||
bool IsActive() override;
|
||||
float GetValue() override;
|
||||
bool IsActive() override;
|
||||
float GetValue() override;
|
||||
};
|
||||
|
||||
class LowHealthTrigger : public HealthInRangeTrigger
|
||||
{
|
||||
public:
|
||||
LowHealthTrigger(PlayerbotAI* botAI, std::string const name = "low health", float value = sPlayerbotAIConfig->lowHealth, float minValue = sPlayerbotAIConfig->criticalHealth) :
|
||||
HealthInRangeTrigger(botAI, name, value, minValue) { }
|
||||
public:
|
||||
LowHealthTrigger(PlayerbotAI* botAI, std::string const name = "low health",
|
||||
float value = sPlayerbotAIConfig->lowHealth, float minValue = sPlayerbotAIConfig->criticalHealth)
|
||||
: HealthInRangeTrigger(botAI, name, value, minValue)
|
||||
{
|
||||
}
|
||||
|
||||
std::string const GetTargetName() override { return "self target"; }
|
||||
std::string const GetTargetName() override { return "self target"; }
|
||||
};
|
||||
|
||||
class CriticalHealthTrigger : public LowHealthTrigger
|
||||
{
|
||||
public:
|
||||
CriticalHealthTrigger(PlayerbotAI* botAI) : LowHealthTrigger(botAI, "critical health", sPlayerbotAIConfig->criticalHealth, 0) { }
|
||||
public:
|
||||
CriticalHealthTrigger(PlayerbotAI* botAI)
|
||||
: LowHealthTrigger(botAI, "critical health", sPlayerbotAIConfig->criticalHealth, 0)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class MediumHealthTrigger : public LowHealthTrigger
|
||||
{
|
||||
public:
|
||||
MediumHealthTrigger(PlayerbotAI* botAI) : LowHealthTrigger(botAI, "medium health", sPlayerbotAIConfig->mediumHealth, sPlayerbotAIConfig->lowHealth) { }
|
||||
public:
|
||||
MediumHealthTrigger(PlayerbotAI* botAI)
|
||||
: LowHealthTrigger(botAI, "medium health", sPlayerbotAIConfig->mediumHealth, sPlayerbotAIConfig->lowHealth)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class AlmostFullHealthTrigger : public LowHealthTrigger
|
||||
{
|
||||
public:
|
||||
AlmostFullHealthTrigger(PlayerbotAI* botAI) : LowHealthTrigger(botAI, "almost full health", sPlayerbotAIConfig->almostFullHealth, sPlayerbotAIConfig->mediumHealth) { }
|
||||
public:
|
||||
AlmostFullHealthTrigger(PlayerbotAI* botAI)
|
||||
: LowHealthTrigger(botAI, "almost full health", sPlayerbotAIConfig->almostFullHealth,
|
||||
sPlayerbotAIConfig->mediumHealth)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class PartyMemberLowHealthTrigger : public HealthInRangeTrigger
|
||||
{
|
||||
public:
|
||||
PartyMemberLowHealthTrigger(PlayerbotAI* botAI, std::string const name = "party member low health", float value = sPlayerbotAIConfig->lowHealth, float minValue = sPlayerbotAIConfig->criticalHealth) :
|
||||
HealthInRangeTrigger(botAI, name, value, minValue) { }
|
||||
public:
|
||||
PartyMemberLowHealthTrigger(PlayerbotAI* botAI, std::string const name = "party member low health",
|
||||
float value = sPlayerbotAIConfig->lowHealth,
|
||||
float minValue = sPlayerbotAIConfig->criticalHealth)
|
||||
: HealthInRangeTrigger(botAI, name, value, minValue)
|
||||
{
|
||||
}
|
||||
|
||||
std::string const GetTargetName() override { return "party member to heal"; }
|
||||
std::string const GetTargetName() override { return "party member to heal"; }
|
||||
};
|
||||
|
||||
class PartyMemberCriticalHealthTrigger : public PartyMemberLowHealthTrigger
|
||||
{
|
||||
public:
|
||||
PartyMemberCriticalHealthTrigger(PlayerbotAI* botAI) : PartyMemberLowHealthTrigger(botAI, "party member critical health", sPlayerbotAIConfig->criticalHealth, 0) { }
|
||||
public:
|
||||
PartyMemberCriticalHealthTrigger(PlayerbotAI* botAI)
|
||||
: PartyMemberLowHealthTrigger(botAI, "party member critical health", sPlayerbotAIConfig->criticalHealth, 0)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class PartyMemberMediumHealthTrigger : public PartyMemberLowHealthTrigger
|
||||
{
|
||||
public:
|
||||
PartyMemberMediumHealthTrigger(PlayerbotAI* botAI) : PartyMemberLowHealthTrigger(botAI, "party member medium health", sPlayerbotAIConfig->mediumHealth,sPlayerbotAIConfig->lowHealth) { }
|
||||
public:
|
||||
PartyMemberMediumHealthTrigger(PlayerbotAI* botAI)
|
||||
: PartyMemberLowHealthTrigger(botAI, "party member medium health", sPlayerbotAIConfig->mediumHealth,
|
||||
sPlayerbotAIConfig->lowHealth)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class PartyMemberAlmostFullHealthTrigger : public PartyMemberLowHealthTrigger
|
||||
{
|
||||
public:
|
||||
PartyMemberAlmostFullHealthTrigger(PlayerbotAI* botAI) : PartyMemberLowHealthTrigger(botAI, "party member almost full health", sPlayerbotAIConfig->almostFullHealth,sPlayerbotAIConfig->mediumHealth) { }
|
||||
public:
|
||||
PartyMemberAlmostFullHealthTrigger(PlayerbotAI* botAI)
|
||||
: PartyMemberLowHealthTrigger(botAI, "party member almost full health", sPlayerbotAIConfig->almostFullHealth,
|
||||
sPlayerbotAIConfig->mediumHealth)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class TargetLowHealthTrigger : public HealthInRangeTrigger
|
||||
{
|
||||
public:
|
||||
TargetLowHealthTrigger(PlayerbotAI* botAI, float value, float minValue = 0) : HealthInRangeTrigger(botAI, "target low health", value, minValue) { }
|
||||
public:
|
||||
TargetLowHealthTrigger(PlayerbotAI* botAI, float value, float minValue = 0)
|
||||
: HealthInRangeTrigger(botAI, "target low health", value, minValue)
|
||||
{
|
||||
}
|
||||
|
||||
std::string const GetTargetName() override { return "current target"; }
|
||||
std::string const GetTargetName() override { return "current target"; }
|
||||
};
|
||||
|
||||
class TargetCriticalHealthTrigger : public TargetLowHealthTrigger
|
||||
{
|
||||
public:
|
||||
TargetCriticalHealthTrigger(PlayerbotAI* botAI) : TargetLowHealthTrigger(botAI, 20) { }
|
||||
public:
|
||||
TargetCriticalHealthTrigger(PlayerbotAI* botAI) : TargetLowHealthTrigger(botAI, 20) {}
|
||||
};
|
||||
|
||||
class PartyMemberDeadTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
PartyMemberDeadTrigger(PlayerbotAI* botAI) : Trigger(botAI, "resurrect", 1 * 1000) { }
|
||||
public:
|
||||
PartyMemberDeadTrigger(PlayerbotAI* botAI) : Trigger(botAI, "resurrect", 1 * 1000) {}
|
||||
|
||||
std::string const GetTargetName() override { return "party member to resurrect"; }
|
||||
bool IsActive() override;
|
||||
std::string const GetTargetName() override { return "party member to resurrect"; }
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class CombatPartyMemberDeadTrigger : public Trigger
|
||||
class CombatPartyMemberDeadTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
CombatPartyMemberDeadTrigger(PlayerbotAI* ai) : Trigger(ai, "combat party member to resurrect", 1) {}
|
||||
std::string const GetTargetName() override { return "party member to resurrect"; }
|
||||
bool IsActive() override;
|
||||
public:
|
||||
CombatPartyMemberDeadTrigger(PlayerbotAI* ai) : Trigger(ai, "combat party member to resurrect", 1) {}
|
||||
std::string const GetTargetName() override { return "party member to resurrect"; }
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class DeadTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
DeadTrigger(PlayerbotAI* botAI) : Trigger(botAI, "dead") { }
|
||||
public:
|
||||
DeadTrigger(PlayerbotAI* botAI) : Trigger(botAI, "dead") {}
|
||||
|
||||
std::string const GetTargetName() override { return "self target"; }
|
||||
bool IsActive() override;
|
||||
std::string const GetTargetName() override { return "self target"; }
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class AoeHealTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
AoeHealTrigger(PlayerbotAI* botAI, std::string const name, std::string const type, int32 count) : Trigger(botAI, name), count(count), type(type) { } // reorder args - whipowill
|
||||
bool IsActive() override;
|
||||
public:
|
||||
AoeHealTrigger(PlayerbotAI* botAI, std::string const name, std::string const type, int32 count)
|
||||
: Trigger(botAI, name), count(count), type(type)
|
||||
{
|
||||
} // reorder args - whipowill
|
||||
bool IsActive() override;
|
||||
|
||||
protected:
|
||||
int32 count;
|
||||
std::string const type;
|
||||
protected:
|
||||
int32 count;
|
||||
std::string const type;
|
||||
};
|
||||
|
||||
class AoeInGroupTrigger : public Trigger {
|
||||
public:
|
||||
AoeInGroupTrigger(PlayerbotAI* ai, std::string name, std::string type, float ratio) :
|
||||
Trigger(ai, name), ratio(ratio), type(type) {}
|
||||
bool IsActive() override;
|
||||
protected:
|
||||
float ratio;
|
||||
std::string type;
|
||||
};
|
||||
class AoeInGroupTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
AoeInGroupTrigger(PlayerbotAI* ai, std::string name, std::string type, float ratio)
|
||||
: Trigger(ai, name), ratio(ratio), type(type)
|
||||
{
|
||||
}
|
||||
bool IsActive() override;
|
||||
|
||||
protected:
|
||||
float ratio;
|
||||
std::string type;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
/*
|
||||
* 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 "LfgTriggers.h"
|
||||
|
||||
#include "Playerbots.h"
|
||||
|
||||
bool LfgProposalActiveTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE(uint32, "lfg proposal");
|
||||
}
|
||||
bool LfgProposalActiveTrigger::IsActive() { return AI_VALUE(uint32, "lfg proposal"); }
|
||||
|
||||
bool UnknownDungeonTrigger::IsActive()
|
||||
{
|
||||
return botAI->HasActivePlayerMaster() && botAI->GetMaster() && botAI->GetMaster()->IsInWorld() && botAI->GetMaster()->GetMap()->IsDungeon() && bot->GetMapId() == botAI->GetMaster()->GetMapId();
|
||||
return botAI->HasActivePlayerMaster() && botAI->GetMaster() && botAI->GetMaster()->IsInWorld() &&
|
||||
botAI->GetMaster()->GetMap()->IsDungeon() && bot->GetMapId() == botAI->GetMaster()->GetMapId();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_LFGTRIGGERS_H
|
||||
@@ -11,18 +12,18 @@ class PlayerbotAI;
|
||||
|
||||
class LfgProposalActiveTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
LfgProposalActiveTrigger(PlayerbotAI* botAI) : Trigger(botAI, "lfg proposal active", 20 * 2000) { }
|
||||
public:
|
||||
LfgProposalActiveTrigger(PlayerbotAI* botAI) : Trigger(botAI, "lfg proposal active", 20 * 2000) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class UnknownDungeonTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
UnknownDungeonTrigger(PlayerbotAI* botAI) : Trigger(botAI, "unknown dungeon", 20 * 2000) { }
|
||||
public:
|
||||
UnknownDungeonTrigger(PlayerbotAI* botAI) : Trigger(botAI, "unknown dungeon", 20 * 2000) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
/*
|
||||
* 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 "LootTriggers.h"
|
||||
|
||||
#include "LootObjectStack.h"
|
||||
#include "Playerbots.h"
|
||||
#include "ServerFacade.h"
|
||||
@@ -10,8 +12,10 @@
|
||||
bool LootAvailableTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE(bool, "has available loot") &&
|
||||
(sServerFacade->IsDistanceLessOrEqualThan(AI_VALUE2(float, "distance", "loot target"), INTERACTION_DISTANCE) || AI_VALUE(GuidVector, "all targets").empty()) &&
|
||||
!AI_VALUE2(bool, "combat", "self target") && !AI_VALUE2(bool, "mounted", "self target");
|
||||
(sServerFacade->IsDistanceLessOrEqualThan(AI_VALUE2(float, "distance", "loot target"),
|
||||
INTERACTION_DISTANCE) ||
|
||||
AI_VALUE(GuidVector, "all targets").empty()) &&
|
||||
!AI_VALUE2(bool, "combat", "self target") && !AI_VALUE2(bool, "mounted", "self target");
|
||||
}
|
||||
|
||||
bool FarFromCurrentLootTrigger::IsActive()
|
||||
@@ -23,7 +27,4 @@ bool FarFromCurrentLootTrigger::IsActive()
|
||||
return AI_VALUE2(float, "distance", "loot target") > INTERACTION_DISTANCE;
|
||||
}
|
||||
|
||||
bool CanLootTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE(bool, "can loot");
|
||||
}
|
||||
bool CanLootTrigger::IsActive() { return AI_VALUE(bool, "can loot"); }
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_LOOTTRIGGERS_H
|
||||
@@ -11,26 +12,26 @@ class PlayerbotAI;
|
||||
|
||||
class LootAvailableTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
LootAvailableTrigger(PlayerbotAI* botAI) : Trigger(botAI, "loot available") { }
|
||||
public:
|
||||
LootAvailableTrigger(PlayerbotAI* botAI) : Trigger(botAI, "loot available") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class FarFromCurrentLootTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
FarFromCurrentLootTrigger(PlayerbotAI* botAI) : Trigger(botAI, "far from current loot") { }
|
||||
public:
|
||||
FarFromCurrentLootTrigger(PlayerbotAI* botAI) : Trigger(botAI, "far from current loot") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class CanLootTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
CanLootTrigger(PlayerbotAI* botAI) : Trigger(botAI, "can loot") { }
|
||||
public:
|
||||
CanLootTrigger(PlayerbotAI* botAI) : Trigger(botAI, "can loot") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
/*
|
||||
* 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 "PvpTriggers.h"
|
||||
#include "BattlegroundMgr.h"
|
||||
|
||||
#include "BattlegroundEY.h"
|
||||
#include "BattlegroundMgr.h"
|
||||
#include "BattlegroundWS.h"
|
||||
#include "Playerbots.h"
|
||||
#include "ServerFacade.h"
|
||||
|
||||
bool EnemyPlayerNear::IsActive()
|
||||
{
|
||||
return AI_VALUE(Unit*, "enemy player target");
|
||||
}
|
||||
bool EnemyPlayerNear::IsActive() { return AI_VALUE(Unit*, "enemy player target"); }
|
||||
|
||||
bool PlayerHasNoFlag::IsActive()
|
||||
{
|
||||
@@ -20,11 +19,12 @@ bool PlayerHasNoFlag::IsActive()
|
||||
{
|
||||
if (botAI->GetBot()->GetBattlegroundTypeId() == BattlegroundTypeId::BATTLEGROUND_WS)
|
||||
{
|
||||
BattlegroundWS *bg = (BattlegroundWS*)botAI->GetBot()->GetBattleground();
|
||||
BattlegroundWS* bg = (BattlegroundWS*)botAI->GetBot()->GetBattleground();
|
||||
if (!(bg->GetFlagState(bg->GetOtherTeamId(bot->GetTeamId())) == BG_WS_FLAG_STATE_ON_PLAYER))
|
||||
return true;
|
||||
|
||||
if (bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_ALLIANCE) || bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_HORDE))
|
||||
if (bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_ALLIANCE) ||
|
||||
bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_HORDE))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -36,10 +36,7 @@ bool PlayerHasNoFlag::IsActive()
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PlayerIsInBattleground::IsActive()
|
||||
{
|
||||
return botAI->GetBot()->InBattleground();
|
||||
}
|
||||
bool PlayerIsInBattleground::IsActive() { return botAI->GetBot()->InBattleground(); }
|
||||
|
||||
bool BgWaitingTrigger::IsActive()
|
||||
{
|
||||
@@ -84,7 +81,8 @@ bool BgInviteActiveTrigger::IsActive()
|
||||
if (ginfo.IsInvitedToBGInstanceGUID && ginfo.RemoveInviteTime)
|
||||
{
|
||||
LOG_INFO("playerbots", "Bot {} <{}> ({} {}) : Invited to BG but not in BG",
|
||||
bot->GetGUID().ToString().c_str(), bot->GetName(), bot->GetLevel(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H");
|
||||
bot->GetGUID().ToString().c_str(), bot->GetName(), bot->GetLevel(),
|
||||
bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -93,10 +91,7 @@ bool BgInviteActiveTrigger::IsActive()
|
||||
return false;
|
||||
}
|
||||
|
||||
bool InsideBGTrigger::IsActive()
|
||||
{
|
||||
return bot->InBattleground() && bot->GetBattleground();
|
||||
}
|
||||
bool InsideBGTrigger::IsActive() { return bot->InBattleground() && bot->GetBattleground(); }
|
||||
|
||||
bool PlayerIsInBattlegroundWithoutFlag::IsActive()
|
||||
{
|
||||
@@ -104,11 +99,12 @@ bool PlayerIsInBattlegroundWithoutFlag::IsActive()
|
||||
{
|
||||
if (botAI->GetBot()->GetBattlegroundTypeId() == BattlegroundTypeId::BATTLEGROUND_WS)
|
||||
{
|
||||
BattlegroundWS *bg = (BattlegroundWS*)botAI->GetBot()->GetBattleground();
|
||||
BattlegroundWS* bg = (BattlegroundWS*)botAI->GetBot()->GetBattleground();
|
||||
if (!(bg->GetFlagState(bg->GetOtherTeamId(bot->GetTeamId())) == BG_WS_FLAG_STATE_ON_PLAYER))
|
||||
return true;
|
||||
|
||||
if (bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_ALLIANCE) || bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_ALLIANCE))
|
||||
if (bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_ALLIANCE) ||
|
||||
bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_ALLIANCE))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -126,8 +122,9 @@ bool PlayerHasFlag::IsActive()
|
||||
{
|
||||
if (bot->GetBattlegroundTypeId() == BATTLEGROUND_WS)
|
||||
{
|
||||
BattlegroundWS *bg = (BattlegroundWS*)botAI->GetBot()->GetBattleground();
|
||||
if (bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_ALLIANCE) || bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_HORDE))
|
||||
BattlegroundWS* bg = (BattlegroundWS*)botAI->GetBot()->GetBattleground();
|
||||
if (bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_ALLIANCE) ||
|
||||
bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_HORDE))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -135,7 +132,7 @@ bool PlayerHasFlag::IsActive()
|
||||
|
||||
if (bot->GetBattlegroundTypeId() == BATTLEGROUND_EY)
|
||||
{
|
||||
BattlegroundEY* bg = (BattlegroundEY*) botAI->GetBot()->GetBattleground();
|
||||
BattlegroundEY* bg = (BattlegroundEY*)botAI->GetBot()->GetBattleground();
|
||||
return bot->GetGUID() == bg->GetFlagPickerGUID();
|
||||
}
|
||||
|
||||
@@ -151,9 +148,10 @@ bool TeamHasFlag::IsActive()
|
||||
{
|
||||
if (botAI->GetBot()->GetBattlegroundTypeId() == BattlegroundTypeId::BATTLEGROUND_WS)
|
||||
{
|
||||
BattlegroundWS *bg = (BattlegroundWS*)botAI->GetBot()->GetBattleground();
|
||||
BattlegroundWS* bg = (BattlegroundWS*)botAI->GetBot()->GetBattleground();
|
||||
|
||||
if (bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_ALLIANCE) || bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_HORDE))
|
||||
if (bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_ALLIANCE) ||
|
||||
bot->GetGUID() == bg->GetFlagPickerGUID(TEAM_HORDE))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -174,7 +172,7 @@ bool EnemyTeamHasFlag::IsActive()
|
||||
{
|
||||
if (botAI->GetBot()->GetBattlegroundTypeId() == BattlegroundTypeId::BATTLEGROUND_WS)
|
||||
{
|
||||
BattlegroundWS *bg = (BattlegroundWS*)botAI->GetBot()->GetBattleground();
|
||||
BattlegroundWS* bg = (BattlegroundWS*)botAI->GetBot()->GetBattleground();
|
||||
|
||||
if (bot->GetTeamId() == TEAM_HORDE)
|
||||
{
|
||||
@@ -229,8 +227,4 @@ bool VehicleNearTrigger::IsActive()
|
||||
return npcs.size();
|
||||
}
|
||||
|
||||
bool InVehicleTrigger::IsActive()
|
||||
{
|
||||
return botAI->IsInVehicle();
|
||||
}
|
||||
|
||||
bool InVehicleTrigger::IsActive() { return botAI->IsInVehicle(); }
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PVPTRIGGERS_H
|
||||
@@ -11,129 +12,129 @@ class PlayerbotAI;
|
||||
|
||||
class EnemyPlayerNear : public Trigger
|
||||
{
|
||||
public:
|
||||
EnemyPlayerNear(PlayerbotAI* botAI) : Trigger(botAI, "enemy player near", 3) { }
|
||||
public:
|
||||
EnemyPlayerNear(PlayerbotAI* botAI) : Trigger(botAI, "enemy player near", 3) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class PlayerHasNoFlag : public Trigger
|
||||
{
|
||||
public:
|
||||
PlayerHasNoFlag(PlayerbotAI* botAI) : Trigger(botAI, "player has no flag") { }
|
||||
public:
|
||||
PlayerHasNoFlag(PlayerbotAI* botAI) : Trigger(botAI, "player has no flag") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class PlayerHasFlag : public Trigger
|
||||
{
|
||||
public:
|
||||
PlayerHasFlag(PlayerbotAI* botAI) : Trigger(botAI, "player has flag") { }
|
||||
public:
|
||||
PlayerHasFlag(PlayerbotAI* botAI) : Trigger(botAI, "player has flag") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class EnemyFlagCarrierNear : public Trigger
|
||||
{
|
||||
public:
|
||||
EnemyFlagCarrierNear(PlayerbotAI* botAI) : Trigger(botAI, "enemy flagcarrier near") { }
|
||||
public:
|
||||
EnemyFlagCarrierNear(PlayerbotAI* botAI) : Trigger(botAI, "enemy flagcarrier near") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class TeamFlagCarrierNear : public Trigger
|
||||
{
|
||||
public:
|
||||
TeamFlagCarrierNear(PlayerbotAI* botAI) : Trigger(botAI, "team flagcarrier near") { }
|
||||
public:
|
||||
TeamFlagCarrierNear(PlayerbotAI* botAI) : Trigger(botAI, "team flagcarrier near") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class TeamHasFlag : public Trigger
|
||||
{
|
||||
public:
|
||||
TeamHasFlag(PlayerbotAI* botAI) : Trigger(botAI, "team has flag") { }
|
||||
public:
|
||||
TeamHasFlag(PlayerbotAI* botAI) : Trigger(botAI, "team has flag") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class EnemyTeamHasFlag : public Trigger
|
||||
{
|
||||
public:
|
||||
EnemyTeamHasFlag(PlayerbotAI* botAI) : Trigger(botAI, "enemy team has flag") { }
|
||||
public:
|
||||
EnemyTeamHasFlag(PlayerbotAI* botAI) : Trigger(botAI, "enemy team has flag") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class PlayerIsInBattleground : public Trigger
|
||||
{
|
||||
public:
|
||||
PlayerIsInBattleground(PlayerbotAI* botAI) : Trigger(botAI, "in Battleground") { }
|
||||
public:
|
||||
PlayerIsInBattleground(PlayerbotAI* botAI) : Trigger(botAI, "in Battleground") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class BgWaitingTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
BgWaitingTrigger(PlayerbotAI* botAI) : Trigger(botAI, "bg waiting", 30) { }
|
||||
public:
|
||||
BgWaitingTrigger(PlayerbotAI* botAI) : Trigger(botAI, "bg waiting", 30) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class BgActiveTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
BgActiveTrigger(PlayerbotAI* botAI) : Trigger(botAI, "bg active", 1) { }
|
||||
public:
|
||||
BgActiveTrigger(PlayerbotAI* botAI) : Trigger(botAI, "bg active", 1) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class BgInviteActiveTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
BgInviteActiveTrigger(PlayerbotAI* botAI) : Trigger(botAI, "bg invite active", 10) { }
|
||||
public:
|
||||
BgInviteActiveTrigger(PlayerbotAI* botAI) : Trigger(botAI, "bg invite active", 10) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class InsideBGTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
InsideBGTrigger(PlayerbotAI* botAI) : Trigger(botAI, "inside bg", 1) { }
|
||||
public:
|
||||
InsideBGTrigger(PlayerbotAI* botAI) : Trigger(botAI, "inside bg", 1) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
class PlayerIsInBattlegroundWithoutFlag : public Trigger
|
||||
{
|
||||
public:
|
||||
PlayerIsInBattlegroundWithoutFlag(PlayerbotAI* botAI) : Trigger(botAI, "in Battleground without flag") { }
|
||||
public:
|
||||
PlayerIsInBattlegroundWithoutFlag(PlayerbotAI* botAI) : Trigger(botAI, "in Battleground without flag") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class PlayerWantsInBattlegroundTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
PlayerWantsInBattlegroundTrigger(PlayerbotAI* botAI) : Trigger(botAI, "wants in bg") { }
|
||||
public:
|
||||
PlayerWantsInBattlegroundTrigger(PlayerbotAI* botAI) : Trigger(botAI, "wants in bg") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class VehicleNearTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
VehicleNearTrigger(PlayerbotAI* botAI) : Trigger(botAI, "vehicle near", 10) { }
|
||||
public:
|
||||
VehicleNearTrigger(PlayerbotAI* botAI) : Trigger(botAI, "vehicle near", 10) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class InVehicleTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
InVehicleTrigger(PlayerbotAI* botAI) : Trigger(botAI, "in vehicle") { }
|
||||
public:
|
||||
InVehicleTrigger(PlayerbotAI* botAI) : Trigger(botAI, "in vehicle") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
/*
|
||||
* 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 "RangeTriggers.h"
|
||||
|
||||
#include "MoveSplineInit.h"
|
||||
#include "PlayerbotAIConfig.h"
|
||||
#include "Playerbots.h"
|
||||
@@ -16,46 +18,50 @@ static float GetSpeedInMotion(Unit* target)
|
||||
bool EnemyTooCloseForSpellTrigger::IsActive()
|
||||
{
|
||||
Unit* target = AI_VALUE(Unit*, "current target");
|
||||
return target && (target->GetVictim() != bot || target->isFrozen() || !target->CanFreeMove()) &&
|
||||
target->GetObjectSize() <= 10.0f &&
|
||||
target->IsWithinCombatRange(bot, MIN_MELEE_REACH);
|
||||
// Unit* target = AI_VALUE(Unit*, "current target");
|
||||
// if (!target) {
|
||||
// return false;
|
||||
// }
|
||||
return target && (target->GetVictim() != bot || target->isFrozen() || !target->CanFreeMove()) &&
|
||||
target->GetObjectSize() <= 10.0f && target->IsWithinCombatRange(bot, MIN_MELEE_REACH);
|
||||
// Unit* target = AI_VALUE(Unit*, "current target");
|
||||
// if (!target) {
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// if (target->GetTarget() == bot->GetGUID() && !bot->GetGroup() && !target->HasUnitState(UNIT_STATE_ROOT) && GetSpeedInMotion(target) > GetSpeedInMotion(bot) * 0.65f)
|
||||
// return false;
|
||||
// if (target->GetTarget() == bot->GetGUID() && !bot->GetGroup() && !target->HasUnitState(UNIT_STATE_ROOT) &&
|
||||
// GetSpeedInMotion(target) > GetSpeedInMotion(bot) * 0.65f)
|
||||
// return false;
|
||||
|
||||
// bool isBoss = false;
|
||||
// bool isRaid = false;
|
||||
// float combatReach = bot->GetCombatReach() + target->GetCombatReach();
|
||||
// float targetDistance = sServerFacade->GetDistance2d(bot, target) + combatReach;
|
||||
// if (target->GetTypeId() == TYPEID_UNIT)
|
||||
// {
|
||||
// Creature* creature = botAI->GetCreature(target->GetGUID());
|
||||
// if (creature)
|
||||
// {
|
||||
// isBoss = creature->isWorldBoss();
|
||||
// }
|
||||
// }
|
||||
// bool isBoss = false;
|
||||
// bool isRaid = false;
|
||||
// float combatReach = bot->GetCombatReach() + target->GetCombatReach();
|
||||
// float targetDistance = sServerFacade->GetDistance2d(bot, target) + combatReach;
|
||||
// if (target->GetTypeId() == TYPEID_UNIT)
|
||||
// {
|
||||
// Creature* creature = botAI->GetCreature(target->GetGUID());
|
||||
// if (creature)
|
||||
// {
|
||||
// isBoss = creature->isWorldBoss();
|
||||
// }
|
||||
// }
|
||||
|
||||
// if (bot->GetMap() && bot->GetMap()->IsRaid())
|
||||
// isRaid = true;
|
||||
// if (bot->GetMap() && bot->GetMap()->IsRaid())
|
||||
// isRaid = true;
|
||||
|
||||
// // if (isBoss || isRaid)
|
||||
// // return sServerFacade->IsDistanceLessThan(targetDistance, (sPlayerbotAIConfig->tooCloseDistance + combatReach) / 2);
|
||||
// // if (isBoss || isRaid)
|
||||
// // return sServerFacade->IsDistanceLessThan(targetDistance, (sPlayerbotAIConfig->tooCloseDistance +
|
||||
// combatReach) / 2);
|
||||
|
||||
// return sServerFacade->IsDistanceLessOrEqualThan(targetDistance, (sPlayerbotAIConfig->tooCloseDistance + combatReach / 2));
|
||||
// return sServerFacade->IsDistanceLessOrEqualThan(targetDistance, (sPlayerbotAIConfig->tooCloseDistance +
|
||||
// combatReach / 2));
|
||||
}
|
||||
|
||||
bool EnemyTooCloseForAutoShotTrigger::IsActive()
|
||||
{
|
||||
Unit* target = AI_VALUE(Unit*, "current target");
|
||||
|
||||
return target && (target->GetVictim() != bot || target->isFrozen() || !target->CanFreeMove()) && bot->IsWithinMeleeRange(target);
|
||||
|
||||
// if (target->GetTarget() == bot->GetGUID() && !bot->GetGroup() && !target->HasUnitState(UNIT_STATE_ROOT) && GetSpeedInMotion(target) > GetSpeedInMotion(bot) * 0.65f)
|
||||
return target && (target->GetVictim() != bot || target->isFrozen() || !target->CanFreeMove()) &&
|
||||
bot->IsWithinMeleeRange(target);
|
||||
|
||||
// if (target->GetTarget() == bot->GetGUID() && !bot->GetGroup() && !target->HasUnitState(UNIT_STATE_ROOT) &&
|
||||
// GetSpeedInMotion(target) > GetSpeedInMotion(bot) * 0.65f)
|
||||
// return false;
|
||||
|
||||
// bool isBoss = false;
|
||||
@@ -82,35 +88,38 @@ bool EnemyTooCloseForShootTrigger::IsActive()
|
||||
Unit* target = AI_VALUE(Unit*, "current target");
|
||||
// target->IsWithinCombatRange()
|
||||
|
||||
return target && (target->GetVictim() != bot || target->isFrozen() || !target->CanFreeMove()) && target->IsWithinCombatRange(bot, MIN_MELEE_REACH);
|
||||
return target && (target->GetVictim() != bot || target->isFrozen() || !target->CanFreeMove()) &&
|
||||
target->IsWithinCombatRange(bot, MIN_MELEE_REACH);
|
||||
|
||||
// Unit* target = AI_VALUE(Unit*, "current target");
|
||||
// if (!target)
|
||||
// return false;
|
||||
// Unit* target = AI_VALUE(Unit*, "current target");
|
||||
// if (!target)
|
||||
// return false;
|
||||
|
||||
// if (target->GetTarget() == bot->GetGUID() && !bot->GetGroup() && !target->HasUnitState(UNIT_STATE_ROOT) && GetSpeedInMotion(target) > GetSpeedInMotion(bot) * 0.65f)
|
||||
// return false;
|
||||
// if (target->GetTarget() == bot->GetGUID() && !bot->GetGroup() && !target->HasUnitState(UNIT_STATE_ROOT) &&
|
||||
// GetSpeedInMotion(target) > GetSpeedInMotion(bot) * 0.65f)
|
||||
// return false;
|
||||
|
||||
// bool isBoss = false;
|
||||
// bool isRaid = false;
|
||||
// float combatReach = bot->GetCombatReach() + target->GetCombatReach();
|
||||
// float targetDistance = sServerFacade->GetDistance2d(bot, target) + combatReach;
|
||||
// if (target->GetTypeId() == TYPEID_UNIT)
|
||||
// {
|
||||
// Creature* creature = botAI->GetCreature(target->GetGUID());
|
||||
// if (creature)
|
||||
// {
|
||||
// isBoss = creature->isWorldBoss();
|
||||
// }
|
||||
// }
|
||||
// bool isBoss = false;
|
||||
// bool isRaid = false;
|
||||
// float combatReach = bot->GetCombatReach() + target->GetCombatReach();
|
||||
// float targetDistance = sServerFacade->GetDistance2d(bot, target) + combatReach;
|
||||
// if (target->GetTypeId() == TYPEID_UNIT)
|
||||
// {
|
||||
// Creature* creature = botAI->GetCreature(target->GetGUID());
|
||||
// if (creature)
|
||||
// {
|
||||
// isBoss = creature->isWorldBoss();
|
||||
// }
|
||||
// }
|
||||
|
||||
// if (bot->GetMap() && bot->GetMap()->IsRaid())
|
||||
// isRaid = true;
|
||||
// if (bot->GetMap() && bot->GetMap()->IsRaid())
|
||||
// isRaid = true;
|
||||
|
||||
// // if (isBoss || isRaid)
|
||||
// // return sServerFacade->IsDistanceLessThan(targetDistance, botAI->GetRange("shoot") + combatReach);
|
||||
// // if (isBoss || isRaid)
|
||||
// // return sServerFacade->IsDistanceLessThan(targetDistance, botAI->GetRange("shoot") + combatReach);
|
||||
|
||||
// return sServerFacade->IsDistanceLessOrEqualThan(targetDistance, (botAI->GetRange("shoot") + combatReach / 2));
|
||||
// return sServerFacade->IsDistanceLessOrEqualThan(targetDistance, (botAI->GetRange("shoot") + combatReach /
|
||||
// 2));
|
||||
}
|
||||
|
||||
bool EnemyTooCloseForMeleeTrigger::IsActive()
|
||||
@@ -125,7 +134,8 @@ bool EnemyTooCloseForMeleeTrigger::IsActive()
|
||||
bool EnemyIsCloseTrigger::IsActive()
|
||||
{
|
||||
Unit* target = AI_VALUE(Unit*, "current target");
|
||||
return target && sServerFacade->IsDistanceLessOrEqualThan(AI_VALUE2(float, "distance", "current target"), sPlayerbotAIConfig->tooCloseDistance);
|
||||
return target && sServerFacade->IsDistanceLessOrEqualThan(AI_VALUE2(float, "distance", "current target"),
|
||||
sPlayerbotAIConfig->tooCloseDistance);
|
||||
}
|
||||
|
||||
bool EnemyWithinMeleeTrigger::IsActive()
|
||||
@@ -139,10 +149,14 @@ bool OutOfRangeTrigger::IsActive()
|
||||
Unit* target = AI_VALUE(Unit*, GetTargetName());
|
||||
// increase contact distance to prevent calculation error
|
||||
float dis = distance + CONTACT_DISTANCE;
|
||||
return target && !bot->IsWithinCombatRange(target, dis); // sServerFacade->IsDistanceGreaterThan(AI_VALUE2(float, "distance", GetTargetName()), distance);
|
||||
return target &&
|
||||
!bot->IsWithinCombatRange(
|
||||
target,
|
||||
dis); // sServerFacade->IsDistanceGreaterThan(AI_VALUE2(float, "distance", GetTargetName()), distance);
|
||||
}
|
||||
|
||||
EnemyOutOfSpellRangeTrigger::EnemyOutOfSpellRangeTrigger(PlayerbotAI* botAI) : OutOfRangeTrigger(botAI, "enemy out of spell range", botAI->GetRange("spell"))
|
||||
EnemyOutOfSpellRangeTrigger::EnemyOutOfSpellRangeTrigger(PlayerbotAI* botAI)
|
||||
: OutOfRangeTrigger(botAI, "enemy out of spell range", botAI->GetRange("spell"))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -153,7 +167,8 @@ EnemyOutOfSpellRangeTrigger::EnemyOutOfSpellRangeTrigger(PlayerbotAI* botAI) : O
|
||||
// return false;
|
||||
|
||||
// float combatReach = bot->GetCombatReach() + target->GetCombatReach();
|
||||
// return target && (sServerFacade->GetDistance2d(bot, target) > (distance + combatReach + sPlayerbotAIConfig->contactDistance) || !bot->IsWithinLOSInMap(target));
|
||||
// return target && (sServerFacade->GetDistance2d(bot, target) > (distance + combatReach +
|
||||
// sPlayerbotAIConfig->contactDistance) || !bot->IsWithinLOSInMap(target));
|
||||
// }
|
||||
|
||||
// bool EnemyOutOfMeleeTrigger::IsActive()
|
||||
@@ -163,7 +178,8 @@ EnemyOutOfSpellRangeTrigger::EnemyOutOfSpellRangeTrigger(PlayerbotAI* botAI) : O
|
||||
// return false;
|
||||
|
||||
// float targetDistance = sServerFacade->GetDistance2d(bot, target);
|
||||
// return target && (targetDistance > std::max(5.0f, bot->GetCombatReach() + target->GetCombatReach()) || (!bot->IsWithinLOSInMap(target) && targetDistance > 5.0f));
|
||||
// return target && (targetDistance > std::max(5.0f, bot->GetCombatReach() + target->GetCombatReach()) ||
|
||||
// (!bot->IsWithinLOSInMap(target) && targetDistance > 5.0f));
|
||||
// }
|
||||
|
||||
bool PartyMemberToHealOutOfSpellRangeTrigger::IsActive()
|
||||
@@ -173,11 +189,12 @@ bool PartyMemberToHealOutOfSpellRangeTrigger::IsActive()
|
||||
return false;
|
||||
|
||||
float combatReach = bot->GetCombatReach() + target->GetCombatReach();
|
||||
return target && (sServerFacade->GetDistance2d(bot, target) > (distance + sPlayerbotAIConfig->contactDistance) || !bot->IsWithinLOSInMap(target));
|
||||
return target && (sServerFacade->GetDistance2d(bot, target) > (distance + sPlayerbotAIConfig->contactDistance) ||
|
||||
!bot->IsWithinLOSInMap(target));
|
||||
}
|
||||
|
||||
PartyMemberToHealOutOfSpellRangeTrigger::PartyMemberToHealOutOfSpellRangeTrigger(PlayerbotAI* botAI) :
|
||||
OutOfRangeTrigger(botAI, "party member to heal out of spell range", botAI->GetRange("heal") + 1.0f)
|
||||
PartyMemberToHealOutOfSpellRangeTrigger::PartyMemberToHealOutOfSpellRangeTrigger(PlayerbotAI* botAI)
|
||||
: OutOfRangeTrigger(botAI, "party member to heal out of spell range", botAI->GetRange("heal") + 1.0f)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_RANGETRIGGERS_H
|
||||
@@ -12,103 +13,112 @@ class PlayerbotAI;
|
||||
|
||||
class EnemyTooCloseForSpellTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
EnemyTooCloseForSpellTrigger(PlayerbotAI* botAI) : Trigger(botAI, "enemy too close for spell") { }
|
||||
public:
|
||||
EnemyTooCloseForSpellTrigger(PlayerbotAI* botAI) : Trigger(botAI, "enemy too close for spell") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class EnemyTooCloseForShootTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
EnemyTooCloseForShootTrigger(PlayerbotAI* botAI) : Trigger(botAI, "enemy too close for shoot") { }
|
||||
public:
|
||||
EnemyTooCloseForShootTrigger(PlayerbotAI* botAI) : Trigger(botAI, "enemy too close for shoot") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class EnemyTooCloseForAutoShotTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
EnemyTooCloseForAutoShotTrigger(PlayerbotAI* botAI) : Trigger(botAI, "enemy too close for auto shot") { }
|
||||
public:
|
||||
EnemyTooCloseForAutoShotTrigger(PlayerbotAI* botAI) : Trigger(botAI, "enemy too close for auto shot") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class EnemyTooCloseForMeleeTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
EnemyTooCloseForMeleeTrigger(PlayerbotAI* botAI) : Trigger(botAI, "enemy too close for melee", 5) { }
|
||||
public:
|
||||
EnemyTooCloseForMeleeTrigger(PlayerbotAI* botAI) : Trigger(botAI, "enemy too close for melee", 5) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class EnemyIsCloseTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
EnemyIsCloseTrigger(PlayerbotAI* botAI) : Trigger(botAI, "enemy is close") { }
|
||||
public:
|
||||
EnemyIsCloseTrigger(PlayerbotAI* botAI) : Trigger(botAI, "enemy is close") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class EnemyWithinMeleeTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
EnemyWithinMeleeTrigger(PlayerbotAI* botAI) : Trigger(botAI, "enemy within melee") { }
|
||||
public:
|
||||
EnemyWithinMeleeTrigger(PlayerbotAI* botAI) : Trigger(botAI, "enemy within melee") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class OutOfRangeTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
OutOfRangeTrigger(PlayerbotAI* botAI, std::string const name, float distance) : Trigger(botAI, name), distance(distance) { }
|
||||
public:
|
||||
OutOfRangeTrigger(PlayerbotAI* botAI, std::string const name, float distance)
|
||||
: Trigger(botAI, name), distance(distance)
|
||||
{
|
||||
}
|
||||
|
||||
bool IsActive() override;
|
||||
std::string const GetTargetName() override { return "current target"; }
|
||||
bool IsActive() override;
|
||||
std::string const GetTargetName() override { return "current target"; }
|
||||
|
||||
protected:
|
||||
float distance;
|
||||
protected:
|
||||
float distance;
|
||||
};
|
||||
|
||||
class EnemyOutOfMeleeTrigger : public OutOfRangeTrigger
|
||||
{
|
||||
public:
|
||||
EnemyOutOfMeleeTrigger(PlayerbotAI* botAI) : OutOfRangeTrigger(botAI, "enemy out of melee range", sPlayerbotAIConfig->meleeDistance) { }
|
||||
public:
|
||||
EnemyOutOfMeleeTrigger(PlayerbotAI* botAI)
|
||||
: OutOfRangeTrigger(botAI, "enemy out of melee range", sPlayerbotAIConfig->meleeDistance)
|
||||
{
|
||||
}
|
||||
|
||||
// bool IsActive() override;
|
||||
// bool IsActive() override;
|
||||
};
|
||||
|
||||
class EnemyOutOfSpellRangeTrigger : public OutOfRangeTrigger
|
||||
{
|
||||
public:
|
||||
EnemyOutOfSpellRangeTrigger(PlayerbotAI* botAI);
|
||||
public:
|
||||
EnemyOutOfSpellRangeTrigger(PlayerbotAI* botAI);
|
||||
};
|
||||
|
||||
class PartyMemberToHealOutOfSpellRangeTrigger : public OutOfRangeTrigger
|
||||
{
|
||||
public:
|
||||
PartyMemberToHealOutOfSpellRangeTrigger(PlayerbotAI* botAI);
|
||||
public:
|
||||
PartyMemberToHealOutOfSpellRangeTrigger(PlayerbotAI* botAI);
|
||||
|
||||
bool IsActive() override;
|
||||
std::string const GetTargetName() override { return "party member to heal"; }
|
||||
bool IsActive() override;
|
||||
std::string const GetTargetName() override { return "party member to heal"; }
|
||||
};
|
||||
|
||||
class FarFromMasterTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
FarFromMasterTrigger(PlayerbotAI* botAI, std::string const name = "far from master", float distance = 12.0f, int32 checkInterval = 50) :
|
||||
Trigger(botAI, name, checkInterval), distance(distance) { }
|
||||
public:
|
||||
FarFromMasterTrigger(PlayerbotAI* botAI, std::string const name = "far from master", float distance = 12.0f,
|
||||
int32 checkInterval = 50)
|
||||
: Trigger(botAI, name, checkInterval), distance(distance)
|
||||
{
|
||||
}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
|
||||
private:
|
||||
float distance;
|
||||
private:
|
||||
float distance;
|
||||
};
|
||||
|
||||
class OutOfReactRangeTrigger : public FarFromMasterTrigger
|
||||
{
|
||||
public:
|
||||
OutOfReactRangeTrigger(PlayerbotAI* botAI) : FarFromMasterTrigger(botAI, "out of react range", 50.0f, 5) { }
|
||||
public:
|
||||
OutOfReactRangeTrigger(PlayerbotAI* botAI) : FarFromMasterTrigger(botAI, "out of react range", 50.0f, 5) {}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,23 +1,19 @@
|
||||
/*
|
||||
* 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 "RpgTriggers.h"
|
||||
|
||||
#include "BudgetValues.h"
|
||||
#include "GuildCreateActions.h"
|
||||
#include "Playerbots.h"
|
||||
#include "ServerFacade.h"
|
||||
#include "SocialMgr.h"
|
||||
|
||||
bool NoRpgTargetTrigger::IsActive()
|
||||
{
|
||||
return !AI_VALUE(GuidPosition, "rpg target");
|
||||
}
|
||||
bool NoRpgTargetTrigger::IsActive() { return !AI_VALUE(GuidPosition, "rpg target"); }
|
||||
|
||||
bool HasRpgTargetTrigger::IsActive()
|
||||
{
|
||||
return !NoRpgTargetTrigger::IsActive();
|
||||
}
|
||||
bool HasRpgTargetTrigger::IsActive() { return !NoRpgTargetTrigger::IsActive(); }
|
||||
|
||||
bool FarFromRpgTargetTrigger::IsActive()
|
||||
{
|
||||
@@ -29,19 +25,14 @@ bool NearRpgTargetTrigger::IsActive()
|
||||
return !NoRpgTargetTrigger::IsActive() && !FarFromRpgTargetTrigger::IsActive();
|
||||
}
|
||||
|
||||
GuidPosition RpgTrigger::getGuidP()
|
||||
{
|
||||
return AI_VALUE(GuidPosition, "rpg target");
|
||||
}
|
||||
GuidPosition RpgTrigger::getGuidP() { return AI_VALUE(GuidPosition, "rpg target"); }
|
||||
|
||||
bool RpgTrigger::IsActive()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
bool RpgTrigger::IsActive() { return true; }
|
||||
|
||||
Event RpgTrigger::Check()
|
||||
{
|
||||
if (!NoRpgTargetTrigger::IsActive() && (AI_VALUE(std::string, "next rpg action") == "choose rpg target") || !FarFromRpgTargetTrigger::IsActive())
|
||||
if (!NoRpgTargetTrigger::IsActive() && (AI_VALUE(std::string, "next rpg action") == "choose rpg target") ||
|
||||
!FarFromRpgTargetTrigger::IsActive())
|
||||
return Trigger::Check();
|
||||
|
||||
return Event();
|
||||
@@ -54,7 +45,8 @@ bool RpgTaxiTrigger::IsActive()
|
||||
if (!guidP.HasNpcFlag(UNIT_NPC_FLAG_FLIGHTMASTER))
|
||||
return false;
|
||||
|
||||
uint32 node = sObjectMgr->GetNearestTaxiNode(guidP.getX(), guidP.getY(), guidP.getZ(), guidP.getMapId(), bot->GetTeamId());
|
||||
uint32 node =
|
||||
sObjectMgr->GetNearestTaxiNode(guidP.getX(), guidP.getY(), guidP.getZ(), guidP.getMapId(), bot->GetTeamId());
|
||||
|
||||
if (!node)
|
||||
return false;
|
||||
@@ -75,7 +67,8 @@ bool RpgDiscoverTrigger::IsActive()
|
||||
if (bot->isTaxiCheater())
|
||||
return false;
|
||||
|
||||
uint32 node = sObjectMgr->GetNearestTaxiNode(guidP.getX(), guidP.getY(), guidP.getZ(), guidP.getMapId(), bot->GetTeamId());
|
||||
uint32 node =
|
||||
sObjectMgr->GetNearestTaxiNode(guidP.getX(), guidP.getY(), guidP.getZ(), guidP.getMapId(), bot->GetTeamId());
|
||||
|
||||
if (bot->m_taxi.IsTaximaskNodeKnown(node))
|
||||
return false;
|
||||
@@ -127,7 +120,7 @@ bool RpgBuyTrigger::IsActive()
|
||||
if (AI_VALUE(uint8, "durability") > 50)
|
||||
return false;
|
||||
|
||||
if (!AI_VALUE(bool, "can sell")) //Need better condition.
|
||||
if (!AI_VALUE(bool, "can sell")) // Need better condition.
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@@ -197,7 +190,7 @@ bool RpgTrainTrigger::IsTrainerOf(CreatureTemplate const* cInfo, Player* pPlayer
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return false; // checked and error output at creature_template loading
|
||||
return false; // checked and error output at creature_template loading
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -292,7 +285,7 @@ bool RpgHomeBindTrigger::IsActive()
|
||||
bool RpgQueueBGTrigger::IsActive()
|
||||
{
|
||||
// skip bots not in continents
|
||||
if (!WorldPosition(bot).isOverworld()) // bg, raid, dungeon
|
||||
if (!WorldPosition(bot).isOverworld()) // bg, raid, dungeon
|
||||
return false;
|
||||
|
||||
GuidPosition guidP(getGuidP());
|
||||
@@ -390,7 +383,7 @@ bool RpgTradeUsefulTrigger::IsActive()
|
||||
if (!player)
|
||||
return false;
|
||||
|
||||
//More code/botAI-value here to see if bot is friendly enough.
|
||||
// More code/botAI-value here to see if bot is friendly enough.
|
||||
bool isFriend = false;
|
||||
if (player->GetGuildId() != bot->GetGuildId())
|
||||
isFriend = true;
|
||||
@@ -439,7 +432,6 @@ bool RpgDuelTrigger::IsActive()
|
||||
if (AI_VALUE2(uint8, "health", "self target") < 90)
|
||||
return false;
|
||||
|
||||
|
||||
GuidPosition guidP(getGuidP());
|
||||
|
||||
if (!guidP.IsPlayer())
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_RPGTRIGGERS_H
|
||||
@@ -15,184 +16,199 @@ struct CreatureTemplate;
|
||||
|
||||
class NoRpgTargetTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
NoRpgTargetTrigger(PlayerbotAI* botAI, std::string const name = "no rpg target", int checkInterval = 1) : Trigger(botAI, name, checkInterval) { }
|
||||
public:
|
||||
NoRpgTargetTrigger(PlayerbotAI* botAI, std::string const name = "no rpg target", int checkInterval = 1)
|
||||
: Trigger(botAI, name, checkInterval)
|
||||
{
|
||||
}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class HasRpgTargetTrigger : public NoRpgTargetTrigger
|
||||
{
|
||||
public:
|
||||
HasRpgTargetTrigger(PlayerbotAI* botAI, std::string const name = "has rpg target", int checkInterval = 1) : NoRpgTargetTrigger(botAI, name, checkInterval) { }
|
||||
public:
|
||||
HasRpgTargetTrigger(PlayerbotAI* botAI, std::string const name = "has rpg target", int checkInterval = 1)
|
||||
: NoRpgTargetTrigger(botAI, name, checkInterval)
|
||||
{
|
||||
}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class FarFromRpgTargetTrigger : public NoRpgTargetTrigger
|
||||
{
|
||||
public:
|
||||
FarFromRpgTargetTrigger(PlayerbotAI* botAI, std::string const name = "far from rpg target", int checkInterval = 1) : NoRpgTargetTrigger(botAI, name, checkInterval) { }
|
||||
public:
|
||||
FarFromRpgTargetTrigger(PlayerbotAI* botAI, std::string const name = "far from rpg target", int checkInterval = 1)
|
||||
: NoRpgTargetTrigger(botAI, name, checkInterval)
|
||||
{
|
||||
}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class NearRpgTargetTrigger : public FarFromRpgTargetTrigger
|
||||
{
|
||||
public:
|
||||
NearRpgTargetTrigger(PlayerbotAI* botAI, std::string const name = "near rpg target", int checkInterval = 1) : FarFromRpgTargetTrigger(botAI, name, checkInterval) { }
|
||||
public:
|
||||
NearRpgTargetTrigger(PlayerbotAI* botAI, std::string const name = "near rpg target", int checkInterval = 1)
|
||||
: FarFromRpgTargetTrigger(botAI, name, checkInterval)
|
||||
{
|
||||
}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
//Sub actions:
|
||||
// Sub actions:
|
||||
class RpgTrigger : public FarFromRpgTargetTrigger
|
||||
{
|
||||
public:
|
||||
RpgTrigger(PlayerbotAI* botAI, std::string const name = "sub rpg", int checkInterval = 2) : FarFromRpgTargetTrigger(botAI, name, checkInterval) { }
|
||||
public:
|
||||
RpgTrigger(PlayerbotAI* botAI, std::string const name = "sub rpg", int checkInterval = 2)
|
||||
: FarFromRpgTargetTrigger(botAI, name, checkInterval)
|
||||
{
|
||||
}
|
||||
|
||||
GuidPosition getGuidP();
|
||||
GuidPosition getGuidP();
|
||||
|
||||
bool IsActive() override;
|
||||
Event Check() override;
|
||||
bool IsActive() override;
|
||||
Event Check() override;
|
||||
};
|
||||
|
||||
class RpgTaxiTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgTaxiTrigger(PlayerbotAI* botAI, std::string const name = "rpg taxi") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgTaxiTrigger(PlayerbotAI* botAI, std::string const name = "rpg taxi") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgDiscoverTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgDiscoverTrigger(PlayerbotAI* botAI, std::string const name = "rpg discover") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgDiscoverTrigger(PlayerbotAI* botAI, std::string const name = "rpg discover") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgStartQuestTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgStartQuestTrigger(PlayerbotAI* botAI, std::string const name = "rpg start quest") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgStartQuestTrigger(PlayerbotAI* botAI, std::string const name = "rpg start quest") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgEndQuestTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgEndQuestTrigger(PlayerbotAI* botAI, std::string const name = "rpg end quest") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgEndQuestTrigger(PlayerbotAI* botAI, std::string const name = "rpg end quest") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgBuyTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgBuyTrigger(PlayerbotAI* botAI, std::string const name = "rpg buy") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgBuyTrigger(PlayerbotAI* botAI, std::string const name = "rpg buy") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgSellTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgSellTrigger(PlayerbotAI* botAI, std::string const name = "rpg sell") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgSellTrigger(PlayerbotAI* botAI, std::string const name = "rpg sell") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgRepairTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgRepairTrigger(PlayerbotAI* botAI, std::string const name = "rpg repair") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgRepairTrigger(PlayerbotAI* botAI, std::string const name = "rpg repair") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgTrainTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgTrainTrigger(PlayerbotAI* botAI, std::string const name = "rpg train") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgTrainTrigger(PlayerbotAI* botAI, std::string const name = "rpg train") : RpgTrigger(botAI, name) {}
|
||||
|
||||
static bool IsTrainerOf(CreatureTemplate const* cInfo, Player* pPlayer);
|
||||
static bool IsTrainerOf(CreatureTemplate const* cInfo, Player* pPlayer);
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgHealTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgHealTrigger(PlayerbotAI* botAI, std::string const name = "rpg heal") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgHealTrigger(PlayerbotAI* botAI, std::string const name = "rpg heal") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgHomeBindTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgHomeBindTrigger(PlayerbotAI* botAI, std::string const name = "rpg home bind") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgHomeBindTrigger(PlayerbotAI* botAI, std::string const name = "rpg home bind") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgQueueBGTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgQueueBGTrigger(PlayerbotAI* botAI, std::string const name = "rpg queue bg") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgQueueBGTrigger(PlayerbotAI* botAI, std::string const name = "rpg queue bg") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgBuyPetitionTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgBuyPetitionTrigger(PlayerbotAI* botAI, std::string const name = "rpg buy petition") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgBuyPetitionTrigger(PlayerbotAI* botAI, std::string const name = "rpg buy petition") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgUseTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgUseTrigger(PlayerbotAI* botAI, std::string const name = "rpg use") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgUseTrigger(PlayerbotAI* botAI, std::string const name = "rpg use") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgSpellTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgSpellTrigger(PlayerbotAI* botAI, std::string const name = "rpg spell") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgSpellTrigger(PlayerbotAI* botAI, std::string const name = "rpg spell") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgCraftTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgCraftTrigger(PlayerbotAI* botAI, std::string const name = "rpg craft") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgCraftTrigger(PlayerbotAI* botAI, std::string const name = "rpg craft") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgTradeUsefulTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgTradeUsefulTrigger(PlayerbotAI* botAI, std::string const name = "rpg trade useful") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgTradeUsefulTrigger(PlayerbotAI* botAI, std::string const name = "rpg trade useful") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class RpgDuelTrigger : public RpgTrigger
|
||||
{
|
||||
public:
|
||||
RpgDuelTrigger(PlayerbotAI* botAI, std::string const name = "rpg duel") : RpgTrigger(botAI, name) { }
|
||||
public:
|
||||
RpgDuelTrigger(PlayerbotAI* botAI, std::string const name = "rpg duel") : RpgTrigger(botAI, name) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
/*
|
||||
* 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 "RtiTriggers.h"
|
||||
|
||||
#include "Playerbots.h"
|
||||
|
||||
bool NoRtiTrigger::IsActive()
|
||||
{
|
||||
return !AI_VALUE(Unit*, "rti target");
|
||||
}
|
||||
bool NoRtiTrigger::IsActive() { return !AI_VALUE(Unit*, "rti target"); }
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_RTITRIGGERS_H
|
||||
@@ -11,10 +12,10 @@ class PlayerbotAI;
|
||||
|
||||
class NoRtiTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
NoRtiTrigger(PlayerbotAI* botAI) : Trigger(botAI, "no rti target") { }
|
||||
public:
|
||||
NoRtiTrigger(PlayerbotAI* botAI) : Trigger(botAI, "no rti target") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
/*
|
||||
* 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 "StuckTriggers.h"
|
||||
|
||||
#include "CellImpl.h"
|
||||
#include "PathGenerator.h"
|
||||
#include "Playerbots.h"
|
||||
@@ -17,12 +19,14 @@ bool MoveStuckTrigger::IsActive()
|
||||
|
||||
WorldPosition botPos(bot);
|
||||
|
||||
LogCalculatedValue<WorldPosition>* posVal = dynamic_cast<LogCalculatedValue<WorldPosition>*>(context->GetUntypedValue("current position"));
|
||||
LogCalculatedValue<WorldPosition>* posVal =
|
||||
dynamic_cast<LogCalculatedValue<WorldPosition>*>(context->GetUntypedValue("current position"));
|
||||
|
||||
if (posVal->LastChangeDelay() > 5 * MINUTE)
|
||||
{
|
||||
// LOG_INFO("playerbots", "Bot {} {}:{} <{}> was in the same position for {} seconds",
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName(), posVal->LastChangeDelay());
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(),
|
||||
// bot->GetName(), posVal->LastChangeDelay());
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -45,7 +49,8 @@ bool MoveStuckTrigger::IsActive()
|
||||
if (longLog)
|
||||
{
|
||||
// LOG_INFO("playerbots", "Bot {} {}:{} <{}> was in the same position for 10mins",
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName(), posVal->LastChangeDelay());
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(),
|
||||
// bot->GetName(), posVal->LastChangeDelay());
|
||||
}
|
||||
|
||||
return longLog;
|
||||
@@ -68,7 +73,8 @@ bool MoveLongStuckTrigger::IsActive()
|
||||
if (grid.x_coord < 0 || grid.x_coord >= MAX_NUMBER_OF_GRIDS)
|
||||
{
|
||||
// LOG_INFO("playerbots", "Bot {} {}:{} <{}> was in grid {},{} on map {}",
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName(), grid.x_coord, grid.y_coord, botPos.getMapId());
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(),
|
||||
// bot->GetName(), grid.x_coord, grid.y_coord, botPos.getMapId());
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -76,30 +82,36 @@ bool MoveLongStuckTrigger::IsActive()
|
||||
if (grid.y_coord < 0 || grid.y_coord >= MAX_NUMBER_OF_GRIDS)
|
||||
{
|
||||
// LOG_INFO("playerbots", "Bot {} {}:{} <{}> was in grid {},{} on map {}",
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName(), grid.x_coord, grid.y_coord, botPos.getMapId());
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(),
|
||||
// bot->GetName(), grid.x_coord, grid.y_coord, botPos.getMapId());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (cell.GridX() > 0 && cell.GridY() > 0 && !MMAP::MMapFactory::createOrGetMMapMgr()->loadMap(botPos.getMapId(), cell.GridX(), cell.GridY()))
|
||||
if (cell.GridX() > 0 && cell.GridY() > 0 &&
|
||||
!MMAP::MMapFactory::createOrGetMMapMgr()->loadMap(botPos.getMapId(), cell.GridX(), cell.GridY()))
|
||||
{
|
||||
// LOG_INFO("playerbots", "Bot {} {}:{} <{}> was in unloaded grid {},{} on map {}",
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName(), grid.x_coord, grid.y_coord, botPos.getMapId());
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(),
|
||||
// bot->GetName(), grid.x_coord, grid.y_coord, botPos.getMapId());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
LogCalculatedValue<WorldPosition>* posVal = dynamic_cast<LogCalculatedValue<WorldPosition>*>(context->GetUntypedValue("current position"));
|
||||
LogCalculatedValue<WorldPosition>* posVal =
|
||||
dynamic_cast<LogCalculatedValue<WorldPosition>*>(context->GetUntypedValue("current position"));
|
||||
|
||||
if (posVal->LastChangeDelay() > 10 * MINUTE)
|
||||
{
|
||||
// LOG_INFO("playerbots", "Bot {} {}:{} <{}> was in the same position for {} seconds",
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName(), posVal->LastChangeDelay());
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(),
|
||||
// bot->GetName(), posVal->LastChangeDelay());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
MemoryCalculatedValue<uint32>* expVal = dynamic_cast<MemoryCalculatedValue<uint32>*>(context->GetUntypedValue("experience"));
|
||||
MemoryCalculatedValue<uint32>* expVal =
|
||||
dynamic_cast<MemoryCalculatedValue<uint32>*>(context->GetUntypedValue("experience"));
|
||||
|
||||
if (expVal->LastChangeDelay() < 15 * MINUTE)
|
||||
return false;
|
||||
@@ -122,7 +134,8 @@ bool MoveLongStuckTrigger::IsActive()
|
||||
if (longLog)
|
||||
{
|
||||
// LOG_INFO("playerbots", "Bot {} {}:{} <{}> was in the same position for 15mins",
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName(), posVal->LastChangeDelay());
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(),
|
||||
// bot->GetName(), posVal->LastChangeDelay());
|
||||
}
|
||||
|
||||
return longLog;
|
||||
@@ -141,12 +154,14 @@ bool CombatStuckTrigger::IsActive()
|
||||
|
||||
WorldPosition botPos(bot);
|
||||
|
||||
MemoryCalculatedValue<bool>* combatVal = dynamic_cast<MemoryCalculatedValue<bool>*>(context->GetUntypedValue("combat::self target"));
|
||||
MemoryCalculatedValue<bool>* combatVal =
|
||||
dynamic_cast<MemoryCalculatedValue<bool>*>(context->GetUntypedValue("combat::self target"));
|
||||
|
||||
if (combatVal->LastChangeDelay() > 5 * MINUTE)
|
||||
{
|
||||
// LOG_INFO("playerbots", "Bot {} {}:{} <{}> was in combat for {} seconds",
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName(), posVal->LastChangeDelay());
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(),
|
||||
// bot->GetName(), posVal->LastChangeDelay());
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -167,12 +182,14 @@ bool CombatLongStuckTrigger::IsActive()
|
||||
|
||||
WorldPosition botPos(bot);
|
||||
|
||||
MemoryCalculatedValue<bool>* combatVal = dynamic_cast<MemoryCalculatedValue<bool>*>(context->GetUntypedValue("combat::self target"));
|
||||
MemoryCalculatedValue<bool>* combatVal =
|
||||
dynamic_cast<MemoryCalculatedValue<bool>*>(context->GetUntypedValue("combat::self target"));
|
||||
|
||||
if (combatVal->LastChangeDelay() > 15 * MINUTE)
|
||||
{
|
||||
// LOG_INFO("playerbots", "Bot {} {}:{} <{}> was in combat for {} seconds",
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName(), posVal->LastChangeDelay());
|
||||
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(),
|
||||
// bot->GetName(), posVal->LastChangeDelay());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_STUCKTRIGGERS_H
|
||||
@@ -9,34 +10,34 @@
|
||||
|
||||
class MoveStuckTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
MoveStuckTrigger(PlayerbotAI* botAI) : Trigger(botAI, "move stuck", 5) { }
|
||||
public:
|
||||
MoveStuckTrigger(PlayerbotAI* botAI) : Trigger(botAI, "move stuck", 5) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class MoveLongStuckTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
MoveLongStuckTrigger(PlayerbotAI* botAI) : Trigger(botAI, "move long stuck", 5) { }
|
||||
public:
|
||||
MoveLongStuckTrigger(PlayerbotAI* botAI) : Trigger(botAI, "move long stuck", 5) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class CombatStuckTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
CombatStuckTrigger(PlayerbotAI* botAI) : Trigger(botAI, "combat stuck", 5) { }
|
||||
public:
|
||||
CombatStuckTrigger(PlayerbotAI* botAI) : Trigger(botAI, "combat stuck", 5) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class CombatLongStuckTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
CombatLongStuckTrigger(PlayerbotAI* botAI) : Trigger(botAI, "combat long stuck", 5) { }
|
||||
public:
|
||||
CombatLongStuckTrigger(PlayerbotAI* botAI) : Trigger(botAI, "combat long stuck", 5) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,25 +1,21 @@
|
||||
/*
|
||||
* 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 "TravelTriggers.h"
|
||||
|
||||
#include "Playerbots.h"
|
||||
#include "ServerFacade.h"
|
||||
|
||||
bool NoTravelTargetTrigger::IsActive()
|
||||
{
|
||||
return !context->GetValue<TravelTarget*>("travel target")->Get()->isActive();
|
||||
}
|
||||
bool NoTravelTargetTrigger::IsActive() { return !context->GetValue<TravelTarget*>("travel target")->Get()->isActive(); }
|
||||
|
||||
bool FarFromTravelTargetTrigger::IsActive()
|
||||
{
|
||||
return context->GetValue<TravelTarget*>("travel target")->Get()->isTraveling();
|
||||
}
|
||||
|
||||
bool NearDarkPortalTrigger::IsActive()
|
||||
{
|
||||
return bot->GetAreaId() == 72;
|
||||
}
|
||||
bool NearDarkPortalTrigger::IsActive() { return bot->GetAreaId() == 72; }
|
||||
|
||||
bool AtDarkPortalAzerothTrigger::IsActive()
|
||||
{
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_TRAVELTRIGGERS_H
|
||||
@@ -11,42 +12,42 @@ class PlayerbotAI;
|
||||
|
||||
class NoTravelTargetTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
NoTravelTargetTrigger(PlayerbotAI* botAI) : Trigger(botAI, "no travel target") { }
|
||||
public:
|
||||
NoTravelTargetTrigger(PlayerbotAI* botAI) : Trigger(botAI, "no travel target") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class FarFromTravelTargetTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
FarFromTravelTargetTrigger(PlayerbotAI* botAI) : Trigger(botAI, "far from travel target") { }
|
||||
public:
|
||||
FarFromTravelTargetTrigger(PlayerbotAI* botAI) : Trigger(botAI, "far from travel target") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class NearDarkPortalTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
NearDarkPortalTrigger(PlayerbotAI* botAI) : Trigger(botAI, "near dark portal", 10) { }
|
||||
public:
|
||||
NearDarkPortalTrigger(PlayerbotAI* botAI) : Trigger(botAI, "near dark portal", 10) {}
|
||||
|
||||
virtual bool IsActive();
|
||||
virtual bool IsActive();
|
||||
};
|
||||
|
||||
class AtDarkPortalAzerothTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
AtDarkPortalAzerothTrigger(PlayerbotAI* botAI) : Trigger(botAI, "at dark portal azeroth", 10) { }
|
||||
public:
|
||||
AtDarkPortalAzerothTrigger(PlayerbotAI* botAI) : Trigger(botAI, "at dark portal azeroth", 10) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class AtDarkPortalOutlandTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
AtDarkPortalOutlandTrigger(PlayerbotAI* botAI) : Trigger(botAI, "at dark portal outland", 10) { }
|
||||
public:
|
||||
AtDarkPortalOutlandTrigger(PlayerbotAI* botAI) : Trigger(botAI, "at dark portal outland", 10) {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,354 +1,384 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_TRIGGERCONTEXT_H
|
||||
#define _PLAYERBOT_TRIGGERCONTEXT_H
|
||||
|
||||
#include "GenericTriggers.h"
|
||||
#include "CureTriggers.h"
|
||||
#include "GenericTriggers.h"
|
||||
#include "GuildTriggers.h"
|
||||
#include "LootTriggers.h"
|
||||
#include "LfgTriggers.h"
|
||||
#include "LootTriggers.h"
|
||||
#include "NamedObjectContext.h"
|
||||
#include "PvpTriggers.h"
|
||||
#include "RaidNaxxTriggers.h"
|
||||
#include "RpgTriggers.h"
|
||||
#include "RtiTriggers.h"
|
||||
#include "StuckTriggers.h"
|
||||
#include "TravelTriggers.h"
|
||||
#include "NamedObjectContext.h"
|
||||
#include "RaidNaxxTriggers.h"
|
||||
|
||||
class PlayerbotAI;
|
||||
|
||||
class TriggerContext : public NamedObjectContext<Trigger>
|
||||
{
|
||||
public:
|
||||
TriggerContext()
|
||||
{
|
||||
creators["return"] = &TriggerContext::_return;
|
||||
creators["sit"] = &TriggerContext::sit;
|
||||
creators["collision"] = &TriggerContext::collision;
|
||||
public:
|
||||
TriggerContext()
|
||||
{
|
||||
creators["return"] = &TriggerContext::_return;
|
||||
creators["sit"] = &TriggerContext::sit;
|
||||
creators["collision"] = &TriggerContext::collision;
|
||||
|
||||
creators["timer"] = &TriggerContext::Timer;
|
||||
creators["random"] = &TriggerContext::Random;
|
||||
creators["seldom"] = &TriggerContext::seldom;
|
||||
creators["often"] = &TriggerContext::often;
|
||||
creators["timer"] = &TriggerContext::Timer;
|
||||
creators["random"] = &TriggerContext::Random;
|
||||
creators["seldom"] = &TriggerContext::seldom;
|
||||
creators["often"] = &TriggerContext::often;
|
||||
|
||||
creators["target critical health"] = &TriggerContext::TargetCriticalHealth;
|
||||
creators["target critical health"] = &TriggerContext::TargetCriticalHealth;
|
||||
|
||||
creators["critical health"] = &TriggerContext::CriticalHealth;
|
||||
creators["low health"] = &TriggerContext::LowHealth;
|
||||
creators["medium health"] = &TriggerContext::MediumHealth;
|
||||
creators["almost full health"] = &TriggerContext::AlmostFullHealth;
|
||||
creators["critical health"] = &TriggerContext::CriticalHealth;
|
||||
creators["low health"] = &TriggerContext::LowHealth;
|
||||
creators["medium health"] = &TriggerContext::MediumHealth;
|
||||
creators["almost full health"] = &TriggerContext::AlmostFullHealth;
|
||||
|
||||
creators["low mana"] = &TriggerContext::LowMana;
|
||||
creators["medium mana"] = &TriggerContext::MediumMana;
|
||||
creators["high mana"] = &TriggerContext::HighMana;
|
||||
creators["almost full mana"] = &TriggerContext::AlmostFullMana;
|
||||
creators["enough mana"] = &TriggerContext::EnoughMana;
|
||||
creators["low mana"] = &TriggerContext::LowMana;
|
||||
creators["medium mana"] = &TriggerContext::MediumMana;
|
||||
creators["high mana"] = &TriggerContext::HighMana;
|
||||
creators["almost full mana"] = &TriggerContext::AlmostFullMana;
|
||||
creators["enough mana"] = &TriggerContext::EnoughMana;
|
||||
|
||||
creators["party member critical health"] = &TriggerContext::PartyMemberCriticalHealth;
|
||||
creators["party member low health"] = &TriggerContext::PartyMemberLowHealth;
|
||||
creators["party member medium health"] = &TriggerContext::PartyMemberMediumHealth;
|
||||
creators["party member almost full health"] = &TriggerContext::PartyMemberAlmostFullHealth;
|
||||
creators["party member critical health"] = &TriggerContext::PartyMemberCriticalHealth;
|
||||
creators["party member low health"] = &TriggerContext::PartyMemberLowHealth;
|
||||
creators["party member medium health"] = &TriggerContext::PartyMemberMediumHealth;
|
||||
creators["party member almost full health"] = &TriggerContext::PartyMemberAlmostFullHealth;
|
||||
|
||||
creators["protect party member"] = &TriggerContext::protect_party_member;
|
||||
creators["protect party member"] = &TriggerContext::protect_party_member;
|
||||
|
||||
creators["light rage available"] = &TriggerContext::LightRageAvailable;
|
||||
creators["medium rage available"] = &TriggerContext::MediumRageAvailable;
|
||||
creators["high rage available"] = &TriggerContext::HighRageAvailable;
|
||||
creators["light rage available"] = &TriggerContext::LightRageAvailable;
|
||||
creators["medium rage available"] = &TriggerContext::MediumRageAvailable;
|
||||
creators["high rage available"] = &TriggerContext::HighRageAvailable;
|
||||
|
||||
creators["light energy available"] = &TriggerContext::LightEnergyAvailable;
|
||||
creators["medium energy available"] = &TriggerContext::MediumEnergyAvailable;
|
||||
creators["high energy available"] = &TriggerContext::HighEnergyAvailable;
|
||||
creators["light energy available"] = &TriggerContext::LightEnergyAvailable;
|
||||
creators["medium energy available"] = &TriggerContext::MediumEnergyAvailable;
|
||||
creators["high energy available"] = &TriggerContext::HighEnergyAvailable;
|
||||
|
||||
creators["loot available"] = &TriggerContext::LootAvailable;
|
||||
creators["no attackers"] = &TriggerContext::NoAttackers;
|
||||
creators["no target"] = &TriggerContext::NoTarget;
|
||||
creators["target in sight"] = &TriggerContext::TargetInSight;
|
||||
creators["not dps target active"] = &TriggerContext::not_dps_target_active;
|
||||
creators["not dps aoe target active"] = &TriggerContext::not_dps_aoe_target_active;
|
||||
creators["has nearest adds"] = &TriggerContext::has_nearest_adds;
|
||||
creators["enemy player near"] = &TriggerContext::enemy_player_near;
|
||||
creators["loot available"] = &TriggerContext::LootAvailable;
|
||||
creators["no attackers"] = &TriggerContext::NoAttackers;
|
||||
creators["no target"] = &TriggerContext::NoTarget;
|
||||
creators["target in sight"] = &TriggerContext::TargetInSight;
|
||||
creators["not dps target active"] = &TriggerContext::not_dps_target_active;
|
||||
creators["not dps aoe target active"] = &TriggerContext::not_dps_aoe_target_active;
|
||||
creators["has nearest adds"] = &TriggerContext::has_nearest_adds;
|
||||
creators["enemy player near"] = &TriggerContext::enemy_player_near;
|
||||
|
||||
creators["tank assist"] = &TriggerContext::TankAssist;
|
||||
creators["lose aggro"] = &TriggerContext::LoseAggro;
|
||||
creators["has aggro"] = &TriggerContext::HasAggro;
|
||||
creators["tank assist"] = &TriggerContext::TankAssist;
|
||||
creators["lose aggro"] = &TriggerContext::LoseAggro;
|
||||
creators["has aggro"] = &TriggerContext::HasAggro;
|
||||
|
||||
creators["light aoe"] = &TriggerContext::LightAoe;
|
||||
creators["medium aoe"] = &TriggerContext::MediumAoe;
|
||||
creators["high aoe"] = &TriggerContext::HighAoe;
|
||||
creators["light aoe"] = &TriggerContext::LightAoe;
|
||||
creators["medium aoe"] = &TriggerContext::MediumAoe;
|
||||
creators["high aoe"] = &TriggerContext::HighAoe;
|
||||
|
||||
creators["has area debuff"] = &TriggerContext::HasAreaDebuff;
|
||||
creators["has area debuff"] = &TriggerContext::HasAreaDebuff;
|
||||
|
||||
creators["enemy out of melee"] = &TriggerContext::EnemyOutOfMelee;
|
||||
creators["enemy out of spell"] = &TriggerContext::EnemyOutOfSpell;
|
||||
creators["enemy too close for spell"] = &TriggerContext::enemy_too_close_for_spell;
|
||||
creators["enemy too close for shoot"] = &TriggerContext::enemy_too_close_for_shoot;
|
||||
creators["enemy too close for auto shot"] = &TriggerContext::enemy_too_close_for_auto_shot;
|
||||
creators["enemy too close for melee"] = &TriggerContext::enemy_too_close_for_melee;
|
||||
creators["enemy is close"] = &TriggerContext::enemy_is_close;
|
||||
creators["enemy within melee"] = &TriggerContext::enemy_within_melee;
|
||||
creators["party member to heal out of spell range"] = &TriggerContext::party_member_to_heal_out_of_spell_range;
|
||||
creators["enemy out of melee"] = &TriggerContext::EnemyOutOfMelee;
|
||||
creators["enemy out of spell"] = &TriggerContext::EnemyOutOfSpell;
|
||||
creators["enemy too close for spell"] = &TriggerContext::enemy_too_close_for_spell;
|
||||
creators["enemy too close for shoot"] = &TriggerContext::enemy_too_close_for_shoot;
|
||||
creators["enemy too close for auto shot"] = &TriggerContext::enemy_too_close_for_auto_shot;
|
||||
creators["enemy too close for melee"] = &TriggerContext::enemy_too_close_for_melee;
|
||||
creators["enemy is close"] = &TriggerContext::enemy_is_close;
|
||||
creators["enemy within melee"] = &TriggerContext::enemy_within_melee;
|
||||
creators["party member to heal out of spell range"] = &TriggerContext::party_member_to_heal_out_of_spell_range;
|
||||
|
||||
creators["combo points available"] = &TriggerContext::ComboPointsAvailable;
|
||||
creators["combo points 3 available"] = &TriggerContext::ComboPoints3Available;
|
||||
creators["combo points available"] = &TriggerContext::ComboPointsAvailable;
|
||||
creators["combo points 3 available"] = &TriggerContext::ComboPoints3Available;
|
||||
|
||||
creators["medium threat"] = &TriggerContext::MediumThreat;
|
||||
creators["medium threat"] = &TriggerContext::MediumThreat;
|
||||
|
||||
creators["dead"] = &TriggerContext::Dead;
|
||||
creators["corpse near"] = &TriggerContext::corpse_near;
|
||||
creators["party member dead"] = &TriggerContext::PartyMemberDead;
|
||||
creators["combat party member dead"] = &TriggerContext::CombatPartyMemberDead;
|
||||
creators["no pet"] = &TriggerContext::no_pet;
|
||||
creators["has pet"] = &TriggerContext::has_pet;
|
||||
creators["pet attack"] = &TriggerContext::pet_attack;
|
||||
|
||||
creators["has attackers"] = &TriggerContext::has_attackers;
|
||||
creators["no possible targets"] = &TriggerContext::no_possible_targets;
|
||||
creators["possible adds"] = &TriggerContext::possible_adds;
|
||||
creators["dead"] = &TriggerContext::Dead;
|
||||
creators["corpse near"] = &TriggerContext::corpse_near;
|
||||
creators["party member dead"] = &TriggerContext::PartyMemberDead;
|
||||
creators["combat party member dead"] = &TriggerContext::CombatPartyMemberDead;
|
||||
creators["no pet"] = &TriggerContext::no_pet;
|
||||
creators["has pet"] = &TriggerContext::has_pet;
|
||||
creators["pet attack"] = &TriggerContext::pet_attack;
|
||||
|
||||
creators["no drink"] = &TriggerContext::no_drink;
|
||||
creators["no food"] = &TriggerContext::no_food;
|
||||
creators["has attackers"] = &TriggerContext::has_attackers;
|
||||
creators["no possible targets"] = &TriggerContext::no_possible_targets;
|
||||
creators["possible adds"] = &TriggerContext::possible_adds;
|
||||
|
||||
creators["panic"] = &TriggerContext::panic;
|
||||
creators["outnumbered"] = &TriggerContext::outnumbered;
|
||||
creators["behind target"] = &TriggerContext::behind_target;
|
||||
creators["not behind target"] = &TriggerContext::not_behind_target;
|
||||
creators["not facing target"] = &TriggerContext::not_facing_target;
|
||||
creators["far from master"] = &TriggerContext::far_from_master;
|
||||
creators["far from loot target"] = &TriggerContext::far_from_loot_target;
|
||||
creators["can loot"] = &TriggerContext::can_loot;
|
||||
creators["swimming"] = &TriggerContext::swimming;
|
||||
creators["target changed"] = &TriggerContext::target_changed;
|
||||
creators["no drink"] = &TriggerContext::no_drink;
|
||||
creators["no food"] = &TriggerContext::no_food;
|
||||
|
||||
creators["critical aoe heal"] = &TriggerContext::critical_aoe_heal;
|
||||
creators["low aoe heal"] = &TriggerContext::low_aoe_heal;
|
||||
creators["medium aoe heal"] = &TriggerContext::medium_aoe_heal;
|
||||
creators["almost full aoe heal"] = &TriggerContext::almost_full_aoe_heal;
|
||||
creators["panic"] = &TriggerContext::panic;
|
||||
creators["outnumbered"] = &TriggerContext::outnumbered;
|
||||
creators["behind target"] = &TriggerContext::behind_target;
|
||||
creators["not behind target"] = &TriggerContext::not_behind_target;
|
||||
creators["not facing target"] = &TriggerContext::not_facing_target;
|
||||
creators["far from master"] = &TriggerContext::far_from_master;
|
||||
creators["far from loot target"] = &TriggerContext::far_from_loot_target;
|
||||
creators["can loot"] = &TriggerContext::can_loot;
|
||||
creators["swimming"] = &TriggerContext::swimming;
|
||||
creators["target changed"] = &TriggerContext::target_changed;
|
||||
|
||||
creators["group heal occasion"] = &TriggerContext::group_heal_occasion;
|
||||
creators["medium group heal occasion"] = &TriggerContext::medium_group_heal_occasion;
|
||||
creators["invalid target"] = &TriggerContext::invalid_target;
|
||||
creators["lfg proposal active"] = &TriggerContext::lfg_proposal_active;
|
||||
creators["critical aoe heal"] = &TriggerContext::critical_aoe_heal;
|
||||
creators["low aoe heal"] = &TriggerContext::low_aoe_heal;
|
||||
creators["medium aoe heal"] = &TriggerContext::medium_aoe_heal;
|
||||
creators["almost full aoe heal"] = &TriggerContext::almost_full_aoe_heal;
|
||||
|
||||
creators["unknown dungeon"] = &TriggerContext::unknown_dungeon;
|
||||
creators["group heal occasion"] = &TriggerContext::group_heal_occasion;
|
||||
creators["medium group heal occasion"] = &TriggerContext::medium_group_heal_occasion;
|
||||
creators["invalid target"] = &TriggerContext::invalid_target;
|
||||
creators["lfg proposal active"] = &TriggerContext::lfg_proposal_active;
|
||||
|
||||
creators["random bot update"] = &TriggerContext::random_bot_update_trigger;
|
||||
creators["no non bot players around"] = &TriggerContext::no_non_bot_players_around;
|
||||
creators["new player nearby"] = &TriggerContext::new_player_nearby;
|
||||
creators["no rpg target"] = &TriggerContext::no_rpg_target;
|
||||
creators["has rpg target"] = &TriggerContext::has_rpg_target;
|
||||
creators["far from rpg target"] = &TriggerContext::far_from_rpg_target;
|
||||
creators["near rpg target"] = &TriggerContext::near_rpg_target;
|
||||
creators["no travel target"] = &TriggerContext::no_travel_target;
|
||||
creators["far from travel target"] = &TriggerContext::far_from_travel_target;
|
||||
creators["no rti target"] = &TriggerContext::no_rti;
|
||||
creators["unknown dungeon"] = &TriggerContext::unknown_dungeon;
|
||||
|
||||
creators["give food"] = &TriggerContext::give_food;
|
||||
creators["give water"] = &TriggerContext::give_water;
|
||||
creators["random bot update"] = &TriggerContext::random_bot_update_trigger;
|
||||
creators["no non bot players around"] = &TriggerContext::no_non_bot_players_around;
|
||||
creators["new player nearby"] = &TriggerContext::new_player_nearby;
|
||||
creators["no rpg target"] = &TriggerContext::no_rpg_target;
|
||||
creators["has rpg target"] = &TriggerContext::has_rpg_target;
|
||||
creators["far from rpg target"] = &TriggerContext::far_from_rpg_target;
|
||||
creators["near rpg target"] = &TriggerContext::near_rpg_target;
|
||||
creators["no travel target"] = &TriggerContext::no_travel_target;
|
||||
creators["far from travel target"] = &TriggerContext::far_from_travel_target;
|
||||
creators["no rti target"] = &TriggerContext::no_rti;
|
||||
|
||||
creators["bg waiting"] = &TriggerContext::bg_waiting;
|
||||
creators["bg active"] = &TriggerContext::bg_active;
|
||||
creators["bg invite active"] = &TriggerContext::bg_invite_active;
|
||||
creators["inside bg"] = &TriggerContext::inside_bg;
|
||||
creators["player has no flag"] = &TriggerContext::player_has_no_flag;
|
||||
creators["player has flag"] = &TriggerContext::player_has_flag;
|
||||
creators["team has flag"] = &TriggerContext::team_has_flag;
|
||||
creators["enemy team has flag"] = &TriggerContext::enemy_team_has_flag;
|
||||
creators["enemy flagcarrier near"] = &TriggerContext::enemy_flagcarrier_near;
|
||||
creators["in Battleground"] = &TriggerContext::player_is_in_BATTLEGROUND;
|
||||
creators["in Battleground without flag"] = &TriggerContext::player_is_in_BATTLEGROUND_no_flag;
|
||||
creators["wants in bg"] = &TriggerContext::player_wants_in_bg;
|
||||
creators["give food"] = &TriggerContext::give_food;
|
||||
creators["give water"] = &TriggerContext::give_water;
|
||||
|
||||
creators["mounted"] = &TriggerContext::mounted;
|
||||
creators["bg waiting"] = &TriggerContext::bg_waiting;
|
||||
creators["bg active"] = &TriggerContext::bg_active;
|
||||
creators["bg invite active"] = &TriggerContext::bg_invite_active;
|
||||
creators["inside bg"] = &TriggerContext::inside_bg;
|
||||
creators["player has no flag"] = &TriggerContext::player_has_no_flag;
|
||||
creators["player has flag"] = &TriggerContext::player_has_flag;
|
||||
creators["team has flag"] = &TriggerContext::team_has_flag;
|
||||
creators["enemy team has flag"] = &TriggerContext::enemy_team_has_flag;
|
||||
creators["enemy flagcarrier near"] = &TriggerContext::enemy_flagcarrier_near;
|
||||
creators["in Battleground"] = &TriggerContext::player_is_in_BATTLEGROUND;
|
||||
creators["in Battleground without flag"] = &TriggerContext::player_is_in_BATTLEGROUND_no_flag;
|
||||
creators["wants in bg"] = &TriggerContext::player_wants_in_bg;
|
||||
|
||||
// move to/enter dark portal if near
|
||||
creators["near dark portal"] = &TriggerContext::near_dark_portal;
|
||||
creators["at dark portal azeroth"] = &TriggerContext::at_dark_portal_azeroth;
|
||||
creators["at dark portal outland"] = &TriggerContext::at_dark_portal_outland;
|
||||
creators["mounted"] = &TriggerContext::mounted;
|
||||
|
||||
creators["vehicle near"] = &TriggerContext::vehicle_near;
|
||||
creators["in vehicle"] = &TriggerContext::in_vehicle;
|
||||
// move to/enter dark portal if near
|
||||
creators["near dark portal"] = &TriggerContext::near_dark_portal;
|
||||
creators["at dark portal azeroth"] = &TriggerContext::at_dark_portal_azeroth;
|
||||
creators["at dark portal outland"] = &TriggerContext::at_dark_portal_outland;
|
||||
|
||||
creators["need world buff"] = &TriggerContext::need_world_buff;
|
||||
creators["falling"] = &TriggerContext::falling;
|
||||
creators["falling far"] = &TriggerContext::falling_far;
|
||||
creators["move stuck"] = &TriggerContext::move_stuck;
|
||||
creators["move long stuck"] = &TriggerContext::move_long_stuck;
|
||||
creators["combat stuck"] = &TriggerContext::combat_stuck;
|
||||
creators["combat long stuck"] = &TriggerContext::combat_long_stuck;
|
||||
creators["vehicle near"] = &TriggerContext::vehicle_near;
|
||||
creators["in vehicle"] = &TriggerContext::in_vehicle;
|
||||
|
||||
creators["petition signed"] = &TriggerContext::petition_signed;
|
||||
creators["buy tabard"] = &TriggerContext::buy_tabard;
|
||||
creators["leave large guild"] = &TriggerContext::leave_large_guild;
|
||||
creators["need world buff"] = &TriggerContext::need_world_buff;
|
||||
creators["falling"] = &TriggerContext::falling;
|
||||
creators["falling far"] = &TriggerContext::falling_far;
|
||||
creators["move stuck"] = &TriggerContext::move_stuck;
|
||||
creators["move long stuck"] = &TriggerContext::move_long_stuck;
|
||||
creators["combat stuck"] = &TriggerContext::combat_stuck;
|
||||
creators["combat long stuck"] = &TriggerContext::combat_long_stuck;
|
||||
|
||||
creators["rpg"] = &TriggerContext::rpg;
|
||||
creators["rpg taxi"] = &TriggerContext::rpg_taxi;
|
||||
creators["rpg discover"] = &TriggerContext::rpg_discover;
|
||||
creators["rpg start quest"] = &TriggerContext::rpg_start_quest;
|
||||
creators["rpg end quest"] = &TriggerContext::rpg_end_quest;
|
||||
creators["rpg buy"] = &TriggerContext::rpg_buy;
|
||||
creators["rpg sell"] = &TriggerContext::rpg_sell;
|
||||
creators["rpg repair"] = &TriggerContext::rpg_repair;
|
||||
creators["rpg train"] = &TriggerContext::rpg_train;
|
||||
creators["rpg heal"] = &TriggerContext::rpg_heal;
|
||||
creators["rpg home bind"] = &TriggerContext::rpg_home_bind;
|
||||
creators["rpg queue bg"] = &TriggerContext::rpg_queue_bg;
|
||||
creators["rpg buy petition"] = &TriggerContext::rpg_buy_petition;
|
||||
creators["rpg use"] = &TriggerContext::rpg_use;
|
||||
creators["rpg spell"] = &TriggerContext::rpg_spell;
|
||||
creators["rpg craft"] = &TriggerContext::rpg_craft;
|
||||
creators["rpg trade useful"] = &TriggerContext::rpg_trade_useful;
|
||||
creators["rpg duel"] = &TriggerContext::rpg_duel;
|
||||
}
|
||||
creators["petition signed"] = &TriggerContext::petition_signed;
|
||||
creators["buy tabard"] = &TriggerContext::buy_tabard;
|
||||
creators["leave large guild"] = &TriggerContext::leave_large_guild;
|
||||
|
||||
private:
|
||||
static Trigger* give_food(PlayerbotAI* botAI) { return new GiveFoodTrigger(botAI); }
|
||||
static Trigger* give_water(PlayerbotAI* botAI) { return new GiveWaterTrigger(botAI); }
|
||||
static Trigger* no_rti(PlayerbotAI* botAI) { return new NoRtiTrigger(botAI); }
|
||||
static Trigger* _return(PlayerbotAI* botAI) { return new ReturnTrigger(botAI); }
|
||||
static Trigger* sit(PlayerbotAI* botAI) { return new SitTrigger(botAI); }
|
||||
static Trigger* far_from_rpg_target(PlayerbotAI* botAI) { return new FarFromRpgTargetTrigger(botAI); }
|
||||
static Trigger* near_rpg_target(PlayerbotAI* botAI) { return new NearRpgTargetTrigger(botAI); }
|
||||
static Trigger* far_from_travel_target(PlayerbotAI* botAI) { return new FarFromTravelTargetTrigger(botAI); }
|
||||
static Trigger* no_travel_target(PlayerbotAI* botAI) { return new NoTravelTargetTrigger(botAI); }
|
||||
static Trigger* no_rpg_target(PlayerbotAI* botAI) { return new NoRpgTargetTrigger(botAI); }
|
||||
static Trigger* has_rpg_target(PlayerbotAI* botAI) { return new HasRpgTargetTrigger(botAI); }
|
||||
static Trigger* collision(PlayerbotAI* botAI) { return new CollisionTrigger(botAI); }
|
||||
static Trigger* lfg_proposal_active(PlayerbotAI* botAI) { return new LfgProposalActiveTrigger(botAI); }
|
||||
static Trigger* unknown_dungeon(PlayerbotAI* botAI) { return new UnknownDungeonTrigger(botAI); }
|
||||
static Trigger* invalid_target(PlayerbotAI* botAI) { return new InvalidTargetTrigger(botAI); }
|
||||
static Trigger* critical_aoe_heal(PlayerbotAI* botAI) { return new AoeHealTrigger(botAI, "critical aoe heal", "critical", 2); }
|
||||
static Trigger* low_aoe_heal(PlayerbotAI* botAI) { return new AoeHealTrigger(botAI, "low aoe heal", "low", 2); }
|
||||
static Trigger* medium_aoe_heal(PlayerbotAI* botAI) { return new AoeHealTrigger(botAI, "medium aoe heal", "medium", 2); }
|
||||
static Trigger* almost_full_aoe_heal(PlayerbotAI* botAI) { return new AoeHealTrigger(botAI, "almost full aoe heal", "almost full", 2); }
|
||||
static Trigger* group_heal_occasion(PlayerbotAI* ai) { return new AoeInGroupTrigger(ai, "group heal occasion", "almost full", 0.6); }
|
||||
static Trigger* medium_group_heal_occasion(PlayerbotAI* ai) { return new AoeInGroupTrigger(ai, "group heal occasion", "medium", 0.4); }
|
||||
static Trigger* target_changed(PlayerbotAI* botAI) { return new TargetChangedTrigger(botAI); }
|
||||
static Trigger* swimming(PlayerbotAI* botAI) { return new IsSwimmingTrigger(botAI); }
|
||||
static Trigger* no_possible_targets(PlayerbotAI* botAI) { return new NoPossibleTargetsTrigger(botAI); }
|
||||
static Trigger* possible_adds(PlayerbotAI* botAI) { return new PossibleAddsTrigger(botAI); }
|
||||
static Trigger* can_loot(PlayerbotAI* botAI) { return new CanLootTrigger(botAI); }
|
||||
static Trigger* far_from_loot_target(PlayerbotAI* botAI) { return new FarFromCurrentLootTrigger(botAI); }
|
||||
static Trigger* far_from_master(PlayerbotAI* botAI) { return new FarFromMasterTrigger(botAI); }
|
||||
static Trigger* behind_target(PlayerbotAI* botAI) { return new IsBehindTargetTrigger(botAI); }
|
||||
static Trigger* not_behind_target(PlayerbotAI* botAI) { return new IsNotBehindTargetTrigger(botAI); }
|
||||
static Trigger* not_facing_target(PlayerbotAI* botAI) { return new IsNotFacingTargetTrigger(botAI); }
|
||||
static Trigger* panic(PlayerbotAI* botAI) { return new PanicTrigger(botAI); }
|
||||
static Trigger* outnumbered(PlayerbotAI* botAI) { return new OutNumberedTrigger(botAI); }
|
||||
static Trigger* no_drink(PlayerbotAI* botAI) { return new NoDrinkTrigger(botAI); }
|
||||
static Trigger* no_food(PlayerbotAI* botAI) { return new NoFoodTrigger(botAI); }
|
||||
static Trigger* LightAoe(PlayerbotAI* botAI) { return new LightAoeTrigger(botAI); }
|
||||
static Trigger* MediumAoe(PlayerbotAI* botAI) { return new MediumAoeTrigger(botAI); }
|
||||
static Trigger* HighAoe(PlayerbotAI* botAI) { return new HighAoeTrigger(botAI); }
|
||||
static Trigger* HasAreaDebuff(PlayerbotAI* botAI) { return new HasAreaDebuffTrigger(botAI); }
|
||||
static Trigger* LoseAggro(PlayerbotAI* botAI) { return new LoseAggroTrigger(botAI); }
|
||||
static Trigger* HasAggro(PlayerbotAI* botAI) { return new HasAggroTrigger(botAI); }
|
||||
static Trigger* LowHealth(PlayerbotAI* botAI) { return new LowHealthTrigger(botAI); }
|
||||
static Trigger* MediumHealth(PlayerbotAI* botAI) { return new MediumHealthTrigger(botAI); }
|
||||
static Trigger* AlmostFullHealth(PlayerbotAI* botAI) { return new AlmostFullHealthTrigger(botAI); }
|
||||
static Trigger* CriticalHealth(PlayerbotAI* botAI) { return new CriticalHealthTrigger(botAI); }
|
||||
static Trigger* TargetCriticalHealth(PlayerbotAI* botAI) { return new TargetCriticalHealthTrigger(botAI); }
|
||||
static Trigger* LowMana(PlayerbotAI* botAI) { return new LowManaTrigger(botAI); }
|
||||
static Trigger* MediumMana(PlayerbotAI* botAI) { return new MediumManaTrigger(botAI); }
|
||||
static Trigger* HighMana(PlayerbotAI* botAI) { return new HighManaTrigger(botAI); }
|
||||
static Trigger* AlmostFullMana(PlayerbotAI* botAI) { return new AlmostFullManaTrigger(botAI); }
|
||||
static Trigger* EnoughMana(PlayerbotAI* botAI) { return new EnoughManaTrigger(botAI); }
|
||||
static Trigger* LightRageAvailable(PlayerbotAI* botAI) { return new LightRageAvailableTrigger(botAI); }
|
||||
static Trigger* MediumRageAvailable(PlayerbotAI* botAI) { return new MediumRageAvailableTrigger(botAI); }
|
||||
static Trigger* HighRageAvailable(PlayerbotAI* botAI) { return new HighRageAvailableTrigger(botAI); }
|
||||
static Trigger* LightEnergyAvailable(PlayerbotAI* botAI) { return new LightEnergyAvailableTrigger(botAI); }
|
||||
static Trigger* MediumEnergyAvailable(PlayerbotAI* botAI) { return new MediumEnergyAvailableTrigger(botAI); }
|
||||
static Trigger* HighEnergyAvailable(PlayerbotAI* botAI) { return new HighEnergyAvailableTrigger(botAI); }
|
||||
static Trigger* LootAvailable(PlayerbotAI* botAI) { return new LootAvailableTrigger(botAI); }
|
||||
static Trigger* NoAttackers(PlayerbotAI* botAI) { return new NoAttackersTrigger(botAI); }
|
||||
static Trigger* TankAssist(PlayerbotAI* botAI) { return new TankAssistTrigger(botAI); }
|
||||
static Trigger* Timer(PlayerbotAI* botAI) { return new TimerTrigger(botAI); }
|
||||
static Trigger* NoTarget(PlayerbotAI* botAI) { return new NoTargetTrigger(botAI); }
|
||||
static Trigger* TargetInSight(PlayerbotAI* botAI) { return new TargetInSightTrigger(botAI); }
|
||||
static Trigger* not_dps_target_active(PlayerbotAI* botAI) { return new NotDpsTargetActiveTrigger(botAI); }
|
||||
static Trigger* not_dps_aoe_target_active(PlayerbotAI* botAI) { return new NotDpsAoeTargetActiveTrigger(botAI); }
|
||||
static Trigger* has_nearest_adds(PlayerbotAI* botAI) { return new HasNearestAddsTrigger(botAI); }
|
||||
static Trigger* enemy_player_near(PlayerbotAI* botAI) { return new EnemyPlayerNear(botAI); }
|
||||
static Trigger* Random(PlayerbotAI* botAI) { return new RandomTrigger(botAI, "random", 20); }
|
||||
static Trigger* seldom(PlayerbotAI* botAI) { return new RandomTrigger(botAI, "seldom", 300); }
|
||||
static Trigger* often(PlayerbotAI* botAI) { return new RandomTrigger(botAI, "often", 5); }
|
||||
static Trigger* EnemyOutOfMelee(PlayerbotAI* botAI) { return new EnemyOutOfMeleeTrigger(botAI); }
|
||||
static Trigger* EnemyOutOfSpell(PlayerbotAI* botAI) { return new EnemyOutOfSpellRangeTrigger(botAI); }
|
||||
static Trigger* enemy_too_close_for_spell(PlayerbotAI* botAI) { return new EnemyTooCloseForSpellTrigger(botAI); }
|
||||
static Trigger* enemy_too_close_for_auto_shot(PlayerbotAI* botAI) { return new EnemyTooCloseForAutoShotTrigger(botAI); }
|
||||
static Trigger* enemy_too_close_for_shoot(PlayerbotAI* botAI) { return new EnemyTooCloseForShootTrigger(botAI); }
|
||||
static Trigger* enemy_too_close_for_melee(PlayerbotAI* botAI) { return new EnemyTooCloseForMeleeTrigger(botAI); }
|
||||
static Trigger* enemy_is_close(PlayerbotAI* botAI) { return new EnemyIsCloseTrigger(botAI); }
|
||||
static Trigger* enemy_within_melee(PlayerbotAI* botAI) { return new EnemyWithinMeleeTrigger(botAI); }
|
||||
static Trigger* party_member_to_heal_out_of_spell_range(PlayerbotAI* botAI) { return new PartyMemberToHealOutOfSpellRangeTrigger(botAI); }
|
||||
static Trigger* ComboPointsAvailable(PlayerbotAI* botAI) { return new ComboPointsAvailableTrigger(botAI); }
|
||||
static Trigger* ComboPoints3Available(PlayerbotAI* botAI) { return new ComboPointsAvailableTrigger(botAI, 3); }
|
||||
static Trigger* MediumThreat(PlayerbotAI* botAI) { return new MediumThreatTrigger(botAI); }
|
||||
static Trigger* Dead(PlayerbotAI* botAI) { return new DeadTrigger(botAI); }
|
||||
static Trigger* corpse_near(PlayerbotAI* botAI) { return new CorpseNearTrigger(botAI); }
|
||||
static Trigger* PartyMemberDead(PlayerbotAI* botAI) { return new PartyMemberDeadTrigger(botAI); }
|
||||
static Trigger* CombatPartyMemberDead(PlayerbotAI* botAI) { return new CombatPartyMemberDeadTrigger(botAI); }
|
||||
static Trigger* PartyMemberLowHealth(PlayerbotAI* botAI) { return new PartyMemberLowHealthTrigger(botAI); }
|
||||
static Trigger* PartyMemberMediumHealth(PlayerbotAI* botAI) { return new PartyMemberMediumHealthTrigger(botAI); }
|
||||
static Trigger* PartyMemberAlmostFullHealth(PlayerbotAI* botAI) { return new PartyMemberAlmostFullHealthTrigger(botAI); }
|
||||
static Trigger* PartyMemberCriticalHealth(PlayerbotAI* botAI) { return new PartyMemberCriticalHealthTrigger(botAI); }
|
||||
static Trigger* protect_party_member(PlayerbotAI* botAI) { return new ProtectPartyMemberTrigger(botAI); }
|
||||
static Trigger* no_pet(PlayerbotAI* botAI) { return new NoPetTrigger(botAI); }
|
||||
static Trigger* has_pet(PlayerbotAI* botAI) { return new HasPetTrigger(botAI); }
|
||||
static Trigger* pet_attack(PlayerbotAI* botAI) { return new PetAttackTrigger(botAI); }
|
||||
static Trigger* has_attackers(PlayerbotAI* botAI) { return new HasAttackersTrigger(botAI); }
|
||||
static Trigger* random_bot_update_trigger(PlayerbotAI* botAI) { return new RandomBotUpdateTrigger(botAI); }
|
||||
static Trigger* no_non_bot_players_around(PlayerbotAI* botAI) { return new NoNonBotPlayersAroundTrigger(botAI); }
|
||||
static Trigger* new_player_nearby(PlayerbotAI* botAI) { return new NewPlayerNearbyTrigger(botAI); }
|
||||
static Trigger* bg_waiting(PlayerbotAI* botAI) { return new BgWaitingTrigger(botAI); }
|
||||
static Trigger* bg_active(PlayerbotAI* botAI) { return new BgActiveTrigger(botAI); }
|
||||
static Trigger* bg_invite_active(PlayerbotAI* botAI) { return new BgInviteActiveTrigger(botAI); }
|
||||
static Trigger* inside_bg(PlayerbotAI* botAI) { return new InsideBGTrigger(botAI); }
|
||||
static Trigger* player_has_no_flag(PlayerbotAI* botAI) { return new PlayerHasNoFlag(botAI); }
|
||||
static Trigger* player_has_flag(PlayerbotAI* botAI) { return new PlayerHasFlag(botAI); }
|
||||
static Trigger* team_has_flag(PlayerbotAI* botAI) { return new TeamHasFlag(botAI); }
|
||||
static Trigger* enemy_team_has_flag(PlayerbotAI* botAI) { return new EnemyTeamHasFlag(botAI); }
|
||||
static Trigger* enemy_flagcarrier_near(PlayerbotAI* botAI) { return new EnemyFlagCarrierNear(botAI); }
|
||||
static Trigger* player_is_in_BATTLEGROUND(PlayerbotAI* botAI) { return new PlayerIsInBattleground(botAI); }
|
||||
static Trigger* player_is_in_BATTLEGROUND_no_flag(PlayerbotAI* botAI) { return new PlayerIsInBattlegroundWithoutFlag(botAI); }
|
||||
static Trigger* mounted(PlayerbotAI* botAI) { return new IsMountedTrigger(botAI); }
|
||||
static Trigger* at_dark_portal_outland(PlayerbotAI* botAI) { return new AtDarkPortalOutlandTrigger(botAI); }
|
||||
static Trigger* at_dark_portal_azeroth(PlayerbotAI* botAI) { return new AtDarkPortalAzerothTrigger(botAI); }
|
||||
static Trigger* in_vehicle(PlayerbotAI* botAI) { return new InVehicleTrigger(botAI); }
|
||||
static Trigger* vehicle_near(PlayerbotAI* botAI) { return new VehicleNearTrigger(botAI); }
|
||||
static Trigger* near_dark_portal(PlayerbotAI* botAI) { return new NearDarkPortalTrigger(botAI); }
|
||||
static Trigger* need_world_buff(PlayerbotAI* botAI) { return new NeedWorldBuffTrigger(botAI); }
|
||||
static Trigger* falling(PlayerbotAI* botAI) { return new IsFallingTrigger(botAI); }
|
||||
static Trigger* falling_far(PlayerbotAI* botAI) { return new IsFallingFarTrigger(botAI); }
|
||||
static Trigger* move_stuck(PlayerbotAI* botAI) { return new MoveStuckTrigger(botAI); }
|
||||
static Trigger* move_long_stuck(PlayerbotAI* botAI) { return new MoveLongStuckTrigger(botAI); }
|
||||
static Trigger* combat_stuck(PlayerbotAI* botAI) { return new CombatStuckTrigger(botAI); }
|
||||
static Trigger* combat_long_stuck(PlayerbotAI* botAI) { return new CombatLongStuckTrigger(botAI); }
|
||||
static Trigger* player_wants_in_bg(PlayerbotAI* botAI) { return new PlayerWantsInBattlegroundTrigger(botAI); }
|
||||
static Trigger* petition_signed(PlayerbotAI* botAI) { return new PetitionTurnInTrigger(botAI); }
|
||||
static Trigger* buy_tabard(PlayerbotAI* botAI) { return new BuyTabardTrigger(botAI); }
|
||||
static Trigger* leave_large_guild(PlayerbotAI* botAI) { return new LeaveLargeGuildTrigger(botAI); }
|
||||
static Trigger* rpg(PlayerbotAI* botAI) { return new RpgTrigger(botAI); }
|
||||
static Trigger* rpg_taxi(PlayerbotAI* botAI) { return new RpgTaxiTrigger(botAI); }
|
||||
static Trigger* rpg_discover(PlayerbotAI* botAI) { return new RpgDiscoverTrigger(botAI); }
|
||||
static Trigger* rpg_start_quest(PlayerbotAI* botAI) { return new RpgStartQuestTrigger(botAI); }
|
||||
static Trigger* rpg_end_quest(PlayerbotAI* botAI) { return new RpgEndQuestTrigger(botAI); }
|
||||
static Trigger* rpg_buy(PlayerbotAI* botAI) { return new RpgBuyTrigger(botAI); }
|
||||
static Trigger* rpg_sell(PlayerbotAI* botAI) { return new RpgSellTrigger(botAI); }
|
||||
static Trigger* rpg_repair(PlayerbotAI* botAI) { return new RpgRepairTrigger(botAI); }
|
||||
static Trigger* rpg_train(PlayerbotAI* botAI) { return new RpgTrainTrigger(botAI); }
|
||||
static Trigger* rpg_heal(PlayerbotAI* botAI) { return new RpgHealTrigger(botAI); }
|
||||
static Trigger* rpg_home_bind(PlayerbotAI* botAI) { return new RpgHomeBindTrigger(botAI); }
|
||||
static Trigger* rpg_queue_bg(PlayerbotAI* botAI) { return new RpgQueueBGTrigger(botAI); }
|
||||
static Trigger* rpg_buy_petition(PlayerbotAI* botAI) { return new RpgBuyPetitionTrigger(botAI); }
|
||||
static Trigger* rpg_use(PlayerbotAI* botAI) { return new RpgUseTrigger(botAI); }
|
||||
static Trigger* rpg_spell(PlayerbotAI* botAI) { return new RpgUseTrigger(botAI); }
|
||||
static Trigger* rpg_craft(PlayerbotAI* botAI) { return new RpgCraftTrigger(botAI); }
|
||||
static Trigger* rpg_trade_useful(PlayerbotAI* botAI) { return new RpgTradeUsefulTrigger(botAI); }
|
||||
static Trigger* rpg_duel(PlayerbotAI* botAI) { return new RpgDuelTrigger(botAI); }
|
||||
creators["rpg"] = &TriggerContext::rpg;
|
||||
creators["rpg taxi"] = &TriggerContext::rpg_taxi;
|
||||
creators["rpg discover"] = &TriggerContext::rpg_discover;
|
||||
creators["rpg start quest"] = &TriggerContext::rpg_start_quest;
|
||||
creators["rpg end quest"] = &TriggerContext::rpg_end_quest;
|
||||
creators["rpg buy"] = &TriggerContext::rpg_buy;
|
||||
creators["rpg sell"] = &TriggerContext::rpg_sell;
|
||||
creators["rpg repair"] = &TriggerContext::rpg_repair;
|
||||
creators["rpg train"] = &TriggerContext::rpg_train;
|
||||
creators["rpg heal"] = &TriggerContext::rpg_heal;
|
||||
creators["rpg home bind"] = &TriggerContext::rpg_home_bind;
|
||||
creators["rpg queue bg"] = &TriggerContext::rpg_queue_bg;
|
||||
creators["rpg buy petition"] = &TriggerContext::rpg_buy_petition;
|
||||
creators["rpg use"] = &TriggerContext::rpg_use;
|
||||
creators["rpg spell"] = &TriggerContext::rpg_spell;
|
||||
creators["rpg craft"] = &TriggerContext::rpg_craft;
|
||||
creators["rpg trade useful"] = &TriggerContext::rpg_trade_useful;
|
||||
creators["rpg duel"] = &TriggerContext::rpg_duel;
|
||||
}
|
||||
|
||||
private:
|
||||
static Trigger* give_food(PlayerbotAI* botAI) { return new GiveFoodTrigger(botAI); }
|
||||
static Trigger* give_water(PlayerbotAI* botAI) { return new GiveWaterTrigger(botAI); }
|
||||
static Trigger* no_rti(PlayerbotAI* botAI) { return new NoRtiTrigger(botAI); }
|
||||
static Trigger* _return(PlayerbotAI* botAI) { return new ReturnTrigger(botAI); }
|
||||
static Trigger* sit(PlayerbotAI* botAI) { return new SitTrigger(botAI); }
|
||||
static Trigger* far_from_rpg_target(PlayerbotAI* botAI) { return new FarFromRpgTargetTrigger(botAI); }
|
||||
static Trigger* near_rpg_target(PlayerbotAI* botAI) { return new NearRpgTargetTrigger(botAI); }
|
||||
static Trigger* far_from_travel_target(PlayerbotAI* botAI) { return new FarFromTravelTargetTrigger(botAI); }
|
||||
static Trigger* no_travel_target(PlayerbotAI* botAI) { return new NoTravelTargetTrigger(botAI); }
|
||||
static Trigger* no_rpg_target(PlayerbotAI* botAI) { return new NoRpgTargetTrigger(botAI); }
|
||||
static Trigger* has_rpg_target(PlayerbotAI* botAI) { return new HasRpgTargetTrigger(botAI); }
|
||||
static Trigger* collision(PlayerbotAI* botAI) { return new CollisionTrigger(botAI); }
|
||||
static Trigger* lfg_proposal_active(PlayerbotAI* botAI) { return new LfgProposalActiveTrigger(botAI); }
|
||||
static Trigger* unknown_dungeon(PlayerbotAI* botAI) { return new UnknownDungeonTrigger(botAI); }
|
||||
static Trigger* invalid_target(PlayerbotAI* botAI) { return new InvalidTargetTrigger(botAI); }
|
||||
static Trigger* critical_aoe_heal(PlayerbotAI* botAI)
|
||||
{
|
||||
return new AoeHealTrigger(botAI, "critical aoe heal", "critical", 2);
|
||||
}
|
||||
static Trigger* low_aoe_heal(PlayerbotAI* botAI) { return new AoeHealTrigger(botAI, "low aoe heal", "low", 2); }
|
||||
static Trigger* medium_aoe_heal(PlayerbotAI* botAI)
|
||||
{
|
||||
return new AoeHealTrigger(botAI, "medium aoe heal", "medium", 2);
|
||||
}
|
||||
static Trigger* almost_full_aoe_heal(PlayerbotAI* botAI)
|
||||
{
|
||||
return new AoeHealTrigger(botAI, "almost full aoe heal", "almost full", 2);
|
||||
}
|
||||
static Trigger* group_heal_occasion(PlayerbotAI* ai)
|
||||
{
|
||||
return new AoeInGroupTrigger(ai, "group heal occasion", "almost full", 0.6);
|
||||
}
|
||||
static Trigger* medium_group_heal_occasion(PlayerbotAI* ai)
|
||||
{
|
||||
return new AoeInGroupTrigger(ai, "group heal occasion", "medium", 0.4);
|
||||
}
|
||||
static Trigger* target_changed(PlayerbotAI* botAI) { return new TargetChangedTrigger(botAI); }
|
||||
static Trigger* swimming(PlayerbotAI* botAI) { return new IsSwimmingTrigger(botAI); }
|
||||
static Trigger* no_possible_targets(PlayerbotAI* botAI) { return new NoPossibleTargetsTrigger(botAI); }
|
||||
static Trigger* possible_adds(PlayerbotAI* botAI) { return new PossibleAddsTrigger(botAI); }
|
||||
static Trigger* can_loot(PlayerbotAI* botAI) { return new CanLootTrigger(botAI); }
|
||||
static Trigger* far_from_loot_target(PlayerbotAI* botAI) { return new FarFromCurrentLootTrigger(botAI); }
|
||||
static Trigger* far_from_master(PlayerbotAI* botAI) { return new FarFromMasterTrigger(botAI); }
|
||||
static Trigger* behind_target(PlayerbotAI* botAI) { return new IsBehindTargetTrigger(botAI); }
|
||||
static Trigger* not_behind_target(PlayerbotAI* botAI) { return new IsNotBehindTargetTrigger(botAI); }
|
||||
static Trigger* not_facing_target(PlayerbotAI* botAI) { return new IsNotFacingTargetTrigger(botAI); }
|
||||
static Trigger* panic(PlayerbotAI* botAI) { return new PanicTrigger(botAI); }
|
||||
static Trigger* outnumbered(PlayerbotAI* botAI) { return new OutNumberedTrigger(botAI); }
|
||||
static Trigger* no_drink(PlayerbotAI* botAI) { return new NoDrinkTrigger(botAI); }
|
||||
static Trigger* no_food(PlayerbotAI* botAI) { return new NoFoodTrigger(botAI); }
|
||||
static Trigger* LightAoe(PlayerbotAI* botAI) { return new LightAoeTrigger(botAI); }
|
||||
static Trigger* MediumAoe(PlayerbotAI* botAI) { return new MediumAoeTrigger(botAI); }
|
||||
static Trigger* HighAoe(PlayerbotAI* botAI) { return new HighAoeTrigger(botAI); }
|
||||
static Trigger* HasAreaDebuff(PlayerbotAI* botAI) { return new HasAreaDebuffTrigger(botAI); }
|
||||
static Trigger* LoseAggro(PlayerbotAI* botAI) { return new LoseAggroTrigger(botAI); }
|
||||
static Trigger* HasAggro(PlayerbotAI* botAI) { return new HasAggroTrigger(botAI); }
|
||||
static Trigger* LowHealth(PlayerbotAI* botAI) { return new LowHealthTrigger(botAI); }
|
||||
static Trigger* MediumHealth(PlayerbotAI* botAI) { return new MediumHealthTrigger(botAI); }
|
||||
static Trigger* AlmostFullHealth(PlayerbotAI* botAI) { return new AlmostFullHealthTrigger(botAI); }
|
||||
static Trigger* CriticalHealth(PlayerbotAI* botAI) { return new CriticalHealthTrigger(botAI); }
|
||||
static Trigger* TargetCriticalHealth(PlayerbotAI* botAI) { return new TargetCriticalHealthTrigger(botAI); }
|
||||
static Trigger* LowMana(PlayerbotAI* botAI) { return new LowManaTrigger(botAI); }
|
||||
static Trigger* MediumMana(PlayerbotAI* botAI) { return new MediumManaTrigger(botAI); }
|
||||
static Trigger* HighMana(PlayerbotAI* botAI) { return new HighManaTrigger(botAI); }
|
||||
static Trigger* AlmostFullMana(PlayerbotAI* botAI) { return new AlmostFullManaTrigger(botAI); }
|
||||
static Trigger* EnoughMana(PlayerbotAI* botAI) { return new EnoughManaTrigger(botAI); }
|
||||
static Trigger* LightRageAvailable(PlayerbotAI* botAI) { return new LightRageAvailableTrigger(botAI); }
|
||||
static Trigger* MediumRageAvailable(PlayerbotAI* botAI) { return new MediumRageAvailableTrigger(botAI); }
|
||||
static Trigger* HighRageAvailable(PlayerbotAI* botAI) { return new HighRageAvailableTrigger(botAI); }
|
||||
static Trigger* LightEnergyAvailable(PlayerbotAI* botAI) { return new LightEnergyAvailableTrigger(botAI); }
|
||||
static Trigger* MediumEnergyAvailable(PlayerbotAI* botAI) { return new MediumEnergyAvailableTrigger(botAI); }
|
||||
static Trigger* HighEnergyAvailable(PlayerbotAI* botAI) { return new HighEnergyAvailableTrigger(botAI); }
|
||||
static Trigger* LootAvailable(PlayerbotAI* botAI) { return new LootAvailableTrigger(botAI); }
|
||||
static Trigger* NoAttackers(PlayerbotAI* botAI) { return new NoAttackersTrigger(botAI); }
|
||||
static Trigger* TankAssist(PlayerbotAI* botAI) { return new TankAssistTrigger(botAI); }
|
||||
static Trigger* Timer(PlayerbotAI* botAI) { return new TimerTrigger(botAI); }
|
||||
static Trigger* NoTarget(PlayerbotAI* botAI) { return new NoTargetTrigger(botAI); }
|
||||
static Trigger* TargetInSight(PlayerbotAI* botAI) { return new TargetInSightTrigger(botAI); }
|
||||
static Trigger* not_dps_target_active(PlayerbotAI* botAI) { return new NotDpsTargetActiveTrigger(botAI); }
|
||||
static Trigger* not_dps_aoe_target_active(PlayerbotAI* botAI) { return new NotDpsAoeTargetActiveTrigger(botAI); }
|
||||
static Trigger* has_nearest_adds(PlayerbotAI* botAI) { return new HasNearestAddsTrigger(botAI); }
|
||||
static Trigger* enemy_player_near(PlayerbotAI* botAI) { return new EnemyPlayerNear(botAI); }
|
||||
static Trigger* Random(PlayerbotAI* botAI) { return new RandomTrigger(botAI, "random", 20); }
|
||||
static Trigger* seldom(PlayerbotAI* botAI) { return new RandomTrigger(botAI, "seldom", 300); }
|
||||
static Trigger* often(PlayerbotAI* botAI) { return new RandomTrigger(botAI, "often", 5); }
|
||||
static Trigger* EnemyOutOfMelee(PlayerbotAI* botAI) { return new EnemyOutOfMeleeTrigger(botAI); }
|
||||
static Trigger* EnemyOutOfSpell(PlayerbotAI* botAI) { return new EnemyOutOfSpellRangeTrigger(botAI); }
|
||||
static Trigger* enemy_too_close_for_spell(PlayerbotAI* botAI) { return new EnemyTooCloseForSpellTrigger(botAI); }
|
||||
static Trigger* enemy_too_close_for_auto_shot(PlayerbotAI* botAI)
|
||||
{
|
||||
return new EnemyTooCloseForAutoShotTrigger(botAI);
|
||||
}
|
||||
static Trigger* enemy_too_close_for_shoot(PlayerbotAI* botAI) { return new EnemyTooCloseForShootTrigger(botAI); }
|
||||
static Trigger* enemy_too_close_for_melee(PlayerbotAI* botAI) { return new EnemyTooCloseForMeleeTrigger(botAI); }
|
||||
static Trigger* enemy_is_close(PlayerbotAI* botAI) { return new EnemyIsCloseTrigger(botAI); }
|
||||
static Trigger* enemy_within_melee(PlayerbotAI* botAI) { return new EnemyWithinMeleeTrigger(botAI); }
|
||||
static Trigger* party_member_to_heal_out_of_spell_range(PlayerbotAI* botAI)
|
||||
{
|
||||
return new PartyMemberToHealOutOfSpellRangeTrigger(botAI);
|
||||
}
|
||||
static Trigger* ComboPointsAvailable(PlayerbotAI* botAI) { return new ComboPointsAvailableTrigger(botAI); }
|
||||
static Trigger* ComboPoints3Available(PlayerbotAI* botAI) { return new ComboPointsAvailableTrigger(botAI, 3); }
|
||||
static Trigger* MediumThreat(PlayerbotAI* botAI) { return new MediumThreatTrigger(botAI); }
|
||||
static Trigger* Dead(PlayerbotAI* botAI) { return new DeadTrigger(botAI); }
|
||||
static Trigger* corpse_near(PlayerbotAI* botAI) { return new CorpseNearTrigger(botAI); }
|
||||
static Trigger* PartyMemberDead(PlayerbotAI* botAI) { return new PartyMemberDeadTrigger(botAI); }
|
||||
static Trigger* CombatPartyMemberDead(PlayerbotAI* botAI) { return new CombatPartyMemberDeadTrigger(botAI); }
|
||||
static Trigger* PartyMemberLowHealth(PlayerbotAI* botAI) { return new PartyMemberLowHealthTrigger(botAI); }
|
||||
static Trigger* PartyMemberMediumHealth(PlayerbotAI* botAI) { return new PartyMemberMediumHealthTrigger(botAI); }
|
||||
static Trigger* PartyMemberAlmostFullHealth(PlayerbotAI* botAI)
|
||||
{
|
||||
return new PartyMemberAlmostFullHealthTrigger(botAI);
|
||||
}
|
||||
static Trigger* PartyMemberCriticalHealth(PlayerbotAI* botAI)
|
||||
{
|
||||
return new PartyMemberCriticalHealthTrigger(botAI);
|
||||
}
|
||||
static Trigger* protect_party_member(PlayerbotAI* botAI) { return new ProtectPartyMemberTrigger(botAI); }
|
||||
static Trigger* no_pet(PlayerbotAI* botAI) { return new NoPetTrigger(botAI); }
|
||||
static Trigger* has_pet(PlayerbotAI* botAI) { return new HasPetTrigger(botAI); }
|
||||
static Trigger* pet_attack(PlayerbotAI* botAI) { return new PetAttackTrigger(botAI); }
|
||||
static Trigger* has_attackers(PlayerbotAI* botAI) { return new HasAttackersTrigger(botAI); }
|
||||
static Trigger* random_bot_update_trigger(PlayerbotAI* botAI) { return new RandomBotUpdateTrigger(botAI); }
|
||||
static Trigger* no_non_bot_players_around(PlayerbotAI* botAI) { return new NoNonBotPlayersAroundTrigger(botAI); }
|
||||
static Trigger* new_player_nearby(PlayerbotAI* botAI) { return new NewPlayerNearbyTrigger(botAI); }
|
||||
static Trigger* bg_waiting(PlayerbotAI* botAI) { return new BgWaitingTrigger(botAI); }
|
||||
static Trigger* bg_active(PlayerbotAI* botAI) { return new BgActiveTrigger(botAI); }
|
||||
static Trigger* bg_invite_active(PlayerbotAI* botAI) { return new BgInviteActiveTrigger(botAI); }
|
||||
static Trigger* inside_bg(PlayerbotAI* botAI) { return new InsideBGTrigger(botAI); }
|
||||
static Trigger* player_has_no_flag(PlayerbotAI* botAI) { return new PlayerHasNoFlag(botAI); }
|
||||
static Trigger* player_has_flag(PlayerbotAI* botAI) { return new PlayerHasFlag(botAI); }
|
||||
static Trigger* team_has_flag(PlayerbotAI* botAI) { return new TeamHasFlag(botAI); }
|
||||
static Trigger* enemy_team_has_flag(PlayerbotAI* botAI) { return new EnemyTeamHasFlag(botAI); }
|
||||
static Trigger* enemy_flagcarrier_near(PlayerbotAI* botAI) { return new EnemyFlagCarrierNear(botAI); }
|
||||
static Trigger* player_is_in_BATTLEGROUND(PlayerbotAI* botAI) { return new PlayerIsInBattleground(botAI); }
|
||||
static Trigger* player_is_in_BATTLEGROUND_no_flag(PlayerbotAI* botAI)
|
||||
{
|
||||
return new PlayerIsInBattlegroundWithoutFlag(botAI);
|
||||
}
|
||||
static Trigger* mounted(PlayerbotAI* botAI) { return new IsMountedTrigger(botAI); }
|
||||
static Trigger* at_dark_portal_outland(PlayerbotAI* botAI) { return new AtDarkPortalOutlandTrigger(botAI); }
|
||||
static Trigger* at_dark_portal_azeroth(PlayerbotAI* botAI) { return new AtDarkPortalAzerothTrigger(botAI); }
|
||||
static Trigger* in_vehicle(PlayerbotAI* botAI) { return new InVehicleTrigger(botAI); }
|
||||
static Trigger* vehicle_near(PlayerbotAI* botAI) { return new VehicleNearTrigger(botAI); }
|
||||
static Trigger* near_dark_portal(PlayerbotAI* botAI) { return new NearDarkPortalTrigger(botAI); }
|
||||
static Trigger* need_world_buff(PlayerbotAI* botAI) { return new NeedWorldBuffTrigger(botAI); }
|
||||
static Trigger* falling(PlayerbotAI* botAI) { return new IsFallingTrigger(botAI); }
|
||||
static Trigger* falling_far(PlayerbotAI* botAI) { return new IsFallingFarTrigger(botAI); }
|
||||
static Trigger* move_stuck(PlayerbotAI* botAI) { return new MoveStuckTrigger(botAI); }
|
||||
static Trigger* move_long_stuck(PlayerbotAI* botAI) { return new MoveLongStuckTrigger(botAI); }
|
||||
static Trigger* combat_stuck(PlayerbotAI* botAI) { return new CombatStuckTrigger(botAI); }
|
||||
static Trigger* combat_long_stuck(PlayerbotAI* botAI) { return new CombatLongStuckTrigger(botAI); }
|
||||
static Trigger* player_wants_in_bg(PlayerbotAI* botAI) { return new PlayerWantsInBattlegroundTrigger(botAI); }
|
||||
static Trigger* petition_signed(PlayerbotAI* botAI) { return new PetitionTurnInTrigger(botAI); }
|
||||
static Trigger* buy_tabard(PlayerbotAI* botAI) { return new BuyTabardTrigger(botAI); }
|
||||
static Trigger* leave_large_guild(PlayerbotAI* botAI) { return new LeaveLargeGuildTrigger(botAI); }
|
||||
static Trigger* rpg(PlayerbotAI* botAI) { return new RpgTrigger(botAI); }
|
||||
static Trigger* rpg_taxi(PlayerbotAI* botAI) { return new RpgTaxiTrigger(botAI); }
|
||||
static Trigger* rpg_discover(PlayerbotAI* botAI) { return new RpgDiscoverTrigger(botAI); }
|
||||
static Trigger* rpg_start_quest(PlayerbotAI* botAI) { return new RpgStartQuestTrigger(botAI); }
|
||||
static Trigger* rpg_end_quest(PlayerbotAI* botAI) { return new RpgEndQuestTrigger(botAI); }
|
||||
static Trigger* rpg_buy(PlayerbotAI* botAI) { return new RpgBuyTrigger(botAI); }
|
||||
static Trigger* rpg_sell(PlayerbotAI* botAI) { return new RpgSellTrigger(botAI); }
|
||||
static Trigger* rpg_repair(PlayerbotAI* botAI) { return new RpgRepairTrigger(botAI); }
|
||||
static Trigger* rpg_train(PlayerbotAI* botAI) { return new RpgTrainTrigger(botAI); }
|
||||
static Trigger* rpg_heal(PlayerbotAI* botAI) { return new RpgHealTrigger(botAI); }
|
||||
static Trigger* rpg_home_bind(PlayerbotAI* botAI) { return new RpgHomeBindTrigger(botAI); }
|
||||
static Trigger* rpg_queue_bg(PlayerbotAI* botAI) { return new RpgQueueBGTrigger(botAI); }
|
||||
static Trigger* rpg_buy_petition(PlayerbotAI* botAI) { return new RpgBuyPetitionTrigger(botAI); }
|
||||
static Trigger* rpg_use(PlayerbotAI* botAI) { return new RpgUseTrigger(botAI); }
|
||||
static Trigger* rpg_spell(PlayerbotAI* botAI) { return new RpgUseTrigger(botAI); }
|
||||
static Trigger* rpg_craft(PlayerbotAI* botAI) { return new RpgCraftTrigger(botAI); }
|
||||
static Trigger* rpg_trade_useful(PlayerbotAI* botAI) { return new RpgTradeUsefulTrigger(botAI); }
|
||||
static Trigger* rpg_duel(PlayerbotAI* botAI) { return new RpgDuelTrigger(botAI); }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
/*
|
||||
* 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 "WithinAreaTrigger.h"
|
||||
|
||||
#include "LastMovementValue.h"
|
||||
#include "Playerbots.h"
|
||||
|
||||
@@ -19,10 +21,12 @@ bool WithinAreaTrigger::IsActive()
|
||||
if (!sObjectMgr->GetAreaTriggerTeleport(movement.lastAreaTrigger))
|
||||
return false;
|
||||
|
||||
return IsPointInAreaTriggerZone(at, bot->GetMapId(), bot->GetPositionX(), bot->GetPositionY(), bot->GetPositionZ(), 0.5f);
|
||||
return IsPointInAreaTriggerZone(at, bot->GetMapId(), bot->GetPositionX(), bot->GetPositionY(), bot->GetPositionZ(),
|
||||
0.5f);
|
||||
}
|
||||
|
||||
bool WithinAreaTrigger::IsPointInAreaTriggerZone(AreaTrigger const* atEntry, uint32 mapid, float x, float y, float z, float delta)
|
||||
bool WithinAreaTrigger::IsPointInAreaTriggerZone(AreaTrigger const* atEntry, uint32 mapid, float x, float y, float z,
|
||||
float delta)
|
||||
{
|
||||
if (mapid != atEntry->map)
|
||||
return false;
|
||||
@@ -30,7 +34,8 @@ bool WithinAreaTrigger::IsPointInAreaTriggerZone(AreaTrigger const* atEntry, uin
|
||||
if (atEntry->radius > 0)
|
||||
{
|
||||
// if we have radius check it
|
||||
float dist2 = (x - atEntry->x) * (x - atEntry->x) + (y - atEntry->y) * (y - atEntry->y) + (z - atEntry->z) * (z - atEntry->z);
|
||||
float dist2 = (x - atEntry->x) * (x - atEntry->x) + (y - atEntry->y) * (y - atEntry->y) +
|
||||
(z - atEntry->z) * (z - atEntry->z);
|
||||
if (dist2 > (atEntry->radius + delta) * (atEntry->radius + delta))
|
||||
return false;
|
||||
}
|
||||
@@ -56,7 +61,8 @@ bool WithinAreaTrigger::IsPointInAreaTriggerZone(AreaTrigger const* atEntry, uin
|
||||
float dz = z - atEntry->z;
|
||||
float dx = rotPlayerX - atEntry->x;
|
||||
float dy = rotPlayerY - atEntry->y;
|
||||
if ((fabs(dx) > atEntry->x / 2 + delta) || (fabs(dy) > atEntry->y / 2 + delta) || (fabs(dz) > atEntry->z / 2 + delta))
|
||||
if ((fabs(dx) > atEntry->x / 2 + delta) || (fabs(dy) > atEntry->y / 2 + delta) ||
|
||||
(fabs(dz) > atEntry->z / 2 + delta))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_WITHINAREATRIGGER_H
|
||||
@@ -13,13 +14,13 @@ struct AreaTrigger;
|
||||
|
||||
class WithinAreaTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
WithinAreaTrigger(PlayerbotAI* botAI) : Trigger(botAI, "within area trigger") { }
|
||||
public:
|
||||
WithinAreaTrigger(PlayerbotAI* botAI) : Trigger(botAI, "within area trigger") {}
|
||||
|
||||
bool IsActive() override;
|
||||
bool IsActive() override;
|
||||
|
||||
private:
|
||||
bool IsPointInAreaTriggerZone(AreaTrigger const* atEntry, uint32 mapid, float x, float y, float z, float delta);
|
||||
private:
|
||||
bool IsPointInAreaTriggerZone(AreaTrigger const* atEntry, uint32 mapid, float x, float y, float z, float delta);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
/*
|
||||
* 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 "WorldPacketTrigger.h"
|
||||
|
||||
#include "Playerbots.h"
|
||||
|
||||
void WorldPacketTrigger::ExternalEvent(WorldPacket& revData, Player* eventOwner)
|
||||
@@ -20,7 +22,4 @@ Event WorldPacketTrigger::Check()
|
||||
return Event(getName(), packet, owner);
|
||||
}
|
||||
|
||||
void WorldPacketTrigger::Reset()
|
||||
{
|
||||
triggered = false;
|
||||
}
|
||||
void WorldPacketTrigger::Reset() { triggered = false; }
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_WORLDPACKETTRIGGER_H
|
||||
@@ -14,17 +15,17 @@ class WorldPacket;
|
||||
|
||||
class WorldPacketTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
WorldPacketTrigger(PlayerbotAI* botAI, std::string const command) : Trigger(botAI, command), triggered(false) { }
|
||||
public:
|
||||
WorldPacketTrigger(PlayerbotAI* botAI, std::string const command) : Trigger(botAI, command), triggered(false) {}
|
||||
|
||||
void ExternalEvent(WorldPacket& packet, Player* owner = nullptr) override;
|
||||
Event Check() override;
|
||||
void Reset() override;
|
||||
void ExternalEvent(WorldPacket& packet, Player* owner = nullptr) override;
|
||||
Event Check() override;
|
||||
void Reset() override;
|
||||
|
||||
private:
|
||||
WorldPacket packet;
|
||||
bool triggered;
|
||||
Player* owner;
|
||||
private:
|
||||
WorldPacket packet;
|
||||
bool triggered;
|
||||
Player* owner;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,122 +1,144 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_WORLDPACKETTRIGGERCONTEXT_H
|
||||
#define _PLAYERBOT_WORLDPACKETTRIGGERCONTEXT_H
|
||||
|
||||
#include "WorldPacketTrigger.h"
|
||||
#include "WithinAreaTrigger.h"
|
||||
#include "NamedObjectContext.h"
|
||||
#include "WithinAreaTrigger.h"
|
||||
#include "WorldPacketTrigger.h"
|
||||
|
||||
class WorldPacketTriggerContext : public NamedObjectContext<Trigger>
|
||||
{
|
||||
public:
|
||||
WorldPacketTriggerContext()
|
||||
{
|
||||
creators["gossip hello"] = &WorldPacketTriggerContext::gossip_hello;
|
||||
creators["group invite"] = &WorldPacketTriggerContext::group_invite;
|
||||
creators["group set leader"] = &WorldPacketTriggerContext::group_set_leader;
|
||||
creators["not enough money"] = &WorldPacketTriggerContext::no_money;
|
||||
creators["not enough reputation"] = &WorldPacketTriggerContext::no_reputation;
|
||||
creators["cannot equip"] = &WorldPacketTriggerContext::cannot_equip;
|
||||
creators["use game object"] = &WorldPacketTriggerContext::use_game_object;
|
||||
creators["complete quest"] = &WorldPacketTriggerContext::complete_quest;
|
||||
creators["accept quest"] = &WorldPacketTriggerContext::accept_quest;
|
||||
creators["quest share"] = &WorldPacketTriggerContext::quest_share;
|
||||
creators["loot roll"] = &WorldPacketTriggerContext::loot_roll;
|
||||
creators["resurrect request"] = &WorldPacketTriggerContext::resurrect_request;
|
||||
creators["area trigger"] = &WorldPacketTriggerContext::area_trigger;
|
||||
creators["within area trigger"] = &WorldPacketTriggerContext::within_area_trigger;
|
||||
creators["check mount state"] = &WorldPacketTriggerContext::check_mount_state;
|
||||
creators["activate taxi"] = &WorldPacketTriggerContext::taxi;
|
||||
creators["trade status"] = &WorldPacketTriggerContext::trade_status;
|
||||
creators["loot response"] = &WorldPacketTriggerContext::loot_response;
|
||||
creators["out of react range"] = &WorldPacketTriggerContext::out_of_react_range;
|
||||
creators["quest objective completed"] = &WorldPacketTriggerContext::quest_objective_completed;
|
||||
creators["item push result"] = &WorldPacketTriggerContext::item_push_result;
|
||||
creators["party command"] = &WorldPacketTriggerContext::party_command;
|
||||
creators["taxi done"] = &WorldPacketTriggerContext::taxi_done;
|
||||
creators["cast failed"] = &WorldPacketTriggerContext::cast_failed;
|
||||
creators["duel requested"] = &WorldPacketTriggerContext::duel_requested;
|
||||
creators["ready check"] = &WorldPacketTriggerContext::ready_check;
|
||||
creators["ready check finished"] = &WorldPacketTriggerContext::ready_check_finished;
|
||||
creators["uninvite"] = &WorldPacketTriggerContext::uninvite;
|
||||
creators["uninvite guid"] = &WorldPacketTriggerContext::uninvite_guid;
|
||||
creators["lfg join"] = &WorldPacketTriggerContext::lfg_update;
|
||||
creators["lfg proposal"] = &WorldPacketTriggerContext::lfg_proposal;
|
||||
creators["lfg role check"] = &WorldPacketTriggerContext::lfg_role_check;
|
||||
creators["lfg leave"] = &WorldPacketTriggerContext::lfg_leave;
|
||||
creators["guild invite"] = &WorldPacketTriggerContext::guild_invite;
|
||||
creators["petition offer"] = &WorldPacketTriggerContext::petition_offer;
|
||||
creators["lfg teleport"] = &WorldPacketTriggerContext::lfg_teleport;
|
||||
creators["inventory change failure"] = &WorldPacketTriggerContext::inventory_change_failure;
|
||||
creators["bg status"] = &WorldPacketTriggerContext::bg_status;
|
||||
creators["levelup"] = &WorldPacketTriggerContext::levelup;
|
||||
creators["xpgain"] = &WorldPacketTriggerContext::xpgain;
|
||||
creators["see spell"] = &WorldPacketTriggerContext::seespell;
|
||||
creators["release spirit"] = &WorldPacketTriggerContext::release_spirit;
|
||||
creators["revive from corpse"] = &WorldPacketTriggerContext::revive_from_corpse;
|
||||
creators["receive emote"] = &WorldPacketTriggerContext::receive_emote;
|
||||
creators["receive text emote"] = &WorldPacketTriggerContext::receive_text_emote;
|
||||
creators["arena team invite"] = &WorldPacketTriggerContext::arena_team_invite;
|
||||
creators["quest confirm accept"] = &WorldPacketTriggerContext::quest_confirm_accept;
|
||||
creators["group destroyed"] = &WorldPacketTriggerContext::group_destroyed;
|
||||
creators["group list"] = &WorldPacketTriggerContext::group_list;
|
||||
creators["questgiver quest details"] = &WorldPacketTriggerContext::questgiver_quest_details;
|
||||
}
|
||||
public:
|
||||
WorldPacketTriggerContext()
|
||||
{
|
||||
creators["gossip hello"] = &WorldPacketTriggerContext::gossip_hello;
|
||||
creators["group invite"] = &WorldPacketTriggerContext::group_invite;
|
||||
creators["group set leader"] = &WorldPacketTriggerContext::group_set_leader;
|
||||
creators["not enough money"] = &WorldPacketTriggerContext::no_money;
|
||||
creators["not enough reputation"] = &WorldPacketTriggerContext::no_reputation;
|
||||
creators["cannot equip"] = &WorldPacketTriggerContext::cannot_equip;
|
||||
creators["use game object"] = &WorldPacketTriggerContext::use_game_object;
|
||||
creators["complete quest"] = &WorldPacketTriggerContext::complete_quest;
|
||||
creators["accept quest"] = &WorldPacketTriggerContext::accept_quest;
|
||||
creators["quest share"] = &WorldPacketTriggerContext::quest_share;
|
||||
creators["loot roll"] = &WorldPacketTriggerContext::loot_roll;
|
||||
creators["resurrect request"] = &WorldPacketTriggerContext::resurrect_request;
|
||||
creators["area trigger"] = &WorldPacketTriggerContext::area_trigger;
|
||||
creators["within area trigger"] = &WorldPacketTriggerContext::within_area_trigger;
|
||||
creators["check mount state"] = &WorldPacketTriggerContext::check_mount_state;
|
||||
creators["activate taxi"] = &WorldPacketTriggerContext::taxi;
|
||||
creators["trade status"] = &WorldPacketTriggerContext::trade_status;
|
||||
creators["loot response"] = &WorldPacketTriggerContext::loot_response;
|
||||
creators["out of react range"] = &WorldPacketTriggerContext::out_of_react_range;
|
||||
creators["quest objective completed"] = &WorldPacketTriggerContext::quest_objective_completed;
|
||||
creators["item push result"] = &WorldPacketTriggerContext::item_push_result;
|
||||
creators["party command"] = &WorldPacketTriggerContext::party_command;
|
||||
creators["taxi done"] = &WorldPacketTriggerContext::taxi_done;
|
||||
creators["cast failed"] = &WorldPacketTriggerContext::cast_failed;
|
||||
creators["duel requested"] = &WorldPacketTriggerContext::duel_requested;
|
||||
creators["ready check"] = &WorldPacketTriggerContext::ready_check;
|
||||
creators["ready check finished"] = &WorldPacketTriggerContext::ready_check_finished;
|
||||
creators["uninvite"] = &WorldPacketTriggerContext::uninvite;
|
||||
creators["uninvite guid"] = &WorldPacketTriggerContext::uninvite_guid;
|
||||
creators["lfg join"] = &WorldPacketTriggerContext::lfg_update;
|
||||
creators["lfg proposal"] = &WorldPacketTriggerContext::lfg_proposal;
|
||||
creators["lfg role check"] = &WorldPacketTriggerContext::lfg_role_check;
|
||||
creators["lfg leave"] = &WorldPacketTriggerContext::lfg_leave;
|
||||
creators["guild invite"] = &WorldPacketTriggerContext::guild_invite;
|
||||
creators["petition offer"] = &WorldPacketTriggerContext::petition_offer;
|
||||
creators["lfg teleport"] = &WorldPacketTriggerContext::lfg_teleport;
|
||||
creators["inventory change failure"] = &WorldPacketTriggerContext::inventory_change_failure;
|
||||
creators["bg status"] = &WorldPacketTriggerContext::bg_status;
|
||||
creators["levelup"] = &WorldPacketTriggerContext::levelup;
|
||||
creators["xpgain"] = &WorldPacketTriggerContext::xpgain;
|
||||
creators["see spell"] = &WorldPacketTriggerContext::seespell;
|
||||
creators["release spirit"] = &WorldPacketTriggerContext::release_spirit;
|
||||
creators["revive from corpse"] = &WorldPacketTriggerContext::revive_from_corpse;
|
||||
creators["receive emote"] = &WorldPacketTriggerContext::receive_emote;
|
||||
creators["receive text emote"] = &WorldPacketTriggerContext::receive_text_emote;
|
||||
creators["arena team invite"] = &WorldPacketTriggerContext::arena_team_invite;
|
||||
creators["quest confirm accept"] = &WorldPacketTriggerContext::quest_confirm_accept;
|
||||
creators["group destroyed"] = &WorldPacketTriggerContext::group_destroyed;
|
||||
creators["group list"] = &WorldPacketTriggerContext::group_list;
|
||||
creators["questgiver quest details"] = &WorldPacketTriggerContext::questgiver_quest_details;
|
||||
}
|
||||
|
||||
private:
|
||||
static Trigger* inventory_change_failure(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "inventory change failure"); }
|
||||
static Trigger* guild_invite(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "guild invite"); }
|
||||
static Trigger* lfg_teleport(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "lfg teleport"); }
|
||||
static Trigger* lfg_leave(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "lfg leave"); }
|
||||
static Trigger* lfg_proposal(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "lfg proposal"); }
|
||||
static Trigger* lfg_role_check(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "lfg role check"); }
|
||||
static Trigger* lfg_update(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "lfg join"); }
|
||||
static Trigger* uninvite(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "uninvite"); }
|
||||
static Trigger* uninvite_guid(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "uninvite guid"); }
|
||||
static Trigger* ready_check_finished(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "ready check finished"); }
|
||||
static Trigger* ready_check(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "ready check"); }
|
||||
static Trigger* duel_requested(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "duel requested"); }
|
||||
static Trigger* cast_failed(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "cast failed"); }
|
||||
static Trigger* taxi_done(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "taxi done"); }
|
||||
static Trigger* party_command(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "party command"); }
|
||||
static Trigger* item_push_result(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "item push result"); }
|
||||
static Trigger* quest_objective_completed(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "quest objective completed"); }
|
||||
static Trigger* out_of_react_range(PlayerbotAI* botAI) { return new OutOfReactRangeTrigger(botAI); }
|
||||
static Trigger* loot_response(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "loot response"); }
|
||||
static Trigger* trade_status(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "trade status"); }
|
||||
static Trigger* cannot_equip(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "cannot equip"); }
|
||||
static Trigger* check_mount_state(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "check mount state"); }
|
||||
static Trigger* area_trigger(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "area trigger"); }
|
||||
static Trigger* within_area_trigger(PlayerbotAI* botAI) { return new WithinAreaTrigger(botAI); }
|
||||
static Trigger* resurrect_request(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "resurrect request"); }
|
||||
static Trigger* gossip_hello(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "gossip hello"); }
|
||||
static Trigger* group_invite(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "group invite"); }
|
||||
static Trigger* group_set_leader(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "group set leader"); }
|
||||
static Trigger* no_money(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "not enough money"); }
|
||||
static Trigger* no_reputation(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "not enough reputation"); }
|
||||
static Trigger* use_game_object(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "use game object"); }
|
||||
static Trigger* complete_quest(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "complete quest"); }
|
||||
static Trigger* accept_quest(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "accept quest"); }
|
||||
static Trigger* quest_share(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "quest share"); }
|
||||
static Trigger* loot_roll(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "loot roll"); }
|
||||
static Trigger* taxi(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "activate taxi"); }
|
||||
static Trigger* bg_status(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "bg status"); }
|
||||
static Trigger* levelup(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "levelup"); }
|
||||
static Trigger* xpgain(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "xpgain"); }
|
||||
static Trigger* petition_offer(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "petition offer"); }
|
||||
static Trigger* seespell(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "see spell"); }
|
||||
static Trigger* release_spirit(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "release spirit"); }
|
||||
static Trigger* revive_from_corpse(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "revive from corpse"); }
|
||||
static Trigger* receive_emote(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "receive emote"); }
|
||||
static Trigger* receive_text_emote(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "receive text emote"); }
|
||||
static Trigger* arena_team_invite(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "arena team invite"); }
|
||||
static Trigger* quest_confirm_accept(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "quest confirm accept"); }
|
||||
static Trigger* group_destroyed(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "group destroyed"); }
|
||||
static Trigger* group_list(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "group list"); }
|
||||
static Trigger* questgiver_quest_details(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "questgiver quest details"); }
|
||||
private:
|
||||
static Trigger* inventory_change_failure(PlayerbotAI* botAI)
|
||||
{
|
||||
return new WorldPacketTrigger(botAI, "inventory change failure");
|
||||
}
|
||||
static Trigger* guild_invite(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "guild invite"); }
|
||||
static Trigger* lfg_teleport(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "lfg teleport"); }
|
||||
static Trigger* lfg_leave(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "lfg leave"); }
|
||||
static Trigger* lfg_proposal(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "lfg proposal"); }
|
||||
static Trigger* lfg_role_check(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "lfg role check"); }
|
||||
static Trigger* lfg_update(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "lfg join"); }
|
||||
static Trigger* uninvite(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "uninvite"); }
|
||||
static Trigger* uninvite_guid(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "uninvite guid"); }
|
||||
static Trigger* ready_check_finished(PlayerbotAI* botAI)
|
||||
{
|
||||
return new WorldPacketTrigger(botAI, "ready check finished");
|
||||
}
|
||||
static Trigger* ready_check(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "ready check"); }
|
||||
static Trigger* duel_requested(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "duel requested"); }
|
||||
static Trigger* cast_failed(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "cast failed"); }
|
||||
static Trigger* taxi_done(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "taxi done"); }
|
||||
static Trigger* party_command(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "party command"); }
|
||||
static Trigger* item_push_result(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "item push result"); }
|
||||
static Trigger* quest_objective_completed(PlayerbotAI* botAI)
|
||||
{
|
||||
return new WorldPacketTrigger(botAI, "quest objective completed");
|
||||
}
|
||||
static Trigger* out_of_react_range(PlayerbotAI* botAI) { return new OutOfReactRangeTrigger(botAI); }
|
||||
static Trigger* loot_response(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "loot response"); }
|
||||
static Trigger* trade_status(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "trade status"); }
|
||||
static Trigger* cannot_equip(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "cannot equip"); }
|
||||
static Trigger* check_mount_state(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "check mount state"); }
|
||||
static Trigger* area_trigger(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "area trigger"); }
|
||||
static Trigger* within_area_trigger(PlayerbotAI* botAI) { return new WithinAreaTrigger(botAI); }
|
||||
static Trigger* resurrect_request(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "resurrect request"); }
|
||||
static Trigger* gossip_hello(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "gossip hello"); }
|
||||
static Trigger* group_invite(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "group invite"); }
|
||||
static Trigger* group_set_leader(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "group set leader"); }
|
||||
static Trigger* no_money(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "not enough money"); }
|
||||
static Trigger* no_reputation(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "not enough reputation"); }
|
||||
static Trigger* use_game_object(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "use game object"); }
|
||||
static Trigger* complete_quest(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "complete quest"); }
|
||||
static Trigger* accept_quest(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "accept quest"); }
|
||||
static Trigger* quest_share(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "quest share"); }
|
||||
static Trigger* loot_roll(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "loot roll"); }
|
||||
static Trigger* taxi(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "activate taxi"); }
|
||||
static Trigger* bg_status(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "bg status"); }
|
||||
static Trigger* levelup(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "levelup"); }
|
||||
static Trigger* xpgain(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "xpgain"); }
|
||||
static Trigger* petition_offer(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "petition offer"); }
|
||||
static Trigger* seespell(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "see spell"); }
|
||||
static Trigger* release_spirit(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "release spirit"); }
|
||||
static Trigger* revive_from_corpse(PlayerbotAI* botAI)
|
||||
{
|
||||
return new WorldPacketTrigger(botAI, "revive from corpse");
|
||||
}
|
||||
static Trigger* receive_emote(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "receive emote"); }
|
||||
static Trigger* receive_text_emote(PlayerbotAI* botAI)
|
||||
{
|
||||
return new WorldPacketTrigger(botAI, "receive text emote");
|
||||
}
|
||||
static Trigger* arena_team_invite(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "arena team invite"); }
|
||||
static Trigger* quest_confirm_accept(PlayerbotAI* botAI)
|
||||
{
|
||||
return new WorldPacketTrigger(botAI, "quest confirm accept");
|
||||
}
|
||||
static Trigger* group_destroyed(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "group destroyed"); }
|
||||
static Trigger* group_list(PlayerbotAI* botAI) { return new WorldPacketTrigger(botAI, "group list"); }
|
||||
static Trigger* questgiver_quest_details(PlayerbotAI* botAI)
|
||||
{
|
||||
return new WorldPacketTrigger(botAI, "questgiver quest details");
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user