[Bots] Add missing stance options (#4681)

- Moved stance check to function
- Added check for Efficient and Assist stances.
- Sets aggressive to ignore aggrochecks by default
- Adds more types to default aggrocheck list
- Sets Assist to hold CCs
This commit is contained in:
nytmyr 2025-02-15 15:03:55 -06:00 committed by GitHub
parent 9aa0f7c695
commit 3b399dfac5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 39 additions and 20 deletions

View File

@ -10762,6 +10762,7 @@ bool Bot::GetDefaultSpellTypeHold(uint16 spell_type, uint8 stance) {
switch (stance) { switch (stance) {
case Stance::AEBurn: case Stance::AEBurn:
case Stance::Burn: case Stance::Burn:
case Stance::Assist:
return true; return true;
default: default:
return false; return false;
@ -11041,31 +11042,36 @@ bool Bot::GetDefaultSpellTypeAggroCheck(uint16 spell_type, uint8 stance) {
switch (stance) { switch (stance) {
case Stance::AEBurn: case Stance::AEBurn:
case Stance::Burn: case Stance::Burn:
case Stance::Aggressive:
return false; return false;
default: default:
break; break;
} }
switch (spell_type) { switch (spell_type) {
case BotSpellTypes::Nuke: case BotSpellTypes::AEDebuff:
case BotSpellTypes::Root: case BotSpellTypes::AEDispel:
case BotSpellTypes::Snare: case BotSpellTypes::AEDoT:
case BotSpellTypes::DOT: case BotSpellTypes::AEFear:
case BotSpellTypes::Slow: case BotSpellTypes::AEHateLine:
case BotSpellTypes::Debuff: case BotSpellTypes::AELifetap:
case BotSpellTypes::Fear:
case BotSpellTypes::Stun:
case BotSpellTypes::AENukes: case BotSpellTypes::AENukes:
case BotSpellTypes::AERains: case BotSpellTypes::AERains:
case BotSpellTypes::AEStun: case BotSpellTypes::AERoot:
case BotSpellTypes::AEDebuff:
case BotSpellTypes::AESlow: case BotSpellTypes::AESlow:
case BotSpellTypes::AESnare: case BotSpellTypes::AESnare:
case BotSpellTypes::AEFear: case BotSpellTypes::AEStun:
case BotSpellTypes::AEDispel: case BotSpellTypes::DOT:
case BotSpellTypes::AERoot: case BotSpellTypes::Debuff:
case BotSpellTypes::AEDoT: case BotSpellTypes::Dispel:
case BotSpellTypes::Fear:
case BotSpellTypes::HateLine:
case BotSpellTypes::Nuke:
case BotSpellTypes::PBAENuke: case BotSpellTypes::PBAENuke:
case BotSpellTypes::Root:
case BotSpellTypes::Slow:
case BotSpellTypes::Snare:
case BotSpellTypes::Stun:
return true; return true;
default: default:
return false; return false;
@ -13160,3 +13166,20 @@ std::vector<Mob*> Bot::GetSpellTargetList(bool entire_raid) {
return entire_raid ? _spell_target_list : _group_spell_target_list; return entire_raid ? _spell_target_list : _group_spell_target_list;
} }
bool Bot::IsValidBotStance(uint8 stance) {
switch (stance) {
case Stance::Passive:
case Stance::Balanced:
case Stance::Efficient:
case Stance::Aggressive:
case Stance::Assist:
case Stance::Burn:
case Stance::AEBurn:
return true;
default:
return false;
}
return false;
}

View File

@ -816,6 +816,7 @@ public:
bool GetRangerAutoWeaponSelect() { return _rangerAutoWeaponSelect; } bool GetRangerAutoWeaponSelect() { return _rangerAutoWeaponSelect; }
uint8 GetBotStance() { return _botStance; } uint8 GetBotStance() { return _botStance; }
static bool IsValidBotStance(uint8 stance);
uint8 GetChanceToCastBySpellType(uint16 spell_type); uint8 GetChanceToCastBySpellType(uint16 spell_type);
bool IsGroupHealer() const { return m_CastingRoles.GroupHealer; } bool IsGroupHealer() const { return m_CastingRoles.GroupHealer; }
bool IsGroupSlower() const { return m_CastingRoles.GroupSlower; } bool IsGroupSlower() const { return m_CastingRoles.GroupSlower; }

View File

@ -1263,12 +1263,7 @@ void bot_command_stance(Client *c, const Seperator *sep)
if (sep->IsNumber(1)) { if (sep->IsNumber(1)) {
++ab_arg; ++ab_arg;
value = atoi(sep->arg[1]); value = atoi(sep->arg[1]);
if ( if (!Bot::IsValidBotStance(value)) {
value < Stance::Passive ||
value > Stance::AEBurn ||
value == Stance::Reactive ||
value == Stance::Assist
) {
c->Message( c->Message(
Chat::Yellow, Chat::Yellow,
fmt::format( fmt::format(