Ive added a few new objects to the FFX databse to allow mapmakers to pull of some interesting effects without having to write a line of code.
Placing objects in a map
The special objects don't appear in the menus for FFEdit, but are easy to place. Place a character on the map where you want (any character), name them and then ALT-TAB back to FFEdit. Change the objects type to GENERIC and choose the template from the list and then press Save - you'll see the object change in the LevelEditor.
If you want an object (eg a teleporter) to look different from the standard pad, place the object you desire and change its template. The object will continue to use the NIF file you specified.
Objects of template ffx_teleporter automatically get a USE command for all heroes. Using the teleporter will instantly transport the character to a marker called 'pos_'. If the marker doesn't exist, a message appears in the message bar instead.
e.g. place a teleporter called 'tp1' and a positional marker called 'pos_tp1', and using the teleporter will transport the character to the marker.
Teleporters also work in multiplayer - instead of using a custom command you just attack the teleporter at close range to use it.
Its possible to place permanent explosions on the map, doing actual damage, by placing a specially name 'ffx_tiggot' character on the map. Remember that the 'tiggot' is invisible.
The tiggot should be renamed to the explosion power desired, followed by four characters (to allow the standard naming convention of '_001'.
e.g. to place a couple of fire explosions on a map, using the ffx_firestorm power, add two tiggots called ffx_firestorm_001 and ffx_firestorm_002. When the level starts up they'll automatically turn into explosions that trigger every couple of seconds.
If an object exists with the same name as the explsoion object with an o (for object) in front, then the explosion becomes linked to that object, and will spawn around it (wherever it is) and stop when the object is destroyed. e.g. placing a machinery object called 'offx_firestorm_001' will link the first explosion to that machine, allowing characters to stop the explsoion by destroying the object. In this case the positional placement of the tiggot called 'ffx_firestorm_001' becomes irrelevant.
Standard explosion powers
This system won't deal with capitals or spaces in the name - so you may have to copy and rename a lot of powers to get it working nicely. Some standard explsoions have been provided with the names 'ffx_ex_fire_small', 'ffx_ex_ice_large', etc, describing the radius and type systematically, and a couple of types for smoke and water.
Switches (NEW in FFX V2.3)
Any object thats given the template 'switch' (which exists previously from the Mr Mech levels) gets the ACTIVATE command on it.
When you activate a switch it looks for an object with the same name as the switch but with the first two letters removed, so you can name the switch for the teleporter object 'tp1' as say 's_tp1' like Ive done, but anything like 'mctp1' would do.
When it finds the object it examines its template. If the object doesn't exist it knocks the first three and last four letters off, right?, so that 'sc_door_1_001' becomes template 'door_1', as per the standard scenery object naming convention. The switch for this object would be 's_sc_door_1_001'.
It then tries to call a function 'FFX_Switch', e.g. FFX_Switchdoor_1 in the above example. These functions are located in ffxextras.py.
So far we have:
FFX_Switchffx_teleporter - if the object is a teleporter it triggers the teleporter and anyone within 50 units gets sent through - if theres two or more then an explosion occurs at the end point to separate them.
FFX_Switchdoor_1,2 and 3 - if the door exists, kill it. If it doesnt, spawn a new one on the marker named 'pos_