diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 13 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 6 | ||||
| -rw-r--r-- | src/server/game/Movement/MotionMaster.cpp | 82 | ||||
| -rw-r--r-- | src/server/game/Movement/MotionMaster.h | 6 |
4 files changed, 7 insertions, 100 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 1f25f2d2d6b..28ee26256ed 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1923,15 +1923,10 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (waitEvent) actionResultSetter = Scripting::v2::ActionResult<MovementStopReason>::GetResultSetter(waitEvent); - if (e.action.jump.Gravity || e.action.jump.UseDefaultGravity) - { - float gravity = e.action.jump.UseDefaultGravity ? Movement::gravity : e.action.jump.Gravity; - me->GetMotionMaster()->MoveJumpWithGravity_OLD_DEPRECATED(pos, float(e.action.jump.SpeedXY), gravity, e.action.jump.PointId, - {}, false, nullptr, nullptr, std::move(actionResultSetter)); - } - else - me->GetMotionMaster()->MoveJump_OLD_DEPRECATED(pos, float(e.action.jump.SpeedXY), float(e.action.jump.SpeedZ), e.action.jump.PointId, - {}, false, nullptr, nullptr, std::move(actionResultSetter)); + me->GetMotionMaster()->MoveJump(e.action.jump.PointId, pos, float(e.action.jump.SpeedXY), + e.action.jump.minHeight ? Optional<float>(e.action.jump.minHeight) : std::nullopt, + e.action.jump.maxHeight ? Optional<float>(e.action.jump.maxHeight) : std::nullopt, + {}, false, false, {}, nullptr, nullptr, std::move(actionResultSetter)); mTimedActionWaitEvent = std::move(waitEvent); break; diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index a9127a33f8a..65098245dbd 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1005,9 +1005,9 @@ struct SmartAction struct { uint32 SpeedXY; - uint32 SpeedZ; - uint32 Gravity; - SAIBool UseDefaultGravity; + uint32 minHeight; + uint32 maxHeight; + uint32 unused; uint32 PointId; uint32 ContactDistance; } jump; diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index be58d1a3828..af61fd0a27f 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -859,47 +859,6 @@ void MotionMaster::MoveKnockbackFrom(Position const& origin, float speedXY, floa Add(movement); } -void MotionMaster::MoveJump_OLD_DEPRECATED(Position const& pos, float speedXY, float speedZ, 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 /*= {}*/) -{ - TC_LOG_DEBUG("movement.motionmaster", "MotionMaster::MoveJump: '{}', jumps to point Id: {} ({})", _owner->GetGUID(), id, pos.ToString()); - if (speedXY < 0.01f) - { - if (scriptResult) - scriptResult->SetResult(MovementStopReason::Interrupted); - return; - } - - float moveTimeHalf = speedZ / Movement::gravity; - float max_height = -Movement::computeFallElevation(moveTimeHalf, false, -speedZ); - - std::function<void(Movement::MoveSplineInit&)> initializer = [=, effect = (spellEffectExtraData ? Optional<Movement::SpellEffectExtraData>(*spellEffectExtraData) : Optional<Movement::SpellEffectExtraData>())](Movement::MoveSplineInit& init) - { - init.MoveTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), false); - init.SetParabolic(max_height, 0); - init.SetVelocity(speedXY); - std::visit(Movement::MoveSplineInitFacingVisitor(init), facing); - init.SetJumpOrientationFixed(orientationFixed); - if (effect) - init.SetSpellEffectExtraData(*effect); - }; - - uint32 arrivalSpellId = 0; - ObjectGuid arrivalSpellTargetGuid; - if (arrivalCast) - { - arrivalSpellId = arrivalCast->SpellId; - arrivalSpellTargetGuid = arrivalCast->Target; - } - - GenericMovementGenerator* movement = new GenericMovementGenerator(std::move(initializer), EFFECT_MOTION_TYPE, id, - { .ArrivalSpellId = arrivalSpellId, .ArrivalSpellTarget = arrivalSpellTargetGuid, .ScriptResult = std::move(scriptResult) }); - movement->Priority = MOTION_PRIORITY_HIGHEST; - movement->BaseUnitState = UNIT_STATE_JUMPING; - Add(movement); -} - void MotionMaster::MoveJump(uint32 id, Position const& pos, std::variant<std::monostate, float, Milliseconds> speedOrTime /*= {}*/, Optional<float> minHeight /*= {}*/, Optional<float> maxHeight /*= {}*/, MovementFacingTarget const& facing /*= {}*/, bool orientationFixed, bool unlimitedSpeed /*= false*/, Optional<float> speedMultiplier /*= {}*/, @@ -976,47 +935,6 @@ void MotionMaster::MoveJump(uint32 id, Position const& pos, std::variant<std::mo Add(movement); } -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 /*= {}*/) -{ - TC_LOG_DEBUG("movement.motionmaster", "MotionMaster::MoveJumpWithGravity: '{}', jumps to point Id: {} ({})", _owner->GetGUID(), id, pos.ToString()); - if (speedXY < 0.01f) - { - if (scriptResult) - scriptResult->SetResult(MovementStopReason::Interrupted); - return; - } - - std::function<void(Movement::MoveSplineInit&)> initializer = [=, effect = (spellEffectExtraData ? Optional<Movement::SpellEffectExtraData>(*spellEffectExtraData) : Optional<Movement::SpellEffectExtraData>())](Movement::MoveSplineInit& init) - { - init.MoveTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), false); - init.SetParabolicVerticalAcceleration(gravity, 0); - init.SetUncompressed(); - init.SetVelocity(speedXY); - init.SetUnlimitedSpeed(); - std::visit(Movement::MoveSplineInitFacingVisitor(init), facing); - init.SetJumpOrientationFixed(orientationFixed); - if (effect) - init.SetSpellEffectExtraData(*effect); - }; - - uint32 arrivalSpellId = 0; - ObjectGuid arrivalSpellTargetGuid; - if (arrivalCast) - { - arrivalSpellId = arrivalCast->SpellId; - arrivalSpellTargetGuid = arrivalCast->Target; - } - - GenericMovementGenerator* movement = new GenericMovementGenerator(std::move(initializer), EFFECT_MOTION_TYPE, id, - { .ArrivalSpellId = arrivalSpellId, .ArrivalSpellTarget = arrivalSpellTargetGuid, .ScriptResult = std::move(scriptResult) }); - movement->Priority = MOTION_PRIORITY_HIGHEST; - movement->BaseUnitState = UNIT_STATE_JUMPING; - movement->AddFlag(MOVEMENTGENERATOR_FLAG_PERSIST_ON_DEATH); - Add(movement); -} - void MotionMaster::MoveCirclePath(float x, float y, float z, float radius, bool clockwise, uint8 stepCount, Optional<Milliseconds> duration /*= {}*/, Optional<float> speed /*= {}*/, MovementWalkRunSpeedSelectionMode speedSelectionMode /*= MovementWalkRunSpeedSelectionMode::Default*/, diff --git a/src/server/game/Movement/MotionMaster.h b/src/server/game/Movement/MotionMaster.h index dcd053a9a94..1126b6a5cab 100644 --- a/src/server/game/Movement/MotionMaster.h +++ b/src/server/game/Movement/MotionMaster.h @@ -191,17 +191,11 @@ class TC_GAME_API MotionMaster void MoveCharge(float x, float y, float z, float speed = SPEED_CHARGE, uint32 id = EVENT_CHARGE, bool generatePath = false, Unit const* target = nullptr, Movement::SpellEffectExtraData const* spellEffectExtraData = nullptr); void MoveCharge(PathGenerator const& path, float speed = SPEED_CHARGE, Unit const* target = nullptr, Movement::SpellEffectExtraData const* spellEffectExtraData = nullptr); void MoveKnockbackFrom(Position const& origin, float speedXY, float speedZ, float angle = M_PI, Movement::SpellEffectExtraData const* spellEffectExtraData = nullptr); - void MoveJump_OLD_DEPRECATED(Position const& pos, float speedXY, float speedZ, 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 MoveJump(uint32 id, Position const& pos, std::variant<std::monostate, float, Milliseconds> speedOrTime = {}, Optional<float> minHeight = {}, Optional<float> maxHeight = {}, 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_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, Optional<Milliseconds> duration = {}, Optional<float> speed = {}, MovementWalkRunSpeedSelectionMode speedSelectionMode = MovementWalkRunSpeedSelectionMode::Default, |
