Technically, all entries are optional. (Except for name, obviously) It's just that if certain values aren't filled in by the end of the loading sequence for a certain ship, it'll crash. Off the top of my head, those values are just the ship model, and flags.
For nearly all fields, the default is 0, or none. I will try to list the fields that this is different for.
- After $Name, the value "+nocreate" may be used in modular table files. This will tell FS2 to not create the ship if it doesn't exist.
- $end_multi_text means nothing except to stop reading that field. It's used in cases where you might want multiple lines or something. I don't know if that's why you broke up the description text there though.
- $Show damage does nothing ATM, I believe it was left over from FS2. Destroyers, Superdestroyers, Installations, the Knossos, sentry guns, and Shivan Comm Nodes have it set to no. I've thought about having it toggle lightning, but I doubt it will ever do anything, b/c of backwards compatibility concerns.
- $Density is used for nothing right now, most FS2 ships have it set to 1.0 anyways. However, it does seem to be in g/cm^3, so 1.0 would be roughly the density of water.
- After $Shockwave speed, there are some other fields missing:
- $Shockwave count: number of shockwaves to spawn (I think this is in retail aswell)
- $Shockwave model: Textured model for the ship's shockwave
- $Shockwave name: Name of the animation to use for shockwave
- $Weapon Model Draw Distance: Distance that external weapons are shown, ie missiles and such. (Default is 200)
- After PBank capacity, "$Show Weapon Models:". I will be changing this to $Show Primary Models: to clarify what it does It takes a boolean list, with a boolean to determine whether weapon models are drawn for that weapon bank. For example: "$Show Weapon Models: (Yes No)"
- $Allowed Sbanks has no description
- After $Sbank capacity, "$Show Weapon Models:". I will be changing this to $Show Secondary Models: to clarify what it does. Same as $Show primary models, but for secondaries
- Default trail width is 1, alpha is 1, and life is 5.
- $Countermeasure type:, before $Countermeasures, takes a weapon name that will be used as countermeasures. Now that countermeasures and weapons are integrated, it can be anything specified in weapons.tbl, rather than just the #Countermeasures section. (This is pending testing prior to CVS commit)
- $Shield color: Default is pure white
- $Hull strength: Default is 100
- $Scan time: Default is 2000 ms
- $Subsystem repair rate: Default is FS2 default of 0.01 (1%)
- $EngineSnd: or any other sound entry, can be the name of the sound in sounds.tbl, rather than the index.
- $Closeup zoom: I believe this is in radians, and specifies the camera's FOV. So, 2Pi would specify 360 degrees, Pi/2 would specify 90, etc. Default is 0.5
- $Topdown offset: after $Closeup zoom, specifies how high the camera is above the center point of a ship in topdown camera views, or 2D missions. (topdown is implemented in SCP only)
- $Shield icon: hud.tbl is totally ignored in SCP, this should be noted somewhere in the wiki.
- $Ship_icon, $Ship_anim, and $Ship_overhead all use the ship's model to generate the image in the techroom by default.
- Thruster particles come before $Trail
- Before thruster particles, the following fields exist: $Thruster Bitmap 1: (anim), $Thruster Bitmap 1a: (anim), $Thruster01 Radius factor: (float), $Thruster Bitmap 2: (anim), $Thruster Bitmap 2a: (anim), $Thruster02 Radius factor: (float), $Thruster01 Length factor: (float), $Thruster Bitmap 3: (anim), $Thruster Bitmap 3a: (anim), $Thruster03 Radius factor: (float). I don't know what they do, but they're in there...I think TBP uses them, not sure. Defaults for all floats is "1"
- Ships can also use $Thruster Particle Bitmap: instead of the afterburner one to create another 3 normal-thruster particles. The fields are exactly the same though...maybe combine the duplicate entries somehow?
- $Stealth: is located after thruster particles, but before trails. Note the colon. It doesn't take an argument, but does note that the ship is a stealth ship. I've set it up so you can also add "stealth" to the ship flags (It'll be in CVS soon)...I would consider this variable deprecated, and that the ship flag should be used from now on.
- $Max decals: is right after stealth, it takes a whole number of the maximum decals that can be present on a ship at one time. Defaults: small ships - 50, big ships - 100, huge ships - 300, everything else - 10.
- As of XMT being integrated in the code, you can just insert a comma to skip the hull value if you just want to set the turning rate. IE: "$Subsystem: Navigation, ,10". Defaults for both the turning rate and strength are 0.
- $PBank capacity: and $Sbank capacity: both exist for turrets, after their respective defaults
- After those, $Engine wash: looks for an entry wash with the same name, and applies that to the subsystem if found.
- $AliveSnd: Specifies a sound to play when the subsystem is not destroyed (from where the subsystem is)
- $DeadSnd: Specifies a sound to play when the subsystem is destroyed (from where the subsystem is)
- $RotationSnd: Does nothing, may be deprecated.
- $AWACS: How far from this subsystem the AWACS effect reaches.
- +non-targetable marks the subsystem as non-targettable.
- Now we get to Bobb's submodel animation stuff.
First, "$animation=triggered". This is the only type right now.
Next, "$type=" gets animation trigger types. Current ones are "initial" (when the mission starts), "docking" (when a ship starts docking), "docked" (when a ship is docked), "primary bank" when a primary bank is fired, "secondary bank" when a secondary is fired, "door" when ???
Then, "+sub_type:" gets the 'sub type' for the trigger...for example, which primary bank triggers it. (With the first pank as 0, i believe)
If the trigger type is initial:
+delay: How long til the trigger starts (seconds)
+absolute_angle: or +relative_angle: three floats that give the x, y, and z rotation degrees. Absolute means in world terms; relative means relative to the ship. So a 90 degree angle on the ship would always be straight up in relative degrees; it would vary depending how the ship was rotated in absolute degrees.
+velocity: Subobject rotation speed, in relative terms. (three floats, xyz)
+acceleration: Acceleration speed of subobject rotation. (three floats, xyz)
+time: Time for object to rotate, move, whatever. (seconds)
+absolute angle: or +relative angle:
+Start: sound to play when animation starts
+Loop: sound to play while animation is going
+End: sound to play when animation stops
+Radius: Distance that sound is audible
- "dont collide invisible" and "no_collide" are tacked on with "big damage"
- "stealth" flag (going to go in CVS) makes ship a stealth ship, like "$stealth:" in retail FS.
- "ship copy" indicates that a ship is a copy of another entry, ala GTD Bastion is a copy of GTD Orion.
- "in tech database multi" makes a ship appear in the multi tech database all the time.
- "flash" ship makes a flash when it dies
- "surface shields" shots that impact the hull are applied to shields, even if the ship doesn't have a shield mesh. In the future this may use Bobb's decal code for _actual_ surface shields.
- "show ship" Draws the ship model even in the cockpit views, which allows for 3D cockpits.
- "generate icon" Generates a HUD icon of the ship using the model, if the ship doesn't have a HUD icon specified in the table.
- "no weapon damage scaling" totally disables things like bombs doing different damage to different size ships, for more reliable armor usage.
YIKES! That was big. :eek:
So yeah, that's the info in raw form, straight from the codebase. I can add all that if you like.