aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2014_01_29_01_world_spell_script_names_434.sql4
-rw-r--r--src/server/scripts/Spells/spell_hunter.cpp58
-rw-r--r--src/server/scripts/Spells/spell_mage.cpp56
-rw-r--r--src/server/scripts/Spells/spell_shaman.cpp16
4 files changed, 127 insertions, 7 deletions
diff --git a/sql/updates/world/2014_01_29_01_world_spell_script_names_434.sql b/sql/updates/world/2014_01_29_01_world_spell_script_names_434.sql
new file mode 100644
index 00000000000..7fe4b70bc38
--- /dev/null
+++ b/sql/updates/world/2014_01_29_01_world_spell_script_names_434.sql
@@ -0,0 +1,4 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` IN (90355,80353);
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(90355,'spell_hun_ancient_hysteria'),
+(80353,'spell_mage_time_warp');
diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp
index b1f8b536c98..c924b460cc0 100644
--- a/src/server/scripts/Spells/spell_hunter.cpp
+++ b/src/server/scripts/Spells/spell_hunter.cpp
@@ -37,6 +37,7 @@ enum HunterSpells
SPELL_HUNTER_FIRE = 82926,
SPELL_HUNTER_GENERIC_ENERGIZE_FOCUS = 91954,
SPELL_HUNTER_IMPROVED_MEND_PET = 24406,
+ SPELL_HUNTER_INSANITY = 95809,
SPELL_HUNTER_INVIGORATION_TRIGGERED = 53398,
SPELL_HUNTER_LOCK_AND_LOAD = 56453,
SPELL_HUNTER_MASTERS_CALL_TRIGGERED = 62305,
@@ -52,8 +53,62 @@ enum HunterSpells
SPELL_HUNTER_SNIPER_TRAINING_R1 = 53302,
SPELL_HUNTER_SNIPER_TRAINING_BUFF_R1 = 64418,
SPELL_HUNTER_STEADY_SHOT_FOCUS = 77443,
- SPELL_HUNTER_THRILL_OF_THE_HUNT = 34720,
+ SPELL_HUNTER_THRILL_OF_THE_HUNT = 34720
+};
+
+enum MiscSpells
+{
SPELL_DRAENEI_GIFT_OF_THE_NAARU = 59543,
+ SPELL_MAGE_TEMPORAL_DISPLACEMENT = 80354,
+ SPELL_SHAMAN_EXHAUSTION = 57723,
+ SPELL_SHAMAN_SATED = 57724
+};
+
+// 90355 - Ancient Hysteria
+class spell_hun_ancient_hysteria : public SpellScriptLoader
+{
+ public:
+ spell_hun_ancient_hysteria() : SpellScriptLoader("spell_hun_ancient_hysteria") { }
+
+ class spell_hun_ancient_hysteria_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_hun_ancient_hysteria_SpellScript);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_HUNTER_INSANITY)
+ || !sSpellMgr->GetSpellInfo(SPELL_MAGE_TEMPORAL_DISPLACEMENT)
+ || !sSpellMgr->GetSpellInfo(SPELL_SHAMAN_EXHAUSTION)
+ || !sSpellMgr->GetSpellInfo(SPELL_SHAMAN_SATED))
+ return false;
+ return true;
+ }
+
+ void RemoveInvalidTargets(std::list<WorldObject*>& targets)
+ {
+ targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_HUNTER_INSANITY));
+ targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_MAGE_TEMPORAL_DISPLACEMENT));
+ targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_EXHAUSTION));
+ targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_SATED));
+ }
+
+ void ApplyDebuff()
+ {
+ if (Unit* target = GetHitUnit())
+ target->CastSpell(target, SPELL_HUNTER_INSANITY, true);
+ }
+
+ void Register() OVERRIDE
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_hun_ancient_hysteria_SpellScript::RemoveInvalidTargets, EFFECT_ALL, TARGET_UNIT_CASTER_AREA_RAID);
+ AfterHit += SpellHitFn(spell_hun_ancient_hysteria_SpellScript::ApplyDebuff);
+ }
+ };
+
+ SpellScript* GetSpellScript() const OVERRIDE
+ {
+ return new spell_hun_ancient_hysteria_SpellScript();
+ }
};
// 53209 - Chimera Shot
@@ -1027,6 +1082,7 @@ class spell_hun_tnt : public SpellScriptLoader
void AddSC_hunter_spell_scripts()
{
+ new spell_hun_ancient_hysteria();
new spell_hun_chimera_shot();
new spell_hun_cobra_shot();
new spell_hun_disengage();
diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp
index 83f594fd7b1..76b177b8018 100644
--- a/src/server/scripts/Spells/spell_mage.cpp
+++ b/src/server/scripts/Spells/spell_mage.cpp
@@ -81,7 +81,8 @@ enum MageSpells
SPELL_MAGE_RING_OF_FROST_FREEZE = 82691,
SPELL_MAGE_RING_OF_FROST_DUMMY = 91264,
- SPELL_MAGE_FINGERS_OF_FROST = 44544
+ SPELL_MAGE_FINGERS_OF_FROST = 44544,
+ SPELL_MAGE_TEMPORAL_DISPLACEMENT = 80354,
};
enum MageIcons
@@ -95,7 +96,10 @@ enum MageIcons
enum MiscSpells
{
- SPELL_PRIEST_SHADOW_WORD_DEATH = 32409
+ SPELL_HUNTER_INSANITY = 95809,
+ SPELL_PRIEST_SHADOW_WORD_DEATH = 32409,
+ SPELL_SHAMAN_EXHAUSTION = 57723,
+ SPELL_SHAMAN_SATED = 57724
};
// -31571 - Arcane Potency
@@ -1349,6 +1353,53 @@ class spell_mage_ring_of_frost_freeze : public SpellScriptLoader
}
};
+// 80353 - Time Warp
+class spell_mage_time_warp : public SpellScriptLoader
+{
+ public:
+ spell_mage_time_warp() : SpellScriptLoader("spell_mage_time_warp") { }
+
+ class spell_mage_time_warp_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_mage_time_warp_SpellScript);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_TEMPORAL_DISPLACEMENT)
+ || !sSpellMgr->GetSpellInfo(SPELL_HUNTER_INSANITY)
+ || !sSpellMgr->GetSpellInfo(SPELL_SHAMAN_EXHAUSTION)
+ || !sSpellMgr->GetSpellInfo(SPELL_SHAMAN_SATED))
+ return false;
+ return true;
+ }
+
+ void RemoveInvalidTargets(std::list<WorldObject*>& targets)
+ {
+ targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_MAGE_TEMPORAL_DISPLACEMENT));
+ targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_HUNTER_INSANITY));
+ targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_EXHAUSTION));
+ targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_SATED));
+ }
+
+ void ApplyDebuff()
+ {
+ if (Unit* target = GetHitUnit())
+ target->CastSpell(target, SPELL_MAGE_TEMPORAL_DISPLACEMENT, true);
+ }
+
+ void Register() OVERRIDE
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_mage_time_warp_SpellScript::RemoveInvalidTargets, EFFECT_ALL, TARGET_UNIT_CASTER_AREA_RAID);
+ AfterHit += SpellHitFn(spell_mage_time_warp_SpellScript::ApplyDebuff);
+ }
+ };
+
+ SpellScript* GetSpellScript() const OVERRIDE
+ {
+ return new spell_mage_time_warp_SpellScript();
+ }
+};
+
// 33395 Water Elemental's Freeze
/// Updated 4.3.4
class spell_mage_water_elemental_freeze : public SpellScriptLoader
@@ -1432,5 +1483,6 @@ void AddSC_mage_spell_scripts()
new spell_mage_replenish_mana();
new spell_mage_ring_of_frost();
new spell_mage_ring_of_frost_freeze();
+ new spell_mage_time_warp();
new spell_mage_water_elemental_freeze();
}
diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp
index c3ea8ca2d62..3dbda3489f9 100644
--- a/src/server/scripts/Spells/spell_shaman.cpp
+++ b/src/server/scripts/Spells/spell_shaman.cpp
@@ -30,8 +30,6 @@
enum ShamanSpells
{
- SPELL_HUNTER_INSANITY = 95809,
- SPELL_MAGE_TEMPORAL_DISPLACEMENT = 80354,
SPELL_SHAMAN_ANCESTRAL_AWAKENING = 52759,
SPELL_SHAMAN_ANCESTRAL_AWAKENING_PROC = 52752,
SPELL_SHAMAN_BIND_SIGHT = 6277,
@@ -71,6 +69,12 @@ enum ShamanSpellIcons
SHAMAN_ICON_ID_SHAMAN_LAVA_FLOW = 3087
};
+enum MiscSpells
+{
+ SPELL_HUNTER_INSANITY = 95809,
+ SPELL_MAGE_TEMPORAL_DISPLACEMENT = 80354
+};
+
// -51556 - Ancestral Awakening
class spell_sha_ancestral_awakening : public SpellScriptLoader
{
@@ -169,7 +173,9 @@ class spell_sha_bloodlust : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_SATED))
+ if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_SATED)
+ || !sSpellMgr->GetSpellInfo(SPELL_HUNTER_INSANITY)
+ || !sSpellMgr->GetSpellInfo(SPELL_MAGE_TEMPORAL_DISPLACEMENT))
return false;
return true;
}
@@ -692,7 +698,9 @@ class spell_sha_heroism : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_EXHAUSTION))
+ if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_EXHAUSTION)
+ || !sSpellMgr->GetSpellInfo(SPELL_HUNTER_INSANITY)
+ || !sSpellMgr->GetSpellInfo(SPELL_MAGE_TEMPORAL_DISPLACEMENT))
return false;
return true;
}