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

DeHackEd conundrum regarding missing flight

Recommended Posts

I'm currently making a monster in vanilla DeHackEd that turns into a flying variant after a set amount of health has been depleted, much like the Arachnotron/Aracnorb combo in Valiant. The idea was to alter one of the monsters that dropped something when they died and have the item be the flying variant, but for some reason the bloody thing just won't fly! I spawned the item itself using ZDoom and it worked fine, so what stops it from flying when it's "dropped" by another monster? I'll post what I have if I have to, but it is kind of something I want to keep under wraps at the moment.

Share this post


Link to post

Normal flying monsters are also reluctant to raise if they start being put right on flat ground. Isn't it just that?

According to vanilla source code, the only difference of dropped objects in comparison to normally spawned ones is adding MF_DROPPED flag. I'm not sure if it can be the source of the problem, but I don't think so. MF_DROPPED is only being checked when the thing is being picked up or being crushed.

Spoiler

    // Drop stuff.
    // This determines the kind of object spawned
    // during the death frame of a thing.
    switch (target->type)
    {
      case MT_WOLFSS:
      case MT_POSSESSED:
	item = MT_CLIP;
	break;
	
      case MT_SHOTGUY:
	item = MT_SHOTGUN;
	break;
	
      case MT_CHAINGUY:
	item = MT_CHAINGUN;
	break;
	
      default:
	return;
    }

    mo = P_SpawnMobj (target->x,target->y,ONFLOORZ, item);
    mo->flags |= MF_DROPPED;	// special versions of items

Share this post


Link to post

Note that since they'll be removed instantly when crushed, this greatly enhances the chance of undefined behavior occurring if the monsters are infighting with anything at the time (Doom never normally removes live monsters with positive HP, so doing so will cause whatever was fighting the monster to start shooting projectiles or scratching at sound effects, wall patches, lifts, blinking lights, or other random data). Unfortunately this includes stuff as simple as a door closing on their head.

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
×