diff options
author | offl <11556157+offl@users.noreply.github.com> | 2022-06-12 23:27:05 +0300 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-09-05 18:34:31 +0200 |
commit | ab7010dae103ea316015b1b01f67cfecd5cdfe21 (patch) | |
tree | 3602f2bd34d2848aa9c560a00a3f6e6dbb919973 | |
parent | eafc5214b25494fcf75793e5c6ffcd36e2aaf271 (diff) |
Scripts/Spells: Rework Fire Bomb (Halaa) (#28025)
(cherry picked from commit b5194a15276f5ffc88ebaf38971dce0c2057f10f)
-rw-r--r-- | sql/updates/world/master/2022_09_05_00_world_2022_06_12_00_world.sql | 22 | ||||
-rw-r--r-- | src/server/scripts/Outland/zone_nagrand.cpp | 79 |
2 files changed, 101 insertions, 0 deletions
diff --git a/sql/updates/world/master/2022_09_05_00_world_2022_06_12_00_world.sql b/sql/updates/world/master/2022_09_05_00_world_2022_06_12_00_world.sql new file mode 100644 index 00000000000..bf84803ebe2 --- /dev/null +++ b/sql/updates/world/master/2022_09_05_00_world_2022_06_12_00_world.sql @@ -0,0 +1,22 @@ +-- +UPDATE `creature_template` SET `speed_walk` = 1, `minlevel` = 65, `maxlevel` = 65, `unit_flags` = 33554944 WHERE `entry` = 18225; + +DELETE FROM `creature_template_movement` WHERE `CreatureId` = 18225; +INSERT INTO `creature_template_movement` (`CreatureId`,`Ground`,`Swim`,`Flight`,`Rooted`,`Chase`,`Random`) VALUES +(18225,1,0,1,0,0,0); + +DELETE FROM `smart_scripts` WHERE `entryorguid` = 18225 AND `source_type` = 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`,`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 +(18225,0,0,0,11,0,100,0,0,0,0,0,0,11,31959,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Fire Bomb Target - On Spawn - Cast 'Fire Bomb Target Summon Trigger'"); + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_nagrand_fire_bomb_target_summon_trigger','spell_nagrand_fire_bomb_target_summon_effect','spell_nagrand_fire_bomb_damage_missile'); +DELETE FROM `spell_script_names` WHERE `spell_id` = 34658 AND `ScriptName` = 'spell_gen_despawn_aura'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(31959,'spell_nagrand_fire_bomb_target_summon_trigger'), +(31960,'spell_nagrand_fire_bomb_target_summon_effect'), +(31961,'spell_nagrand_fire_bomb_damage_missile'), +(34658,'spell_gen_despawn_aura'); + +DELETE FROM `spell_custom_attr` WHERE `entry` = 31960; +INSERT INTO `spell_custom_attr` (`entry`, `attributes`) VALUES +(31960,262144); diff --git a/src/server/scripts/Outland/zone_nagrand.cpp b/src/server/scripts/Outland/zone_nagrand.cpp index 4d29f5e639b..a1517edd60f 100644 --- a/src/server/scripts/Outland/zone_nagrand.cpp +++ b/src/server/scripts/Outland/zone_nagrand.cpp @@ -33,6 +33,7 @@ EndContentData */ #include "Player.h" #include "ScriptedEscortAI.h" #include "SpellInfo.h" +#include "SpellScript.h" #include "TemporarySummon.h" /*###### @@ -702,10 +703,88 @@ public: } }; +enum FireBomb +{ + SPELL_FIRE_BOMB_TARGET_SUMMON_EFFECT = 31960, + SPELL_FIRE_BOMB_DAMAGE_MISSILE = 31961, + SPELL_FIRE_BOMB_SUMMON_CATAPULT_BLAZE = 31963, + SPELL_FIRE_BOMB_FLAMES = 34658 +}; + +// 31959 - Fire Bomb Target Summon Trigger +class spell_nagrand_fire_bomb_target_summon_trigger : public SpellScript +{ + PrepareSpellScript(spell_nagrand_fire_bomb_target_summon_trigger); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_FIRE_BOMB_TARGET_SUMMON_EFFECT }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + if (TempSummon* casterSummon = GetCaster()->ToTempSummon()) + if (Unit* summoner = casterSummon->GetSummonerUnit()) + casterSummon->CastSpell(summoner, SPELL_FIRE_BOMB_TARGET_SUMMON_EFFECT); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_nagrand_fire_bomb_target_summon_trigger::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +// 31960 - Fire Bomb Target Summon Effect +class spell_nagrand_fire_bomb_target_summon_effect : public SpellScript +{ + PrepareSpellScript(spell_nagrand_fire_bomb_target_summon_effect); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_FIRE_BOMB_DAMAGE_MISSILE }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetCaster(), SPELL_FIRE_BOMB_DAMAGE_MISSILE); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_nagrand_fire_bomb_target_summon_effect::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +// 31961 - Fire Bomb +class spell_nagrand_fire_bomb_damage_missile : public SpellScript +{ + PrepareSpellScript(spell_nagrand_fire_bomb_damage_missile); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_FIRE_BOMB_SUMMON_CATAPULT_BLAZE, SPELL_FIRE_BOMB_FLAMES }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* target = GetHitUnit(); + target->CastSpell(target, SPELL_FIRE_BOMB_SUMMON_CATAPULT_BLAZE); + target->CastSpell(target, SPELL_FIRE_BOMB_FLAMES); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_nagrand_fire_bomb_damage_missile::HandleScript, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_nagrand() { new npc_maghar_captive(); new npc_kurenai_captive(); new npc_nagrand_banner(); new condition_nagrand_banner(); + RegisterSpellScript(spell_nagrand_fire_bomb_target_summon_trigger); + RegisterSpellScript(spell_nagrand_fire_bomb_target_summon_effect); + RegisterSpellScript(spell_nagrand_fire_bomb_damage_missile); } |