diff --git a/data/sql/updates/pending_db_world/rev_1768147684795663687.sql b/data/sql/updates/pending_db_world/rev_1768147684795663687.sql new file mode 100644 index 000000000..3b0532774 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1768147684795663687.sql @@ -0,0 +1,8 @@ +-- +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 314 AND `id` = 1); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(314, 0, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 20819, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Eliza - In Combat - Cast Frostbolt'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 5354 AND `id` = 0); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(5354, 0, 0, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 11922, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnarl Leafbrother - On Aggro - Cast Entangling Roots'); diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 570f86c53..e1f58ad5d 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -951,6 +951,14 @@ void SmartAI::InitializeAI() if (!(event.action.cast.castFlags & SMARTCAST_MAIN_SPELL)) continue; + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(event.action.cast.spell); + if (spellInfo && spellInfo->IsPositive()) + { + LOG_WARN("scripts.ai", "SmartAI: Creature {} has SMARTCAST_MAIN_SPELL on positive spell {} - positive spells should not be used as main spell", + me->GetEntry(), event.action.cast.spell); + continue; + } + SetMainSpell(event.action.cast.spell); break; } @@ -966,6 +974,11 @@ void SmartAI::InitializeAI() if (!(event.action.cast.castFlags & SMARTCAST_COMBAT_MOVE)) continue; + // Don't use positive (healing/buff) spells to determine attack distance + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(event.action.cast.spell); + if (spellInfo && spellInfo->IsPositive()) + continue; + SetMainSpell(event.action.cast.spell); break; }