[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) {
case Stance::AEBurn:
case Stance::Burn:
case Stance::Assist:
return true;
default:
return false;
@ -11041,31 +11042,36 @@ bool Bot::GetDefaultSpellTypeAggroCheck(uint16 spell_type, uint8 stance) {
switch (stance) {
case Stance::AEBurn:
case Stance::Burn:
case Stance::Aggressive:
return false;
default:
break;
}
switch (spell_type) {
case BotSpellTypes::Nuke:
case BotSpellTypes::Root:
case BotSpellTypes::Snare:
case BotSpellTypes::DOT:
case BotSpellTypes::Slow:
case BotSpellTypes::Debuff:
case BotSpellTypes::Fear:
case BotSpellTypes::Stun:
case BotSpellTypes::AEDebuff:
case BotSpellTypes::AEDispel:
case BotSpellTypes::AEDoT:
case BotSpellTypes::AEFear:
case BotSpellTypes::AEHateLine:
case BotSpellTypes::AELifetap:
case BotSpellTypes::AENukes:
case BotSpellTypes::AERains:
case BotSpellTypes::AEStun:
case BotSpellTypes::AEDebuff:
case BotSpellTypes::AERoot:
case BotSpellTypes::AESlow:
case BotSpellTypes::AESnare:
case BotSpellTypes::AEFear:
case BotSpellTypes::AEDispel:
case BotSpellTypes::AERoot:
case BotSpellTypes::AEDoT:
case BotSpellTypes::AEStun:
case BotSpellTypes::DOT:
case BotSpellTypes::Debuff:
case BotSpellTypes::Dispel:
case BotSpellTypes::Fear:
case BotSpellTypes::HateLine:
case BotSpellTypes::Nuke:
case BotSpellTypes::PBAENuke:
case BotSpellTypes::Root:
case BotSpellTypes::Slow:
case BotSpellTypes::Snare:
case BotSpellTypes::Stun:
return true;
default:
return false;
@ -13160,3 +13166,20 @@ std::vector<Mob*> Bot::GetSpellTargetList(bool entire_raid) {
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; }
uint8 GetBotStance() { return _botStance; }
static bool IsValidBotStance(uint8 stance);
uint8 GetChanceToCastBySpellType(uint16 spell_type);
bool IsGroupHealer() const { return m_CastingRoles.GroupHealer; }
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)) {
++ab_arg;
value = atoi(sep->arg[1]);
if (
value < Stance::Passive ||
value > Stance::AEBurn ||
value == Stance::Reactive ||
value == Stance::Assist
) {
if (!Bot::IsValidBotStance(value)) {
c->Message(
Chat::Yellow,
fmt::format(