Patch 1.50 introduced configuration files. With time they evolved into full-blown modding support. The MOO2 Launcher was introduced to streamline usage of mods. It allows to select mods when starting the game without copying or editing any files. Before 1.50 mods existed in the form of packs that replaced original files (see historical mods). This made installing mods somewhat complicated especially for multiplayer as both sides had to use identical mod versions. The 1.50 not only adds a Launcher for selecting mods but also syncs mods in multiplayer. The mod configuration is also saved in .GAM files so restoring a game restores all mod settings too.

What is 1.50 Mod

It’s a directory placed inside 150/mods directory in the game folder, containing one or several .CFG files of certain format and possibly scripts and graphics assets. The launcher scans 150/mods//.CFG on startup searching for mods, so installing your mod is a matter of dropping mymod into 150/mods.

The minimal mod consists of single .CFG file with the following fields set:

mod_name  = "Mode A";
mod_id    = MOD_A;
mod_desc  = "The new mod by me, does this and that.";

This is an empty mod that does nothing. MOD_A is a mod ID and has be uniqie among all mods, it won’t load if other mods with the same ID is present. It doesn’t change any parameters, so we have to add something for it to make sense, let’s make Antarans come earlier by adding these two lines:

antaran_fleet prewarp_delay = 1;
antaran_fleet average_delay = 1;

Now save the file, run the launcher and the new mode should appear among checkbox mods. Now checkbox mods are independent, sometimes we want mods to be placed among exclusive options, e.g. it makes no sense to have two full map mods, since they both override all map parameters. For this the parameter mod_class should be used. Let’s make a Core mod which makes all positive picks cost 1 or 2, and limits available points to 5:

mod_name  = "Mode B";
mod_id    = MOD_B;
mod_class = Core;
mod_order = 0;
mod_desc  = "Mod B, rebalances everything.";
number_of_race_picks maximum_positive_picks =  5;
number_of_race_picks maximum_negative_picks = -5;
race_pick growth1_cost      = -1  -  1  -  2  -;
race_pick farming1_cost     = -1  -  1  -  2  -;
# ...
race_pick repulsive         = -1;
race_pick charismatic       =  1;
race_pick uncreative        = -1;
# ...
race_pick stealthy_ships    =   1;
race_pick trans_dimensional =   1;
race_pick warlord           =   1;

This mod will install itself as a Core mod, it will appear not as a checkbox but in a Core dropdown.

This description is meant as an illustration, if you are seriously starting a mod, consider copying an existing one, change mod_id, then proceed editing it incrementally. See Configuration for syntax of .CFG files. The following section provides notes on various modding topics.

Configuration Syntax


Config parameters are many, so not all are listed in this manual. The complete overview can be found in PARAMETERS.CFG, which lists each parameter along with a description and minimal usage example. It can serve as a reference for determining row and column order needed for using bulk notation. Other sources of information are the file EXTRACT.CFG and the mods supplied with the patch.


Command Line Switches

The command line switches from the 1.40 patch are still supported even though they have a config counterpart. Note that switches specified on the command line take precedence over those specified in Config.

1.31 switches

Command line form

Config form




Skips the intro movie.



Displays the version date and exits the game.

Game rule switches

Command line form

Config form


(removed in 1.50.19)

/noreport = 1;

Disables the report button on the diplomacy screen, preventing you from seeing your opponent’s technology. Also, diplomacy options Demand Tech, Offer Tech and Exchange Tech are grayed out.


/noscan = 1;

Disables the scan button in combat. Detailed scans of ships are not possible. Only quick scans will be possible by mousing over the ships.


/nohousing = 1;

The 'Housing' option will no longer be available from the build list: Housing production is not possible. (The 150% bonus to population growth has been removed in 1.50. It can be set separately via parameter)


/droids = 1;

All players start out with the ability to build androids (all 3 types).

The switch /picks has been removed because of its range limitation of 10-14 picks. The number of picks can now be set via the parameter cname:number_of_race_picks.

Map generation switches

Command line form

Config form


/seed=0 (v 1.31 switch)


Seed for random number generator. Valid values are signed long integers (-2,147,483,648 to 2,147,483,647). Default is 0. Save game address: 0x108 - 0x10B (4 bytes). Seems to only affect the first galaxy map generated and does not affect monster placement.


mapgen /nobh = 1;

No black holes on map.


mapgen /nowh = 1;

No wormholes on map.


mapgen /nonebula = 1;

No nebulas on map.


mapgen /noorion = 1;

Orion and the Guardian not on map.


mapgen /nosplint = 1;

No splinter worlds unless there is a monster guarding it.

/monsters=255 (v1.31 switch)

mapgen /monsters = 255;

Set the number of monsters. The default of 255 means a random number will be used.


mapgen /planets = 3;

Sets the minimum number of planets in all home systems. Valid values are 1-5, the default is 3.


mapgen /minstart = 1;

The unoccupied planet closest to the star in all home systems will have at least 2 production per worker to a normal G race.


mapgen /hugestart = 1;

The unoccupied planet closest to the star in all home systems will be Huge and its gravity will match that of the homeworld.


mapgen /richstart = 1;

The unoccupied planet closest to the star in all home systems will be Rich and its gravity will match that of the homeworld (this parameter is ignored if /goodstart parameter is specified).


mapgen /goodstart = 1;

The unoccupied planet closest to the star in all home systems will be Ultra Rich and its gravity will match that of the homeworld.

Note: The switches /minstart, /hugestart, /richstart and /goodstart all affect the same ONE planet and their effects are cumulative.

Mapgen.exe Based Parameters

The following parameters are modeled after the original implementation of the program 'mapgen.exe' by TF8. In this patch there is no need for launching external mapgen.exe against a saved game and then reloading it. All mapgen settings are specified in Config and apply each time you generate a map. There are no command line counterparts for these parameters.

For all parameters the first letter represents its type:

-t Terraform -s Specials Change -m Monsters Change -b Balance Galaxy

mapgen -ttoxic = 1;

Toxic planets become radiated.

mapgen -tupoor = 1;

Huge Ultra Poor planets become Poor. Other Ultra Poor planets become Abundant.

mapgen -tlowg = 1;

Low Gravity planets become Normal Gravity.

mapgen -theavyg = 1;

Heavy Gravity planets become Normal Gravity.

mapgen -ttiny = 1;

Tiny planets become randomly from Small to Large. Except if -tsmall flag is used they become Medium.

mapgen -tsmall = 1;

Small planets become medium.

mapgen -sarti = 1;

Arti planets still exist, but don’t give techs anymore.

mapgen -shero = 1;

All stars on the map that contain a hero become brown color, while brown stars without heroes become red color.

mapgen -smarooned = 1;

Marooned leaders are replaced by Pirate Caches. (Not in the original mapgen.)

mapgen -snatives = 1;

Natives are replaced by Gold Deposits.

mapgen -ssplint = 1;

Splinters are replaced by Gem Deposits.

mapgen -mgrav = 1;

Guarded planets become normal gravity.

mapgen -mterraform = 1;

Guarded Rich & U-Rich planets are terraformed: Toxics, Rads, Barrens, Deserts become Tundra.

mapgen -mmonst = 1;

Forces -mgrav and -mterraform.

mapgen -tflathw = 1;

Flattens unoccupied planets in home systems. They all become Abundant. Size is set in order: Large, Large, Large, Medium until there are no more planets to modify. Toxics and Rads become Barren and Gaia’s become Terran. If your homeworld is Low-G or Normal-G, then all other planets will get the same gravity. If it is Heavy-G, all others become Normal-G except for one planet which becomes Heavy-G.

mapgen -tfixedhw = 1;

Forces -tflathw. Planets become: Large Abundant Swamp, Large Abundant Arid, Large Poor Tundra, Medium Poor Terran. If your homeworld is Heavy-G, then Swamp becomes Heavy-G.

mapgen -tgaia = 1;

Does not imply -tfixedhw. Fifth planet becomes Small Poor Gaia unless you are creative, aquatic or tolerant in which case it’s Medium Poor Terran.

mapgen -trichhw = 1;

Makes first unoccupied planet Rich.

mapgen -thugehw = 1;

Makes first unoccupied planet Huge.

mapgen -tgoodhw = 1;

Forces -trichw and -thugehw. Makes first unoccupied planet Terran.

mapgen -bshowring = X;

Specifies radius in parsecs (X); all systems (including monsters) ⇐ X to their HW are revealed to players.

Number of Stars per Galaxy Size

With the stars_in_galaxy table the amount of stars can be set per galaxy size. The wide range of settings allows special galaxies to be generated, for example a small galaxy with only 3 stars. Keep in mind that certain settings can cause the game to stall during the galaxy generation phase. For example, generation won’t succeed if you start a new game with 8 players in a medium galaxy that is set to contain only 6 stars.

Planet Specials

With planet_special_chance, the chances for Wormholes, Natives, Deposits, etc. become configurable. All values combined should add up to 100 here.


Population Capacities

Two parameters modify population capacities for each planet type:

pop_max = 5 10 15 20 25;
pop_climate = 25 25 25 25 25 25 40 60 80 100;

The screenshot below from the Excel manual highlights these values in blue:

Subterranean and Tolerant

With pop_bonus_subterranean and pop_bonus_tolerant the bonuses for respective racial traits can be set.

Biospheres and ACP

The Biospheres and Advanced City Planning bonuses can be set via separate parameters pop_bonus_biospheres and pop_bonus_advanced_city_planning.

Android Morale & Cost

With classic settings, only Android workers are affected by morale. Each android type can now have morale on or off. With the parameter android_morale all 8 variants can be set. In addition the cost of each toaster type can be set with:

misc_costs android_farmer = 50;
misc_costs android_worker = 50;
misc_costs android_scientist = 50;


The build and maintenance cost of buildings can be configured. Take the cost of Armor Barracks for example. The default cost is 150 PP and 2­ BC/T maintenance, which is quite expensive for a few cool tanks or Battleoids. It can be lowered by writing:

building armor_barracks cost = 50;
building armor_barracks maintenance = 1;

Or alternatively:

building armor_barracks cost = 50 1;

Initial Buildings

The number and types of buildings that each colony has built at game start depends on: * Starting tech level (Pre-warp, Avg, Post-warp, Advanced), * Population size of a colony. * Known techs and * Priority listing in the table initial_buildings.

The number of starting buildings on each colony is capped to 3 for Pre-warp, 5 for Average/Postwarp and 9 for Advanced game starts. Apart from cap, colonies with more population start with more buildings, the maximum number of buildings (not counting the Capitol) is 2/3 pop rounded up. For example a HW with 8 pop can have 6 buildings on Advanced Tech start, but only 5 on Average start due to the cap.

Pre-warp and Average Tech games only start with Marine Barracks and a Star Base because no other techs are Known that are also in the default initial buildings list. If, for example, Colony Base building is added to the initial_buildings, it will be given to each players' homeworld at game start.

The initial_buildings is a strict list, in that the game starts at entry 1, checks if it’s allowed to place it and works its way down. The default list order potentially causes 1-3 pop colonies on Advanced to start without Marine Barracks because the first two list items are a satellite (#1-3) and Hydroponic Farms (#4). Marine Barracks is entry #5. See the Excel manual for further details.

Bombable Capitol

Bombardment can now optionally destroy the Capitol. It is treated as a regular building if you enable capitol_can_be_bombed. This was a patch initially. Optional since 1.50.19.


Weather Controller

The parameter weather_control_climate sets the minimum climate where a weather controller can be built. As an exception, setting Radiated, will disallow the building only on radiated worlds (and not on both toxic and radiated worlds).

Biomorphic Fungi

Biomorphic Fungi normally add +1 to farming on non-farming worlds. Parameter fungi_climate allows to choose its behavior from 3 options:

classic - affect only non-farming worlds
reversed - affect only food-producing worlds
united - affect all kinds of worlds

The +1 bonus can be changed using food_bonus biomorphic_fungi. Note that this bonus is in half-food units, so setting it to 1 corresponds to +1/2 food per farmer.

Toxic Planet Terraforming

With parameter terraform_toxic_building, the building can be specified that will cause a Toxic climate to convert to a Barren one. The mod 150 improved, specifies Recyclotron. Note: Specifying Terraforming or Gaia Transformation will not work for this parameter, since both cannot be built on Toxic planets.

Ships and Satellites

Hull Table

With the Hull Properties table, the cost and available space can be set for all ship classes and available space (not cost) for all three satellites. In addition, hit points for armor, structure, computer, drive and shields can be set, as well as the number of marines onboard. For strategic games, the number of beams, missiles, special weapons and bombs can be set as well as the defensive bonus and hit points.

Alternative Refit Formula

The classic refit cost is calculated as the larger of either twice the difference of the old and new cost (the delta) or the minimum refit cost, where the minimum refit cost is a quarter of the hull cost (rounded down):

cost = max(2*delta, min_refit_cost)
delta = abs(new_cost - old_cost)
min_refit_cost = 1/4 standard hull cost.

alternative_refit = 1 sets a new refit formula, which calculates the cost as one time the delta cost (with a minimum of 0) plus the minimum refit cost:

cost = max(delta, 0) + min_refit_cost

Automatic Update of Ship Designs

Ship designs are automatically updated when the physics tech field (laser) becomes known. Setting no_designs_update_for_laser = 1 prevents such an update.

Disabling of Engine Explosions

Setting parameter broken_engine_explodes = 0 will prevent ships from exploding due to a destroyed engine. Ships with engines destroyed normally will just stay in battle. Self-destructing a ship will not cause an explosion. Intended for testing purposes.

Lander Ships Use Stealth **

Lander ships are Colony Ship, Outpost Ship and Transport. The table lander_ship_uses_stealth controls whether to install the best stealth device available on landers. You can control this separately for each lander type.

Lander Ships Cost Table

Allows to set build costs for Colony Ship, Outpost Ship and Transport in config.

Lander Ships Size Class

Allows to set size class for lander ships in config.

Satellites Use Torpedoes

Setting satellite_uses_torpedoes = 1, will arm satellites and missile bases with torpedoes if available. Available mods can be configured with defenses_allowed_mods. For balancing the ratios of missile/torpedoes on satellites versus on a missile base the parameters satellite_ammo_basis and missile_base_ammo_basis have been introduced.

Special Systems

With parameter starbase_special, 18 specials can be listed to be fitted on a satellite, of which up to 8 specials are actually fitted if available. Specials are not mutually exclusive here, except for slots 5a, 5b, 5c, and 6a, 6b, 6c of which only the highest ranked available special will be fitted.

Satellites Get SD bonus

If satellite_racial_defense_bonus is set at 1, the racial Ship Defense bonus will also apply to satellites and planetary bases.

Satellites Get Warlord bonus

If satellite_warlord_bonus is set at 1, the Warlord bonus will also apply to satellites and planetary bases and their crews will be of veteran skill level.

Defensive Range

Added defensive_range_bonus that sets a range bonus in 3-square range units to improve the range beam weapons on satellites and planetary defenses.

Captured Satellites Live

With the option satellite_capture = 1, a satellite that has been captured in battle, remains as a colony building if the colony is captured right after the battle. This option is off by default, which makes satellites impossible to capture, an intended classic behavior.

Command and Scanning

Command and Communications

Command usage per ship’s size class can be configured with ship_command_points_usage. Note, that Lander ships size class is 0 (frigate) by default. Command bonuses for satellites and communication technologies can be set with command_points. Communications ranges can be customized with ship_communication_range.

Scan Table & Stealth Tables

All detection-related values are now configurable. Overmap scan and stealth bonuses can be configured using:

scan_bonus <modifier> = <value>;
stealth_bonus <modifier> = <value>;

This allows setting distinct stealth bonuses for racial trait Stealthy Ship, and each of the specials Stealth Field, Cloaking Device and Phasing Cloak. Use tab 'Detection' in the addendum to calculate the effects of custom settings.


Weapons Table

Enables modding of cost, space usage, minimum and maximum damages. You can also change weapons' mods, both inherent (like Neutron Blaster’s marine killing ability) and regular ones, obtained with miniaturization (like autofire).

For example lowering Plasma Cannon min/max damage from 6/30 to 4/20:

weapon plasma_cannon minimum_damage = 4 20;

To remove the continuous mod from Plasma Cannon its mods mask:

00000000000010010 (18 in decimal)

needs to become:

00000000000000010 ( 2 in decimal)

So write:

weapon plasma_cannon available_mods = 2;

or alternatively (starting 0 indicates a binary number):

weapon plasma_cannon available_mods = 010;

And combined you can write:

weapon plasma_cannon minimum_damage = 4 20 6 24 2;

Where '6 24' are unchanged damage values for strategic games.

Note that changing ammo values for weapons in this table can have unexpected effects (bugs). Tab 'Weapons' in the Excel manual has an overview of all weapons mod flags.

Missiles Defensive Bonus

In addition to the defensive bonus that a missile receives from its speed (speed * 5), it gets a bonus depending on its type. The classic bonus values for Nukes, Mercs, Pulsons and Zeons are respectively: -10, +15, +40, +70. These bonuses are modified with flyer_combat_modifier. For example, a bonus of +15 for Merculite Missile is set by: flyer_combat_modifier merculite_missile_defense_bonus = 15.

Plasma Torpedo

Plasma Torpedo is moddable in the following ways:

  • Added plasma_torpedo_dissipation to set plasma torpedo per travel square dissipation (5 by default).

  • Speed has been made tunable via speed_base plasma_torpedo.

  • Damage has been made tunable via weapon table.

Although weapon and speed_base tables are not exclusive to plasma torpedo they are mentioned here because along with plasma_torpedo_dissipation they could trigger two hidden bugs described below. Both bugs don’t occur in unmodded classic since classic values for plasma torpedo don’t trigger them. Both bugs are fixed in 1.50:

  • Fixed incorrect dissipation on impact. This happened when non-NR plasma torpedo survived more than one turn. For such torpedo dissipation was calculated as if the torpedo was fired on the turn of impact. So if torpedo flies 20 squares on turn 1, then 3 squares on turn 2, and then hits the target, it loses 3 * 5 = 15 damage points by dissipation, not 23 * 5 = 115 as it should have. Note that in unmodded classic this is impossible since plasma torpedo dissipates fully in one turn.

  • Fixed instant dissipation on launch. When ship initiative is on and missile_initiative is set to -1, Plasma Torpedo would sometimes dissipate instantly when fired. This happened for some speed/damage combinations but not for others. For classic speed and damage the bug didn’t occur.

Proton Torpedo

It’s default range is 24 squares which can be set with proton_torpedo_range = 8, where each range unit equals 3 squares (24 = 8 * 3). Travel speed is limited to the value set in speed_base proton_torpedo if proton_torpedo_apply_speed_base is set to 1.


Several aspects of fighters' behavior were made configurable.

  • In classic Fighters used normal mount beams instead of PD. Now you can make them use PD by setting fighter_uses_pd = 1. Note that fighters' PD damage is rounded up, in the same way as for ships.

  • In classic Fighters deal +1 damage up to listed damage for any weapon but Mass Driver. For example a Fusion Beam fired from a Fighter can do max 7 damage instead of 6. Fighter’s damage can be capped to weapon’s maximum by setting fighter_beam_no_plus_one = 1. Despite being most certainly a bug, the fixed behavior was made optional to preserve certain classic strategies.

  • By default, Fighters get an offense bonus of +50. This bonus can be changed using flyer_combat_modifier fighters_offense_bonus.

  • The number of shots each fighter has can be configured with fighter_shots.

Heavy Fighters Can Target Missiles

As an option, Heavy fighters can be used as regular ones for fighter/missile interception if heavy_fighter_can_scramble = 1. They attack flyers using their beams only.

Continuous Black Hole Generator

BHG is a continuous weapon by nature, because if the generator is destroyed its target is freed. But unlike other such weapons (Tractor Beam and Stasis Field) it’s possible for a single BHG to affect two or more ships at the same time. This makes calculations of the number of freed targets somewhat inconsistent. Example:

  • You have ship A with 2 BHGs.

  • Enemy ships B and C are both inside black holes created by A.

  • One of the generators on A is just destroyed.

In this example one ship (say B) will be freed from BHG but C will be not, as you still have one generator functioning (so not enough to hold two ships). Now you can trap ship B again with the remaining generator that was used in the previous turn to trap ship C. Ships B and C are now in black holes using just one generator. To solve this inconsistency, option continuous_bhg was introduced. If enabled, BHG becomes similar to stasis in that you cannot use BHG on other ships as long as its current target is alive and affected by it.

Black Hole Generator & Boarding

By default, ships caught in a Black Hole can be boarded by enemy troops. We could not help but wonder: Why are troops able to go into a black hole, board & fight on the enemy ship, then escape that black hole and return safely to the mothership? If you wonder as well, set board_in_black_hole = 0. If boarding to BHG immobilized ships is disabled, boarding from such ships is prohibited too. Note that the AI will not self-destruct such ships to avoid capture.

Plasma Web Dissipation Mode **

With classic Plasma Web, the damage dissipation of -5 is applied to ALL webs present on the target ship instead of PER web present. This means that dissipation is much smaller than (probably) intended. Especially when firing multiple Webs per turn, the damage potential can grow really large, and this total damage keeps increasing each turn until the target ship is destroyed or the end of combat is reached. With a new setting for the Plasma Web, plasma_web_dissipation_step = halve, the total damage done by all webs present halves each turn, instead of decreasing by -5 (= minus5). When you choose halve, the maximum damage per turn can not grow larger than 2x the initial damage. Below table compares both settings when shooting a single Web and shooting 8 Webs per turn at the same target.

Spatial Compressor

Added compressor_per_size_class_damage parameter which enables optional per size class damage increase for Spatial Compressor (larger ships receive more damage and smaller ones less). This is similar to how pulsar normally works.

Spherical Weapon Ranges

Ranges can be defined with spherical_range_to_ship and spherical_range_to_missile.

Weapon Arcs and Mods

The cost and space of arcs and of each mod can be set with arc_cost_and_space and the table mods. With mods_available individual mods can be enabled or disabled for the groups Beams, Missiles and Torpedoes.

2x Range Penalty

This somewhat obscure inherent mod raised the question: What essentially does it do? Nothing? Penalizes accuracy? Penalizes damage? Technically this inherent mod penalizes accuracy, and was for example supposed to balance Plasma Cannon, a very powerful weapon but only at a short range. That didn’t work as intended though. Perhaps the 2x penalty has more sense affecting the dissipation instead. Therefore, 1.50 allows the choice between both ways, or a combination:

  • 2x_range_accuracy_penalty, double accuracy penalty for the 2x weapon mod (original, default);

  • 2x_range_damage_penalty, double damage dissipation for the 2x weapon mod.

Enveloping Mod

Setting planet_non_enveloping = 1 disables the enveloping weapon mod against a planet (except Stellar Converter).

Inherent Mods

Several inherent mods now also work for missiles/torpedoes:

  • #0 Shield damage only ('Zeroth'),

  • #3 Internal systems damage (Ion),

  • #4 Kills marines (Neutron),

  • #5 Extra structural damage (Graviton).

ESD Flag

The bonus of the Extra Structural Damage flag (Graviton Beam) can be set in config. Extra Structural Damage subtracts the ESD value from a ship’s structure (not a damage dealt technically, similar to Spatial), while the regular damage part is just a usual damage, like from most other weapons.

Zeroth Weapon Flag

The zeroth weapon flag has been made usable. It was intended as an anti-shield weapon flag but ended up unfinished and unused by the developers. No weapon in classic has this flag enabled, so this is strictly a modding matter. In 1.50, a weapon with this flag set will not damage planets and ships armor or structure, but will damage missiles, fighters and ship shields. This flag can be used not only for beam, but also for missile weapons. E.g. it is possible to create powerful anti-shield-only torpedoes that are otherwise non-harming. As an exception, a weapon with this mod and the shield piercing mod will ignore hard shields. This combination will not damage ships at all, thus serving as a strictly anti-missile weapon. A beam weapon with this flag enabled is never installed on fighters.

Special Systems

Automated Repair Unit

Repair rates for Armor and Structure can be adjusted using the repair_rate table. The repair rate for Internal Systems is a percentage of that rate set by systems_repair_percent (50% by default).

Battle Pods and Combat Speed

When Battle Pods are fitted on an otherwise empty ship, that ship gets a bonus to its combat speed. That bonus is gradually lost with fitting more stuff on the ship and the minimum combat speeds of ships with and without Battle Pods are equal. If the parameter battle_pods_speed_bonus is set at 0, ships will not get this speed bonus. In addition, minimum_combat_speed sets the minimum combat speed of a ship, excluding Augmented Engines, controlling the maximum overload speed decrease possible when battle_pods_speed_bonus = 0. 'Overload' being a speed decrease from the extra stuff that can be fitted in the Battle Pods space. By default it’s set at 255, not allowing combat speed to decrease due to overloading the ship. If another value is chosen, it determines the minimum combat speed that a ship cannot go below due to overload. For example: if set as 5, it will prevent an overloaded Nuclear Drive frigate with a base minimum speed of 10 to become slower than 5, while a Nuclear Drive doomstar with a base minimum speed of 3 cannot become slower than 3.

Stealth Field as a Cloak

By setting a value >0 for stealth_field_beam_defense, Stealth Field will act as a Cloaking Device in combat, with the set value adding to a ships beam defense while cloaked and missile miss chance equal to that of the Cloaking Device (default = 50).

Cloaking Device

Optionally with cloaking_device_missile_defense = 1, a Cloaking Device adds to the missile evasion bonus instead of using 'miss chance' mechanics. If enabled, the missile evasion of an ECM Jammer
Cloaking Device equipped ship becomes 120, which means that non ECCM missiles will always miss instead of having a 15% chance to hit (0.5*(1-0.7)), while ECCM missiles get a slightly better chance to hit of 40% versus 32.5% (0.5*(1-0.7/2)).

Phasing Cloak

Setting the timeout counter to 0 now has a different effect — equipped ships will start a battle in regular cloaking state instead of one turn in phasing cloak state.

Next Turn Recloak

Set recloak_next_turn to 1 to make all ships recloak at the start of the next turn, removing the need for ships to wait a full turn without firing to recloak. For phasing cloak there is a separate parameter rephase_cloak_next_turn with the same functionality. Different Cloaks Compatible on One Ship Under classic rules a ship can have only one device enabling combat cloaking (Cloaking Device or Phasing Cloak). Now it’s possible to have both of them on one ship. Normally Phasing Cloak will apply its bonus, but if it’s destroyed Cloaking Device will apply its bonus instead. Note that this does not override specials' exclusions and by default you still cannot install both devices on one ship. To do that you’d need to mod exclusions via exclude1, …​ , exclude6 columns of the special table.

Damper Field

The remaining damage percent after applying damper field damage reduction is set with damper_field_ratio, that is 25% by default. Damper Field also distorts a transporter beam attempting to move troops onto the equipped ship, killing a portion of troops instantly. The ratio 'total troops / survivors' can be set with damper_kill_ratio. Default value is 3 (meaning 1/3 of troops survive transportation) and valid values are 0-127. Setting this parameter to 0 will result in Damper Field preventing use of transporters for boarding.

Energy Absorber

  • The setting absorber_keep_charge prevents charge loss at the end of turn for non-initiative games so that it can be fired on another turn. Note that in combat with INI, a charge is always kept regardless of this setting.

  • Damage reduction now is configurable with absorber_damage_reduction.

High Energy Focus Bonus

The High Energy Focus (HEF) description states that it increases beam weapon damage by 50%. But when the game calculates those 50% it uses damage of the normal mount and then adds it to the damage of the actual mount. Thus a PD weapon becomes twice as powerful and heavy weapons become only 1.33 times more powerful. This can be 85considered a bug. HEF and regular mount bonuses can be adjusted in config using the mount_dmg table. Note that HEF has no effect on a Stellar Converter.

Lightning Field

Classic Lightning Field roll is buggy, which leads to 1/3 instead of 1/2 missiles / fighters being destroyed on average. The distribution is also asymmetric and yields different results depending on the size of the missile stack. E.g. 8 missiles fired one by one and 8 missiles fired in one group have significantly different survival rates (50% in a stack will surely survive). This can be exploited in Guardian rush games which is why we deem it to be a classic feature. Setting lightning_field_mode = uniform results in a binomial distribution for the amount of missiles destroyed. This means that on average 1/2 of all incoming missiles / fighters will be destroyed. The default setting of 50% destroy chance can be configured via the lightning_field_ratio parameter.


The space bonus for Megafluxers can now be tuned with megafluxers_tactical_bonus, which gives +25% space to a ship by default. This technology works differently in strategic mode, where it adds +50% to the number of beams on a ship. The result is rounded down, causing the 1 beam Frigate to get no extra beam. This bonus can be altered with megafluxers_strategic_bonus.

Scout Lab

By setting lab_and_lore_against_antarans = 1, Scout Lab (and the Galactic Lore skill) will also provide its combat bonus when fighting against Antarans. The research bonus for the lab depends on the size class of the ship and can be configured via scout_lab_research_bonus table. Lastly, scout_lab was added to the table scan_bonus, allowing an overmap scan bonus to be set.

Sub-Space Teleporter

  • The original square jump range seems like a bug, but was kept since it has become a known and distinctive feature. Optionally, setting round_teleporter makes the teleporter jump area approximately round (octagonal).

  • With sub_space_teleporter_range, the range can be set to a custom value.


All aspects of Shields can be fine tuned in Config:

  • Shield class, space and cost via the shield table

  • Shield strength via the shield_hull_multiplier table.

  • Shield regeneration for standard shields (30%) and Shield Capacitor (100%).

  • Multi-phased shields bonus (+50%).

  • Hard Shields (+3).


misc_costs spy+ Sets spy cost.

spy_govt_bonus+ spy_tech_bonus+ Spy bonuses for Governments and Technologies.

spy_roll_success_threshold+ Table containing thresholds for values for successful spy rolls of stealing and sabotage and if another race was framed.

steal_mode+ In addition you can specify what spies can steal. Normally, an exception is set for spies so they will not be able to steal any tech of the technology field that is currently being researched. 1.50 provides alternatives via steal_mode:

  • except_current_field - classic behavior.

  • except_current_tech - relaxed version of classic.

  • anything - anything, including tech currently being researched.


By default, another race can only be framed for espionage if it is not in possession of the stolen tech. Unknown why this rule was introduced, but it does allow you to check via race reports (with exceptions) if the named race was indeed the one that has stolen your technology. Enabling this parameter overrides this requirement.

Tech Tree

The Tech Tree can be modded both by moving technologies to different fields in the tech tree, as well as by changing the techfields themselves. A little care is appropriate when modding this area of the game to prevent crashes and other weird behavior. Notes on assigning technologies to different techfields:

  1. To remove a tech entirely from the game, set its tech field number in the tech table to -1, like its done by default for the Phase Shifter technology:

    tech phase_shifter = 125 -1 38 0;
  2. To make a tech Known from the start, assign tech field number 0 to the tech.

  3. Tech fields can hold up to 4 techs. 5 techs or more in a field will lead to a crash.

  4. Empty tech fields will lead to a crash at the start of a new game. Keep in mind that an empty tech field can have several causes:

    1. You have not placed any techs in a field during your techtree design.

    2. The game deletes certain techs for certain race abilities, for example: food techs will be removed for Lithovore races.

    3. The game deletes certain technologies for Strategic games, for example Battle Pods. The relevant techs have a 0 in the fourth column of the tech table (see above example, as indeed Phase Shifter is not in Strategic).

  5. Star Bases follow their own rules and have the best beam and best missile fitted even if you actually do not have any beam or missile tech.

  6. Changing tech positions might break the Post-warp Techtree. The table postwarp_tech was added and defines a set of up to 29 Known technologies at the start of a Post-warp game. The first 7 techs in this list are excluded in strategic mode.

Notes on techfield modding:

  1. A broken chain of techfields within a branch can cause a game crash.

  2. The first tech field in each branch is always tech field #0 - Starting Technology.

  3. The field in position 0 and the techs that are in it are always assumed Known.

  4. Thus, each first 'real' techfield in a branch needs prev_field to be set to 0. The eight branches (or categories) of technology each have a specific starting tech field. These starting fields are keyed to fixed positions in the techfield list and can be set using starting_techfield.

  5. In seven branches the starting tech field is the first Researchable field of the branch, i.e. in a Pre-warp game the first fields shown when viewing the Research window. The Construction branch however is different. No matter what you do, by default the first field is always Known (default is field #29 - Engineering).

  6. Thus on Pre-warp, the game starts with two fields Known: Tech field 0 and the first field in Construction. Table prewarp_techfield is an ordered list with 6 tech fields that are Known at the start of an Average, Post-warp or Advanced game. For Pre-warp only the first value matters (by default field #29).

  7. Each branch should end with their generic 'hyper advanced' fields (fields #75-82).

  8. AI_group (or: tech level) sets the value of the field for AI. By default a 50 RP field has AI_group 1, an 80 RP field has AI_group 2, etc. Increasing the AI_group value increases the desirability of that field for an AI.

  9. Setting tech field cost greater than 65.536 RP causes undesired effects in-game, for example any weapon valued at more than this amount will be listed with 0 space and cost and is unselectable in the ship design screen.

Example techfield mod:

Move Field 46 from the 'Power' branch to 'Fields' and rename it to 'testername'.

becomes: Requires the following lines: tech_field anti_matter_fission next_field_id tech_field high_energy_distribution prev_field_id tech_field magneto_gravitics next_field_id tech_field matter_energy_conversion prev_field_id tech_field electromagnetic_refraction prev_field_id tech_field_name matter_energy_conversion = = = = = = 37; 13; 46; 45 27 1150 8; 46; "testername";

Custom Names

Names for some game objects can be specified in config. Such names override names from LBX. If no name is given in config (name is set to null), the original name from LBX is used. By default all names are taken from LBX. Name tables are:

  • tech_name

  • tech_field_name

  • weapon_name

  • weapon_name2 (plural for weapons)

  • special_name (special systems)

  • building_name

  • SHIELD_name

  • ARMOR_name

  • COMPUTER_name

For weapons there are name tables for both single and plural spellings, for example you can specify:

weapon_name mass_driver = "Mini Cannon";
weapon_name2 mass_driver = "Mini Cannons";

To reset to default:

weapon_name mass_driver = 0;
weapon_name2 mass_driver = 0;

For languages other than English special characters are encoded with a subset of symbols {}[]<>@#| . For example German letter ß is encoded by |, so the word "groß" becomes "gro|". The encoding is language-specific and is not described here in detail. The direct use of unicode characters is not supported and won’t work.

Custom Race Options


The maximum and minimum picks that can be used to create a custom race can be set, as well as the number of picks available for Evolutionary Mutation:

number_of_race_picks maximum_positive_picks = 10;
number_of_race_picks maximum_negative_picks = -10;
number_of_race_picks evolutionary_mutation_bonus = 4;

The valuation for all traits and special abilities can be adjusted. For the first 9 traits growth - spying, the actual bonus value can be changed as well. Note that the Food and BC bonus values are doubled: -1, 2, 4 translate in game to -1/2, +1 and +2 bonus per farmer. Thus Food +1 for 4 picks is written as:

race_pick farming2_cost = 4;
race_pick farming2_value = 2;

Or can be compressed to:

race_pick farming2_cost = 4 2;

All other values are more straightforward to set, for instance to change negative growth -50% for -4 picks to a positive +25% for 2 picks:

race_pick growth1_cost = 2 25;

Additional Settings

A few more tweaks are exposed in Config:

Under classic rules, a Ship Offense bonus applies to both ships and orbital platforms and planetary installations. The more expensive Ship Defense bonus on the other hand, does not apply to satellites. Too bad for the Alkari. The SD bonus can be made to apply to satellites and planets too by setting:

satellite_racial_defense_bonus = 1;

Similarly the Warlord bonus can be made to apply to satellites and ground installation too with the parameter satellite_warlord_bonus.

Government bonuses can be precisely manipulated now:

govt_bonus feudal_reduction           = 1/3;
govt_bonus confederation_reduction    = 2/3;
govt_bonus feudal_science             = -10;
govt_bonus confederation_science      = -5;
govt_bonus democracy_science          = 10;
govt_bonus federation_science         = 15;
govt_bonus democracy_money            = 10;
govt_bonus federation_money           = 15;
govt_bonus unification_food           = 10;
govt_bonus gal_unification_food       = 20;
govt_bonus unification_production     = 10;
govt_bonus gal_unification_production = 20;

Where value * 5 is the percent bonus for the item, for example democracy has a 10 * 5 = 50% bonus to research. Feudal and confederation reductions are set as ratios.

Additionally, the base morale penalty can be set per government, as well as the morale penalties for not having a Capitol and the morale bonuses for the presence of Barracks.


If enabled, the Federation government will not be penalized for having mixed races in a colony and Alien Control Center will not appear in building list if all races are assimilated.


Table that allows to set a bonus or penalty for all government types.

repair_rate cyber = 10;

For a 10% repair rate. Repair rate of internal systems is normally half of this value, but can be adjusted via systems_repair_percent.

spy_telepathic_bonus = 5;

Allows to change the spy bonus for Telepaths. mind_control_ship_class = cruiser;

Sets the minimum ship class of a Telepathic race that can Mind Control a colony. The default is Cruiser class. Size classes are frigate, destroyer, cruiser, battleship, titan, doomstar.

event_roll lucky_player = 1000;

As described in Random Events, a lower value increases the chance for Lucky events.

td_ftl_bonus = 2;

Ship drive speed bonus on the main galaxy map for Trans-Dimensional races.

td_combat_speed_bonus = 4;

Combat speed bonus for ships and fighters of Trans-Dimensional races (also affects combat AI calculations). Does not apply to missiles and torpedoes.

warlord_command_bonus = 2;

By default, each colony owned by a Warlord race adds +2 to the Command Rating.

AI Opponents

Generic AI bonuses

Below table summarizes standard AI bonuses per difficulty level:

Growth Percent Food Prod Res BC Command Deficit BC Spy Bonus Troops & Marines Antaran Marines Tutor 0 -1/4 -1/2 -1/2 0 12 -2 -2 -4 Easy +1 0 0 0 0 11 -1 -1 -2 Avg +2 1/4 1/2 1/2 1/4 10 0 0 0 Hard +3 1/2 1 1 2/4 9 1 1 2 Imp +4 1 2 2 3/4 8 2 2 4

Note that difficulty level also influences other aspects of the game, like the way AI conducts diplomacy and spying, AI’s eagerness to attack, random events, Antaran likelihood of picking a human player as victim (/10, /5, 0, *1.5, *3), etc. The bonuses for food/production/research or "productivity" and the cash bonus the AI receives per difficulty level can now be set with two tables in config. The first table tweaks AI productivity bonuses. The set value divided by 20 is the bonus per population unit.

ai_productivity_bonus tutor = -10;
ai_productivity_bonus easy = 0;
ai_productivity_bonus average = 10;
ai_productivity_bonus hard = 20;
ai_productivity_bonus impossible = 40;

A second table governs income from taxation. Set value divided by 4 is the cash bonus per population unit, so it follows that AI receives +3/4 BC/pop on impossible difficulty level:

ai_income_bonus tutor = 0;
ai_income_bonus easy = 0;
ai_income_bonus average = 1;
ai_income_bonus hard = 2;
ai_income_bonus impossible = 3;

Stock Races

Stock Races can be adjusted in config. An example:

stock_race Alkari =
dictatorship g0 f0 i0 s0 m0 sd3 sa0 gc0 spy0
              0  0  0  0  0  -1   0   1    0 0 0 0 0 0 0 0 0 0 0 0 0;

The values that follow spy0, are ordered in the same way as the Special Abilities in the Race Customization Screen, e.g. low-G, high-G, aquatic, subterranean, etc.

These Alkari are a Dictatorship, have Ship Defense +50 (sd3), a Poor Homeworld (position 6 = -1) and are Cybernetic (position 8 = 1). Changing sd3 to sd1 gives the Alkari the SD-20 penalty and to sd2 the SD+25 bonus.

Unlock Extra AI Race Variants

When playing on Hard and Impossible difficulty levels, each opponent has three variants that the game will choose from. The tables in the code however contain 5 variants (check the addendum for details) and variants 4 and 5 are now available to play against, either as separate set including them only, or together with regular 3 variants by setting ai_races_variants:

1-3 - variants available in classic game (default), 4-5 - only previously unused variants, 1-5 - all variants.

Note: use values literally, e.g.: ai_races_variants = 4-5;

Modding the Race Variants

Coding Table 0 0 Feud 0 2 Dict 0 4 Demo 0 6 Uni 1 1 1 1 0 1 2 3 Pop +0 Pop -50 Pop +50 Pop +100 2 2 2 2 0 1 2 3 F+0 F-1/2 F+1 F+2 3 X Prod 4 X Res 5 X Tax 6 7 8 9 X X X X SD SA GC Spy 9310 1 lowg_world 11 1 highg_world 12 1 aquatic 13 1 subterranean 14 1 large_hw 15 -1 hw_richness 15 1 hw_richness 16 1 arti_world 17 18 19 20 21 22 23 24 1 1 1 1 1 1 1 1 cybernetic 25 lithovore 26 repulsive 27 charismatic 28 uncreative 29 creative 30 tolerant fantastic_traders 1 1 1 1 1 1 telepathic lucky omniscient stealthy_ships trans-dimensional warlord Let’s examine the first row of the Alkari Hard variant 1: ai_race_variant_table Alkari Hard v1 = 2 7 2 8 2 0 0 0 0 0 0 0 0 0 0 0 0 2 7 3 8 3; Two extra traits, SA +20 (7 2) and GC +10 (8 2) are added to the base race design. For Evolutionary Mutation it will get 2 extra traits, upgrading here to SA +50 (7 3) and GC +20 (8 3). If you write (intended or not): ai_race_variant_table Alkari Hard v1 = 3 7 2 8 2 0 0 0 0 0 0 0 0 0 0 0 0 2 7 3 8 3; Then 3 traits are taken into account and the race becomes Feudal (0 0).

AI Patience Counters

An option for diplomacy alternate_diplomacy, when enabled attempts to use correct patience counters. Previously, attempts on alliance, trade/research treaty etc, all were controlled by a single counter. But there are several separate counters for this in the code, and other counters were never checked. Since there is no telling if it is a bug or a feature, it is made optional and not enabled by default.

AI Ships

All non-player ships can be modded in some way;

  • Auto Design ships

  • Star Base specials

  • The Guardian

  • The Avenger

  • Monsters

  • Antaran ships

  • Antaran Fortress

Auto Design Ships

There are 8 different templates (ship design tables I-VIII) that Auto-Design can build ships from. Every table contains a row per ship class and 12 columns for categories of weapons:

Table I: ai_ship_design standard_beam_missile_x2 frigate = -1 -1 -1 15 -1 -1 -1 -1 -1 destroyer = 10 0 -1 5 -1 -1 -1 -1 45 cruiser = 15 0 -1 0 -1 -1 -1 10 30 battleship = 15 0 -1 5 -1 -1 -1 15 25 titan = 15 0 -1 10 -1 -1 -1 15 25 doomstar = 15 0 -1 15 -1 -1 -1 15 20 85 30 30 25 20 20 -1 -1 -1 -1 -1 -1 0; 10; 15; 15; 15; 15; Columns are: 1. Theme Special 2. Beam Special 3. Missile Special 4. Defense Special 5. Special Weapon 6. Special Device 7. Fighters 8. Missile x2 (I), Missile x5 (III), Missile x10 (IV) or Torpedo 9. Heavy Beams 10. Beams 11. Point Defense Beams 12. Bombs

Auto Design will equip ships in order from left to right from this table, equipping the ship with specials that are available and it has space allocated for. Fields with -1 are ignored, even if overwritten. Values are a percentage of the ship’s space. In the classic tables values add up to 100 per row. Should you assign higher values to the columns, in such a way that the sum > 100, then auto-design ships will use more space than they legally should have (cheat ships).

Theme Specials: a. Bio Weapons — teleporter, augs, death spores, etc b. Capture — transporters, shuttles, tractors, troop pods, etc c. Cloaking — cloaking device, stealth field, phasing cloak d. Beam Defense — inertial stabilizer/nullifier, augs e. Missile Defense — jammers, pulsar, a-m rockets, etc f. Armor — heavy armor, reinforced hull, automated repair g. Shield — hard shields, multi-phased shields, capacitors

Specials are picked at the beginning of each game, based on one of seven racially assigned themes. The Bio Weapons tables for example has 5 entries:

special_1 = 22 0;
special_2 = 33 0;
special_3 =  2 0;
special_4 = 26 1;
special_5 = 25 1;

These numbers are either weapons or specials (denoted by the second number, 0 is special, 1 is weapon). They are weighted from top to bottom and Auto-Design picks them based on the ship design tables, hull space allocation and available tech.

Other Ships

As an example the first weapon of the Guardian ship design:

guardian weapon_1_type = 11;
guardian weapon_1_arc = 15;
guardian weapon_1_mods = 00000000000000010;
guardian weapon_1_ammo = 0;
guardian weapon_1_amount = 2;

type: weapons table number (11 = Death Ray) arc: firing arc (1= Fwd, 2= Fwd Ext, 4= Bwd, 8= Bwd Ext, 15= 360 degrees) mods: weapon mods (010 = Hv) ammo: ammunition (0 here for beams) amount: weapon count (and weapon count remaining when weapon is damaged)

Refer to the Excel Manual for more detail. TODO bring it here;

The Antaran Fleet

prewarp_delay, average_delay, advanced_delay Antarans' resources calculation delay for each Tech Level. Antarans do not attack during the first two calculation cycles, so the actual attack delay is this delay plus twice the resource_increment_calculation_frequency. resource_increment_calculation_frequency The frequency in turns at which Antarans production values are recalculated. attack_frequency_determinant Random roll value that determines how often Antarans can attack: if the roll is lower than the number of turns since the last attack, a new attack happens. antaran_cease_of_attacks_coefficient For an attack to happen, the Antaran attack force should meet the following condition: 2 ^ this coefficient * A >= A + D + Ra + Rd A: build cost of the offensive fleet (fleets in flight do not count), D: cost of all defensive ships built, Ra: offense production resources, Rd: defense production resources. _resource_multiplier Per difficulty level specified for both defensive and offensive fleets. 96offensive_shiptype, defensive_shiptype Ship type limit per fleet. Ship types are: raiders, marauders, intruders, interdictors, harbingers. Note that you can see here that the Antaran HW has no defending frigate and destroyer class ships. antaran_ship_costs_shiptype Resource cost per ship type. cease_building_frigates_after_n_turns cease_building_destroyers_after_n_turns frigates_cease_difficulty_divisor destroyers_cease_difficulty_divisor Determines after which Antarans stop building frigate and destroyer class ships. Calculated for hard and impossible difficulty as 12500/dd and 20000/dd respectively, where dd stands for difficulty divisor value. Note that if frigates or destroyers are not destroyed in combat, they can keep appearing after these turn limits. Antarans do not dismantle their ships. elite_offensive_ants Antaran offensive ships have Veteran crews in classic, while the defensive ships have Elite crews. With this parameter the offensive ships can be set to Elite as well, both crew level and experience points will be increased.


Monsters Stay Chance

monsters_stay_chance determines the chance for wandering space monsters to stay after battle. The value sets the range of a random roll, which causes a space monster to leave if it rolls 1 twice. Thus, at the default value 2, a monster has 1/2^2=1/4 chance to stay. At 3, that chance is 2/3^2=4/9, etc. This setting has no effect on the Toxic Amoeba that always leaves the galaxy after winning a battle.

Monsters Stay

If monsters_stay is set at 1, wandering monsters will not leave the galaxy if they have won a fight, but stay until destroyed no matter what is set in monsters_stay_chance. The Toxic Amoeba is also ensured to stay with this setting. This is considered a test option and it will cause false GNN reports.

Amoeba Regeneration

If amoeba_regeneration is set at 1, Toxic Amoebae will regenerate 20% each combat round. Value can be tweaked with repair_rate regen.

The Crystal Fleet

If crystal_keep is set at 1, a Crystal that has captured enemy ships and is victorious in combat, will keep those ships as part of its own fleet.

Events & Delays

Frequency of Events

The frequency of events can be altered by changing the value of event_roll all_events = 512 where a lower number will cause an increased frequency. Similarly, the occurrence of good things for Lucky players can be manipulated by adjusting event_roll lucky_player = 1000. In addition, with parameter between_events_delay the minimum turn delay between events can be set (default = 5).

Delay of Events

By default events can not happen before turn 50, as set by event_delay all_events = 50. Each individual event delay can also be set:

event_delay derelict = 0;
event_delay climatic_change = 0;
event_delay comet = 200;

The generic delay and specific delays are not cumulative.

Events Duration

The duration of the three events Hyperspace Flux, Warp Beast and Time-Space Anomaly can be tweaked with minimum duration and chance to stop values. Classic settings are:

event_duration event_duration event_duration event_duration event_duration event_duration anomaly_min beast_min flux_min anomaly_chance beast_chance flux_chance = 4; = 4; = 4; = 20; = 20; = 20;

Note that the delay value (4) is added to a base 2 delay, for 6 turns effectively.

AI Surrender Delay

The parameter ai_surrender_delay specifies after which turn AIs can surrender their empire. Default value is 150.


Optional Unlimited Leaders

The parameter leaders_no_limit enables more than 4 leaders to be in service or in the pool, both for colony leaders and ship officers. Scroll the lists with the new arrow buttons or with "[" and "]" hotkeys.

Better Warlord Leaders

Optionally, leaders in the service of a Warlord can now function at +1 skill level higher, in the same way as ship crews do, by setting leader_warlord_bonus. Otherwise Warlord will only enable the possibility for a leader to reach skill level 6.

Customizing Leaders

A custom HERODATA.LBX can be created with the MoO2 Workshop (separate download) and loaded via Config, for example the following loads custom leaders from ICE mod:

herodata.lbx = 150\mods\ice\lbx\$LANG$\HERODATA.LBX;

If the order of leaders in the list was changed, take note to change accordingly in config the leader id’s of the three special leaders. They must match those set in herodata.lbx:

leader_data advanced_govt_hero_id = 47;
leader_data random_attributes_colony_leader_id = 41;
leader_data random_attributes_ship_captain_id = 52;

The first one sets the leader id that brings advanced government (default is 47, Tanus). The other two set the id’s for the leaders with the random skills set.

Leaders Skill Cost

With the table skill_cost the cost of all leader skills can be set. The value set is 1/10 of the actual base skill cost. Example:

skill_cost assassin = 2;

sets the cost of the assassin skill to 20 BC for a Level 1 leader. Skill cost increases for each level. The assassin skill is 40 BC for a L2 leader, 60 BC for a L3 leader, etc.

The commando skill cost is set separately because it differs for colony and ship leaders. The default base level cost is 10 BC for colony leaders and 30 BC for ship officers.

The presence of Megawealth in a leader’s skill set doubles the cost of all skills of that leader. This can be disabled with:

megawealth_no_double_cost = 1; *

Note also that leaders who bring technology do not share it for free! Base technology cost depends on its research points value:

     < 1000 RP:  10 BC
1000 < 5000 RP:  30 BC
     >= 5000 RP: 40 BC


The experience points required for a leader to gain the next skill level can be set:

leader_data level_2_experience = 60;
leader_data level_3_experience = 150;
leader_data level_4_experience = 300;
leader_data level_5_experience = 500;
leader_data level_6_experience = 1000;

Level 6 can only be reached by leaders in the service of Warlords. Colony leaders gain 1 experience point per turn, while Ship Officers (and ships) gain additional experience in combat equal to the halved sum of size classes of destroyed enemy ships (where FF-DS = 1-6), rounded down and minimum 1 XP. Note that an instructor does not give XP to leaders, only to ships.

Chance to Hire a Leader

The formula for the chance to get a new offer of a (randomly chosen) leader is:

Roll(0-99) < (turns since last offer + hire_chance_charismatic_bonus - hire_chance_repulsive_penalty + sum of all famous leaders' skill levels) / (1 + number of leaders in pool both hired or for hire)

No leaders will offer to join in the first 5 turns of a game. This delay can be set with hire_chance_delay. Note the importance of dismissing a leader you do not wish to hire, as it improves your chance to get a new offer the next turn(s). Charismatic and Repulsive values can be set and by default they are:

leader_data hire_chance_charismatic_bonus = 5;
leader_data hire_chance_repulsive_penalty = 10;

Number of Leaders for Hire

The pool size of leader available for hire is governed by the following formula:

(Base Amount + Number of players + turn/increment step + Charismatic bonus) / 2 (if Repulsive)
leader_data availability_base_amount = 10;
leader_data availability_increment_step = 5;
leader_data availability_charismatic_bonus = 10;

Thus, a new leader becomes available every 5 turns, unless you are Repulsive then only once every 10 turns. This explains why it takes such a long time for Repulsive races to get any good leaders, as the halving part has a significant impact on the available leaders at game start. Leader available at the start of a game with 8 players:

Base player:        18
Charismatic player: 28
Repulsive player:    9