aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeader <keader.android@gmail.com>2017-08-20 17:37:44 -0300
committerShauren <shauren.trinity@gmail.com>2020-08-23 14:39:20 +0200
commit3df7e8b9fb2d4231fe737e2359d87f89f1cc2739 (patch)
treef4cb4cc33ca38c5121e5cff434cf43e26d1a7809
parent07e903a23d16a93f9a9ca2e1fdac06cd6debd824 (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.sql2
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp252
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();
}