Nuke Mine E1M2 teleport hell

Forum rules
Please don't bump threads here if you have a problem - it will often be forgotten about if you do. Instead, make a new thread here.

Post a reply

Smilies
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :geek: :ugeek: :!: :?: :idea: :arrow: :| :mrgreen: :3: :wub: >:( :blergh:
View more smilies

BBCode is OFF
Smilies are ON

Topic review
   

Expand view Topic review: Nuke Mine E1M2 teleport hell

Re: Nuke Mine E1M2 teleport hell

by randi » Thu Sep 13, 2012 9:04 pm

Fixed in r3871 by removing the specials from those lines.

Re: Nuke Mine E1M2 teleport hell

by Gez » Thu Sep 13, 2012 5:32 pm

randi wrote:But that was never correct, even in Doom.
compat_anybossdeath, compat_limitpain, and compat_notossdrops are arguably the only compatibility options for which the same thing couldn't be said. :wink:

Re: Nuke Mine E1M2 teleport hell

by randi » Thu Sep 13, 2012 4:57 pm

The comparision uses > 0 so that points on the line count as in front of it. This is mostly the same behavior as Doom, except they goofed up their "optimized" code and certain angles count being on the line as behind it. (I think that's only for cardinal directions, though, not diagonal lines). Most likely, it's just differences in precision between ZDoom's routine and Doom's, where Doom thinks you're behind some of the lines instead of on them.

So, yes, your fix fixes it by moving points that are on top of lines so that they are behind lines. But that was never correct, even in Doom. Since it's just a dumb layout all around, I'd rather not do any kludges to make it work.

(FWIW, in ZDoom, you can strafe directly right after the teleport without reteleporting yourself.)

Re: Nuke Mine E1M2 teleport hell

by Gez » Thu Sep 13, 2012 3:00 am

I've just found out that if I change the P_PointOnLineSide comparison from a > 0 to a >= 0, the teleport lines work like vanilla again. So (I assume there's a reason it's not >= that's used to begin with), maybe there could be a compatibility option kicking in at P_TryMove(), something along those lines:

Old:

Code: Select all

			// see if the line was crossed
			side = P_PointOnLineSide (thing->x, thing->y, ld);
			oldside = P_PointOnLineSide (oldx, oldy, ld);
New:

Code: Select all

			// see if the line was crossed
			if (insert new compat option here)
			{
				side = P_PointOnLineSide2 (thing->x, thing->y, ld);
				oldside = P_PointOnLineSide2 (oldx, oldy, ld);
			}
			else
			{
				side = P_PointOnLineSide (thing->x, thing->y, ld);
				oldside = P_PointOnLineSide (oldx, oldy, ld);
			}

Re: Nuke Mine E1M2 teleport hell

by Graf Zahl » Wed Sep 12, 2012 11:54 pm

I think it's probably best to do so.

Re: Nuke Mine E1M2 teleport hell

by randi » Wed Sep 12, 2012 9:15 pm

Well, that's a dumb layout. Should I just disable the teleporter actions on those lines, since you can still get back to that room without teleporting?

Nuke Mine E1M2 teleport hell

by Gez » Mon Sep 10, 2012 9:13 am

In Nuke Mine, which already has some compatibility issues with ZDoom, in E1M2 there is a teleporter pad that, once crossed, sends to a little platform standing in a pool of nukage, fenced by BRNBIGC borders. This platform is crossed by two linedefs (1107 and 1108) which are of the WR Teleport kind, and the teleport destination is right at their intersection point.
Image
In ZDoom, you always trigger them as soon as you move, so you get stuck at this point. You can shoot some zombies (and get shot by them), but not finish the level without no-clipping out that place. In vanilla and other ports, this isn't a problem.

Top