Maybe some sort of flag to be applied to hitscan weapons or projectiles that will stun an enemy for "reaction time * 8" ? Also as an addendum to this "feature", would it be possible to add the ability to define Tranquilized states in DECORATE? If states are not defined, the thing would go into it's death animation and be resurrected "reaction time * 8" tics later...
A_TrankTracker pointer in DECORATE:
A simple pointer to add a single tic every time the frame is looped, up until (reaction time * 8) tics are reached, at which point either the frame with the A_WakeUp pointer is played through or the Resurrection states are played...?
Thing_SpecialProjectile();
I suggest for a quick way to define "special projectile loops" you take a quick look at this:
Code: Select all
Thing_SpecialProjectile(placementID, nextID, ThingtoShoot, thingID, <translations>);
nextID : The next time the monster with a Thing ID equal to 'thingID', the Thing_SpecialProjectile(); command with this number as 'placementID' is used.
ThingtoShoot : What object to use as a projectile, as defined either in the standard form (T_IMP for example), or as referenced by DECORATE.
thingID : Any monster or Mapspot(gravity) with this ID will shoot this projectile and the following projectile sequence if applicable. (I was thinking that this could be done by something like MapSpotProjectile(thingID, placementID), if you see where I'm going with this)
translations : Follows the same structure as Thing_SetTranslation, except you don't need to use a ThingID for what should bear the translation.
Thing_ForceDirection();
Maybe the first use you think of for this script action won't be in the front of your mind, but it may be useful later.
Code: Select all
Thing_ForceDirection(thingID, direction);
direction : The direction you want the Thing to face. If possible, it would be cool if this could be done with something like D_NORTH, D_SOUTHEAST, etc.
GetActorX();, GetActorY(); and GetActorZ();
Code: Select all
GetActorX(thingID, actortype);
GetActorY(thingID, actortype);
GetActorZ(thingID, actortype);
actortype = set 0 for a monster or other non-player object, set 1, 2, 3, or 4 for a player object of the corresponding (positive) number, or type AllPlayers to get all the player coordinates at once(???)
* = I don't recall completely, but while I was working on DarkDoom a long time back, it appeared as if clipping along LINEDEFs was determined through polar coordinates, which is sorta silly. Can anyone confirm this?
That's it.