Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
40oz

More than 100% secrets

Recommended Posts

A reviewer for BAK2HELL.WAD commented:

"This is one of the best wads ever made because of the possibility of getting 112% secrets."

I've been playing this wad a little and I haven't yet bothered to find all the secrets (and the mysterious super secrets) in any one of the maps, but my question is is this reviewer talking out of his ass or is it possible to achieve more than 100% secrets? Does it depend on the source port and is it possible to design a secret that gives you additional secret percentage points on purpose?

Share this post


Link to post

It's a fun old bug caused by the sector raise/lower actions that change the sector's type. In vanilla, it will copy the secret flag if the model sector has it. ;)

As for a list of which ports do this and which don't? Can't say I have that.

Share this post


Link to post

I might be wrong (maybe it's only doable with a couple of Boom's generalized specials?) but I think it might be possible to use some of the move-floor-and-change-properties specials to transfer over the Secret flag from one sector to another, in the same way that it would transfer a damage flag or lighting effect. The result would be that it'd be possible to earn credit for more secrets than were counted at the time of map load. I doubt this particular behavior is preserved in all source ports though.

edit: I snooze, I lose

Share this post


Link to post

IIRC, I read about this in these forums a long time ago. It actually resulted in some really interesting info., along with Grazza's mentioning of Barrel2.wad in the misc. speed demos forum... Which, by the way, if you want to dig into the research behind a random wad, this one would be good to look at.

Share this post


Link to post

While it is true this is not a BOOM-specific problem, BOOM did "exacerbate" it by adding additional sector property transfer line types ;)

Share this post


Link to post
Xaser said:

It's a fun old bug caused by the sector raise/lower actions that change the sector's type. In vanilla, it will copy the secret flag if the model sector has it. ;)

Yeah I actually had this problem back in '96 when I was working on a Doom2 mapset. I had some floors lower/change next to a secret and I ended up getting 140-some-percent secrets.

Once I figured out what was happening, I used it as a design trick to have damaging nukage flats in blinking sectors.

Share this post


Link to post
Lüt said:

Once I figured out what was happening, I used it as a design trick to have damaging nukage flats in blinking sectors.


Hang on, so when a sector acquires a new sector type it doesn't erase the old one? They actually overlap?

Share this post


Link to post
Creaphis said:

Hang on, so when a sector acquires a new sector type it doesn't erase the old one? They actually overlap?

They don't.

The trick is that lighting types are ignored after map init. A sector doesn't glow or flicker because it is its type, but because it has a lighting thinker attached to it. If the type is changed afterwards, the thinker remains.

The full list of effects that can be combined in this way can be seen by looking at P_SpawnSpecials in the source code. For vanilla, this mean any of the types that have a P_SpawnWhateverStuff function in their case, which means all the following except secret sector.

	switch (sector->special)
	{
	  case 1:
	    // FLICKERING LIGHTS
	    P_SpawnLightFlash (sector);
	    break;

	  case 2:
	    // STROBE FAST
	    P_SpawnStrobeFlash(sector,FASTDARK,0);
	    break;
	    
	  case 3:
	    // STROBE SLOW
	    P_SpawnStrobeFlash(sector,SLOWDARK,0);
	    break;
	    
	  case 4:
	    // STROBE FAST/DEATH SLIME
	    P_SpawnStrobeFlash(sector,FASTDARK,0);
	    sector->special = 4;
	    break;
	    
	  case 8:
	    // GLOWING LIGHT
	    P_SpawnGlowingLight(sector);
	    break;
	  case 9:
	    // SECRET SECTOR
	    totalsecret++;
	    break;
	    
	  case 10:
	    // DOOR CLOSE IN 30 SECONDS
	    P_SpawnDoorCloseIn30 (sector);
	    break;
	    
	  case 12:
	    // SYNC STROBE SLOW
	    P_SpawnStrobeFlash (sector, SLOWDARK, 1);
	    break;

	  case 13:
	    // SYNC STROBE FAST
	    P_SpawnStrobeFlash (sector, FASTDARK, 1);
	    break;

	  case 14:
	    // DOOR RAISE IN 5 MINUTES
	    P_SpawnDoorRaiseIn5Mins (sector, i);
	    break;
	    
	  case 17:
	    P_SpawnFireFlicker(sector);
	    break;
	}
You'll notice that sector movements such as doors, platforms and crushers are also managed by thinkers, but those thinkers are usually spawned from triggering linedef effects rather than from a sector type. The 30-second and 5-minute delay doors being the exception.

Xaser said:

That's actually brilliant. Does it work in most ports?


It should.

Share this post


Link to post
Creaphis said:

Hang on, so when a sector acquires a new sector type it doesn't erase the old one? They actually overlap?

I thought they did, but apparently they don't. It just so happened that all my combinations were with P_SpawnWhateverStuff functions and by coincidence I never tried to pile up 2 non-P_Spawn* sector types, so I thought they piled up because I never noticed any overwrites.

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
Sign in to follow this  
×