Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
printz

New parameterized linedef specials in Eternity

Recommended Posts

I just added several parameterized specials in Eternity that affect things. The full list of such specials is here. The new ones are listed in this post (descriptions same as in the wiki). The numbers are for ExtraData support (though you may not need them if you just type the mnemonics in the lump). For ACS, just keep using the zspecials.acs include file as-is.

They'll come in the next DRDTeam dev build.

422:Thing_Raise(tid)

Resurrects all corpses having tid if they have room. They will retain their alignment (friend or foe) before their death. If tid is 0, it will resurrect the activator. Doesn't work on players.

423:Thing_Stop(tid)

Stops the movement of all things tagged tid. If tid is 0, it will stop the activator. It works by resetting velocity to 0, which means that it will work against players, projectiles and other thrusted objects. It will not "paralyze" monsters because they use a different kind of movement.

424:ThrustThing(angle, speed, reserved, tid)

Pushes the thing in a direction using the specified speed. If tid is 0 it will push the activator. The argument reserved must be 0 and is intended to be used when Eternity has a working high-speed movement system. If the map is made for vanilla Hexen, it will only be activated from the front side; otherwise it will depend on the 1SONLY ExtraData flag.

425:ThrustThingZ(tid, speed, up_down, set_add)

Pushes the things tagged tid vertically. The value from speed will be divided by 4 before being added to the thing's vertical speed. Up_down will cause the thing to be thrusted upwards if 0, downwards if 1. Set_add will cause the speed to override the current value if 0, or add to the current value if 1.

426:DamageThing(damage, mod)

Damages the activator. Mod is a means-of-death (damagetype), which can be used for custom obituaries and damage resistances. If damage is 0, it will actually do 10000 (gibbing) damage.

427:Thing_Damage(tid, damage, mod)

Same as DamageThing, but with the possibility to select TID (where 0 will mean the activator). It's done this way for ZDoom compatibility. Unlike DamageThing, it will not cause 10000 damage if damage is 0.

428:Thing_Destroy(tid, reserved, sectortag)

Causes 10000 damage to all things tagged tid. Beware that, in accordance to Hexen, tid 0 will NOT affect the activator; for that use DamageThing. Reserved must be set to 0. Sectortag can be used to only kill things inside sectors with given tag.

Share this post


Link to post

That's awesome! I'm especially glad to see ThrustThingZ here. Like I mentioned on IRC, adding sector floor-hit actions and aircontrol would go the rest of the way to make jump pads possible :)

Share this post


Link to post

New: added 429:Door_LockedRaise and 430:ACS_LockedExecute. Eternity has locked parameterized specials finally!!!! No more need to use Boom Rube-Goldberg designs just to lock your scripts!

More info on the wiki at their respective sections.

Share this post


Link to post

New:

431:Floor_Donut (pillar_tag, pillar_speed, surrounding_speed)
Does the donut movement behavior, allowing you to choose pillar speed and surrounding pool speed. The tag belongs to the pillar.

Share this post


Link to post

(inb4essel)

Awesome news, keep up the good work as always!

Now please excuse me while I pick up the teeth that came off my lower jaw after it dropped to the floor. :P

Share this post


Link to post

Added the Teleport linedef special. Like all others, it uses the same args as in ZDoom. See the documentation.

Something of note: if destination tid is set, it will teleport to any random thing with that ''tid''. I haven't seen anywhere in the Hexen code a restriction that the target things have to be tele-destinations or map spots. Indeed, the target can be a moving monster, Shub-Niggurath floater or anything. This is unlike ZDoom which assumes that the target things must be map spots or something like that.

On the other hand, for Doom compatibility, if tid is zero, it will act just like the Doom teleporters, using sector_tag as the parameter and requiring Doom teleport destinations as normal.

Share this post


Link to post

Excellent. I wonder what kind of wondrous magic you'll be able to pull off next?

(printz for Eternity moderator btw)

Share this post


Link to post

Added the Teleport_NoFog parameterized line special. It lets you choose use_angle and keep_height like in ZDoom. Details on the wiki.

Share this post


Link to post

Oooh, nice! Not being able to preserve height on teleports is something I just ran into the other day, albeit in a Boom map. Glad to have that option available in EE!

Share this post


Link to post
esselfortium said:

Oooh, nice! Not being able to preserve height on teleports is something I just ran into the other day, albeit in a Boom map.

Wait. Don't the Boom specials preserve height relative to floor? Keep in mind that Teleport_NoFog is strictly to-thing teleporting (as an added note: you can set anything as the target TID; it doesn't need to be a "map spot"), not line-to-line teleporting.

Share this post


Link to post

PrBoom says

          // Adjust z position to be same height above ground as before
          thing->z = z + thing->floorz;
But ZDoom translates it accordingly:
207 = WALK|MONST,	Teleport_NoFog (0, 2, tag, 1)
208 = WALK|REP|MONST,	Teleport_NoFog (0, 2, tag, 1)
209 = USE|MONST,	Teleport_NoFog (0, 2, tag, 1)
210 = USE|REP|MONST,	Teleport_NoFog (0, 2, tag, 1)
so it should be correct as it is.

Share this post


Link to post

You should clearly state that 'reserved' must be 0 for now, or you may find that some mappers ignore all sanity and get their maps broken when these get implemented later.

Share this post


Link to post

I added 450:Line_Horizon. It's not parameterized and you don't need UDMF or even a sector tag for it! Just select any wall linedef you want and apply special 450 on it.

Share this post


Link to post

Please note that in ZDoom, Line_Horizon is a dynamic special, i.e. it can be toggled during gameplay. From what I see in your implementation it's only done at map start.

(The same applies to Line_Mirror, as well, in case you want to add that, too.)

Share this post


Link to post

Yes. These two specials can be activated and deactivated by altering the line's special, the renderer actually checks if the line got these two values to decide if it's a mirror or horizon.

Share this post


Link to post

A lot of parameterized linedef specials have been added to Eternity now. See them all in http://eternity.youfailit.net/wiki/Detailed_parameterized_linedef_specification

They are:

ChangeSkill
Elevator_LowerToNearest
Elevator_MoveToFloor
Elevator_RaiseToNearest
FloorAndCeiling_LowerByValue
FloorAndCeiling_LowerRaise
FloorAndCeiling_RaiseByValue
Floor_RaiseAndCrush (Hexen compatibility)
Floor_TransferNumeric
Floor_TransferTrigger
Generic_Ceiling (Boom compatibility)
Generic_Floor (Boom compatibility)
HealThing
Light_MaxNeighbor
Light_MinNeighbor
Light_StrobeDoom
Polyobj_Stop
Sector_SetCeilingPanning
Sector_SetFloorPanning
Sector_SetPortal
Sector_SetRotation

Thanks to Altazimuth for some of these specials!

In addition, added "gap" parameters to Ceiling_ToFloorInstant, Ceiling_LowerToFloor, Ceiling_LowerToHighestFloor, Floor_RaiseToLowestCeiling, Floor_RaiseToCeiling, Floor_ToCeilingInstant, which sets a difference of height between the reference height and the actual destination height, useful for one-time crushers.

Share this post


Link to post

Two new specials, mostly for Doom compatibility than with Hexen

Plat_RaiseAndStayTx0
Plat_UpByValueStayTX

Share this post


Link to post

Made the following specials available in ExtraData (and now UDMF too):

Transfer_FloorLight
Transfer_CeilingLight
Transfer_Heights (only one parameter so far: the tag).

UDMF uses Hexen numbers, ExtraData the Doom numbers.

Share this post


Link to post

I've added the following specials here. They're generally based on ZDoom, since it's a pretty good backwards-compatible setup:

* Sector_SetFriction

* Sector_SetWind: in addition to ZDoom, the fourth argument ("useline" in ZDoom), can also have value 2 added to it, which makes it generate Heretic-style wind (which doesn't require wind sector special) instead of Boom-style wind.

* Sector_SetCurrent: same extension as with Sector_SetWind

* PointPush_SetForce

* Static_Init: currently only the MBF sky transfer is supported (see ZDoom documentation on this bugger)

* Sector_Attach3dMidtex

[in case you also saw Line_SetPortal here before this edit, please don't use it yet]

Share this post


Link to post

Added the following new specials:

Plat_DownWaitUpStayLip (necessary for Doom)
Plat_PerpetualRaiseLip (necessary for Doom)
Plat_ToggleCeiling

Extended the following specials:

Ceiling_CrushStop
Plat_Stop

In both cases, I added a new argument (second) to specify how it should stop. 0 means game-dependent, 1 means like Doom (pause, without releasing the floor/ceiling for other activations) and 2 means like Hexen (remove, by releasing the floor/ceiling for other activations).

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
Sign in to follow this  
×