Exemple #1
0
        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;
            }
        }
Exemple #2
0
        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;
            }
        }
Exemple #4
0
        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;
            }
        }