A few notes ahead:
The original of this tutorial was made roughly a year ago but got lost in the Excelcia/Infinity forums crash with a total dataloss. This Data was recovered from a backup that JetPak made half a year ago.
Now to the tut:
Fuses
What are fuses?
This is the 1st question what people usually ask. This tutorial should give you a detailed description about fuses, how to use them and what you can do with them.
Fuses are assigned to ships and can be activated when the ship's hitpoints reach a certain value. The fuse sequences contain mostly FX effects, the most common you see in Freelancer are smoking and burning ships, but also the explosions of bigger capships, which can be very impressive when made with some detail.
You can create various timed effects like explosions, flashes, ships breaking apart, and so on. Fuses are also able to create various things like player lootdrops and other nice details that make the game nicer.
[u
What files are fuses in? [/u
Usually in Data\Missions\fuses.ini , but most capships have their own fuse files. Makes technically no difference as long you have the entries right in freelancer.ini
You can use the fuse entries in all archetype files, may it be ships, solars, ...
[u
Sections [/u
I will try to make a list of all possible sections that are found in fuse files. Combining these can create very nice additions to the game.
[fuse
The definition of the fuse. This is referenced in shiparch.ini and solararch.ini. Fuses can be made for both - it works the same way.
All of the following sections in a file are considered as part of a single fuse - until the next [fuse section starts.
<pre><font size=1 face=Courier><font size=1 face=Courier>[Fuse
name = intermed_damage_smallship01
lifetime = 1
death_fuse = false </font> </font></pre>
name: reference name
lifetime: total length of the fuse in seconds.
death_fuse: (true/false) This specifies if the player will die after the duration of the fuse. Until then he is technically invincible. (true
No death-message will be displayed in this case. The player can still fly around and shoot during this time.
(false
The player dies in a "normal" way, deathmessage is displayed.
[start_effect
Starting an effect/explosion/whatever - this sets up where and when it is and how it looks. You can include several hardpoint lines to multiply the effect and to recreate it on different mounts. This works for the other fuses as well - you can give most of them several hardpoint entries.
<pre><font size=1 face=Courier><font size=1 face=Courier>[start_effect
effect = gf_continuous_fire
hardpoint = HpWeapon03
hardpoint = HpWeapon04
hardpoint = HpWeapon05
hardpoint = HpShield01
hardpoint = HpShield01
hardpoint = HpThruster01
at_t = 0.000000
attached = true </font> </font></pre>
effect: name reference to effects.ini - the "look" of the effect. can be also an explosion effect (that one can be made to inflict damage - multiple volley explosion damage is possible)
hardpoint: list of hardpoints where the effect will be attached. One of the listed ones will be picked by random.
at_t: (at_time) The effect will start with this delay from the time of triggering. Timing can be important. With a well made timing you can make things like an explosion blast that goes through a capship, then parts starts to fall off, flashes, explosions - till the main hull explodes.
attached: (true/false) specifies if the FX is attached to the ship and if it follows its movement or not.
[destroy_hp_attachment
Destroy attached items on mounts. You can include several hardpoint lines here to strip many mounts off the ship.
<pre><font size=1 face=Courier><font size=1 face=Courier>[destroy_hp_attachment
at_t = 0.000000
hardpoint = HpTurret_u1_03
fate = debris </font> </font></pre>
at_t: at_time, see above
hardpoint: which hardpoint attachment should be destroyed? anything attached to this mount will be destroyed.
fate: what happens to the mounted item? usually debris.
[destroy_group
Destroy mesh groups (for example: shipparts). Several groups can be detroyed this way at once.
<pre><font size=1 face=Courier><font size=1 face=Courier>[destroy_group
fate = disappear
at_t = 0.250000
group_name = trans_port_eng_lod1 </font> </font></pre>
fate: selfexplaining
at_t: timing, see above
group_name: name of the group in the model file (.cmp) that should be destroyed. This is part of the descrtuctible parts concept of FL.
[tumble
This decribes ship movement after triggering the fuse.
You can let ships fly weird manovers after "death" before they explode.
<pre><font size=1 face=Courier><font size=1 face=Courier>[tumble
at_t = 0.000000
ang_drag_scale = 0.300000
turn_throttle_z = 0.700000, 0.950000
turn_throttle_x = 0.000000, 0.100000
turn_throttle_y = 0.000000, 0.100000
throttle = 1.000000, 1.000000 </font> </font></pre>
at_t: timing, see above
ang_drag_scale: multiplier to the angular_drag value of the ship.
turn_throttle_<z/x/y>: not 100% sure but i think its min, max values of turning.
throttle: again, min, max values of ship speed.
[destroy_root
The time of death. Connected closely to death_fuse = true.
This is what kills the player -> no death message.
<pre><font size=1 face=Courier><font size=1 face=Courier>[destroy_root
at_t = 1.000000 </font> </font></pre>
at_t: timing, see above
[damage_root
Not sure on this as i didnt had time to fully test it, but my guess is that its one sort of selfdamaging . I need to test a few things here. One thing could be possible: you damage a ship to a certain level, then it starts smoking, breaking apart, damaging itself to trigger the next fuse till it is shaken by a shockwave and blows in a spectacular explosion.
Update with the reposting of the tut: this indeed did damage the ship.
<pre><font size=1 face=Courier><font size=1 face=Courier>[damage_root
at_t = 0.100000
damage_type = absolute
hitpoints = 125000 </font> </font></pre>
at_t: timing, see above
damage_type: needs a few tests, donno yet
hitpoints: needs testing, my guess is that its the remaining hitpoints - setting this to a fuse triggering level can have interesting cascading effects & trigger another fuse with a fuse.
damage_type: just guessing, maybe relative and absolute - needs testing
[impulse
You can make physical "blasts" with this that affect ship movement.
<pre><font size=1 face=Courier><font size=1 face=Courier>[impulse
at_t = 1.000000
hardpoint = HpMount
pos_offset = 23, 13, 65
radius = 150
force = 28000000
damage = 0 </font> </font></pre>
at_t: timing, see above
hardpoint: origin of physical impulse
pos_offset: additional offset (x, z, y) to the hardpoint's position
radius: selfexplaining - all objects insisde this wil be affected
force: impulse - how strong is it?
damage: well, blasts can hurt, too
[start_cam_particles
havent experimented with this one - it's used in SP missions. "Could" be for ingame cutscenes, but im not sure.
<pre><font size=1 face=Courier><font size=1 face=Courier>[start_cam_particles
effect = gf_whiteflash
at_t = 0.990000
pos_offset = 0, 0, -20
ori_offset = 0, 0, 0 </font> </font></pre>
[ignite_fuse
This makes it possible to trigger several other fuses from one fuse sequence. Typically, it is used for capsihp parts that have their own destruction sequences - when the main section of the ship is "killed" then it triggers the remaining shipparts to completely destroy the ship, running through all fuse sequences and creating usually nice FX.
<pre><font size=1 face=Courier><font size=1 face=Courier>[ignite_fuse
at_t = 0.200000
fuse = b_battleship_head_fuse
fuse_t = 0.000000 </font> </font></pre>
selfexplaining.
[make_invincible
selfexplaining
- elegant way to create an "admin" ship.
<pre><font size=1 face=Courier><font size=1 face=Courier>[make_invincible
turn_on = true </font> </font></pre>
[dump_cargo
This is the magic behind the player lootdrops. It will dump all unmounted equipment a ship carries, including nanos/batts, ammo, commodities, whatever that is not "mounted".
<pre><font size=1 face=Courier><font size=1 face=Courier>[dump_cargo
at_t = 0.000000
origin_hardpoint = HpMount </font> </font></pre>
entries are selfexplaining. works very good within "death_fuse=true" fuses.
[u
Triggering fuses [/u
All in shiparch.ini and solararch.ini.
Here's a typical fuse entry of a ship:
<pre><font size=1 face=Courier><font size=1 face=Courier>fuse = intermed_damage_smallship01, 0.000000, 8060
fuse = intermed_damage_smallship02, 0.000000, 4567
fuse = intermed_damage_smallship03, 0.000000, 2467 </font> </font></pre>
The format is
fuse = < fuse name>, < unknown >, < hitpoints for triggering >
the "unknown" "could" be a minimum triggering level, the last entry being th maximum - this needs verifying.
It is easy to see that the fuses are triggered with degrading hitpoints of a ship. First it smokes, then it catches fire and then burns.
[u
Summary [/u
With a bit love to detail and some work you can create veryvery impressive smoke/fire/explosion sequences involving ship tumbling, shockwaves, explosions (that deal damage), parts breaking off the ship and so on. Lotsa possibilities here that add a lot of detail to the game.
Its maybe best to take a look at some more complicated fuses (capships). Try to figure out how they work, how they are timed and set up.
Its sometimes amazing what small details are worked out for those - you never really notice those in space.
I hope this tutorial was understandable and explained the "magic of fuses" very well
Fjord
P.S.: Feel free to let me know any mistakes/typos, ...
Edited by - LordFjord on 11/18/2004 6:35:09 AM