Skip to content

Hooking buttons while touching a wall only pulls them a short distance #1807

@wjt

Description

@wjt

Description

In res://scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_needles.tscn, wedge yourself into the corner and then try to hook a button:

Screencast.From.2026-01-07.19-33-40.mp4

This is with the keyboard but it's easier to reproduce with the gamepad.

In player_hook.gd _process_pulling() we are hitting this call to stop_pulling():

	character.velocity = player_distance.normalized() * pull_velocity * weight
	var player_collided := character.move_and_slide()

	if player_collided:
		if character.get_real_velocity().length_squared() <= stuck_speed * stuck_speed:
			stop_pulling() # <---

I don't quite follow the logic of the sections above, which special case weight != 0 and weight != 1. In this case the button is weightless, so weight == 0, so I don't quite follow why we are applying any velocity to the player at all.

Checklist

  • I've reviewed and agree to follow the code of conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    Status

    Untriaged

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions