Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Recommended Posts

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

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

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

I accidentally recorded a run in AV map 17 where a cyberdemon and a chaingunner loop eternally. Their mutual period is such that the cyber always walks 25 steps and then shoots, never hitting the chaingunner. The RNG seems to have died, so I guess this also counts as a rare kill.

av17-infinite-looper-cyber.zip

Share this post


Link to post
On 02/03/2018 at 6:34 PM, Memfis said:

Door operated by switches stops working. Plays back with Incineration.

sr-break.zip

 

The player closes the open door sector (sector 41) by pressing line 64, type 42 SR close. A cacodemon is blocked by the closing door sector before it finishes moving. The monster's attempt to move detects line 334, type 1 DR manual door, on the inside. Since this type can be activated by monsters, the cacodemon "uses" it and waits, instead of trying a different move direction.


Sector 41 already has an active door thinker from the player's button press to close it, so EV_VerticalDoor merely reverses the direction of motion in the existing thinker. However, the existing thinker has sub-type "vld_close" which is assumed to only ever move downwards - a rising vld_close is not handled. So when the door sector reaches its top height (adjacent ceiling minus 4) it just sits there doing nothing. At this point the switches no longer work, their associated sector is considered active, disallowing further actions on it.

 

You can "fix" the door by closing it from the inside. The same thing will happen: an active door thinker is detected and its direction reversed. Allow it to close fully so the malformed thinker removes itself, allowing the switches to be used again.

 

This sort of thing is why I tell people not to mix manual and remote doors, and (for different but related reasons) repeatable and single-use manuals, on the same sector.

 

nomonsters demo for illustration, on the same map

Share this post


Link to post

@RjYSome neat analysis skills there :)

Share this post


Link to post
1 hour ago, Memfis said:

Trying to shoot with chaingun selects rocket launcher. What the fuck?

 

Plays back with Neverest.

nvrs-nocg.zip

If you play the last part with -recordfromto, does it happen? For me I can switch to the chaingun without a problem, I suspect a key was stuck. The .lmp shows the weapon change key was being pressed at all times, the problem with DRE is that it shows "SG1" for all the weapons except fist/chainsaw and it's the only way I could check it quickly

Share this post


Link to post

Yeah, it switches with -recordfromto... I guess it was indeed a keyboard/mouse problem. (left mouse button registering as mouse wheel up?) And of course the rocket launcher worked once I had an imp in front of me. :D

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
×