fix strategies conflict for rndbot

This commit is contained in:
Yunfan Li
2023-07-30 14:33:52 +08:00
parent 944e0fa1ed
commit e93b1edcd5
17 changed files with 82 additions and 79 deletions

View File

@@ -12,6 +12,7 @@
#include "DKAiObjectContext.h"
#include "PriestAiObjectContext.h"
#include "MageAiObjectContext.h"
#include "SharedDefines.h"
#include "WarlockAiObjectContext.h"
#include "WarriorAiObjectContext.h"
#include "ShamanAiObjectContext.h"
@@ -275,7 +276,7 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
else
engine->addStrategies("heal", "threat", nullptr);
engine->addStrategies("dps assist", "cure", "ranged", nullptr);
engine->addStrategies("dps assist", "cure", nullptr);
break;
case CLASS_MAGE:
if (tab == 0)
@@ -285,65 +286,62 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
else
engine->addStrategies("frost", "frost aoe", "threat", nullptr);
engine->addStrategies("dps", "dps assist", "cure", "ranged", nullptr);
engine->addStrategies("dps", "dps assist", "cure", nullptr);
break;
case CLASS_WARRIOR:
if (tab == 2)
engine->addStrategies("tank", "tank assist", "aoe", "close", "mark rti", nullptr);
engine->addStrategies("tank", "tank assist", "aoe", "mark rti", nullptr);
else if (player->getLevel() < 30 || tab == 0)
engine->addStrategies("arms", "aoe", "dps assist", "threat", "close", "behind", nullptr);
engine->addStrategies("arms", "aoe", "dps assist", "threat", "behind", nullptr);
else
engine->addStrategies("fury", "aoe", "dps assist", "threat", "close", "behind", nullptr);
engine->addStrategies("fury", "aoe", "dps assist", "threat", "behind", nullptr);
break;
case CLASS_SHAMAN:
if (tab == 0)
engine->addStrategies("caster", "caster aoe", "bmana", "threat", "ranged", nullptr);
engine->addStrategies("caster", "caster aoe", "bmana", "threat", nullptr);
else if (tab == 2)
engine->addStrategies("heal", "bmana", "ranged", nullptr);
engine->addStrategies("heal", "bmana", nullptr);
else
engine->addStrategies("melee", "melee aoe", "bdps", "threat", "close", nullptr);
engine->addStrategies("melee", "melee aoe", "bdps", "threat", nullptr);
engine->addStrategies("dps assist", "cure", "totems", nullptr);
break;
case CLASS_PALADIN:
if (tab == 1)
engine->addStrategies("tank", "tank assist", "bthreat", "barmor", "cure", "close", nullptr);
engine->addStrategies("tank", "tank assist", "bthreat", "barmor", "cure", nullptr);
else if (tab == 0)
engine->addStrategies("heal", "dps assist", "cure", nullptr);
else
engine->addStrategies("dps", "dps assist", "cure", "close", "baoe", nullptr);
engine->addStrategies("dps", "dps assist", "cure", "baoe", nullptr);
break;
case CLASS_DRUID:
if (tab == 0)
{
engine->addStrategies("caster", "cure", "caster aoe", "threat", "dps assist", "ranged", nullptr);
if (player->getLevel() > 19)
engine->addStrategy("caster debuff");
engine->addStrategies("caster", "cure", "caster aoe", "threat", "dps assist", nullptr);
engine->addStrategy("caster debuff");
}
else if (tab == 2)
engine->addStrategies("heal", "cure", "dps assist", "ranged", nullptr);
engine->addStrategies("heal", "cure", "dps assist", nullptr);
else
{
engine->removeStrategy("ranged");
engine->removeStrategy("flee");
engine->addStrategies("bear", "tank assist", "close", nullptr);
engine->addStrategies("bear", "tank assist", nullptr);
}
break;
case CLASS_HUNTER:
engine->addStrategies("dps", "aoe", "bdps", "threat", "dps assist", "ranged", nullptr);
if (player->getLevel() > 19)
engine->addStrategy("dps debuff");
engine->addStrategies("dps", "aoe", "bdps", "threat", "dps assist", nullptr);
engine->addStrategy("dps debuff");
break;
case CLASS_ROGUE:
if (tab == ROGUE_TAB_ASSASSINATION) {
engine->addStrategies("melee", "threat", "dps assist", "aoe", "close", "behind", nullptr);
engine->addStrategies("melee", "threat", "dps assist", "aoe", "behind", nullptr);
} else {
engine->addStrategies("dps", "threat", "dps assist", "aoe", "close", "behind", nullptr);
engine->addStrategies("dps", "threat", "dps assist", "aoe", "behind", nullptr);
}
break;
case CLASS_WARLOCK:
engine->addStrategies("dps assist", "dps", "dps debuff", "aoe", "ranged", "threat", nullptr);
engine->addStrategies("dps assist", "dps", "dps debuff", "aoe", "threat", nullptr);
break;
case CLASS_DEATH_KNIGHT:
if (tab == 0)
@@ -353,8 +351,6 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
else
engine->addStrategies("unholy", "unholy aoe", "dps assist", "threat", nullptr);
engine->addStrategies("close", nullptr);
break;
}
@@ -362,40 +358,39 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
{
if (!player->GetGroup())
{
engine->ChangeStrategy(sPlayerbotAIConfig->randomBotCombatStrategies);
// engine->addStrategy("flee");
// change for heal spec
engine->addStrategy("boost");
if (player->getClass() == CLASS_WARLOCK)
{
engine->removeStrategy("ranged");
}
if (player->getClass() == CLASS_DRUID && tab == 2)
{
engine->addStrategies("caster", "caster aoe", nullptr);
}
if (player->getClass() == CLASS_DRUID && tab == 1 && urand(0, 100) > 50 && player->getLevel() > 19)
{
engine->addStrategy("dps");
}
if (player->getClass() == CLASS_PRIEST && tab == 1)
{
engine->removeStrategy("heal");
engine->addStrategies("holy", "shadow debuff", "shadow aoe", "threat", nullptr);
}
if (player->getClass() == CLASS_SHAMAN && tab == 2)
{
engine->addStrategies("caster", "caster aoe", nullptr);
}
if (player->getClass() == CLASS_PALADIN && tab == 0)
{
engine->addStrategies("dps", "close", nullptr);
engine->addStrategy("dps assist");
engine->removeStrategy("threat");
// engine-
switch (player->getClass()) {
case CLASS_PRIEST: {
if (tab != PRIEST_TAB_SHADOW) {
engine->addStrategies("dps", "shadow debuff", "shadow aoe", nullptr);
}
break;
}
case CLASS_DRUID: {
if (tab == DRUID_TAB_RESTORATION) {
engine->addStrategies("caster", "caster aoe", nullptr);
engine->addStrategy("caster debuff");
}
break;
}
case CLASS_SHAMAN: {
if (tab == SHAMAN_TAB_RESTORATION) {
engine->addStrategies("caster", "caster aoe", "bmana", nullptr);
}
break;
}
case CLASS_PALADIN: {
if (tab == PALADIN_TAB_HOLY) {
engine->addStrategies("dps", "dps assist", "baoe", nullptr);
}
break;
}
default:
break;
}
}
}