Repository navigation
props.tbl
github-actions[bot] edited this page Nov 12, 2026
·
10 revisions
Revision information OFP Revision: #171 Set the revision to your PR when your PR changes what this page documents. Leave it alone for edits that only fix or improve the documentation.
The props.tbl is used to define all of the props in the game. Props are distinct from ships in that they are entirely non-interactable except for collisions. They cannot move and they cannot be destroyed. Props are placed in the mission editor (in FRED, with SHIFT-CTRL-CLICK).
This table is one of the Modular Tables and can be extended with xxx-prp.tbm.
Code: /prop/prop.cpp. See Tables for every table.
Badges show the version a field or behavior was added in. The OFP badge marks what OFP adds.
Field index (every field, one per line in table order; click one to jump to it)
- #Prop Categories (optional): the categories, used to color and sort the props in the mission editor's list.
- #Props (required): the props.
- #End
- There is no
#Endbetween the two sections. - The fields of a prop must be in the order listed here. Every field is optional unless noted.
- Used to define the color of the prop in the FRED list and to list props in similar categories together.
- Defines the name of the category
- A name that already exists (in this or an earlier table, not case sensitive) replaces that category's color.
- The order categories are listed in is the order props are sorted in.
- Syntax: string
- Required. Defines the color of the prop text in the FRED list in RGB values.
- Syntax: ( integer, integer, integer )
- The actual definitions for each prop.
- Unlike ships and weapons, there is no limit to prop definitions.
- Defines the name of the prop. Must be unique.
- A name used twice in props.tbl logs a warning and the second entry is skipped. In a modular table, a name that already exists edits that prop.
- Syntax: string
- Optional, directly after
$Name:. In a modular table, edits the prop only if it already exists (in props.tbl or an earlier *-prp.tbm), instead of creating an incomplete new one. Using it in props.tbl itself logs a warning.
- Optional, after
$Name:(and+nocreate). In a modular table, removes a previously parsed prop. The name stays removed: a prop of that name in any later table is removed too.
- The POF file for the prop. Every prop needs one; a prop without it logs a warning after all tables are read.
- When a modular table changes it, a model file that doesn't exist logs a warning and the old one is kept.
- Syntax: string
- The position of the camera relative to the model center when the prop's model is shown in a menu view. Without it, a position in front of the model is worked out from its size.
- Syntax: Vector, three floats, x, y and z values respectively
- How far the camera's zoomed in when the prop's model is shown in a menu view; defines the camera's FOV.
- Without it, 0.5 is used. A value of 0 or less is noted in the log and 0.5 is used.
- Syntax: Float, radians
- The icon the briefing map shows for a briefing icon set to this prop class. When the prop has none, the icon's ship class and icon type pick the image as usual.
- Clicking the icon shows the prop's model, using
$Closeup_pos:and$Closeup_zoom:. - A prop has no wing or cargo icon variants.
- Syntax:
- Syntax:
- Syntax:
- Defines the distance where the change between different Levels-Of-Details (LODs) occurs
- Take notice that these are base values. Model detail in Detail options, (within game press F2), applies a multiplier to these values. These multipliers default to (from left to right): 1/8, 1/4, 1, 4, and 8, and may be overridden by the $Detail Distance Multiplier
- Syntax: (Detail Distances) , list of integers (same amount as LODs, at most 5), distances from the model in meters
- Example: (0, 80, 300, 900)
- The category (listed above) that this prop belongs to
- A prop with no category, or one that doesn't exist, logs a warning and is put in a gray "Unknown Category"
- Syntax: string
- See below. An unknown flag logs a warning.
- Syntax: ( "String" "String" ), names of the flags assigned to the prop
- Example: ( "no_collide" "no_fred" )
- Defines a set of custom data for this prop class, which can then be accessed through Lua scripts. There can be any amount of +Val: entries. It requires a $end_custom_data entry at the end. Check the scripting documentation of Prop Class to find the CustomData Lua Table.
- Specifies a custom data value and its name, in the format
+Val: Name Value- These values will always be strings of text. If you use them in Lua as other types of value, you might need to convert them in the script.
- Syntax: string
- Mandatory entry to indicate that the Custom Data list has ended.
- Note: no colon. (The FreeSpace Wiki wrote
$Custom strings:, which breaks parsing of the prop.) - Defines a set of custom strings for this prop class, which can then be accessed through Lua scripts. There can be any amount of entries. It requires a $end_custom_strings entry at the end. Check the scripting documentation of Prop Class to find the CustomStrings Lua Table.
- Specifies a custom string name
- Syntax: string
- Required. Specifies a "value" or additional data point paired with the string. A common use case is an XSTR ID.
- Syntax: string
- Required. The actual string which is a multitext string
- Must end with $end_multi_text
- Syntax: string
- Mandatory entry to indicate that the Custom Strings list has ended.
- Replaces textures on the prop's model for every prop of this class. It works the same as
$Texture Replace:in ships.tbl. - Goes at the end of the prop entry, after
$Custom Stringsif the entry has that block. - Followed by any number of
+old:/+new:pairs. File extensions are ignored. - Use
invisibleas the+new:texture to hide that part of the model. -
Syntax:
$Texture Replace:followed by pairs of String values
- The name of the texture on the model to replace.
- Syntax: String
- The texture to use instead, or
invisible. - Syntax: String
Sample
$Name: Cargo Pod
$POF file: cargopod.pof
$Texture Replace:
+old: pod_hull
+new: pod_hull_red
+old: pod_decal
+new: invisible
- Mandatory entry to indicate the props definitions have ended.
- Defines the prop as non-collideable, i.e. everything will go through it. Also accepted as "no-collide".
- The prop will not appear in the mission editor's prop list.
- The prop will not receive lighting calculations.
- Single Prop entry table
#PROP CATEGORIES
$Name: Rocks
+Color: (165, 42, 42)
$Name: Planets
+Color: (0, 255, 0)
#PROPS
$Name: Planet 1
$POF file: ast01.pof
$Detail distance: (400, 1000, 2000, 4000)
$Category: Planets
$Name: Rock
$POF file: asteroid01-01.pof
$Detail distance: (400, 1000, 2000, 4000)
$Category: Rocks
$Name: Planet 2
$POF file: ast02.pof
$Detail distance: (400, 1000, 2000, 4000)
$Category: Planets
$Name: Rock 2
$POF file: asteroid02-01.pof
$Detail distance: (400, 1000, 2000, 4000)
$Category: Rocks
#END
Getting Started
Features
SEXPs
Lua Scripting
Tables
-
Tables
- ai.tbl
- Animation (-anim.tbm)
- armor.tbl
- asteroid.tbl
- autopilot.tbl
- cheats.tbl
- colors.tbl
- controlconfigdefaults.tbl
- coordinate_points.tbl
- credits.tbl
- curves.tbl
- cutscenes.tbl
- Decals (-dcl.tbm)
- default_settings.tbl
- Dynamic SEXPs (-sexp.tbm)
- editor.tbl
- fireball.tbl
- fonts.tbl
- game_settings.tbl
- generated_nebula.tbl
- glowpoints.tbl
- help.tbl
- hud_gauges.tbl
- icons.tbl
- iff_defs.tbl
- intel.tbl
- lighting_profiles.tbl
- lightning.tbl
- mainhall.tbl
- medals.tbl
- messages.tbl
- mflash.tbl
- mission_profiles.tbl
- music.tbl
- nebula.tbl
- objecttypes.tbl
- Particle Effects (-part.tbm)
- post_processing.tbl
- props.tbl
- rank.tbl
- scripting.tbl
- ships.tbl
- sounds.tbl
- species_defs.tbl
- ssm.tbl
- stars.tbl
- strings.tbl
- tips.tbl
- traitor.tbl
- tstrings.tbl
- virtual_pofs.tbl
- weapons.tbl