[v2.4.0 & v2.4.1] Afrit Inferno Attack Broken

Bugs that have been investigated and resolved somehow.

Moderator: GZDoom Developers

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 Reply
User avatar
scalliano
Posts: 2848
Joined: Tue Jun 21, 2005 1:16 pm
Location: Ireland

[v2.4.0 & v2.4.1] Afrit Inferno Attack Broken

Post by scalliano »

This was brought to my attention in another thread, and after a bit of testing it turns out it may be an issue with the latest versions of Z and GZ. He will perform the flaming ground attack, but nothing happens. I've tried the Bestiary and ZDMRP files with the same results, and both are fine in earlier versions. TBH I wasn't sure about posting this here originally, but after considering the amount of WADs this guy is used in it seemed like a good idea.
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49073
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: [v2.4.0 & v2.4.1] Afrit Inferno Attack Broken

Post by Graf Zahl »

I hate this motherfucker. This one monster alone prevents us from fixing half the DECORATE related issues...
Gez
 
 
Posts: 17835
Joined: Fri Jul 06, 2007 3:22 pm

Re: [v2.4.0 & v2.4.1] Afrit Inferno Attack Broken

Post by Gez »

Could always fix them anyway, if the monster is now broken. And just supply a compatibility patch with a rewritten DECORATE code for the afrit.
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49073
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: [v2.4.0 & v2.4.1] Afrit Inferno Attack Broken

Post by Graf Zahl »

Sorry, too late. If it was just him I wouldn't care. But its behavior has been copied so much that it's hopeless. The biggest problems are with A_CustomMissile and the best remedy for that would be to deprecate it and write a new A_SpawnMissile function without all the cruft.
User avatar
scalliano
Posts: 2848
Joined: Tue Jun 21, 2005 1:16 pm
Location: Ireland

Re: [v2.4.0 & v2.4.1] Afrit Inferno Attack Broken

Post by scalliano »

Looks like I've opened a can of worms here :oops:

If you were to deprecate A_CustomMissile it might actually be easier in the long run to fix this guy permanently. Looking at his DECORATE lump, it's not surprising it's broken. It's barely comprehensible.
Last edited by scalliano on Sun Feb 14, 2010 4:48 pm, edited 1 time in total.
User avatar
Enjay
 
 
Posts: 26535
Joined: Tue Jul 15, 2003 4:58 pm
Location: Scotland
Contact:

Re: [v2.4.0 & v2.4.1] Afrit Inferno Attack Broken

Post by Enjay »

Is it the circling projectiles that cause this A_CustomMissile problem? If so, can the same effect be managed in any other way? (I think LWM's hellhound also uses the trick as do a couple of other things I'm aware of).
Gez
 
 
Posts: 17835
Joined: Fri Jul 06, 2007 3:22 pm

Re: [v2.4.0 & v2.4.1] Afrit Inferno Attack Broken

Post by Gez »

Enjay wrote:Is it the circling projectiles that cause this A_CustomMissile problem?
In this present case, no. It's the HellFire, HellFire1 and HellFire2 actors that do not work anymore.

The culprit in this case is void P_ZMovement (AActor *mo, fixed_t oldfloorz). Specifically, here:

Code: Select all

		if (mo->z <= mo->floorz)
		{
			// old code for boss cube disabled
			//if ((mo->flags & MF_MISSILE) && (!(gameinfo.gametype & GAME_DoomChex) || !(mo->flags & MF_NOCLIP)))

			if (mo->flags & MF_MISSILE)
			{
				mo->z = mo->floorz;
				if (mo->BounceFlags & BOUNCE_Floors)
				{
					mo->FloorBounceMissile (mo->floorsector->floorplane);
					/* if (!(mo->flags6 & MF6_CANJUMP)) */ return;
				}
				else if (mo->flags3 & MF3_NOEXPLODEFLOOR)
				{
					P_HitFloor (mo);
					mo->velz = 0;
					return;
				}
				else if (mo->flags3 & MF3_FLOORHUGGER)
				{ // Floor huggers can go up steps
					return;
				}
				else
				{
					if (mo->floorpic == skyflatnum && !(mo->flags3 & MF3_SKYEXPLODE))
					{
						// [RH] Just remove the missile without exploding it
						//		if this is a sky floor.
						mo->Destroy ();
						return;
					}
					P_HitFloor (mo);
					P_ExplodeMissile (mo, NULL, NULL);
					return;
Because of this code, the missiles are exploded prematurely. Given that all these actors have the NOCLIP flag, I'm not sure if subjecting them to this collision check is a good idea... Adding a !(mo->flags & MF_NOCLIP) condition repairs the afrit's floor fire; but I haven't investigated side effects with other mods.
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49073
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: [v2.4.0 & v2.4.1] Afrit Inferno Attack Broken

Post by Graf Zahl »

It's not that easy. The code was removed for a good reason. (The reason being that it was restricted to Doom only because the Wraithverge's ghosts in Hexen need it off and in addition it didn't really work.) Why does this godforsaken Afrit have to abuse nearly every glitch in the movement code... :?
Gez
 
 
Posts: 17835
Joined: Fri Jul 06, 2007 3:22 pm

Re: [v2.4.0 & v2.4.1] Afrit Inferno Attack Broken

Post by Gez »

I don't mean the entire code as before, just the P_HitFloor and P_ExplodeMissile part.
User avatar
Xaser
 
 
Posts: 10772
Joined: Sun Jul 20, 2003 12:15 pm
Contact:

Re: [v2.4.0 & v2.4.1] Afrit Inferno Attack Broken

Post by Xaser »

Graf Zahl wrote:The biggest problems are with A_CustomMissile and the best remedy for that would be to deprecate it and write a new A_SpawnMissile function without all the cruft.
Just to toss in my two cents, why not go ahead and do this? As extraneous as it may seem, it's the only way to get around this issue while keeping things backwards compatible. It can't hurt, can it?

Show that Afrit who's boss, I say!
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49073
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: [v2.4.0 & v2.4.1] Afrit Inferno Attack Broken

Post by Graf Zahl »

Well, I think that reinstating the check only for missiles that are subject to gravity may work.

What happens is that the Hellfire2 falls to the floor and gets destroyed before it can do its work. For non-gravity missiles this entire check is completely useless anyway so we do not need it back there.
Post Reply

Return to “Closed Bugs [GZDoom]”