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

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: [v2.4.0 & v2.4.1] Afrit Inferno Attack Broken

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

by Graf Zahl » Sun Feb 14, 2010 5:39 pm

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.

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

by Xaser » Sun Feb 14, 2010 5:37 pm

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!

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

by Gez » Sun Feb 14, 2010 5:36 pm

I don't mean the entire code as before, just the P_HitFloor and P_ExplodeMissile part.

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

by Graf Zahl » Sun Feb 14, 2010 5:14 pm

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... :?

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

by Gez » Sun Feb 14, 2010 3:53 pm

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.

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

by Enjay » Sun Feb 14, 2010 3:31 pm

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).

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

by scalliano » Sun Feb 14, 2010 3:24 pm

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.

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

by Graf Zahl » Sun Feb 14, 2010 3:16 pm

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.

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

by Gez » Sun Feb 14, 2010 3:09 pm

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.

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

by Graf Zahl » Sun Feb 14, 2010 3:02 pm

I hate this motherfucker. This one monster alone prevents us from fixing half the DECORATE related issues...

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

by scalliano » Sun Feb 14, 2010 2:34 pm

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.

Top