diff --git a/zone/bot.cpp b/zone/bot.cpp index b463010f1..ecd1dd84e 100644 --- a/zone/bot.cpp +++ b/zone/bot.cpp @@ -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 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; +} \ No newline at end of file diff --git a/zone/bot.h b/zone/bot.h index fa8e5f964..123407f61 100644 --- a/zone/bot.h +++ b/zone/bot.h @@ -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; } diff --git a/zone/bot_commands/bot.cpp b/zone/bot_commands/bot.cpp index e963a4180..9fd87a830 100644 --- a/zone/bot_commands/bot.cpp +++ b/zone/bot_commands/bot.cpp @@ -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(