aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2025-05-24 21:32:38 +0200
committerGitHub <noreply@github.com>2025-05-24 21:32:38 +0200
commit1c360b8e11a1fb5c165558704407bed3778f104e (patch)
treebfd89e481f9e318949da59518ae927bfd1852ad8
parentf710796c64e6affe8d66e014de33c42b490f0bd6 (diff)
Scripts/Spells: Implement rogue talent Deepening Shadows (#30980)
-rw-r--r--sql/updates/world/master/2025_05_24_08_world.sql3
-rw-r--r--src/server/scripts/Spells/spell_rogue.cpp31
2 files changed, 34 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_05_24_08_world.sql b/sql/updates/world/master/2025_05_24_08_world.sql
new file mode 100644
index 00000000000..196e5144195
--- /dev/null
+++ b/sql/updates/world/master/2025_05_24_08_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_rog_deepening_shadows';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(185314, 'spell_rog_deepening_shadows');
diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp
index 961cde8864d..6838ded7646 100644
--- a/src/server/scripts/Spells/spell_rogue.cpp
+++ b/src/server/scripts/Spells/spell_rogue.cpp
@@ -80,6 +80,7 @@ enum RogueSpells
SPELL_ROGUE_RUTHLESS_PRECISION = 193357,
SPELL_ROGUE_SANCTUARY = 98877,
SPELL_ROGUE_SKULL_AND_CROSSBONES = 199603,
+ SPELL_ROGUE_SHADOW_DANCE = 185313,
SPELL_ROGUE_SHADOW_FOCUS = 108209,
SPELL_ROGUE_SHADOW_FOCUS_EFFECT = 112942,
SPELL_ROGUE_SHIV_NATURE_DAMAGE = 319504,
@@ -342,6 +343,35 @@ class spell_rog_deadly_poison : public SpellScript
}
};
+// 185314 - Deepening Shadows
+class spell_rog_deepening_shadows : public AuraScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_ROGUE_SHADOW_DANCE });
+ }
+
+ static bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& procEvent)
+ {
+ if (Spell const* procSpell = procEvent.GetProcSpell())
+ return procSpell->GetPowerTypeCostAmount(POWER_COMBO_POINTS) > 0;
+
+ return false;
+ }
+
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& procInfo) const
+ {
+ Milliseconds amount = -Seconds(aurEff->GetAmount()) * *procInfo.GetProcSpell()->GetPowerTypeCostAmount(POWER_COMBO_POINTS);
+ GetTarget()->GetSpellHistory()->ModifyChargeRecoveryTime(sSpellMgr->AssertSpellInfo(SPELL_ROGUE_SHADOW_DANCE, GetCastDifficulty())->ChargeCategoryId, amount / 10);
+ }
+
+ void Register() override
+ {
+ DoCheckEffectProc += AuraCheckEffectProcFn(spell_rog_deepening_shadows::CheckProc, EFFECT_0, SPELL_AURA_DUMMY);
+ OnEffectProc += AuraEffectProcFn(spell_rog_deepening_shadows::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
+};
+
// 32645 - Envenom
class spell_rog_envenom : public SpellScript
{
@@ -1320,6 +1350,7 @@ void AddSC_rogue_spell_scripts()
RegisterSpellScript(spell_rog_blade_flurry);
RegisterSpellScript(spell_rog_cheat_death);
RegisterSpellScript(spell_rog_deadly_poison);
+ RegisterSpellScript(spell_rog_deepening_shadows);
RegisterSpellScript(spell_rog_envenom);
RegisterSpellScript(spell_rog_eviscerate);
RegisterSpellScript(spell_rog_grand_melee);