Commit Graph

2 Commits

Author SHA1 Message Date
Leland Kemble 61fb177584 Fixes several ways you could become permanently immobile (#96112)
## About The Pull Request

When the `force_move()` component is applied, it registers two signals
on the involved mob, to stop it moving, and a third one on the
`move_loop` it's created. The signal on the created loop is there so
that when the loop ends, the `force_move` component can delete itself
and free the user. However, there are no checks for whether the
`move_loop` was successfully created(which isn't the actual problem,
although I have made it runtime there so it is easier to catch in the
future). The issue is that when creating two identical moveloops, it
cancels the creation of the loop, returning nothing even though there is
a loop in effect. The fix was to return the existing loop in this
scenario, because it's identical to what would have been made had there
not been a loop already.

## Why It's Good For The Game

fixes #96069 - Certain raptors transfer hits to their owners, and (this
seems like an oversight in and of itself) piercing projectiles thus hit
twice, which in the case of the honk staff does two slips, two
`force_move`s, two loops, and triggers our identical loop problem.
fixes #88352 - The issue report is vague and lacking in specific
scenarios, but the mention of slipping again fixing it(which it does
with this bug, as the new `force_move` component deletes the broken one)
makes me pretty sure it's the same bug
fixes #95994 - I'm not certain on this one because I don't know how the
Parade works internally, but it seems likely that it could cause two
slips on the same tile
fixes #94515 - I'm just assuming this is the same bug based on it having
the same symptoms

## Changelog
🆑

fix: Several ways you could become permanently immobile, primarily based
around lube & other methods of slipping, have been fixed

/🆑
2026-05-23 17:13:25 +02:00
Mothblocks bc4e7d3b4e Remove data systems in favor of global datums (#82943) 2024-04-29 22:47:36 -07:00