ZDaemon, TVR map25. Not a demo though. This kind of "void glide" works at every direction (in zdaemon, obviously), BTW.

Share this post


Link to post

Those are actually invisible floors that raise when you want to walk over the bridge, and lower to floor level when you want to walk under. A vanilla compatible way of simulating 3D, but in this case a revenant walked under the bridge just as you crossed the line to raise the floor. There should be block monster lines to stop this happening, but looks like they forgot to put them with this one.



The lines I've highlighted next to the other bridge all have the block monster flag, notice how the one you died on doesn't. A simple mapping oversight, but an entertaining one nevertheless :P

Share this post


Link to post
j4rio said:

getting stuck inside solid wall


Falling through the wall happens at tic 11035 in P_ThingHeightClip.

 1 onfloor = (thing->z == thing->floorz);
   
 2 P_CheckPosition (thing, thing->x, thing->y);
 3 // what about stranding a monster partially off an edge?
   
 4 thing->floorz = tmfloorz;
 5 thing->ceilingz = tmceilingz;
   
 6 if (onfloor)
 7 {
 8   // walking monsters rise and fall with the floor
 9   thing->z = thing->floorz;
10 }
11 else
   [...]
We're in P_ThingHeightClip because you are in a moving sector: the large door north of the blue key, sector 101, hasn't quite finished opening yet. Things in moving sectors are passed to P_ThingHeightClip every tic to keep them within bounds as floor and ceiling heights change.

Sector 101 also defines your floor height, even though you are mostly not in it. You are hanging over the ledge, with your centre in sector 32, whose floor height is much lower. However you are still on the floor in the sense of line 1, so later at line 9 your z-position will be set to rise or fall with the floor. The new height is obtained from P_CheckPosition, which calculates tmfloorz as a side effect. You fall through the wall because somehow a "wrong" value for tmfloorz was calculated.

tmfloorz is calculated as follows. P_CheckPosition does two blockmap iterations, first over things, then over lines. tmfloorz starts as an estimate of your floor height, obtained from the floor height of the sector at your centre - in this case sector 32. The lines check may then raise it if you are overlapping any sectors with a higher floor. In particular, this will find sector 101. In the end, tmfloorz should be the highest floor underneath you. P_ThingHeightClip can safely move you to that height.

However, P_CheckPosition's main purpose is to determine if there are any obstacles to a thing moving to a given x,y coordinate. If an obstacle is found, P_CheckPosition thinks its main purpose is complete; it can stop processing, and return false, without finishing calculating tmfloorz.

How could this happen? P_ThingHeightClip assumes, not unreasonably, nothing is blocking you at your current position (note at line 2 it calls P_CheckPosition with the thing's own x,y coordinate, and ignores the return value). But it hasn't taken the pain elemental's actions into account.

The pain elemental has coughed up a lost soul, which is immediately killed because you are occupying the space. But it remains solid briefly, with you stuck inside it. P_CheckPosition's things check detects the dead-but-still-solid lost soul as a blocker and exits early, before reaching the lines check. On return to P_ThingHeightClip, tmfloorz remains at its initial value, the floor height of sector 32, to which you instantly drop, embedded in the wall.

Share this post


Link to post

Seems to be just a node builder error there. Player can fall into the ground in the same place as well.

Share this post


Link to post

Plays back with TTP.wad ("fixed")

-skipsec -10 and I have no idea what happened. Tried IDDTx2 and a level editor. A rocket hit against... something which is not there.

@RjY

ttp-excuseme.zip

Edited by vdgg
1 person likes this

Share this post


Link to post

That's amusing. I was able to IDCLIP on to it as well.

 

Spoiler

DP7Jswi.png

FHsb8WJ.png

 

1 person likes this

Share this post


Link to post

Wow, that's unlucky. If you look in GZDoomBuilder->Nodes Viewer Mode (make sure not to move any vertices), there seems to be a tiny tiny "hole" in the room, probably like 1 unit wide: https://i.imgur.com/tnY9TRW.png I guess this is it.

1 person likes this

Share this post


Link to post

@vdgg Thanks for the call-out :) My first thought was that it was a bug from the dehacked patch creating invisible solid things, then I actually watched the demo and thought somehow the blockmap was screwed enough that the small brown stub in the courtyard was blocking the rocket, but yeah it's most likely what @rdwpa and @Memfis said. Maybe it was built with the same nodebuilder as dna_tech.wad, which has a similar load of invisible walls in an open area; both wads credit DCK as editor used.

Share this post


Link to post
2 hours ago, Killer5 said:

Can anyone let me know why I don't take damage sometimes when grabbing the secret soulsphere in the 3 vile/2 baron area in swtw03?

10:48+30 == 22 (mod 32)
10:48+31 == 23 (mod 32)
10:48+32 == 24 (mod 32)
10:48+33 == 25 (mod 32)
10:48+34 == 26 (mod 32)
10:49+08 == 3 (mod 32)
10:49+09 == 4 (mod 32)
10:49+10 == 5 (mod 32)
10:49+11 == 6 (mod 32)
10:49+12 == 7 (mod 32)
10:49+13 == 8 (mod 32)
10:49+14 == 9 (mod 32)

If I print out the value of leveltime when you were in sector 560 I observe that you were never in it when leveltime was a multiple of 32, which is when damage is taken. At the operative moment you had briefly overrun into the sectors behind (722 and 1941). These aren't damaging, despite having the same black slime flat as their neighbours; presumably a design oversight that worked in your favour.

Share this post


Link to post

@RjY

Ah I guess I missed that one long sector =x. Thanks!

1 person likes this

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now