internal override void PostOverrideAcceleration(ref Vector3 acceleration) { Exosuit parentExosuit = parentVehicle as Exosuit; if (ExosuitPatches.ExosuitIsSprinting(parentExosuit, lastMoveDirection)) { float thrust = GetForceMultiplier(true, ExosuitPatches.ExosuitIsJumping(parentExosuit, lastMoveDirection) && parentExosuit.IsUnderwater()); acceleration.x *= thrust; acceleration.z *= thrust; } }
internal float GetForceMultiplier(bool bSprinting, bool bUnderwaterJumping) { if (bSprinting && ExosuitPatches.GetThrustPower(parentVehicle as Exosuit) > 0f) { if (bUnderwaterJumping) { return(WaterSprintMult * (bJetsUpgraded ? JetUpgradeMult : 1f)); } return(GroundSprintMult * (bJetsUpgraded ? JetUpgradeMult : 1f)); } return(1f); }
internal override void PreUpdate() { if (parentVehicle is Exosuit parentExosuit) { lastMoveDirection = AvatarInputHandler.main.IsEnabled() ? GameInput.GetMoveDirection() : Vector3.zero; bool bExosuitSprint = ExosuitPatches.ExosuitIsSprinting(parentExosuit, lastMoveDirection); //float forceMultiplier = 1f * (bExosuitSprint ? (bJetsUpgraded ? 2.5f : 2f) : 1f); // These constants will likely be tweaked, but they're here for testing float forceMultiplier = GetForceMultiplier(bExosuitSprint, ExosuitPatches.ExosuitIsJumping(parentExosuit, lastMoveDirection) && parentExosuit.IsUnderwater()); parentVehicle.forwardForce = defaultForwardForce * forceMultiplier; //if(forceMultiplier != fLastForce) // Log.LogDebug($"ExosuitUpdater.PostUpdate(): Applying forwardForce of {parentVehicle.forwardForce} to Exosuit with defaultForwardForce of {defaultForwardForce}"); fLastForce = forceMultiplier; } }
internal override void PostUpdate(Vehicle __instance = null) { if (parentVehicle == null) { parentVehicle = __instance; } if (parentVehicle is Exosuit parentExosuit && Player.main.currentMountedVehicle == parentExosuit) { lastMoveDirection = AvatarInputHandler.main.IsEnabled() ? GameInput.GetMoveDirection() : Vector3.zero; bool bExosuitSprint = ExosuitPatches.ExosuitIsSprinting(parentExosuit, lastMoveDirection); //float forceMultiplier = 1f * (bExosuitSprint ? (bJetsUpgraded ? 2.5f : 2f) : 1f); // These constants will likely be tweaked, but they're here for testing float forceMultiplier = GetForceMultiplier(bExosuitSprint, ExosuitPatches.ExosuitIsJumping(parentExosuit, lastMoveDirection) && parentExosuit.IsUnderwater()); parentVehicle.forwardForce = defaultForwardForce * forceMultiplier; fLastForce = forceMultiplier; } }