Modular Tables

From FreeSpace Wiki
Revision as of 17:16, 21 May 2007 by ARSPR (talk | contribs)
Jump to: navigation, search

Introduction

Modular tables are SCP addition to the standard FreeSpace table system. Each tabular table (.tbm extension) adds or modify data from its related base table (.tbl extension). So there's no more need to edit the 'parent' table.

Important Notes. Loading Order

  • Modular table files should use the 'parent table' files sections. They should also keep their order.
  • Completely new entries and also complete rewrites of entries in parent table file are always possible.
  • Loading order:
    • The base table (tbl) is loaded first despite its priority location, (see Command-Line_Reference#-mod for more info about general file loading priority). Of course, if there are several versions of the same base table in several vps or /data/tables folders, only the highest priority one will be loaded.
    • Then, ALL its related tbms are loaded, even if they are in a lower priority place than the base tbl. ie, tbms are always applied. If there are several versions of the same file you can imagine what happens.
    • When they are loaded, tbms start being applied in reverse priority order:
      • tbms are applied from lowest priority place to the highest priority place.
      • Within the same priority place, they are applied in reverse alphabetical order (so zzz-shp.tbm is applied before aaa-shp.tbm).
    • The former rule makes that, if there are conflictive entries in several tables, the highest priority ones will override the rest because they will be the last applied changes.

      EXTREMELY IMPORTANT NOTE: Because of a bug, fs_open versions till 3.6.9. (included) apply tbms from the highest priority to the lowest one. In this way, the lowest priority entries override the rest. As example this issue makes impossible overriding mediavps tbm settings from any tbm inside a main mod which uses this art enhancement as a secondary mod. The only way you have is overriding the whole table as explained below.

    • Derived from priority and tbm handling, the only two ways to override the settings of AnExistingTable-xxx.tbm are:
      • Adding another AnExistingTable-xxx.tbm in a higher priority place so it gets loaded instead of the original version.
      • Overriding every single AnExistingTable-xxx.tbm entry, using one or several others -xxx.tbm tables located in higher priority places.


Supported tbms. Extendable Tables

In addition, some modular tables are XMTs (or eXtentable Modular Tables). They offer capability to add new partial entries or make partial editing to each entry. Within XMT tbms:

  • All fields are optional. But toplevel entries, of course, because you do need to specify which item you want to modify ;-) .
  • Toplevel entries can replace part of other existing toplevel entries. Only changed parameters should be specified.
  • Addition of the +nocreate parameter. This parameter should be entered right after entry name and prevents possible creation of partially undefined entry. For example, if the parent table file lacked the entry that was included to the as a partial entry to the modular table file then the creation of partially undefined entry is possible which could cause problems with the game.
    • Example:
  $Name:              @Subach HL-7
     +nocreate


The list of supported tbms is:

Other Related Tables

Sample - Alpha-wep.tbm

  • Changes the speed of the Subach HL-7 and also adds a faint grey trail to it.
  • To create it make a text file using a text editor and save the file as Alpha-wep.tbm with the following contents to the proper folder (.../data/tables).
  #Primary Weapons
  $Name:              @Subach HL-7
     +nocreate
  $Velocity:         650.0	
  $Trail:
     +Start Width:      0.4
     +End Width:        0.0
     +Start Alpha:      0.35
     +End Alpha:        0.0
     +Max Life:         0.2
     +Bitmap:           Contrail
  #End