aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2025_01_17_02_world.sql7
-rw-r--r--src/server/scripts/Spells/spell_dh.cpp33
2 files changed, 40 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_01_17_02_world.sql b/sql/updates/world/master/2025_01_17_02_world.sql
new file mode 100644
index 00000000000..d436c5f01ee
--- /dev/null
+++ b/sql/updates/world/master/2025_01_17_02_world.sql
@@ -0,0 +1,7 @@
+DELETE FROM `areatrigger_template` WHERE (`Id`=26042 AND `IsCustom`=0);
+INSERT INTO `areatrigger_template` (`Id`, `IsCustom`, `Flags`, `VerifiedBuild`) VALUES
+(26042, 0, 0, 58187);
+
+DELETE FROM `areatrigger_create_properties` WHERE (`Id`=21832 AND `IsCustom`=0);
+INSERT INTO `areatrigger_create_properties` (`Id`, `IsCustom`, `AreaTriggerId`, `IsAreatriggerCustom`, `Flags`, `MoveCurveId`, `ScaleCurveId`, `MorphCurveId`, `FacingCurveId`, `AnimId`, `AnimKitId`, `DecalPropertiesId`, `SpellForVisuals`, `TimeToTargetScale`, `Shape`, `ShapeData0`, `ShapeData1`, `ShapeData2`, `ShapeData3`, `ShapeData4`, `ShapeData5`, `ShapeData6`, `ShapeData7`, `ScriptName`, `VerifiedBuild`) VALUES
+(21832, 0, 26042, 0, 0, 21753, 0, 0, 0, -1, 0, 0, NULL, 2452, 4, 6, 6, 4, 4, 0.3, 0.3, 0, 0, 'at_dh_glaive_tempest', 58187); -- Spell: 342817 (Glaive Tempest)
diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp
index cb959291444..0344cddcda2 100644
--- a/src/server/scripts/Spells/spell_dh.cpp
+++ b/src/server/scripts/Spells/spell_dh.cpp
@@ -33,6 +33,7 @@
#include "SpellHistory.h"
#include "SpellMgr.h"
#include "SpellScript.h"
+#include "TaskScheduler.h"
#include "Unit.h"
enum DemonHunterSpells
@@ -126,6 +127,7 @@ enum DemonHunterSpells
SPELL_DH_FURIOUS_GAZE = 343311,
SPELL_DH_FURIOUS_GAZE_BUFF = 343312,
SPELL_DH_FURIOUS_THROWS = 393029,
+ SPELL_DH_GLAIVE_TEMPEST = 342857,
SPELL_DH_GLIDE = 131347,
SPELL_DH_GLIDE_DURATION = 197154,
SPELL_DH_GLIDE_KNOCKBACK = 196353,
@@ -931,6 +933,36 @@ class spell_dh_furious_gaze : public AuraScript
}
};
+// 342817 - Glaive Tempest
+// ID - 21832
+struct at_dh_glaive_tempest : AreaTriggerAI
+{
+ using AreaTriggerAI::AreaTriggerAI;
+
+ void OnCreate(Spell const* /*creatingSpell*/) override
+ {
+ _scheduler.Schedule(0ms, [this](TaskContext task)
+ {
+ std::chrono::duration<float> period = 500ms; // 500ms, affected by haste
+ if (Unit* caster = at->GetCaster())
+ {
+ period *= *caster->m_unitData->ModHaste;
+ caster->CastSpell(at->GetPosition(), SPELL_DH_GLAIVE_TEMPEST, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR);
+ caster->CastSpell(at->GetPosition(), SPELL_DH_GLAIVE_TEMPEST, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR);
+ }
+ task.Repeat(duration_cast<Milliseconds>(period));
+ });
+ }
+
+ void OnUpdate(uint32 diff) override
+ {
+ _scheduler.Update(diff);
+ }
+
+private:
+ TaskScheduler _scheduler;
+};
+
// Called by 162264 - Metamorphosis
class spell_dh_inner_demon : public AuraScript
{
@@ -1465,6 +1497,7 @@ void AddSC_demon_hunter_spell_scripts()
RegisterSpellScript(spell_dh_felblade_cooldown_reset_proc);
RegisterSpellScript(spell_dh_fiery_brand);
RegisterSpellScript(spell_dh_furious_gaze);
+ RegisterAreaTriggerAI(at_dh_glaive_tempest);
RegisterSpellScript(spell_dh_inner_demon);
RegisterAreaTriggerAI(at_dh_inner_demon);
RegisterSpellScript(spell_dh_know_your_enemy);