diff --git a/data/sql/updates/pending_db_world/rev_1784463884644221000.sql b/data/sql/updates/pending_db_world/rev_1784463884644221000.sql new file mode 100644 index 000000000..2a95a387a --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1784463884644221000.sql @@ -0,0 +1,8 @@ +-- +-- XT-002 Deconstructor: restore Searing Light / Gravity Bomb single random non-tank targeting +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_xt002_searing_light_gravity_bomb'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(63018, 'spell_xt002_searing_light_gravity_bomb'), +(65121, 'spell_xt002_searing_light_gravity_bomb'), +(63024, 'spell_xt002_searing_light_gravity_bomb'), +(64234, 'spell_xt002_searing_light_gravity_bomb'); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index 75820d461..0321c7266 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -18,6 +18,7 @@ #include "AchievementCriteriaScript.h" #include "Containers.h" #include "CreatureScript.h" +#include "GridNotifiers.h" #include "InstanceScript.h" #include "MotionMaster.h" #include "ObjectAccessor.h" @@ -709,6 +710,26 @@ private: TaskScheduler _scheduler; }; +// 63018, 65121 - Searing Light / 63024, 64234 - Gravity Bomb +// Both hit a single random player, never the current tank +class spell_xt002_searing_light_gravity_bomb : public SpellScript +{ + PrepareSpellScript(spell_xt002_searing_light_gravity_bomb); + + void FilterTargets(std::list& targets) + { + if (Unit* victim = GetCaster()->GetVictim()) + targets.remove_if(Acore::ObjectGUIDCheck(victim->GetGUID(), true)); + + Acore::Containers::RandomResize(targets, 1); + } + + void Register() override + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_xt002_searing_light_gravity_bomb::FilterTargets, EFFECT_ALL, TARGET_UNIT_DEST_AREA_ENEMY); + } +}; + // 63018, 65121 - Searing Light class spell_xt002_searing_light_spawn_life_spark : public AuraScript { @@ -1057,6 +1078,7 @@ void AddSC_boss_xt002() RegisterUlduarCreatureAI(npc_boombot); RegisterUlduarCreatureAI(npc_life_spark); RegisterUlduarCreatureAI(npc_xt_void_zone); + RegisterSpellScript(spell_xt002_searing_light_gravity_bomb); RegisterSpellScript(spell_xt002_searing_light_spawn_life_spark); RegisterSpellScript(spell_xt002_gravity_bomb_aura); RegisterSpellScript(spell_xt002_gravity_bomb_damage);