Entry 226
COL floor flags 32 and 64 sink a character as drawn: level 4's deep water
5mrender
Filescrates/rugrats/src/world/game/mod.rscrates/rugrats/src/actors/npc.rsplayer.rscrates/rugrats/src/world/collide.rsdocs/levels/level-04.md
COL floor flags 32 and 64 are the sink depth: a character on such a tile is drawn 298 lower per step of depth and gets no shadow. Level 4's deep water has them, and the port now draws its waders sunk.
The reader (0x8003205c). The character draw takes the body's tile (+0x8c) unless it stands on an object (+0xf8). Its flags (COL +4) give depth (flags & 96) >> 5, and fp = 298 × depth.
- Each part's matrix translation y gets fp before its draw (0x8001eb4c) and loses it after. The parts as kept, which the collision tests read, are not sunk.
- With fp set, the shadow (0x8003414c) is skipped.
The only byte +4 tests in the code are of 1, 2, 4, 16 and 96. Nothing found reads 8.
Where. Only level 4 has such tiles: 54 of flags 33 (water and depth 1), the deep water around (-229000, 256, 64000). The oracle's room 40 floor in the level 4 doc carries the same 33.
The port.
Game::sinkgives the depth for a place and whether it stands on an object.Player::trianglesandnpc::trianglestake it and draw each part that much lower.Npc::drawnkeeps the unsunk pose, and the hand still places the carried thing from the parts put back.collide::floor_flagsnames every bit.
- The characters' shadow (0x8003414c with 0x8006c118): the port draws none.
- Who, if anyone, reads floor flag 8 (levels 1, 12, 13 and 18 have it).