diff options
author | Keader <keader.android@gmail.com> | 2017-08-20 17:37:44 -0300 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2020-08-23 14:39:20 +0200 |
commit | 3df7e8b9fb2d4231fe737e2359d87f89f1cc2739 (patch) | |
tree | f4cb4cc33ca38c5121e5cff434cf43e26d1a7809 | |
parent | 07e903a23d16a93f9a9ca2e1fdac06cd6debd824 (diff) |
Core/Razorscale: Codestyle Updates
* Removing spelldifficulty_dbc to make portable to master
* Updated to new Spell/Aurascript model
(cherry picked from commit 203c5f705806f6f39a8392c3164ff04fc5415d58)
-rw-r--r-- | sql/updates/world/master/2020_08_23_02_world_2017_08_20_00_world.sql | 2 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp | 252 |
2 files changed, 115 insertions, 139 deletions
diff --git a/sql/updates/world/master/2020_08_23_02_world_2017_08_20_00_world.sql b/sql/updates/world/master/2020_08_23_02_world_2017_08_20_00_world.sql new file mode 100644 index 00000000000..bf0546ff004 --- /dev/null +++ b/sql/updates/world/master/2020_08_23_02_world_2017_08_20_00_world.sql @@ -0,0 +1,2 @@ +UPDATE `creature_template` SET `ScriptName`='npc_razorscale_devouring_flame' WHERE `entry`=34188; -- Razorscale Devouring Flame Stalker +DELETE FROM `creature_template_addon` WHERE `entry` IN (34188,34189); -- Razorscale Devouring Flame Stalker diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp index 5706c8f1b84..74dbbdb9ba9 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp @@ -59,7 +59,6 @@ enum Spells SPELL_DEVOURING_FLAME = 63236, SPELL_WING_BUFFET = 62666, SPELL_FIREBOLT = 62669, - SPELL_FLAME_BREATH = 63317, SPELL_FUSE_ARMOR = 64821, SPELL_FUSED_ARMOR = 64774, SPELL_STUN_SELF = 62794, @@ -84,10 +83,6 @@ enum Spells SPELL_TRIGGER_SUMMON_IRON_VRYKUL = 63798, SPELL_SUMMON_IRON_DWARF_WATCHER = 63135, - // Dark Rune Watcher - SPELL_CHAIN_LIGHTNING = 64758, - SPELL_LIGHTNING_BOLT = 63809, - // Dark Rune Guardian SPELL_STORMSTRIKE = 64757, @@ -103,6 +98,11 @@ enum Spells SPELL_SHACKLE = 62646 }; +#define DEVOURING_FLAME_GROUND RAID_MODE<uint32>(64709, 64734) +#define FLAME_BREATH RAID_MODE<uint32>(63317, 64021) +#define CHAIN_LIGHTNING RAID_MODE<uint32>(64758, 64759) +#define LIGHTNING_BOLT RAID_MODE<uint32>(63809, 64696) + enum Actions { ACTION_START_FIGHT = 1, @@ -612,12 +612,12 @@ public: case EVENT_FLAME_BREATH: me->RemoveAurasDueToSpell(SPELL_STUN_SELF); Talk(EMOTE_BREATH, me); - DoCastVictim(SPELL_FLAME_BREATH); + DoCastVictim(FLAME_BREATH); events.ScheduleEvent(EVENT_WING_BUFFET, Seconds(2), 0, PHASE_GROUND); break; case EVENT_FLAME_BREATH_GROUND: Talk(EMOTE_BREATH, me); - DoCastVictim(SPELL_FLAME_BREATH); + DoCastVictim(FLAME_BREATH); events.Repeat(Seconds(15), Seconds(18)); break; case EVENT_WING_BUFFET: @@ -1360,11 +1360,11 @@ public: me->SetInCombatWithZone(); break; case EVENT_LIGHTNING_BOLT: - DoCastVictim(SPELL_LIGHTNING_BOLT); + DoCastVictim(LIGHTNING_BOLT); _events.Repeat(Seconds(3)); break; case EVENT_CHAIN_LIGHTNING: - DoCastVictim(SPELL_CHAIN_LIGHTNING); + DoCastVictim(CHAIN_LIGHTNING); _events.Repeat(Seconds(9), Seconds(15)); break; default: @@ -1551,7 +1551,7 @@ public: struct npc_razorscale_harpoon_fire_stateAI : public ScriptedAI { - npc_razorscale_harpoon_fire_stateAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()){ } + npc_razorscale_harpoon_fire_stateAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { } void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override { @@ -1572,6 +1572,27 @@ public: } }; +class npc_razorscale_devouring_flame : public CreatureScript +{ +public: + npc_razorscale_devouring_flame() : CreatureScript("npc_razorscale_devouring_flame") { } + + struct npc_razorscale_devouring_flameAI : public ScriptedAI + { + npc_razorscale_devouring_flameAI(Creature* creature) : ScriptedAI(creature) { } + + void Reset() override + { + DoCastSelf(DEVOURING_FLAME_GROUND); + } + }; + + CreatureAI* GetAI(Creature* creature) const override + { + return GetUlduarAI<npc_razorscale_devouring_flameAI>(creature); + } +}; + class go_razorscale_harpoon : public GameObjectScript { public: @@ -1678,166 +1699,118 @@ public: }; /* 63317 - Flame Breath - 64021 - Flame Breath -*/ -class spell_razorscale_flame_breath : public SpellScriptLoader + 64021 - Flame Breath */ +class spell_razorscale_flame_breath : public SpellScript { -public: - spell_razorscale_flame_breath() : SpellScriptLoader("spell_razorscale_flame_breath") { } + PrepareSpellScript(spell_razorscale_flame_breath); - class spell_razorscale_flame_breath_SpellScript : public SpellScript + void CheckDamage() { - PrepareSpellScript(spell_razorscale_flame_breath_SpellScript); - - void CheckDamage() - { - Creature* target = GetHitCreature(); - if (!target || target->GetEntry() != NPC_DARK_RUNE_GUARDIAN || !target->IsAlive()) - return; + Creature* target = GetHitCreature(); + if (!target || target->GetEntry() != NPC_DARK_RUNE_GUARDIAN || !target->IsAlive()) + return; - if (GetHitDamage() >= int32(target->GetHealth())) - target->AI()->SetData(DATA_IRON_DWARF_MEDIUM_RARE, 1); - } + if (GetHitDamage() >= int32(target->GetHealth())) + target->AI()->SetData(DATA_IRON_DWARF_MEDIUM_RARE, 1); + } - void FilterTargets(std::list<WorldObject*>& targets) + void FilterTargets(std::list<WorldObject*>& targets) + { + targets.remove_if([](WorldObject* obj) { - targets.remove_if([](WorldObject* obj) - { - if (Creature* target = obj->ToCreature()) - if (target->IsTrigger()) - return true; - - return false; - }); - } - + if (Creature* target = obj->ToCreature()) + if (target->IsTrigger()) + return true; - void Register() override - { - OnHit += SpellHitFn(spell_razorscale_flame_breath_SpellScript::CheckDamage); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_razorscale_flame_breath_SpellScript::FilterTargets, EFFECT_1, TARGET_UNIT_CONE_ENTRY); - } - }; + return false; + }); + } - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_razorscale_flame_breath_SpellScript(); + OnHit += SpellHitFn(spell_razorscale_flame_breath::CheckDamage); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_razorscale_flame_breath::FilterTargets, EFFECT_1, TARGET_UNIT_CONE_ENTRY); } }; /* 63968 - Summon Iron Dwarves 63970 - Summon Iron Dwarves - 63969 - Summon Iron Dwarves -*/ -class spell_razorscale_summon_iron_dwarves : public SpellScriptLoader + 63969 - Summon Iron Dwarves */ +class spell_razorscale_summon_iron_dwarves : public SpellScript { -public: spell_razorscale_summon_iron_dwarves() : SpellScriptLoader("spell_razorscale_summon_iron_dwarves") { } - - class spell_razorscale_summon_iron_dwarves_SpellScript : public SpellScript - { - PrepareSpellScript(spell_razorscale_summon_iron_dwarves_SpellScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo - ({ - SPELL_SUMMON_IRON_DWARF_GUARDIAN, - SPELL_SUMMON_IRON_DWARF_WATCHER - }); - } + PrepareSpellScript(spell_razorscale_summon_iron_dwarves); - void HandleScriptEffect(SpellEffIndex /*effIndex*/) - { - Unit* caster = GetCaster(); - switch (GetSpellInfo()->Id) - { - case SPELL_TRIGGER_SUMMON_IRON_DWARVES: - caster->CastSpell(caster, SPELL_SUMMON_IRON_DWARF_GUARDIAN, true); - caster->CastSpell(caster, SPELL_SUMMON_IRON_DWARF_GUARDIAN, true); - caster->CastSpell(caster, SPELL_SUMMON_IRON_DWARF_WATCHER, true); - break; - case SPELL_TRIGGER_SUMMON_IRON_DWARVES_2: - case SPELL_TRIGGER_SUMMON_IRON_DWARVES_3: - caster->CastSpell(caster, SPELL_SUMMON_IRON_DWARF_GUARDIAN, true); - caster->CastSpell(caster, SPELL_SUMMON_IRON_DWARF_WATCHER, true); - caster->CastSpell(caster, SPELL_SUMMON_IRON_DWARF_WATCHER, true); - break; - default: - break; - } - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_razorscale_summon_iron_dwarves_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo + ({ + SPELL_SUMMON_IRON_DWARF_GUARDIAN, + SPELL_SUMMON_IRON_DWARF_WATCHER + }); + } - SpellScript* GetSpellScript() const override - { - return new spell_razorscale_summon_iron_dwarves_SpellScript(); + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + switch (GetSpellInfo()->Id) + { + case SPELL_TRIGGER_SUMMON_IRON_DWARVES: + caster->CastSpell(caster, SPELL_SUMMON_IRON_DWARF_GUARDIAN, true); + caster->CastSpell(caster, SPELL_SUMMON_IRON_DWARF_GUARDIAN, true); + caster->CastSpell(caster, SPELL_SUMMON_IRON_DWARF_WATCHER, true); + break; + case SPELL_TRIGGER_SUMMON_IRON_DWARVES_2: + case SPELL_TRIGGER_SUMMON_IRON_DWARVES_3: + caster->CastSpell(caster, SPELL_SUMMON_IRON_DWARF_GUARDIAN, true); + caster->CastSpell(caster, SPELL_SUMMON_IRON_DWARF_WATCHER, true); + caster->CastSpell(caster, SPELL_SUMMON_IRON_DWARF_WATCHER, true); + break; + default: + break; } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_razorscale_summon_iron_dwarves::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } }; // 64771 - Fuse Armor -class spell_razorscale_fuse_armor : public SpellScriptLoader +class spell_razorscale_fuse_armor : public AuraScript { -public: - spell_razorscale_fuse_armor() : SpellScriptLoader("spell_razorscale_fuse_armor") { } + PrepareAuraScript(spell_razorscale_fuse_armor); - class spell_razorscale_fuse_armor_AuraScript : public AuraScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareAuraScript(spell_razorscale_fuse_armor_AuraScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo - ({ - SPELL_FUSED_ARMOR - }); - } - - void HandleFused(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - if (GetStackAmount() == 5) - GetTarget()->CastSpell(GetTarget(), SPELL_FUSED_ARMOR, true); - } + return ValidateSpellInfo({ SPELL_FUSED_ARMOR }); + } - void Register() override - { - AfterEffectApply += AuraEffectRemoveFn(spell_razorscale_fuse_armor_AuraScript::HandleFused, EFFECT_1, SPELL_AURA_MOD_MELEE_HASTE, AURA_EFFECT_HANDLE_REAL); - } - }; + void HandleFused(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (GetStackAmount() == 5) + GetTarget()->CastSpell(GetTarget(), SPELL_FUSED_ARMOR, true); + } - AuraScript* GetAuraScript() const override + void Register() override { - return new spell_razorscale_fuse_armor_AuraScript(); + AfterEffectApply += AuraEffectRemoveFn(spell_razorscale_fuse_armor::HandleFused, EFFECT_1, SPELL_AURA_MOD_MELEE_HASTE, AURA_EFFECT_HANDLE_REAL); } }; -class spell_razorscale_firebolt : public SpellScriptLoader +// 62669 - Firebolt +class spell_razorscale_firebolt : public SpellScript { -public: - spell_razorscale_firebolt() : SpellScriptLoader("spell_razorscale_firebolt") { } + PrepareSpellScript(spell_razorscale_firebolt); - class spell_razorscale_firebolt_SpellScript : public SpellScript + void FilterTargets(std::list<WorldObject*>& targets) { - PrepareSpellScript(spell_razorscale_firebolt_SpellScript); - - void FilterTargets(std::list<WorldObject*>& targets) - { - targets.remove_if([](WorldObject* obj) { return obj->GetEntry() != NPC_RAZORSCALE_HARPOON_FIRE_STATE; }); - } - - void Register() override - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_razorscale_firebolt_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY); - } - }; + targets.remove_if([](WorldObject* obj) { return obj->GetEntry() != NPC_RAZORSCALE_HARPOON_FIRE_STATE; }); + } - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_razorscale_firebolt_SpellScript(); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_razorscale_firebolt::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY); } }; @@ -1880,12 +1853,13 @@ void AddSC_boss_razorscale() new npc_darkrune_guardian(); new npc_darkrune_sentinel(); new npc_razorscale_harpoon_fire_state(); + new npc_razorscale_devouring_flame(); new go_razorscale_harpoon(); new go_razorscale_mole_machine(); - new spell_razorscale_flame_breath(); - new spell_razorscale_summon_iron_dwarves(); - new spell_razorscale_fuse_armor(); - new spell_razorscale_firebolt(); + RegisterSpellScript(spell_razorscale_flame_breath); + RegisterSpellScript(spell_razorscale_summon_iron_dwarves); + RegisterAuraScript(spell_razorscale_fuse_armor); + RegisterSpellScript(spell_razorscale_firebolt); new achievement_iron_dwarf_medium_rare(); new achievement_quick_shave(); } |