Context
EV_DoFloor in room/src/doom/p_floor.rs handles floor movement triggered by linedef specials.
C behavior
In the C switch(floortype), case raiseFloorCrush falls through into case raiseFloor, so the floor gets both crush = 1 AND the speed, direction, and destination height set for a normal rising floor.
Rust behavior
The Rust port handles floor_raiseFloorCrush as a separate match arm that only sets crush = 1. Speed, direction, and destination height are NOT initialized, so the floor never actually moves.
Impact
raiseFloorCrush floor specials are effectively broken — they create a floor mover thinker but it never moves.
Location
room/src/doom/p_floor.rs — EV_DoFloor, floor_raiseFloorCrush arm
Flagged with // FIXME: in the source.
Suggested fix
After setting crush = 1, fall through into the floor_raiseFloor initialization (set speed, direction, and destination height). This matches the C switch fallthrough.
Context
EV_DoFloorinroom/src/doom/p_floor.rshandles floor movement triggered by linedef specials.C behavior
In the C
switch(floortype),case raiseFloorCrushfalls through intocase raiseFloor, so the floor gets bothcrush = 1AND the speed, direction, and destination height set for a normal rising floor.Rust behavior
The Rust port handles
floor_raiseFloorCrushas a separate match arm that only setscrush = 1. Speed, direction, and destination height are NOT initialized, so the floor never actually moves.Impact
raiseFloorCrushfloor specials are effectively broken — they create a floor mover thinker but it never moves.Location
room/src/doom/p_floor.rs—EV_DoFloor,floor_raiseFloorCrusharmFlagged with
// FIXME:in the source.Suggested fix
After setting
crush = 1, fall through into thefloor_raiseFloorinitialization (set speed, direction, and destination height). This matches the C switch fallthrough.