From 8bbe79acfe10b2c836e7b0d69b35d5db4a74c92d Mon Sep 17 00:00:00 2001 From: minjaesong Date: Mon, 9 Feb 2026 03:15:11 +0900 Subject: [PATCH] pushing down on moving platform will dismount --- src/net/torvald/terrarum/gameactors/PhysContraption.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/net/torvald/terrarum/gameactors/PhysContraption.kt b/src/net/torvald/terrarum/gameactors/PhysContraption.kt index 8a9479986..d3bc53705 100644 --- a/src/net/torvald/terrarum/gameactors/PhysContraption.kt +++ b/src/net/torvald/terrarum/gameactors/PhysContraption.kt @@ -1,6 +1,7 @@ package net.torvald.terrarum.gameactors import net.torvald.terrarum.INGAME +import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED import net.torvald.terrarum.abs @@ -125,11 +126,11 @@ abstract class PhysContraption() : ActorWithBody() { feetY <= platTop + MOUNT_TOLERANCE_BELOW val horizontalOverlap = rider.hitbox.endX > hitbox.startX && rider.hitbox.startX < hitbox.endX - // Detect real jumps (not small residuals) — threshold is 4x the mount threshold val combinedVelY = rider.externalV.y + (rider.controllerV?.y ?: 0.0) val isJumping = combinedVelY < JUMP_THRESHOLD_Y// * 4.0 + val isDroppingDown = rider is ActorHumanoid && rider.downButtonHeld > 0 - if (!feetNear || !horizontalOverlap || isJumping) { + if (!feetNear || !horizontalOverlap || isJumping || isDroppingDown) { if (isJumping) { // Jump-initiated dismount: always conserve horizontal momentum. // For vertical: rising platforms (negative Y vel) give a jump @@ -155,6 +156,7 @@ abstract class PhysContraption() : ActorWithBody() { for (actor in candidates) { if (actorsRiding.contains(actor.referenceID)) continue + if (actor is ActorHumanoid && actor.downButtonHeld > 0) continue if (!isActorOnTop(actor)) continue // If already riding another contraption, only steal if this