fix(Scripts/Hyjal): Limit Anetheron sleep to 3 targets (#18929)

This commit is contained in:
Andrew
2024-05-20 05:40:28 -03:00
committed by GitHub
parent ce32e51552
commit 0aaf521423
2 changed files with 26 additions and 3 deletions

View File

@@ -0,0 +1,4 @@
--
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_anetheron_sleep';
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(31298, 'spell_anetheron_sleep');

View File

@@ -17,6 +17,8 @@
#include "CreatureScript.h" #include "CreatureScript.h"
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "hyjal.h" #include "hyjal.h"
enum Spells enum Spells
@@ -58,18 +60,18 @@ public:
scheduler.Schedule(20s, 28s, [this](TaskContext context) scheduler.Schedule(20s, 28s, [this](TaskContext context)
{ {
if (DoCastRandomTarget(SPELL_CARRION_SWARM, 0, 60.f)) if (DoCastRandomTarget(SPELL_CARRION_SWARM, 0, 60.f) == SPELL_CAST_OK)
Talk(SAY_SWARM); Talk(SAY_SWARM);
context.Repeat(10s, 15s); context.Repeat(10s, 15s);
}).Schedule(25s, 32s, [this](TaskContext context) }).Schedule(25s, 32s, [this](TaskContext context)
{ {
if (DoCastRandomTarget(SPELL_SLEEP)) if (DoCastRandomTarget(SPELL_SLEEP) == SPELL_CAST_OK)
Talk(SAY_SLEEP); Talk(SAY_SLEEP);
context.Repeat(35s, 48s); context.Repeat(35s, 48s);
}).Schedule(30s, 48s, [this](TaskContext context) }).Schedule(30s, 48s, [this](TaskContext context)
{ {
if (DoCastRandomTarget(SPELL_INFERNO)) if (DoCastRandomTarget(SPELL_INFERNO) == SPELL_CAST_OK)
Talk(SAY_INFERNO); Talk(SAY_INFERNO);
context.Repeat(50s, 55s); context.Repeat(50s, 55s);
@@ -138,7 +140,24 @@ private:
}; };
class spell_anetheron_sleep : public SpellScript
{
PrepareSpellScript(spell_anetheron_sleep);
void FilterTargets(std::list<WorldObject*>& targets)
{
if (!targets.empty())
Acore::Containers::RandomResize(targets, 3);
}
void Register() override
{
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_anetheron_sleep::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
}
};
void AddSC_boss_anetheron() void AddSC_boss_anetheron()
{ {
RegisterHyjalAI(boss_anetheron); RegisterHyjalAI(boss_anetheron);
RegisterSpellScript(spell_anetheron_sleep);
} }