diff options
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); |
