aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSorikoff <46191832+Sorikoff@users.noreply.github.com>2019-06-28 18:15:16 +0000
committerGiacomo Pozzoni <giacomopoz@gmail.com>2019-06-28 20:15:16 +0200
commit63f548921c268cc9f30af68bf9b41c80df0492ac (patch)
tree08dd052930ed48ad4b94e2b45bdf8090f65f988b
parentcd73664f53db3daad6c7e17edbcd0212ab383c0d (diff)
Scripts/Spells: Dimensional Ripper - Area 52 (#23505)
* Scripts/Spells: Dimensional Ripper - Area 52 * Rename 9999_99_99_99_world.sql to 2019_06_28_00_world.sql
-rw-r--r--sql/updates/world/3.3.5/2019_06_28_00_world.sql2
-rw-r--r--src/server/game/Spells/SpellEffects.cpp33
-rw-r--r--src/server/scripts/Spells/spell_item.cpp56
3 files changed, 58 insertions, 33 deletions
diff --git a/sql/updates/world/3.3.5/2019_06_28_00_world.sql b/sql/updates/world/3.3.5/2019_06_28_00_world.sql
new file mode 100644
index 00000000000..9ba191bba0b
--- /dev/null
+++ b/sql/updates/world/3.3.5/2019_06_28_00_world.sql
@@ -0,0 +1,2 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_item_dimensional_ripper_area52';
+INSERT INTO `spell_script_names` VALUES (36890,'spell_item_dimensional_ripper_area52');
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 3f01f2bea65..86264bfd967 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -1125,39 +1125,6 @@ void Spell::EffectTeleportUnits(SpellEffIndex /*effIndex*/)
}
return;
}
- // Dimensional Ripper - Area 52
- case 36890:
- {
- if (roll_chance_i(50)) // 50% success
- {
- int32 rand_eff = urand(1, 4);
- switch (rand_eff)
- {
- case 1:
- // soul split - evil
- m_caster->CastSpell(m_caster, 36900, true);
- break;
- case 2:
- // soul split - good
- m_caster->CastSpell(m_caster, 36901, true);
- break;
- case 3:
- // Increase the size
- m_caster->CastSpell(m_caster, 36895, true);
- break;
- case 4:
- // Transform
- {
- if (m_caster->ToPlayer()->GetTeam() == ALLIANCE)
- m_caster->CastSpell(m_caster, 36897, true);
- else
- m_caster->CastSpell(m_caster, 36899, true);
- break;
- }
- }
- }
- return;
- }
}
}
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index 8391e293c40..df563075c72 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -1720,6 +1720,61 @@ class spell_item_scroll_of_recall : public SpellScript
}
};
+// 36890 - Dimensional Ripper - Area 52
+enum DimensionalRipperArea52
+{
+ SPELL_TRANSPORTER_MALFUNCTION = 36895,
+ SPELL_TRANSFORM_HORDE = 36897,
+ SPELL_TRANSFORM_ALLIANCE = 36899,
+ SPELL_SOUL_SPLIT_EVIL = 36900,
+ SPELL_SOUL_SPLIT_GOOD = 36901
+};
+
+class spell_item_dimensional_ripper_area52 : public SpellScript
+{
+ PrepareSpellScript(spell_item_dimensional_ripper_area52);
+
+ bool Load() override
+ {
+ return GetCaster()->GetTypeId() == TYPEID_PLAYER;
+ }
+
+ void HandleScript(SpellEffIndex /* effIndex */)
+ {
+ if (!roll_chance_i(50)) // 50% success
+ return;
+
+ Unit* caster = GetCaster();
+
+ uint32 spellId = 0;
+ switch (urand(0, 3))
+ {
+ case 0:
+ spellId = SPELL_TRANSPORTER_MALFUNCTION;
+ break;
+ case 1:
+ spellId = SPELL_SOUL_SPLIT_EVIL;
+ break;
+ case 2:
+ spellId = SPELL_SOUL_SPLIT_GOOD;
+ break;
+ case 3:
+ if (caster->ToPlayer()->GetTeamId() == TEAM_ALLIANCE)
+ spellId = SPELL_TRANSFORM_HORDE;
+ else
+ spellId = SPELL_TRANSFORM_ALLIANCE;
+ break;
+ }
+
+ caster->CastSpell(caster, spellId, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_item_dimensional_ripper_area52::HandleScript, EFFECT_0, SPELL_EFFECT_TELEPORT_UNITS);
+ }
+};
+
// 71169 - Shadow's Fate (Shadowmourne questline)
enum ShadowsFate
{
@@ -4069,6 +4124,7 @@ void AddSC_item_spell_scripts()
RegisterAuraScript(spell_item_power_circle);
RegisterSpellScript(spell_item_savory_deviate_delight);
RegisterSpellScript(spell_item_scroll_of_recall);
+ RegisterSpellScript(spell_item_dimensional_ripper_area52);
RegisterAuraScript(spell_item_unsated_craving);
RegisterAuraScript(spell_item_shadows_fate);
RegisterAuraScript(spell_item_shadowmourne);