From 4bb1fd9dcd7dd56993cb9dc60959414a73bcbeeb Mon Sep 17 00:00:00 2001 From: nytmyr <53322305+nytmyr@users.noreply.github.com> Date: Wed, 27 Nov 2024 20:50:21 -0600 Subject: [PATCH] add aehateline spell type --- common/spdat.cpp | 1 + common/spdat.h | 3 ++- zone/bot.cpp | 49 ++++++++++++++++++++++---------------- zone/bot_commands/cast.cpp | 2 +- zone/botspellsai.cpp | 1 + zone/mob.cpp | 8 +++++++ 6 files changed, 41 insertions(+), 23 deletions(-) diff --git a/common/spdat.cpp b/common/spdat.cpp index c4086c0ac..bef0507df 100644 --- a/common/spdat.cpp +++ b/common/spdat.cpp @@ -2844,6 +2844,7 @@ bool BOT_SPELL_TYPES_DETRIMENTAL(uint16 spellType, uint8 cls) { case BotSpellTypes::PBAENuke: case BotSpellTypes::Lull: case BotSpellTypes::HateLine: + case BotSpellTypes::AEHateLine: return true; default: return false; diff --git a/common/spdat.h b/common/spdat.h index 1c3bcf52c..3f87672b4 100644 --- a/common/spdat.h +++ b/common/spdat.h @@ -709,6 +709,7 @@ namespace BotSpellTypes constexpr uint16 PetDamageShields = 53; constexpr uint16 PetResistBuffs = 54; constexpr uint16 HateLine = 55; + constexpr uint16 AEHateLine = 56; // Command Spell Types constexpr uint16 Teleport = 100; // this is handled by ^depart so uses other logic @@ -726,7 +727,7 @@ namespace BotSpellTypes constexpr uint16 SummonCorpse = 112; constexpr uint16 START = BotSpellTypes::Nuke; // Do not remove or change this - constexpr uint16 END = BotSpellTypes::HateLine; // Do not remove this, increment as needed + constexpr uint16 END = BotSpellTypes::AEHateLine; // Do not remove this, increment as needed constexpr uint16 COMMANDED_START = BotSpellTypes::Lull; // Do not remove or change this constexpr uint16 COMMANDED_END = BotSpellTypes::SummonCorpse; // Do not remove this, increment as needed } diff --git a/zone/bot.cpp b/zone/bot.cpp index b3158ac35..aee9cf207 100644 --- a/zone/bot.cpp +++ b/zone/bot.cpp @@ -10565,48 +10565,50 @@ uint16 Bot::GetDefaultSpellTypeEngagedPriority(uint16 spellType, uint8 botClass, return 20; case BotSpellTypes::Mez: return 21; - case BotSpellTypes::HateLine: + case BotSpellTypes::AEHateLine: return 22; - case BotSpellTypes::AEDispel: + case BotSpellTypes::HateLine: return 23; - case BotSpellTypes::Dispel: + case BotSpellTypes::AEDispel: return 24; - case BotSpellTypes::AEDebuff: + case BotSpellTypes::Dispel: return 25; - case BotSpellTypes::Debuff: + case BotSpellTypes::AEDebuff: return 26; - case BotSpellTypes::AESnare: + case BotSpellTypes::Debuff: return 27; - case BotSpellTypes::Snare: + case BotSpellTypes::AESnare: return 28; - case BotSpellTypes::AESlow: + case BotSpellTypes::Snare: return 29; - case BotSpellTypes::Slow: + case BotSpellTypes::AESlow: return 30; - case BotSpellTypes::AERoot: + case BotSpellTypes::Slow: return 31; - case BotSpellTypes::Root: + case BotSpellTypes::AERoot: return 32; - case BotSpellTypes::AEDoT: + case BotSpellTypes::Root: return 33; - case BotSpellTypes::DOT: + case BotSpellTypes::AEDoT: return 34; - case BotSpellTypes::AEStun: + case BotSpellTypes::DOT: return 35; - case BotSpellTypes::PBAENuke: + case BotSpellTypes::AEStun: return 36; - case BotSpellTypes::AENukes: + case BotSpellTypes::PBAENuke: return 37; - case BotSpellTypes::AERains: + case BotSpellTypes::AENukes: return 38; - case BotSpellTypes::Stun: + case BotSpellTypes::AERains: return 39; - case BotSpellTypes::Nuke: + case BotSpellTypes::Stun: return 40; - case BotSpellTypes::InCombatBuff: + case BotSpellTypes::Nuke: return 41; - case BotSpellTypes::InCombatBuffSong: + case BotSpellTypes::InCombatBuff: return 42; + case BotSpellTypes::InCombatBuffSong: + return 43; default: return 0; } @@ -11016,6 +11018,7 @@ uint16 Bot::GetSpellListSpellType(uint16 spellType) { case BotSpellTypes::Escape: case BotSpellTypes::HateRedux: case BotSpellTypes::HateLine: + case BotSpellTypes::AEHateLine: case BotSpellTypes::InCombatBuff: case BotSpellTypes::InCombatBuffSong: case BotSpellTypes::OutOfCombatBuffSong: @@ -11393,6 +11396,10 @@ bool Bot::HasValidAETarget(Bot* botCaster, uint16 spell_id, uint16 spellType, Mo } break; + case BotSpellTypes::AEHateLine: + if (!m->IsNPC()) { + continue; + } default: break; } diff --git a/zone/bot_commands/cast.cpp b/zone/bot_commands/cast.cpp index eb1361d8d..fb7f97209 100644 --- a/zone/bot_commands/cast.cpp +++ b/zone/bot_commands/cast.cpp @@ -407,7 +407,7 @@ void bot_command_cast(Client* c, const Seperator* sep) TODO bot rewrite - FIX: Depart Group Cures, Precombat - NEED TO CHECK: precombat, AE Dispel, AE Lifetap + NEED TO CHECK: precombat */ if (bot_iter->GetBotStance() == Stance::Passive || bot_iter->GetHoldFlag() || bot_iter->GetAppearance() == eaDead || bot_iter->IsFeared() || bot_iter->IsSilenced() || bot_iter->IsAmnesiad() || bot_iter->GetHP() < 0) { continue; diff --git a/zone/botspellsai.cpp b/zone/botspellsai.cpp index d3123bf86..35cec06d1 100644 --- a/zone/botspellsai.cpp +++ b/zone/botspellsai.cpp @@ -2076,6 +2076,7 @@ uint8 Bot::GetChanceToCastBySpellType(uint16 spellType) case BotSpellTypes::AELifetap: case BotSpellTypes::AERoot: case BotSpellTypes::PBAENuke: + case BotSpellTypes::AEHateLine: return RuleI(Bots, PercentChanceToCastAEs); case BotSpellTypes::GroupHeals: case BotSpellTypes::GroupCompleteHeals: diff --git a/zone/mob.cpp b/zone/mob.cpp index ec1e18efc..fc4dcd6bd 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -8884,6 +8884,9 @@ std::string Mob::GetSpellTypeNameByID(uint16 spellType) { case BotSpellTypes::HateLine: spellTypeName = "Hate Line"; break; + case BotSpellTypes::AEHateLine: + spellTypeName = "AE Hate Line"; + break; case BotSpellTypes::Lull: spellTypeName = "Lull"; break; @@ -9102,6 +9105,9 @@ std::string Mob::GetSpellTypeShortNameByID(uint16 spellType) { case BotSpellTypes::HateLine: spellTypeName = "hateline"; break; + case BotSpellTypes::AEHateLine: + spellTypeName = "aehateline"; + break; case BotSpellTypes::Lull: spellTypeName = "lull"; break; @@ -9219,6 +9225,7 @@ bool Mob::GetDefaultSpellHold(uint16 spellType, uint8 stance) { case BotSpellTypes::Dispel: case BotSpellTypes::AEFear: case BotSpellTypes::Fear: + case BotSpellTypes::AEHateLine: return true; case BotSpellTypes::Mez: case BotSpellTypes::AEMez: @@ -9524,6 +9531,7 @@ uint8 Mob::GetDefaultSpellMaxThreshold(uint16 spellType, uint8 stance) { case BotSpellTypes::ResistBuffs: case BotSpellTypes::Resurrect: case BotSpellTypes::HateLine: + case BotSpellTypes::AEHateLine: return 100; case BotSpellTypes::GroupHoTHeals: case BotSpellTypes::HoTHeals: