[Fixed] Vertical thrust doesn't take invurnerability into...

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: [Fixed] Vertical thrust doesn't take invurnerability into...

by Kuroshi » Thu Feb 12, 2004 3:21 pm

Nope, it happens either way, IDDQD, IDBEHOLDV, or grabbing an invulnerability sphere. At any rate, I wish Randy would get this fixed soon.

by Ixnatifual » Wed Feb 11, 2004 5:10 pm

I think it's when you use IDDQD that you don't get pushed when hit.

by Graf Zahl » Wed Feb 11, 2004 3:58 pm

It seems my guesses about the cause of this were only partially correct. After fixing the stuff mentioned above it still didin't work. There's another problem. This is what I found with a little debugging:

AActor::DoSpecialDamage returns -1 if the player has the invulnerability powerup or MF2_INVULNERABLE. This is wrong if not in Hexen. In Doom and Heretic an invulnerable player gets the full thrust from the damage application. The damage itself is not applied but the code responsible for this check is still there in P_DamageMobj. For players in Doom and Heretic this function must always return 'damage'.

by Sticky » Tue Jan 20, 2004 1:26 am

It's hard to say. I have an idea, and I could go on and on (and just did then deleted), but I'm probably wrong, and besides, there's no way to know for sure until changes are made. We'll just have to wait and see.

by HotWax » Tue Jan 20, 2004 12:49 am

I'm going to take Graf's word that the behavior is not as I recalled in vanilla Doom, in which case the correct behavior of NOT reducing the horizontal thrust while invurnerable needs to be restored.

Sticky: I disagree with you that wall climbing would still be possible given reduced vertical thrust. Taking into account how severly the thrust was toned down on the horizontal plane, and the rocket's refire delay, I wouldn't be surprised if you landed before you could get off the second rocket.

by Kuroshi » Mon Jan 19, 2004 7:12 pm

You're probably right about that being the issue. I'll try to limit how many bugs I report in the same topic in the future.

by Sticky » Mon Jan 19, 2004 7:05 pm

Kuroshi wrote:I actually have mentioned this in bug reports at least one, maybe two times but it seems no one cares enough about it for it to be fixed.
You mentioned several different things in one post. I do it all the time, but that may have contributed to its partial resolution.

by Kuroshi » Mon Jan 19, 2004 4:53 pm

Graf Zahl wrote:Thinking about the secret exit in E3M6 I wonder why nobody complained earlier about this. Being able to blast yourself across large distances while invulnerable is vital there.
I actually have mentioned this in bug reports at least one, maybe two times but it seems no one cares enough about it for it to be fixed. At the least I think there should be a compatability setting IMO.

I'll be happy as long as you don't take my RJs away entirely

by Sticky » Mon Jan 19, 2004 2:06 pm

HotWax wrote:You really want to get pushed around by zombies and imps while you have an invurn sphere on??
Yep. Makes sense to me. I'm already lucky enough to be invulnerable, doesn't seem like I should need lead boots, too.
HotWax wrote:If it's desirable for those cheapass DM players. . . the silliest and most weakass move in the game
Clearly, you've never played in a game where rocket jumping is vital to survival. You have to remember, everyone uses their zdoom differently.
That's why there are so many DM flags.

On that note, it doesn't matter to me how this is changed; the map we play doesn't have an invuln... err, we don't let it respawn, so it really would have no effect on me. It just seems funky to me that the one time you should be able to rocket jump (à la your realistic argument), it's harder to do so.
As for the climbing-wall trick... well, I thought it was pf cool, but I don't have any actual use for it, so it can go bye bye. I'm definitely in the minority of player who would like to see a wad where you have to use something like that, and as I have no coding skill... it's just not gonna happen.

Besides, if it's changed the way you want, where they're both lessened while invulnerable, it'll likely still be possible. I would just take more rockets. Depends on the timing.
HotWax wrote:I've never liked the idea that somebody would intentionally fire a rocket right next to themselves just to generate thrust to push them where they're trying to go. Can you imagine anything like this happening in reality?
Yep, it looks a lot like you you described: splat. It's total bullshit. For examle, we DM on skill level 1 where damage is further reduced; you REALLY wouldn't like it! I've survived super-shotgun blasts direct to the head, and I've survived direct hits with the BFG. Many a time, presuming I have any ammount of armor left, I've RJd with 30 health and survived. It's totally fake, but it's great. This isn't TrueCombat, ya know?

by Graf Zahl » Mon Jan 19, 2004 1:02 pm

So, I did some checks and found the following:

1. Doom and Heretic don't lessen horizontal thrust at all when the player is invulnerable. (Sorry, HotWax, your reasoning is wrong here! ;) )
2. Hexen doesn't apply any thrust to invulnerable players at all

The reason for ZDoom's odd behavior is a result of improperly adding some Hexen code without handling some important stuff correctly. The minimal horizontal thrust that is applied is something ZDoom specific that is done in the splash damage code. That code doesn't check for invulnerability at all.

Anyway, here's the problem:

Code: Select all

	if ((target->flags2 & MF2_INVULNERABLE) && damage < 10000)
	{ // actor is invulnerable
		if (target->player) return;		// for players, no exceptions
		if (!inflictor || !(inflictor->flags3 & MF3_FOILINVUL))
		{
			return;
		}
	}
This code from Hexen in P_DamageMobj skips the thrust application completely for an invulnerable player. The problem is that it never existed in Doom and Heretic. Hexen did a major rewrite of the Damage function so that it never applies thrust to invulnerable players. The real problem ist the inner 'if target->player) return; ' For Doom and Heretic (and probably Strife, too) it should not exit the function but jump behind the outer 'if' block. The invulnerability flags are checked elsewhere in the function but what's most important, after the thrust application.

Thinking about the secret exit in E3M6 I wonder why nobody complained earlier about this. Being able to blast yourself across large distances while invulnerable is vital there.

by HotWax » Mon Jan 19, 2004 12:50 pm

Go to the other thread and see for yourself!

by Zell » Mon Jan 19, 2004 12:47 pm

what the hell is wall running/climbing/whatever?

by HotWax » Mon Jan 19, 2004 12:15 pm

Look at the demos in the other thread for a very good example of why this needs to be changed. Clearly I'm not explaining it well enough here.

by Graf Zahl » Mon Jan 19, 2004 12:12 pm

HotWax wrote:
Graf Zahl wrote:There are 2 forces which apply thrust: being damaged and being affected by splash damage. The first one is disabled when you are invulnerable so I guess this is the expected behavior.
Then why is it one way for horizontal movement and another for vertical?

Vertical thrust is only applied for splash damage.

by HotWax » Mon Jan 19, 2004 12:09 pm

Graf Zahl wrote:There are 2 forces which apply thrust: being damaged and being affected by splash damage. The first one is disabled when you are invulnerable so I guess this is the expected behavior.
Then why is it one way for horizontal movement and another for vertical?
Sticky wrote:Hehe. I think the horizontal should be changed to match the vertical.

I think it's counterintuitive to have different values dependant on state. The forces acting upon you are the same--they should yield the same result! If anything, it should be the other way around: by giving up health and armor to absorb some of the shock, you would move less--not more!
No offense, but what you think is irrelevant. id coded the horizontal thrust to lessen while the player is invurnerable. I think we should follow their lead and keep it that way for the vertical thrust as well. Otherwise it wouldn't feel like Doom anymore. (You really want to get pushed around by zombies and imps while you have an invurn sphere on??)

If it's desirable for those cheapass DM players who can't stand hurting themselves when they use the silliest and most weakass move in the game -- rocket jumping to move around -- then it can be made into a DM flag that keeps full thrust for both horizontal AND vertical thrust... killing off your whole wall-climbing trick in the process.

I've never liked the idea that somebody would intentionally fire a rocket right next to themselves just to generate thrust to push them where they're trying to go. Can you imagine anything like this happening in reality? "Nah, don't worry Joe, I'll be fine. You just aim that bazooka at me and once I reach the peak of my jump, I'll peg ol' Jim-Bob with a few well placed sniper shots... On three now... One... Two... THREE!" SPLAT

Top