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

Can Demons/Spectres instigate infighting?

Recommended Posts

as in can they accidentally bite something they aren't supposed to? Like with a Partial Invisibility or something?

Share this post


Link to post

It can happen if you have the partial invisibility sphere. When they bite to the side instead of straight at you they may hit an imp or something. I've seen it happen, I don't remember which version though so it may not be present in all of them.

Share this post


Link to post

I guess in theory it would be possible. Unless the coding for melee is similar to that of Unreal's coding for melee where it doesn't matter where they face, as long as you're their "Target" they'll hit you at the right distance.

Share this post


Link to post

Yes and no.

Yes if you play with Doom v1.0 (aka 0.99), v1.1, v1.2, v1.3 or v1.4; or with GL/PrBoom+ v2.5.0.8+ in complevel 0.

No if you play with Doom v1.5, v1.6, v1.666, v1.7, v1.7a, v1.8, v1.9 or AFAIK any other source port, barring the use of mods.

Share this post


Link to post

Version 1.5 changes the Demon's attack from being a short-ranged hitscan to just using a simple distance check to their target instead. Since the partial invisibility effect isn't taken into account at all in that distance check, the blur sphere provides no benefit against demons or spectres.

Share this post


Link to post

I did once hear two demons or spectres infighting in v1.9, in E4M2. I have, however, never been able to explain it satisfactorily. It was a one-time glitch and I figure it might have been related to heap corruption, somehow.

There are, after all, many Lost Souls on that map, and Lost Souls are the single most buggy feature in the entire game engine :P

Share this post


Link to post
Mithran Denizen said:

Version 1.5 changes the Demon's attack from being a short-ranged hitscan to just using a simple distance check to their target instead. Since the partial invisibility effect isn't taken into account at all in that distance check, the blur sphere provides no benefit against demons or spectres.


Once again proving that blur spheres are one of the worst power-ups ever.

Share this post


Link to post
scalliano said:

I've seen it happen in ZDoom, dunno if that counts.

ZDoom uses the pre-1.5 behavior for monster melee.

Speaking of which, why did id change that?

Share this post


Link to post
Daiyu_Xiaoxiang said:

But I do once see barons infight!

Same here, I've also seen cacodemons infight and in both cases barrels were involved.

Share this post


Link to post
GreyGhost said:

Same here, I've also seen cacodemons infight and in both cases barrels were involved.


That would be this:
http://doomwiki.org/wiki/Monster_infighting#Difficulties

In the earliest versions of Doom v1.0-1.1, a barrel could also cause a monster to attack itself.
http://doomwiki.org/wiki/Barrel_suicide

I've also observed a Maulotaur in Heretic attacking itself (which is strangely, based off Doom v1.2).

Share this post


Link to post
Vermil said:

That would be this:
http://doomwiki.org/wiki/Monster_infighting#Difficulties

In the earliest versions of Doom v1.0-1.1, a barrel could also cause a monster to attack itself.
http://doomwiki.org/wiki/Barrel_suicide

I've also observed a Maulotaur in Heretic attacking itself (which is strangely, based off Doom v1.2).


What would happen if a maulotaur hit one of those exploding green seed things and that hurt another maulotaur, would it turn on the first monster and fight, like the two barons in E1M8? Another question, I have seen a lost soul crash into a window frame and detonate a barrel nearby, was that splash damage from the impact? This was prboom 2.5.0.

Share this post


Link to post
scalliano said:

I've seen it happen in ZDoom, dunno if that counts.

You were seeing the result of a some HateTarget script, or maybe some DEHACKED or DECORATE modification was in play. With the standard actors unchanged and without scripting involved, it simply cannot and will not happen.

Sodaholic said:

ZDoom uses the pre-1.5 behavior for monster melee.

Stop smoking pot. It's not good for your neurons.

DEFINE_ACTION_FUNCTION(AActor, A_SargAttack)
{
	if (!self->target)
		return;
				
	A_FaceTarget (self);
	if (self->CheckMeleeRange ())
	{
		int damage = ((pr_sargattack()%10)+1)*4;
		P_DamageMobj (self->target, self, self, damage, NAME_Melee);
		P_TraceBleed (damage, self->target, self);
	}
}
See? FaceTarget, CheckMeleeRange, P_DamageMobj. No line being traced except for the blood decals. It's not a hitscan, just a range check.

Share this post


Link to post

Yeah, blasted monsters hurt each others if they collide. You can trigger infighting this way.

You can also kill them by repeatedly sending them against each others or against the floor.


Of course, Doom, whether pre- or post1.5, did not feature the disc of repulsion. :p

Share this post


Link to post
40oz said:

as in can they accidentally bite something they aren't supposed to? Like with a Partial Invisibility or something?

I thought you were trying to be cheeky in the 'just learned' thread, but this is actually a really good question.

Sigvatr said:

This will be the longest thread ever.

deservedly so

Share this post


Link to post
Hellbent said:

I thought you were trying to be cheeky in the 'just learned' thread, but this is actually a really good question.


And I think Mithran Denizen answered that a few posts up. The short answer: no.

Share this post


Link to post
Gez said:

Stop smoking pot. It's not good for your neurons.

Huh, must've gotten bad info. I know ZDoom does a few things more similarly to earlier versions of Doom, can't remember what though. (I think one of the things had to do with monster sight checks or something)

GoatLord said:

I could have sworn I saw it happen on PSX Final Doom.

That would be because PSX Doom is based on Jaguar Doom, which in turn is based on version 1.2.

Share this post


Link to post
Sodaholic said:

Huh, must've gotten bad info. I know ZDoom does a few things more similarly to earlier versions of Doom,



Only the sight checking - but only because the old method is a lot faster.

Share this post


Link to post
Technician said:

I've never seen it 'CAUSE THEY'RE DEAD! /Doom boner


Schrodinger's Demon: There's no way to know if the demons are infighting or not unless you open the box.

Share this post


Link to post

Saw that once in whole my life, about 15 years ago demons fighting each other on map23 "barrels o' fun". Never i was able to reproduce that and don't remember which version I played

Share this post


Link to post

This is the source of the action function that demons/spectres use when attacking:

void A_SargAttack (mobj_t* actor)
{
    int         damage;

    if (!actor->target)
        return;
                
    A_FaceTarget (actor);
    if (P_CheckMeleeRange (actor))
    {
        damage = ((P_Random()%10)+1)*4;
        P_DamageMobj (actor->target, actor, actor, damage);
    }
}
For those of you who can't read C, the key line is the one that says "P_DamageMobj". The demon attacks the other player / monster that it has registered as its "target" - this typically happens when it sees or hears a player, or another monster attacks it.

Therefore, by this reasoning, it shouldn't ever be possible for demons or spectres to instigate in-fighting. Even if you're using an invisibility sphere, the direction the demon is facing doesn't matter - it isn't taken into account when the attack is made.

I'm happy to be proven wrong though.

Share this post


Link to post

For those who are curious, here is the decompiled version of Doom 0.99's A_SargAttack:

void __fastcall A_SargAttack(void *actor)
{
  signed __int64 v1; // qax@2

  if ( *((_DWORD *)actor + 30) )
  {
    A_FaceTarget();
    *(_DWORD *)&v1 = P_Random();
    *((_DWORD *)&v1 + 1) = (_DWORD)v1 >> 31;
    P_LineAttack(4 * v1 % 10 + 4);
  }
}
The junk with the >> 31 is due to the modulus operator (%) causing an idiv instruction to appear in the assembly code, requiring setup of edx:eax as such:
cseg01:0002A1E1                 mov     edx, eax
cseg01:0002A1E3                 mov     ecx, 0Ah
cseg01:0002A1E8                 sar     edx, 1Fh
cseg01:0002A1EB                 idiv    ecx

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
×