printz Posted February 24, 2016 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. 0 Quote Share this post Link to post
esselfortium Posted February 24, 2016 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 :) 0 Quote Share this post Link to post
printz Posted February 25, 2016 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. 0 Quote Share this post Link to post
printz Posted March 5, 2016 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. 0 Quote Share this post Link to post
HavoX Posted March 5, 2016 (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 0 Quote Share this post Link to post
printz Posted April 3, 2016 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. 0 Quote Share this post Link to post
HavoX Posted April 3, 2016 Excellent. I wonder what kind of wondrous magic you'll be able to pull off next? (printz for Eternity moderator btw) 0 Quote Share this post Link to post
printz Posted April 24, 2016 Added the Teleport_NoFog parameterized line special. It lets you choose use_angle and keep_height like in ZDoom. Details on the wiki. 0 Quote Share this post Link to post
esselfortium Posted April 24, 2016 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! 0 Quote Share this post Link to post
printz Posted April 24, 2016 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. 0 Quote Share this post Link to post
Graf Zahl Posted April 24, 2016 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. 0 Quote Share this post Link to post
esselfortium Posted April 24, 2016 Ah, my mistake. I was thinking of regular teleports with fog. 0 Quote Share this post Link to post
printz Posted June 1, 2016 Added the exit specials. See the wiki: http://eternity.youfailit.net/index.php?title=Detailed_parameterized_linedef_specification#Exits 0 Quote Share this post Link to post
Graf Zahl Posted June 1, 2016 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. 0 Quote Share this post Link to post
printz Posted July 1, 2016 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. 0 Quote Share this post Link to post
Graf Zahl Posted July 1, 2016 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.) 0 Quote Share this post Link to post
printz Posted July 4, 2016 Is that done by calling ACS SetLineSpecial? 0 Quote Share this post Link to post
Graf Zahl Posted July 4, 2016 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. 0 Quote Share this post Link to post
printz Posted July 28, 2016 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. 0 Quote Share this post Link to post
printz Posted July 29, 2016 Two new specials, mostly for Doom compatibility than with Hexen Plat_RaiseAndStayTx0 Plat_UpByValueStayTX 0 Quote Share this post Link to post
printz Posted August 2, 2016 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. 0 Quote Share this post Link to post
printz Posted August 8, 2016 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] 0 Quote Share this post Link to post
printz Posted August 9, 2016 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). 0 Quote Share this post Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.