aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/game/Spells/SpellMgr.cpp31
-rw-r--r--src/server/scripts/Pandaria/zone_the_jade_forest.cpp94
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp16
3 files changed, 141 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 09580e87dff..0d096f7bca2 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -5004,6 +5004,37 @@ void SpellMgr::LoadSpellInfoCorrections()
// ENDOF THE WANDERING ISLE SPELLS
//
+ //
+ // JADE FOREST SPELLS
+ //
+
+ // Shredder Round
+ ApplySpellFix({ 130162 }, [](SpellInfo* spellInfo)
+ {
+ spellInfo->RangeEntry = sSpellRangeStore.LookupEntry(245); // Five Hundred Yards
+ });
+
+ // Cannon Explosion
+ ApplySpellFix({ 130237 }, [](SpellInfo* spellInfo)
+ {
+ ApplySpellEffectFix(spellInfo, EFFECT_1, [](SpellEffectInfo* spellEffectInfo)
+ {
+ spellEffectInfo->Effect = SPELL_EFFECT_NONE;
+ });
+ });
+
+ // Summon Gunship Turret, Left
+ // Summon Gunship Turret, Middle
+ // Summon Gunship Turret, Right
+ ApplySpellFix({ 130996, 130997, 130998 }, [](SpellInfo* spellInfo)
+ {
+ spellInfo->RangeEntry = sSpellRangeStore.LookupEntry(12); // Interact Range
+ spellInfo->AttributesEx4 &= ~SPELL_ATTR4_USE_FACING_FROM_SPELL;
+ });
+
+ // ENDOF JADE FOREST SPELLS
+ //
+
// Earthquake
ApplySpellFix({ 61882 }, [](SpellInfo* spellInfo)
{
diff --git a/src/server/scripts/Pandaria/zone_the_jade_forest.cpp b/src/server/scripts/Pandaria/zone_the_jade_forest.cpp
index 593933bac3b..4c3ff748c8c 100644
--- a/src/server/scripts/Pandaria/zone_the_jade_forest.cpp
+++ b/src/server/scripts/Pandaria/zone_the_jade_forest.cpp
@@ -16,6 +16,8 @@
*/
#include "ScriptMgr.h"
+#include "PhasingHandler.h"
+#include "Player.h"
#include "Spell.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
@@ -23,6 +25,11 @@
namespace Scripts::Pandaria::TheJadeForest
{
+namespace Quests
+{
+ static constexpr uint32 PaintItRed = 31765;
+}
+
namespace Spells
{
// Into the Mists & The Mission
@@ -38,6 +45,11 @@ namespace Spells
static constexpr uint32 TeleportPrepAlliance = 130832;
static constexpr uint32 TheMissionTeleportPlayer = 130321;
static constexpr uint32 TheMissionSceneJF = 131057;
+
+ // Paint it Red!
+ static constexpr uint32 AbandonVehicle = 92678;
+ static constexpr uint32 CannonExplosionTrigger = 130234;
+ static constexpr uint32 BarrelExplosionTrigger = 130247;
}
// 121545 - Into the Mists Scene - JF
@@ -180,6 +192,85 @@ class spell_cancel_blackout : public AuraScript
AfterEffectRemove += AuraEffectRemoveFn(spell_cancel_blackout::HandleAfterEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
+
+// 130996 - Summon Gunship Turret, Left
+// 130997 - Summon Gunship Turret, Middle
+// 130998 - Summon Gunship Turret, Right
+class spell_summon_gunship_turret : public AuraScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({
+ Spells::AbandonVehicle
+ });
+ }
+
+ void OnPeriodic(AuraEffect const* /*aurEff*/) const
+ {
+ if (Player* playerTarget = GetTarget()->ToPlayer())
+ if (playerTarget->GetQuestStatus(Quests::PaintItRed) == QUEST_STATUS_COMPLETE)
+ playerTarget->CastSpell(nullptr, Spells::AbandonVehicle, CastSpellExtraArgsInit{
+ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR
+ });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) const
+ {
+ PhasingHandler::OnConditionChange(GetTarget());
+ }
+
+ void Register() override
+ {
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_summon_gunship_turret::OnPeriodic, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY);
+ AfterEffectApply += AuraEffectApplyFn(spell_summon_gunship_turret::AfterApply, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+// 130233 - Cannon Explosion Reversecast
+class spell_cannon_explosion_reversecast : public SpellScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({
+ Spells::CannonExplosionTrigger
+ });
+ }
+
+ void HandleHitTarget(SpellEffIndex /*effIndex*/) const
+ {
+ GetHitUnit()->CastSpell(GetCaster(), Spells::CannonExplosionTrigger, CastSpellExtraArgsInit{
+ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR
+ });
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_cannon_explosion_reversecast::HandleHitTarget, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 130246 - Barrel Explosion Reversecast
+class spell_barrel_explosion_reversecast : public SpellScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({
+ Spells::BarrelExplosionTrigger
+ });
+ }
+
+ void HandleHitTarget(SpellEffIndex /*effIndex*/) const
+ {
+ GetHitUnit()->CastSpell(GetCaster(), Spells::BarrelExplosionTrigger, CastSpellExtraArgsInit{
+ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR
+ });
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_barrel_explosion_reversecast::HandleHitTarget, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
}
void AddSC_zone_the_jade_forest()
@@ -192,4 +283,7 @@ void AddSC_zone_the_jade_forest()
RegisterSpellScript(spell_the_mission_scene_jf);
RegisterSpellScript(spell_the_mission_scene_end);
RegisterSpellScript(spell_cancel_blackout);
+ RegisterSpellScript(spell_summon_gunship_turret);
+ RegisterSpellScript(spell_cannon_explosion_reversecast);
+ RegisterSpellScript(spell_barrel_explosion_reversecast);
}
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 8831ab23a0c..42bd92eeb4c 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -4922,6 +4922,7 @@ class spell_gen_eject_passengers_3_8 : public SpellScript
};
// 83781 - Reverse Cast Ride Vehicle
+// 85299 - Reverse Cast Ride Seat 1
// 258344 - Reverse Cast Ride Vehicle
class spell_gen_reverse_cast_target_to_caster_triggered: public SpellScript
{
@@ -5609,6 +5610,20 @@ private:
float _healthPct;
};
+// 92678 - Abandon Vehicle
+class spell_gen_abandon_vehicle : public SpellScript
+{
+ void HandleHitTarget(SpellEffIndex /*effIndex*/) const
+ {
+ GetHitUnit()->ExitVehicle();
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_gen_abandon_vehicle::HandleHitTarget, EFFECT_FIRST_FOUND, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_generic_spell_scripts()
{
RegisterSpellScript(spell_gen_absorb0_hitlimit1);
@@ -5796,4 +5811,5 @@ void AddSC_generic_spell_scripts()
RegisterAreaTriggerAI(at_gen_spatial_rift);
RegisterSpellScript(spell_gen_force_phase_update);
RegisterSpellScriptWithArgs(spell_gen_no_npc_damage_below_override, "spell_gen_no_npc_damage_below_override_70", 70.0f);
+ RegisterSpellScript(spell_gen_abandon_vehicle);
}