TendaMonsta Posted April 26, 2014 How would I go about doing this? Everytime a monster resurrects itself after death it becomes un-shootable (basically a ghost monster that cannot clip through walls) Here is the dehacked file (The Zombieman is the only one that can resurrect itself as of right now until I figure out a workaround). 0 Share this post Link to post
scifista42 Posted April 26, 2014 Hey, there's some good shit in the wad! Good to see a mate, because I've been doing similar things, I mean, messing with DEHACKED and resources. :) As the workaround, I recommend to do something with VileChase action, which resurrects enemies properly if they're in the state of finished animation (on a frame with duration -1). You'll have to nullify state 266 (standard archvile's healing state) and then you can use the action on whichever monster or thing you'd like, without side effects. Maybe you could make the zombieman spawn a dummy thing (replacing his ammo clip) which will resurrect him a bit later and then destroy itself. Only maybe, I'm not sure if it could work this way. 0 Share this post Link to post
plums Posted April 26, 2014 Probably the 'Fall' codepointer is putting the monster in a dead state, that is not reset just by going to the spawn frame. AV resurrection does modify the monsters properties through the VileChase codepointer. I don't know if simply removing Fall from the Trooper's death states will cause any problems. At the very least I think it prevents him dropping a clip. Even then, he still probably isn't going to have any hitpoints. 0 Share this post Link to post
scifista42 Posted April 26, 2014 plums said:I don't know if simply removing Fall from the Trooper's death states will cause any problems. At the very least I think it prevents him dropping a clip. Even then, he still probably isn't going to have any hitpoints. Correct. He will also stay blocking. He *may* drop a clip anyway in some ports. 0 Share this post Link to post
Gez Posted April 26, 2014 A_Fall doesn't drop items in vanilla, it merely makes the mobj non-solid:void A_Fall (mobj_t *actor) { // actor is on ground, it can be walked over actor->flags &= ~MF_SOLID; // So change this if corpse objects // are meant to be obstacles. } The interesting stuff happens in P_KillMobj, which is called by P_DamageMobj if damage inflicted is enough to kill:// // KillMobj // void P_KillMobj ( mobj_t* source, mobj_t* target ) { mobjtype_t item; mobj_t* mo; target->flags &= ~(MF_SHOOTABLE|MF_FLOAT|MF_SKULLFLY); if (target->type != MT_SKULL) target->flags &= ~MF_NOGRAVITY; target->flags |= MF_CORPSE|MF_DROPOFF; target->height >>= 2; if (source && source->player) { // count for intermission if (target->flags & MF_COUNTKILL) source->player->killcount++; if (target->player) source->player->frags[target->player-players]++; } else if (!netgame && (target->flags & MF_COUNTKILL) ) { // count all monster deaths, // even those caused by other monsters players[0].killcount++; } if (target->player) { // count environment kills against you if (!source) target->player->frags[target->player-players]++; target->flags &= ~MF_SOLID; target->player->playerstate = PST_DEAD; P_DropWeapon (target->player); if (target->player == &players[consoleplayer] && automapactive) { // don't die in auto map, // switch view prior to dying AM_Stop (); } } if (target->health < -target->info->spawnhealth && target->info->xdeathstate) { P_SetMobjState (target, target->info->xdeathstate); } else P_SetMobjState (target, target->info->deathstate); target->tics -= P_Random()&3; if (target->tics < 1) target->tics = 1; // I_StartSound (&actor->r, actor->info->deathsound); // 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 }So to summarize: as soon as the monster is killed, the following happens:It becomes non-shootable (but not non-solid, that's done later when it calls A_Fall) Corpse and dropoff flags are added (so it can be detected by viles, fall from a ledge, etc.) Height is divided by four! Important effect to keep in mind! Kill count is increased Mobj is put in death or xdeath state, as appropriate If the actor is from one of the four zombie types, some loot is droppedIf the actor isn't resurrected by a vile, but by some dehacked trickery, the shootable flag isn't reinstated, the corpse and dropoff flags aren't removed, the height isn't restored to its normal value, etc. 0 Share this post Link to post
TendaMonsta Posted April 26, 2014 Basically you're saying resurrecting monsters won't work with dehacked? 0 Share this post Link to post
scifista42 Posted April 26, 2014 TendaMonsta said:Basically you're saying resurrecting monsters won't work with dehacked? Nothing in Gez's post actually disproves what I've suggested in my first post here. VileChase IS the function for what the vile normally does - properly resurrects dead monsters. 0 Share this post Link to post