aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2025_11_24_00_world.sql34
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp2
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp88
-rw-r--r--src/server/game/Movement/MotionMaster.cpp2
-rw-r--r--src/server/game/Movement/MotionMaster.h2
-rw-r--r--src/server/game/Movement/MovementDefines.h4
-rw-r--r--src/server/game/Spells/SpellEffects.cpp14
-rw-r--r--src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp2
-rw-r--r--src/server/scripts/BrokenIsles/zone_mardum.cpp16
-rw-r--r--src/server/scripts/Kalimdor/RagefireChasm/boss_lava_guard_gordoth.cpp3
-rw-r--r--src/server/scripts/KulTiras/WaycrestManor/boss_lord_and_lady_waycrest.cpp2
-rw-r--r--src/server/scripts/Pandaria/zone_the_wandering_isle.cpp6
-rw-r--r--src/server/scripts/Zandalar/AtalDazar/boss_volkaal.cpp24
13 files changed, 112 insertions, 87 deletions
diff --git a/sql/updates/world/master/2025_11_24_00_world.sql b/sql/updates/world/master/2025_11_24_00_world.sql
new file mode 100644
index 00000000000..ac2fdf44cb5
--- /dev/null
+++ b/sql/updates/world/master/2025_11_24_00_world.sql
@@ -0,0 +1,34 @@
+ALTER TABLE `jump_charge_params`
+ ADD `minHeight` float AFTER `jumpGravity`,
+ ADD `maxHeight` float AFTER `minHeight`,
+ ADD `unlimitedSpeed` tinyint(1) NOT NULL DEFAULT 0 AFTER `treatSpeedAsMoveTimeSeconds`;
+
+UPDATE `jump_charge_params` SET `maxHeight`=0.001,`unlimitedSpeed`=1 WHERE `id`=2; -- Infernal Strike
+UPDATE `jump_charge_params` SET `maxHeight`=0.001 WHERE `id`=9; -- Metamorphosis
+UPDATE `jump_charge_params` SET `minHeight`=6 WHERE `id`=17; -- Heroic Leap
+UPDATE `jump_charge_params` SET `speed`=50,`treatSpeedAsMoveTimeSeconds`=0 WHERE `id`=18; -- Harpoon
+UPDATE `jump_charge_params` SET `minHeight`=1.5 WHERE `id` IN (529,530,531); -- Windrunner
+UPDATE `jump_charge_params` SET `minHeight`=5 WHERE `id`=566; -- Invigorating Field
+UPDATE `jump_charge_params` SET `minHeight`=1,`speed`=70,`treatSpeedAsMoveTimeSeconds`=0,`unlimitedSpeed`=1 WHERE `id`=574; -- Earthen Grasp
+UPDATE `jump_charge_params` SET `minHeight`=3,`speed`=60,`treatSpeedAsMoveTimeSeconds`=0,`unlimitedSpeed`=1 WHERE `id`=592; -- Stonecrash
+UPDATE `jump_charge_params` SET `minHeight`=5,`speed`=0.75 WHERE `id`=626; -- Necrotic Claws
+UPDATE `jump_charge_params` SET `minHeight`=3 WHERE `id`=647; -- Pounce
+UPDATE `jump_charge_params` SET `minHeight`=3,`speed`=18,`treatSpeedAsMoveTimeSeconds`=0 WHERE `id`=648; -- Defensive Bulwark
+UPDATE `jump_charge_params` SET `minHeight`=3 WHERE `id`=649; -- Ambush
+UPDATE `jump_charge_params` SET `minHeight`=3 WHERE `id`=660; -- Heated Swings
+UPDATE `jump_charge_params` SET `minHeight`=5 WHERE `id`=661; -- Might of the Forge
+UPDATE `jump_charge_params` SET `speed`=50,`treatSpeedAsMoveTimeSeconds`=0 WHERE `id`=709; -- Fiery Focus
+UPDATE `jump_charge_params` SET `speed`=1 WHERE `id` IN (713,714);
+UPDATE `jump_charge_params` SET `minHeight`=12 WHERE `id`=719; -- Cast Away
+UPDATE `jump_charge_params` SET `maxHeight`=10 WHERE `id`=720; -- Cast Away
+UPDATE `jump_charge_params` SET `maxHeight`=4 WHERE `id`=959; -- Chains of Oppression
+
+DELETE FROM `jump_charge_params` WHERE `id` IN (110,169,175);
+INSERT INTO `jump_charge_params` (`id`,`speed`,`treatSpeedAsMoveTimeSeconds`,`unlimitedSpeed`,`minHeight`,`maxHeight`,`spellVisualId`,`progressCurveId`,`parabolicCurveId`,`triggerSpellId`) VALUES
+(110,50,0,0,8,NULL,NULL,NULL,NULL,NULL), -- Toxic Leap
+(169,50,0,0,NULL,NULL,NULL,NULL,NULL,NULL), -- Ravaging Leap
+(175,1,1,0,6,NULL,NULL,NULL,NULL,NULL); -- Dark Leap
+
+ALTER TABLE `jump_charge_params` DROP `jumpGravity`;
+
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_volkaal_toxic_leap';
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index 814f53e8189..1f25f2d2d6b 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -1926,7 +1926,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
if (e.action.jump.Gravity || e.action.jump.UseDefaultGravity)
{
float gravity = e.action.jump.UseDefaultGravity ? Movement::gravity : e.action.jump.Gravity;
- me->GetMotionMaster()->MoveJumpWithGravity(pos, float(e.action.jump.SpeedXY), gravity, e.action.jump.PointId,
+ me->GetMotionMaster()->MoveJumpWithGravity_OLD_DEPRECATED(pos, float(e.action.jump.SpeedXY), gravity, e.action.jump.PointId,
{}, false, nullptr, nullptr, std::move(actionResultSetter));
}
else
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 3339d973a53..cba48f39958 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -12030,77 +12030,85 @@ void ObjectMgr::LoadJumpChargeParams()
// need for reload case
_jumpChargeParams.clear();
- // 0 1 2 3 4 5 6 7
- QueryResult result = WorldDatabase.Query("SELECT id, speed, treatSpeedAsMoveTimeSeconds, jumpGravity, spellVisualId, progressCurveId, parabolicCurveId, triggerSpellId FROM jump_charge_params");
+ QueryResult result = WorldDatabase.Query("SELECT id, speed, treatSpeedAsMoveTimeSeconds, minHeight, maxHeight, unlimitedSpeed, spellVisualId, progressCurveId, parabolicCurveId, triggerSpellId FROM jump_charge_params");
if (!result)
{
return;
}
+ DEFINE_FIELD_ACCESSOR_CACHE_ANONYMOUS(ResultSet, (id)(speed)(treatSpeedAsMoveTimeSeconds)(minHeight)(maxHeight)(unlimitedSpeed)
+ (spellVisualId)(progressCurveId)(parabolicCurveId)(triggerSpellId)) fields { *result };
+
do
{
- Field* fields = result->Fetch();
+ int32 id = fields.id().GetInt32();
+ JumpChargeParams& params = _jumpChargeParams[id];
+ params.Speed = fields.speed().GetFloat();
+ params.TreatSpeedAsMoveTimeSeconds = fields.treatSpeedAsMoveTimeSeconds().GetBool();
+ params.UnlimitedSpeed = fields.unlimitedSpeed().GetBool();
+ params.MinHeight = fields.minHeight().GetFloatOrNull();
+ params.MaxHeight = fields.maxHeight().GetFloatOrNull();
+ params.SpellVisualId = fields.spellVisualId().GetInt32OrNull();
+ params.ProgressCurveId = fields.progressCurveId().GetInt32OrNull();
+ params.ParabolicCurveId = fields.parabolicCurveId().GetInt32OrNull();
+ params.TriggerSpellId = fields.triggerSpellId().GetInt32OrNull();
+
+ if (params.Speed <= 0.0f)
+ {
+ TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` uses invalid speed {} for id {}, set to default charge speed {}.",
+ params.Speed, id, SPEED_CHARGE);
+ params.Speed = SPEED_CHARGE;
+ }
- int32 id = fields[0].GetInt32();
- float speed = fields[1].GetFloat();
- bool treatSpeedAsMoveTimeSeconds = fields[2].GetBool();
- float jumpGravity = fields[3].GetFloat();
- Optional<int32> spellVisualId = fields[4].GetInt32OrNull();
- Optional<int32> progressCurveId = fields[5].GetInt32OrNull();
- Optional<int32> parabolicCurveId = fields[6].GetInt32OrNull();
- Optional<int32> triggerSpellId = fields[7].GetInt32OrNull();
+ if (params.MinHeight && *params.MinHeight <= 0.0f)
+ {
+ TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` uses invalid min height {} for id {}, set to none.",
+ params.MinHeight, id);
+ params.MinHeight.reset();
+ }
- if (speed <= 0.0f)
+ if (params.MaxHeight && *params.MaxHeight <= 0.0f)
{
- TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` uses invalid speed {} for id {}, set to default charge speed {}.",
- speed, id, SPEED_CHARGE);
- speed = SPEED_CHARGE;
+ TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` uses invalid max height {} for id {}, set to none.",
+ params.MaxHeight, id);
+ params.MaxHeight.reset();
}
- if (jumpGravity <= 0.0f)
+ if (params.MinHeight && params.MaxHeight && *params.MinHeight >= *params.MaxHeight)
{
- TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` uses invalid jump gravity {} for id {}, set to default {}.",
- jumpGravity, id, Movement::gravity);
- jumpGravity = Movement::gravity;
+ TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` uses invalid max height {} (must be greated than min height {}) for id {}, set to none.",
+ params.MaxHeight, params.MinHeight, id);
+ params.MaxHeight.reset();
}
- if (spellVisualId && !sSpellVisualStore.LookupEntry(*spellVisualId))
+ if (params.SpellVisualId && !sSpellVisualStore.LookupEntry(*params.SpellVisualId))
{
TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` references non-existing SpellVisual: {} for id {}, ignored.",
- *spellVisualId, id);
- spellVisualId.reset();
+ *params.SpellVisualId, id);
+ params.SpellVisualId.reset();
}
- if (progressCurveId && !sCurveStore.LookupEntry(*progressCurveId))
+ if (params.ProgressCurveId && !sCurveStore.LookupEntry(*params.ProgressCurveId))
{
TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` references non-existing progress Curve: {} for id {}, ignored.",
- *progressCurveId, id);
- progressCurveId.reset();
+ *params.ProgressCurveId, id);
+ params.ProgressCurveId.reset();
}
- if (parabolicCurveId && !sCurveStore.LookupEntry(*parabolicCurveId))
+ if (params.ParabolicCurveId && !sCurveStore.LookupEntry(*params.ParabolicCurveId))
{
TC_LOG_ERROR("sql.sql", "Table `jump_charge_params` references non-existing parabolic Curve: {} for id {}, ignored.",
- *parabolicCurveId, id);
- parabolicCurveId.reset();
+ *params.ParabolicCurveId, id);
+ params.ParabolicCurveId.reset();
}
- if (triggerSpellId && !sSpellMgr->GetSpellInfo(*triggerSpellId, DIFFICULTY_NONE))
+ if (params.TriggerSpellId && !sSpellMgr->GetSpellInfo(*params.TriggerSpellId, DIFFICULTY_NONE))
{
TC_LOG_DEBUG("sql.sql", "Table `jump_charge_params` references non-existing trigger spell id: {} for id {}, ignored.",
- *triggerSpellId, id);
- triggerSpellId.reset();
+ *params.TriggerSpellId, id);
+ params.TriggerSpellId.reset();
}
- JumpChargeParams& params = _jumpChargeParams[id];
- params.Speed = speed;
- params.TreatSpeedAsMoveTimeSeconds = treatSpeedAsMoveTimeSeconds;
- params.JumpGravity = jumpGravity;
- params.SpellVisualId = spellVisualId;
- params.ProgressCurveId = progressCurveId;
- params.ParabolicCurveId = parabolicCurveId;
- params.TriggerSpellId = triggerSpellId;
-
} while (result->NextRow());
TC_LOG_INFO("server.loading", ">> Loaded {} Player Choice locale strings in {} ms", _jumpChargeParams.size(), GetMSTimeDiffToNow(oldMSTime));
diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp
index 7ee682ab0f0..be58d1a3828 100644
--- a/src/server/game/Movement/MotionMaster.cpp
+++ b/src/server/game/Movement/MotionMaster.cpp
@@ -976,7 +976,7 @@ void MotionMaster::MoveJump(uint32 id, Position const& pos, std::variant<std::mo
Add(movement);
}
-void MotionMaster::MoveJumpWithGravity(Position const& pos, float speedXY, float gravity, uint32 id/* = EVENT_JUMP*/, MovementFacingTarget const& facing/* = {}*/,
+void MotionMaster::MoveJumpWithGravity_OLD_DEPRECATED(Position const& pos, float speedXY, float gravity, uint32 id/* = EVENT_JUMP*/, MovementFacingTarget const& facing/* = {}*/,
bool orientationFixed /*= false*/, JumpArrivalCastArgs const* arrivalCast /*= nullptr*/, Movement::SpellEffectExtraData const* spellEffectExtraData /*= nullptr*/,
Optional<Scripting::v2::ActionResultSetter<MovementStopReason>>&& scriptResult /*= {}*/)
{
diff --git a/src/server/game/Movement/MotionMaster.h b/src/server/game/Movement/MotionMaster.h
index 5b2cb2cc34e..dcd053a9a94 100644
--- a/src/server/game/Movement/MotionMaster.h
+++ b/src/server/game/Movement/MotionMaster.h
@@ -199,7 +199,7 @@ class TC_GAME_API MotionMaster
MovementFacingTarget const& facing = {}, bool orientationFixed = false, bool unlimitedSpeed = false, Optional<float> speedMultiplier = {},
JumpArrivalCastArgs const* arrivalCast = nullptr, Movement::SpellEffectExtraData const* spellEffectExtraData = nullptr,
Optional<Scripting::v2::ActionResultSetter<MovementStopReason>>&& scriptResult = {});
- void MoveJumpWithGravity(Position const& pos, float speedXY, float gravity, uint32 id = EVENT_JUMP, MovementFacingTarget const& facing = {},
+ void MoveJumpWithGravity_OLD_DEPRECATED(Position const& pos, float speedXY, float gravity, uint32 id = EVENT_JUMP, MovementFacingTarget const& facing = {},
bool orientationFixed = false, JumpArrivalCastArgs const* arrivalCast = nullptr, Movement::SpellEffectExtraData const* spellEffectExtraData = nullptr,
Optional<Scripting::v2::ActionResultSetter<MovementStopReason>>&& scriptResult = {});
void MoveCirclePath(float x, float y, float z, float radius, bool clockwise, uint8 stepCount,
diff --git a/src/server/game/Movement/MovementDefines.h b/src/server/game/Movement/MovementDefines.h
index bf6507e006b..1df6555eb0a 100644
--- a/src/server/game/Movement/MovementDefines.h
+++ b/src/server/game/Movement/MovementDefines.h
@@ -147,8 +147,10 @@ struct JumpChargeParams
};
bool TreatSpeedAsMoveTimeSeconds = false;
+ bool UnlimitedSpeed = false;
- float JumpGravity = 0.0f;
+ Optional<float> MinHeight;
+ Optional<float> MaxHeight;
Optional<uint32> SpellVisualId;
Optional<uint32> ProgressCurveId;
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 9ce58362a18..c9b97dd2221 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -5877,9 +5877,13 @@ void Spell::EffectJumpCharge()
if (!params)
return;
- float speed = params->Speed;
- if (params->TreatSpeedAsMoveTimeSeconds)
- speed = unitCaster->GetExactDist(destTarget) / params->MoveTimeInSec;
+ std::variant<std::monostate, float, Milliseconds> speedOrTime = [params]() -> std::variant<std::monostate, float, Milliseconds>
+ {
+ if (params->TreatSpeedAsMoveTimeSeconds)
+ return duration_cast<Milliseconds>(FloatSeconds(params->MoveTimeInSec));
+
+ return params->Speed;
+ }();
MovementFacingTarget facing;
if (Unit const* target = m_targets.GetUnitTarget())
@@ -5910,8 +5914,8 @@ void Spell::EffectJumpCharge()
effectExtra->ParabolicCurveId = *params->ParabolicCurveId;
}
- unitCaster->GetMotionMaster()->MoveJumpWithGravity(*destTarget, speed, params->JumpGravity, EVENT_JUMP, facing,
- m_spellInfo->HasAttribute(SPELL_ATTR9_JUMPCHARGE__NO_FACING_CONTROL),
+ unitCaster->GetMotionMaster()->MoveJump(EVENT_JUMP, *destTarget, speedOrTime, params->MinHeight, params->MaxHeight,
+ facing, m_spellInfo->HasAttribute(SPELL_ATTR9_JUMPCHARGE__NO_FACING_CONTROL), params->UnlimitedSpeed, {},
arrivalCast ? &*arrivalCast : nullptr,
effectExtra ? &*effectExtra : nullptr);
}
diff --git a/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp b/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp
index b6ca8109f40..96ee6e52dd9 100644
--- a/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp
+++ b/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp
@@ -246,7 +246,7 @@ struct boss_ymiron_the_fallen_king : public BossAI
me->RemoveAurasDueToSpell(SPELL_KNEELING);
scheduler.Schedule(2s, [this](TaskContext /*task*/)
{
- me->GetMotionMaster()->MoveJumpWithGravity(YmironIntroJumpPos, 24.0f, 25.31545448303222656, EVENT_JUMP);
+ me->GetMotionMaster()->MoveJump(EVENT_JUMP, YmironIntroJumpPos, 24.0f, 2.0f);
});
}
diff --git a/src/server/scripts/BrokenIsles/zone_mardum.cpp b/src/server/scripts/BrokenIsles/zone_mardum.cpp
index 2f0cdd852c5..adba190c0e4 100644
--- a/src/server/scripts/BrokenIsles/zone_mardum.cpp
+++ b/src/server/scripts/BrokenIsles/zone_mardum.cpp
@@ -216,7 +216,7 @@ struct npc_kayn_sunfury_invasion_begins : public ScriptedAI
me->SendPlaySpellVisualKit(SPELL_VISUAL_KIT_KAYN_WINGS, 4, 3000);
me->PlayObjectSound(SOUND_SPELL_DOUBLE_JUMP, me->GetGUID(), summonerPlayer);
me->SendPlaySpellVisualKit(SPELL_VISUAL_KIT_KAYN_DOUBLE_JUMP, 0, 0);
- me->GetMotionMaster()->MoveJumpWithGravity(KaynDoubleJumpPosition, 24.0, 0.9874f, POINT_KAYN_MOVE_TO_DEMON);
+ me->GetMotionMaster()->MoveJump(POINT_KAYN_MOVE_TO_DEMON, KaynDoubleJumpPosition, 24.0f, {}, 1.5f);
}
else if (pointId == POINT_KAYN_MOVE_TO_DEMON)
{
@@ -244,7 +244,7 @@ struct npc_jayce_darkweaver_invasion_begins : public ScriptedAI
if (pathId == PATH_JAYCE_INVASION_BEGINS)
{
me->CastSpell(nullptr, SPELL_DEMON_HUNTER_GLIDE_STATE, true);
- me->GetMotionMaster()->MoveJumpWithGravity(JayceJumpPos, 12.0f, 15.2792f, POINT_ILLIDARI_LAND_POS);
+ me->GetMotionMaster()->MoveJump(POINT_ILLIDARI_LAND_POS, JayceJumpPos, 12.0f, {}, 5.0f);
}
else if (pathId == PATH_JAYCE_JUMP_INVASION_BEGINS)
me->DespawnOrUnsummon();
@@ -273,7 +273,7 @@ struct npc_allari_the_souleater_invasion_begins : public ScriptedAI
if (pathId == PATH_ALLARI_INVASION_BEGINS)
{
me->CastSpell(nullptr, SPELL_DEMON_HUNTER_GLIDE_STATE, true);
- me->GetMotionMaster()->MoveJumpWithGravity(AllariJumpPos, 12.0f, 9.2722f, POINT_ILLIDARI_LAND_POS);
+ me->GetMotionMaster()->MoveJump(POINT_ILLIDARI_LAND_POS, AllariJumpPos, 12.0f, {}, 5.0f);
}
else if (pathId == PATH_ALLARI_JUMP_INVASION_BEGINS)
me->DespawnOrUnsummon();
@@ -302,7 +302,7 @@ struct npc_korvas_bloodthorn_invasion_begins : public ScriptedAI
if (pathId == PATH_KORVAS_INVASION_BEGINS)
{
me->SendPlaySpellVisualKit(SPELL_VISUAL_KIT_KORVAS_JUMP, 4, 2000);
- me->GetMotionMaster()->MoveJumpWithGravity(KorvasJumpPos, 24.0f, 19.2911f, POINT_ILLIDARI_LAND_POS);
+ me->GetMotionMaster()->MoveJump(POINT_ILLIDARI_LAND_POS, KorvasJumpPos, 24.0f, {}, 5.0f);
}
else if (pathId == PATH_KORVAS_JUMP_INVASION_BEGINS)
me->DespawnOrUnsummon();
@@ -331,7 +331,7 @@ struct npc_sevis_brightflame_invasion_begins : public ScriptedAI
if (pathId == PATH_SEVIS_INVASION_BEGINS)
{
me->CastSpell(nullptr, SPELL_DEMON_HUNTER_GLIDE_STATE, true);
- me->GetMotionMaster()->MoveJumpWithGravity(SevisJumpPos, 12.0f, 13.3033f, POINT_ILLIDARI_LAND_POS);
+ me->GetMotionMaster()->MoveJump(POINT_ILLIDARI_LAND_POS, SevisJumpPos, 12.0f, {}, 5.0f);
}
else if (pathId == PATH_SEVIS_JUMP_INVASION_BEGINS)
me->DespawnOrUnsummon();
@@ -360,7 +360,7 @@ struct npc_cyana_nightglaive_invasion_begins : public ScriptedAI
if (pathId == PATH_CYANA_INVASION_BEGINS)
{
me->CastSpell(nullptr, SPELL_DEMON_HUNTER_GLIDE_STATE, true);
- me->GetMotionMaster()->MoveJumpWithGravity(CyanaJumpPos, 12.0f, 8.4555f, POINT_ILLIDARI_LAND_POS);
+ me->GetMotionMaster()->MoveJump(POINT_ILLIDARI_LAND_POS, CyanaJumpPos, 12.0f, {}, 5.0f);
}
else if (pathId == PATH_CYANA_JUMP_INVASION_BEGINS)
me->DespawnOrUnsummon();
@@ -501,7 +501,7 @@ public:
kaynClone->PlayObjectSound(SOUND_METAL_WEAPON_UNSHEATH, kaynClone->GetGUID(), player);
kaynClone->SendPlaySpellVisualKit(SPELL_VISUAL_KIT_KAYN_GLIDE, 4, 3000);
kaynClone->SendPlaySpellVisualKit(SPELL_VISUAL_KIT_KAYN_WINGS, 4, 4000);
- kaynClone->GetMotionMaster()->MoveJumpWithGravity(KaynJumpPos, 20.5f, 396.3535f, POINT_KAYN_TRIGGER_DOUBLE_JUMP);
+ kaynClone->GetMotionMaster()->MoveJump(POINT_KAYN_TRIGGER_DOUBLE_JUMP, KaynJumpPos, 23.0f, 1.5f);
kaynClone->SetSheath(SHEATH_STATE_MELEE);
kaynClone->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
@@ -1850,7 +1850,7 @@ struct npc_jayce_darkweaver_cryptic_hollow_private : public ScriptedAI
return;
if (pointId == POINT_JAYCE_DARKWEAVER_PREPARE_JUMP)
- me->GetMotionMaster()->MoveJumpWithGravity(JayceJumpPosition, 19.880844f, 32.78205f, POINT_JAYCE_DARKWEAVER_JUMP_TO_CAVE);
+ me->GetMotionMaster()->MoveJump(POINT_JAYCE_DARKWEAVER_JUMP_TO_CAVE, JayceJumpPosition, 20.0f, 4.0f);
else if (pointId == POINT_JAYCE_DARKWEAVER_JUMP_TO_CAVE)
{
me->GetMotionMaster()->MovePath(PATH_JAYCE_DARKWEAVER_RUN_INTO_CAVE, false);
diff --git a/src/server/scripts/Kalimdor/RagefireChasm/boss_lava_guard_gordoth.cpp b/src/server/scripts/Kalimdor/RagefireChasm/boss_lava_guard_gordoth.cpp
index 965bc6660c0..0cb2926943c 100644
--- a/src/server/scripts/Kalimdor/RagefireChasm/boss_lava_guard_gordoth.cpp
+++ b/src/server/scripts/Kalimdor/RagefireChasm/boss_lava_guard_gordoth.cpp
@@ -148,7 +148,7 @@ struct boss_lava_guard_gordoth : public BossAI
me->SetAIAnimKitId(ANIMKIT_GORDOTH_NONE);
DoCastSelf(SPELL_JAIL_BREAK);
- me->GetMotionMaster()->MoveJumpWithGravity(GordothJumpPos, 50.0f, 55.5477f, POINT_JUMP, GordothJumpPos.GetOrientation());
+ me->GetMotionMaster()->MoveJump(POINT_JUMP, GordothJumpPos, 50.0f, 4.0f);
scheduler.Schedule(30ms, [this](TaskContext /*task*/)
{
@@ -166,6 +166,7 @@ struct boss_lava_guard_gordoth : public BossAI
{
DoCast(SPELL_GROUND_SLAM);
me->SetHomePosition(GordothJumpPos);
+ me->SetFacingTo(GordothJumpPos.GetOrientation());
std::vector<GameObject*> labVialsList;
GetGameObjectListWithEntryInGrid(labVialsList, me, GO_LAB_VIAL, 25.0f);
diff --git a/src/server/scripts/KulTiras/WaycrestManor/boss_lord_and_lady_waycrest.cpp b/src/server/scripts/KulTiras/WaycrestManor/boss_lord_and_lady_waycrest.cpp
index 0886cd7b232..1b169d3d5f1 100644
--- a/src/server/scripts/KulTiras/WaycrestManor/boss_lord_and_lady_waycrest.cpp
+++ b/src/server/scripts/KulTiras/WaycrestManor/boss_lord_and_lady_waycrest.cpp
@@ -156,7 +156,7 @@ struct boss_lord_waycrest : public BossAI
void JustEngagedWith(Unit* /*who*/) override
{
DoCastSelf(SPELL_LORD_WAYCREST_DUMMY_ABSORB);
- me->GetMotionMaster()->MoveJumpWithGravity(LordWaycrestCombatPosition, 20.0f, 15.1852f);
+ me->GetMotionMaster()->MoveJump(EVENT_JUMP, LordWaycrestCombatPosition, 20.0f, 5.0f);
instance->SetBossState(DATA_LORD_AND_LADY_WAYCREST, IN_PROGRESS);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
diff --git a/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp b/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp
index 9518d6e832b..665369e33ef 100644
--- a/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp
+++ b/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp
@@ -866,15 +866,15 @@ struct npc_aysa_cloudsinger_summon : public ScriptedAI
_scheduler.Schedule(3s, [this](TaskContext task)
{
- me->GetMotionMaster()->MoveJumpWithGravity(aysaJumpPos[0], 12.0f, 17.4735f);
+ me->GetMotionMaster()->MoveJump(EVENT_JUMP, aysaJumpPos[0], 12.0f, {}, 5.0f);
task.Schedule(1700ms, [this](TaskContext task)
{
- me->GetMotionMaster()->MoveJumpWithGravity(aysaJumpPos[1], 12.0f, 10.7163f);
+ me->GetMotionMaster()->MoveJump(EVENT_JUMP, aysaJumpPos[1], 12.0f, {}, 5.0f);
task.Schedule(2s, [this](TaskContext /*task*/)
{
- me->GetMotionMaster()->MoveJumpWithGravity(aysaJumpPos[2], 12.0f, 14.6923f, POINT_JUMP);
+ me->GetMotionMaster()->MoveJump(POINT_JUMP, aysaJumpPos[2], 12.0f, {}, 5.0f);
});
});
});
diff --git a/src/server/scripts/Zandalar/AtalDazar/boss_volkaal.cpp b/src/server/scripts/Zandalar/AtalDazar/boss_volkaal.cpp
index 5aad4c12b4a..e09a06c665c 100644
--- a/src/server/scripts/Zandalar/AtalDazar/boss_volkaal.cpp
+++ b/src/server/scripts/Zandalar/AtalDazar/boss_volkaal.cpp
@@ -320,29 +320,6 @@ class spell_volkaal_toxic_leap_selector : public SpellScript
}
};
-// 250258 - Toxic Leap
-class spell_volkaal_toxic_leap : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_TOXIC_LEAP });
- }
-
- void HandleHit(SpellEffIndex effIndex)
- {
- PreventHitDefaultEffect(effIndex);
-
- float dist = GetCaster()->GetExactDist(GetHitDest());
- float jumpGravity = 159500.0f / (dist * dist); // constant based on calculating avg of inverse from multiple leaps
- GetCaster()->GetMotionMaster()->MoveJumpWithGravity(*GetHitDest(), 50, jumpGravity, EVENT_JUMP);
- }
-
- void Register() override
- {
- OnEffectHit += SpellEffectFn(spell_volkaal_toxic_leap::HandleHit, EFFECT_1, SPELL_EFFECT_JUMP_CHARGE);
- }
-};
-
// 250229 - Soul Anchor
class spell_volkaal_soul_anchor : public SpellScript
{
@@ -448,7 +425,6 @@ void AddSC_boss_volkaal()
RegisterSpellScript(spell_volkaal_lingering_nausea);
RegisterSpellScript(spell_volkaal_noxious_stench);
RegisterSpellScript(spell_volkaal_toxic_leap_selector);
- RegisterSpellScript(spell_volkaal_toxic_leap);
RegisterSpellScript(spell_volkaal_soul_anchor);
RegisterSpellScript(spell_volkaal_reanimate);
RegisterSpellScript(spell_volkaal_rapid_decay);