Highlights of 1.50 Patch New Features 5
Reloading and Extracting on the Fly 57
Notes on Population Growth 108
Notes on Beam Weapon Mechanics 114
Notes on Anti-Missile Rockets 122
The unofficial 1.50 fan patch provides an updated DOS version of the 1996 turn-based strategy game Master of Orion II: Battle at Antares (MOO2).
It fixes most known crashes, stalls and network synchronization errors, as well as an abundance of interface and game rule bugs.
The interface has been improved with a 6th ship design slot, enhanced build queue management, new keyboard shortcuts, and slower mouse scrolling speed in combat, making it usable again.
The patch introduces configuration files that allow customization of the interface and extensive modding of game rules. Config files are plain text files and can be viewed and edited with any plain text editor (like Notepad on Windows). The 1.50 distribution comes with several mods and MOO2 Launcher, which makes it very easy to select a mod before running the game.
Network multiplayer setup has been improved. The host broadcasts settings to clients automatically, eliminating the need for all parties to use the same set of command line switches or enable the same mod (except for lbx files). Thanks to the integrated mapgen functionality, running the separate mapgen program which requires restarting the game is no longer needed.
Important documentation:
MANUAL_150.pdf (this manual) | Detailed descriptions of new features, fixes, modding options and game mechanics. |
MANUAL_150.xlsx | Addendum to this manual. |
PARAMETERS.CFG | Overview of all config parameters along with a brief description for each parameter. |
CHANGELOG_150.TXT | Overview of changes for each version of the patch. |
Install.txt | Installation instructions and a FAQ. |
This unofficial fan patch is not supported by a company or anyone at all.
USE IT AT YOUR OWN RISK
Random Number of Opponents
It’s now possible to start a new game with a random number of AI opponents. In single player games 1-7 AI’s are added, and in multiplayer games 0-6 AI’s are added.
Build Queue Management
Build queues can now be auto filled by loading one of 11 configurable lists, drastically reducing micromanagement. The lists are bound to keys Q and 0-9. They can be used in the Build screen and in the Colonies screen. Used in the Colonies screen, a list’s contents is loaded to the queue of the highlighted colony, or to all build queues in combination with the SHIFT key. Default lists are:
Q merge buildings
0 clear the queue
1 prepend ship design 1
2 prepend ship design 2
3 prepend ship design 3
4 prepend ship design 4
5 prepend ship design 5
6 prepend ship design 6
7 prepend freighter
8 prepend spy
9 append housing
Section Build Queue Management describes syntax and usage in detail.
Revert Buy Action
A buy action can now be reverted by pressing the BUY button in the Colony screen, Build screen or Colonies screen. The amount of BC paid will be returned and added production removed.
6th Ship Design Slot
A 6th slot for custom design has been added.
Play with Auto Designed Ships
ALT-AD auto updates all six ship design slots with AI designs. Slot 1 is always a scout ship. In Pre-warp, Average and Post-warp games, the other 5 slots are frigate to titan class until doom star construction technology is known, then they become destroyer to doom star class. On Advanced, slots 2 - 6 are always destroyer to doom star class.
Starting from patch 1.50.3, the game appends extra data to the save. So in general newer versions can load older saves, but older 1.50 versions cannot load newer saves. 1.50.2 and earlier versions (including classic) will load any save but ignore the extra data, which can result in glitches. Starting patch 1.50.10, Antaran states of max_ships and ship_costs are recorded in the save game, so these data persist after reloading the game. Starting patch 1.50.18, the game configuration is stored in the save file. Every time the game is loaded, the full configuration is restored.
Save file format version | Game version | Comments |
0 (classic) | 1.31, 1.40, 1.50.0-2 | Can load all formats, but in saves from 1.50.6+ food will appear doubled. Some versions will also have incorrect ship speed. In saves from 1.50.18+ all freighted pop information will be lost. |
1 | 1.50.3-5 | Can load formats 0-1. |
2 | 1.50.6-9 | Can load formats 0-2. |
3 | 1.50.10+ | Can load formats 0-3, but loading 1.50.18+ saves in 1.50.10-1.50.17 will cause loss of all freighted pop information. |
For save editing, Corion2 version 1.1 or higher is recommended. Older Corion2 versions discard 1.50’s extra data. Other save editors might not support the new save file format.
All major versions of 1.50 introduce new or renamed config parameters and can drop old ones. Because of this, config files for different versions are generally incompatible, so after updating the game you also have to download updated versions of the mods you use. Some simpler configs might work in a new version but complete configs will almost certainly fail to load. This situation stands as long as the patch is in development.
Executables with different major versions are incompatible in network multiplayer and will not allow you to start a game between them. Executables with the same major version are compatible over network, so 1.50.x.y is always compatible with 1.50.x or 1.50.x.z. It is recommended however that all players use the exact same version.
“Mark Block Stack Size Exceeded” Crash
Fixed the game crashing with this message when repeatedly entering and exiting Race Report in the Races screen. This happened due to an accumulating memory leak, so the problem was more likely to occur in long games.
Star System Pop-up Freeze
Fixed the game freezing sometimes when displaying a system pop-up. In rare cases it could display corrupted animation of rotating planets.
Random Sounds Crash
Fixed the game crashing on random sounds that could occur when pressing F keys in for example the fleet window, system window or colony view screen.
AI Food Balancing Freeze
Fixed the game freezing when an AI without Biomorphic Fungi technology gets stuck optimizing pop for food on a liberated and blockaded non-food planet in case the previous owner of that colony has Fungi tech.
Serendipity Event Freeze
Fixed the game freezing when no tech field is selected and the serendipity event occurs.
Tactical Combat
Map Edge Retreat Crash
The game no longer crashes if the attacker retreats a frigate from the left edge of the battle map.
Driveless Trans-Dimensional Ship Bugs
Trans-Dimensional races can fly ships without a drive. Several bugs made use of such ships problematic:
All these bugs have been fixed in 1.50 and driveless ships are fully playable now.
“Crystal Crash”
Fixed a crash involving the Crystal capturing a ship while flyers are present. This could occur in the following situation: If a missile/fighter M has been launched from ship S belonging to player P1, and then S is captured by player P2, then M's hit points are determined by the best armor of P2. It at least affects hp estimation by combat AI. Normally this would be hard to notice, however when P2 is a crystal, the amount of hp is calculated to be zero and AI crashes on dividing by zero.
Regardless of crystal, Get_Missile_Hits could return 0 depending on mod, which again would crash combat AI. Changed it to always return 1 when the result is 0.
Fighters Resolve on Top-left Corner Beam_SFX Crash
Fixed a rare crash in animation when fighters strike from a certain direction around the top-left corner of the target ship.
Ship Internal Damage Crash
Fixed a division by zero crash that happened when damaging internals of a ship with no systems left and a drive with 1 hit point remaining.
Raid Report Crash
The game no longer crashes when the raid report is too long.
Techfield Desync Bug
Multiplayer combat will no longer desync when a player gets a new combat-related tech on the turn of battle. This can happen after a research breakthrough, tech steal or tech capture during another battle on the same turn. Example: a tech field completion in Physics provides a new miniaturization level for the beam weapon used on a Satellite. Sometimes this information was passed only to one player resulting in a different satellite design observed by the two players. This could cause the course of combat to diverge between players, leading to an eventual stall or crash.
Evolutionary Mutation Desync Bug
Multiplayer combat will no longer desync when a player has Mutation applied on the turn of battle. This bug resulted in relatively little discrepancy for Single or Hotseat games; new picks acquired already came into effect during the combat cycle prior to the actual next turn. For Network games this was likely to cause desync and stall in combat requiring crashing and reloading the game. This bug is similar to the one described above.
Large fleet tactical combat network freeze
Network games will no longer freeze when one or both parties bring >99 ships into a tactical combat situation. Combat now starts normally.
Artemis System Net Desync Bug
Network games will no longer desync in tactical combat because attacking ships passing Artemis System Net got different damage results for the two players.
Zero Marines Raid Desync Bug
Network games will no longer desync because of a boarding action with zero marines, resulting in a stall of combat. This situation could occur either by deliberately raiding with 0 marines or, more importantly, when a Damper Field's effect was reducing the boarding party to 0. Both actions are legal and cause no harm to the defender. Note that boarding with 0 marines still counts as one boarding action for the ship in that turn.
Shuttle Capture when Rotating Desync Bug
When playing network multiplayer, the game will no longer desync when a ship rotating in place (manual rotate with right click) is captured by telepathic Assault Shuttles.
Shuttle Capture of Last Ship Mid-Flight Stall
When playing network multiplayer, the game will no longer stall if the last ship was captured mid-flight by Assault Shuttles.
“Monster Bug”
Battles involving identical monsters fighting different players on the same turn will now resolve properly. Previously one of the battles could sometimes be “rolled back”, restoring the monster and/or ships lost.
Dismissed Leaders Desync Bug
When a leader is dismissed he/she/it gets a level up. Sometimes this information was not synchronized and the leader could stay on the previous level. Leaders will now always acquire +1 level in a network game.
In Singleplayer, the game now autosaves each turn before combats instead of every four turns, the same way it already did for Multiplayer in classic. In addition, a batch file ‘watch-save10.bat’ is shipped with the patch that creates a copy of SAVE10.GAM each time it changes. Instructions on how to use the .bat are included within the file itself (open it in Notepad or any other plain text editor).
Upon a fresh install or after deletion of the file 150.SET, new default settings are:
New Game menu - Tactical Combat is ON;
Game Settings menu - Ship Initiative is ON;
Tactical Combat Options menu - Legal Moves is ON.
Faster Screen Updates
Screen switches (fade-ins and fade-outs) are faster in 1.50 than in classic.
Title Screen
As in classic, the version number is shown in the lower right hand corner of the Title screen. The name of the current mod is now also shown there (if one is loaded). There are different manifestations possible. In the below example the “1.50 improved” mod is loaded on version 1.50.18. (More on the 1.50 improved mod later in this manual.)
New Game Screen
New artwork[1] has been added to the New Game screen for the settings Cluster Galaxy, Random Opponents and Post-warp Civilization.
Select Race Screen
The button for the Darloks has been redrawn[2], correcting the name:
Enemy Moves
The option ‘Enemy Moves’ in the Game / Setting menu now actually works: When enabled it displays red destination lines of all enemy fleets within scanning range, including those that are not traveling towards one of the player’s systems.
Colony Screen
The stored production value (including bought production) and total production cost of the item is now displayed in the status box of the colony's current construction project:
Classic 1.50 patch
Colonies Screen
Extra info about population and production is now displayed in the Colony Info Summary window.
The new line Enroute (x), indicates how many settlers are inbound to the colony. Pop growth value (+236k in this example) has been extended with the pop round off0 value present on the colony (here 780k) and how many population units will be added from growth next turn (here 1). The last line contains production stats in the form of stored production value (including bought production) over total production cost of the item, plus the amount of current production on the colony.
Automatics (Design Dock)
In the Ship Design screen, the Automatics are the two boxes that list all of the ship's essentials - engine, armor, shield and computer. In 1.50, the beam attack value includes the Battle Scanner bonus if present in the design, in the same way that Augmented Engines, Reinforced Hull, Heavy Armor and Hard Shields are shown since classic. In addition, Augmented Engines are no longer counted double in the Beam Defense value.
Above screenshot shows stats of a Battleship fully loaded with weapons & specials, including Augmented Engines (5>10 combat speed), Heavy Armor (50>150 armor points), Hard Shields (1>4 damage points blocked) and Battle Scanner (25>75 beam attack). In classic, this example would display 25 beam attack and an incorrect +75 beam defense.
Tech Breakthrough Turn Counter
The turn counter is now more precise overall, for example it shows 1 turn instead of 2 when the chance for breakthrough is 100%.
Next Turn Reports
The order in which you get reports or actions at the beginning of the turn has been changed, providing a more logical sequence:
Leader Screen Hire Window
In classic, the only time the technology that a leader brings is mentioned is on initial offering if you have sufficient cash to hire the leader. Now, the technology is also shown if you have insufficient money as well as upon clicking Hire in the Leaders screen.
Leader Screen Hire Window2
The second window for initial leader offerings shown on Tutor and Easy levels, is now only displayed on the Tutor difficulty level.
Leader Experience Points
Experience Points for each leader are now shown in the Leaders screen.
Cutscenes Sound
The sound for cutscenes is on if either Music or Sound Fx is on, rather than only when Music is on. Note that this sound for cutscenes is always at maximum volume, no matter the in-game volume levels.
Centered Planets
In tactical combat, planets are now drawn centered in the bombing area.
Planets Screen
The Galactic Lore skill caused all planets not yet visited to be tagged as ‘no enemy presence’ in the Planets screen, including ones with monsters. As a result, you could unknowingly send a colony or outpost ship to such worlds without warning, causing the destruction of said ships. This issue has been fixed in 1.50 by changing the ‘no enemy presence’ filter to show only planets that have actually been visited.
Annihilated Empires Shown on Graph
Annihilated empires are no longer removed from the History Graph but remain visible.
Warp Beast
Presence of the Warp Beast is now displayed in the upper left corner of the Main screen.
Billions of Colony Ships Bug
Corrected the display of colony ship count for 2 or more ships in the star system pop-up.
Incorrect Display of Fractional Racial Food Bonus
A .5 food value is displayed correctly now upon left-clicking on a planet in the System overview (the small box in the Colony screen) as well as in the New Colony dialog:
Missing Tolerant Maintenance Penalty
For tolerant races, the correct building maintenance penalty for Toxic, Radiated and Desert planets is now shown in the Build Colony and Colony Info pop-ups (Statistics Boxes).
Colorless Brown Stars on Minimaps
Colonized brown stars are no longer displayed as uninhabited on minimaps.
Planets Screen Gravity Penalty
Low-G planets now show “-25% prod” for a Heavy-G race, instead of “-50% prod”.
Stealth Detection Spoils
Fixed 3 detection giveaways of stealth ships:
Fleets Screen Scrollbar Position Bug
The scrollbar is now drawn on top instead of centered when switching fleets.
Ship Officers Screen Missing Scroll Bar
A scrollbar for the Fleet Grid in the Ship Officers screen is now shown.
Navigator Skill Display Bug *
Corrected the displayed speed bonus in the navigator skill text. The ordinary skill gives a +2 speed bonus for level 5 leaders, and the improved (*) skill gives this +2 speed bonus for level 4 leaders.
Artifacts On-click Bonus Bug
Fixed the bug that made it possible to generate additional research points at Artifacts and Orion planets, by clicking on the science production icons and seeing the production breakdown. These additional RPs were real and affected the empire total, despite not being included in the empire total RP count shown on the Main Screen.
Time Space Anomaly
In the Colony and Colonies screen, during an anomaly the depictions of import/export grains & pollution barrels are no longer shown.
AI Ground Troops Bonus Omission
During ground invasion, the AI troops bonus/penalty was listed but not added to the sum. This has been fixed. A similar fix was applied in the Colony View screen (seen for AI’s via ALT-X). Note that this bonus/penalty did already apply to the actual combat resolve.
Commando Leader Omission
A colony leader with the Commando skill is now listed in the Ground Invasion screen and in the military statistics pop-up in the Colony screen. In the pop-up, the bonus is also added to the combat bonus total for each ground unit type:
Build Queue Bugs
All known build queue bugs have been fixed. This should put an end to the infamous repeat build cheat (at least we hope so).
Colony Base Button Disappearance
The Colony Base button in the Build screen is only present if there is at least one colonizable planet present in that system, that is not yet covered by a Colony Base building already in the queue. Previously the Colony Base button was not updated in time because of a bug, so sometimes clicking on Colony Base button resulted in adding an item just below it (usually a freighter). Calculation of the amount of colonizable planets was also buggy because it considered outposts belonging to other players colonizable, which could result in scrapping of a built colony base.
Visual Fixups for Ships
In the Ship Info pop-up, the racial missile defense bonus is no longer halved (overmap) and the Trans-Dimensional (TD) bonus is added to the drive speed value (overmap and in combat). Driveless TD ships have their speed stats displayed properly. Unused, but misleadingly displayed values for marines and hit points of internal systems on a Combat Planet, lander ships and strategic ships have been removed. Combat speed for strategic and lander ships and unused defense values for lander ships are now displayed as zero. Also, info for the active ship in combat should now be displayed more properly in the status bar (during retreats etc).
Visual Fixup for Strategic Ships
Strategic ships have no separate armor points, only structure points. Both values used to be displayed however, and damage was subtracted from the structure number while armor upgrades were counted in the armor number. Thus, a Zortrium armored frigate that sustained 12 damage, displayed a negative structure value together with healthy armor. Strategic ship hit points are now correctly displayed as the structure number and armor is displayed as 0.
Ship shields in Strategic combat have no shield arc’s strength, and act as planetary shields, only reducing damage by some value. This value is now properly shown instead of arc strength value. BD value of strategic ships display is now more accurate (previously the Tactical BD was shown instead, but note that the new value does not include possible bonuses from defense specials installed on a ship).
Strategic Doom Star Bug
Fixed strategic doom star being designed incorrectly as if it was tactical. Apart from incorrect armament displayed it had incorrect and possibly lower cost. This did not affect combat outcome, because in strategic mode ships are correctly redesigned for every combat.
Green Ships Bug
In the Fleets screen, opponents’ ships will no longer color bright green when no player owned ships are present.
Star System Pop-up Broken Palette
Fixed the bug that sometimes caused part of the color palette of Star System pop-ups to change to bright green.
Hotseat Mouse Right-Click Block
Fixed the right-click mouse button block after loading a pre-battle autosave in Hotseat. Loading such pre-combat autosave caused mouse right clicks to not work properly for some actions, most noticeably for turning ships.
Disabled Weapon Slots Color
Fixed the bug that erroneously led to displaying a turned off weapon slot as yellow instead of red in case the weapons in the slot had no shots left. Note that a reddened weapon (besides Spatial Compressor) does not automatically fire at incoming missiles anymore, except during the ‘Seeking Missiles’ phase at the end of each combat round.
Correct Damage Blocked Displayed for a Planet
Planet shields work in a slightly confusing way in tactical combat. Depending on the presence of defensive buildings on a planet, regular ship class shields can be added or not, while game info misleadingly claims they are always added. This is now fixed, the ordinary shield bonus is no longer displayed when there are no ground defenses.
For example a planet has a Radiation shield, no defensive buildings, and its owner possesses the Class X shield tech. Displayed value would be 15 damage blocked, while only 5 would be actually blocked. 1.50 properly displays 5 damage blocked in this case.
Missing Loknar’s Technologies
The two random technologies that Loknar brings (since patch 1.3) in addition to Death Ray and three random Xenon techs, are now displayed.
Note that these two techs are chosen randomly, which could result in a selection of one or both techs already in your possession. In such a case the technology is not listed and you will not receive another tech instead.
Note also that this selection is made before the Xenon techs are chosen and in the rare case where the Death Ray is one of Loknar techs, you will not receive another Xenon tech instead of the default Death Ray technology.
Hotseat GNN
Now all Hotseat players should get a GNN report about a planet attacked by a monster.
Evolutionary Mutation Screen Bug *
Fixed a bug that incorrectly prevented spending Mutation picks in some fields, due to incorrect cost calculation in case a negative pick was selected in the preceding field. For example, it did not allow taking +50 Attack when you already had +20 Ship Attack and -20 Ship Defense.
Race Info
Tech Review
Corrected the placement of several sections and technologies in the Tech Review subscreen of the Info screen.
Cluster Galaxies
The Cluster Galaxy - introduced in patch 1.40 - now works for multiplayer.
Wormhole to Orion Bug
Wormholes are no longer connected to the Orion system.
Black Hole Issues
Mapgen prevents Black Holes from appearing in Nebulas by replacing any such Black Hole with a normal star. This was done in a buggy way and regardless of mapgen tables such a star had 1 planet or, if it became the star of a homeworld, the minimum set number of planets. Also, the star color was chosen with a simple random roll from all star colors (instead of from mapgen star class tables) and in case this process failed, the star became red. This is all fixed, the new star is now generated fully in accordance with mapgen tables.
System is in Nebula Bugs
Fixed bugs in the “in nebula” check for star systems. This could cause star systems that were visually placed outside of a Nebula to be counted as “in nebula” for tactical combat and vice versa.
Note that a star is considered “in nebula” if the respective pixel value of the nebula picture is greater than 5 and that deep in a Nebula a few dark pixels can be present causing a star at such a location to be considered “not in nebula”.
For more information on this matter, see: https://masteroforion2.blogspot.com/2020/05/moo2-15018-and-nebula-fix.html
Closest Star Issues
Mapgen ensures that there is a closest star to each home system with at least 1 colonizable planet. If this star did not have planets, mapgen used to turn that star (or black hole) red, delete all satellites (asteroids and gas giants) and add two planets to the system. These deleted satellites were however not deleted from the planets array, causing them to become orphaned with no link to a star. The red star color especially stood out in non-red unicolor galaxies, e.g. when using the Orange2 map mod. All these issues have been fixed.
Runaway Homeworlds Bug
The maximum number of satellites that may be present on any map size is 250. If more are generated (up to 360 can be generated), a process of trimming reduces the number of satellites until there are 250 left. This happens for example when playing GoodMap4 and GoodMap5 map mods. This trimming process was buggy:
All these bugs have been fixed.
Food World Issues
Mapgen ensures for non-Lithovore races that there is at least 1 food world within 6 parsecs of the home system. Since gas giants and asteroids were considered food planets (they were set as food_base = 2), this could cause a player to be left without an actual food world. In addition, it was possible that a space monster was placed on the system containing the food world. Also the planet trimming process could remove food worlds. All these issues have been fixed.
Number of Planets in Home Systems
The intention in classic was to have minimum 3 planets in the home systems, but due to a bug this did not work and home systems with only the homeworld (1 planet) or with 2 planets could be generated. With the introduction of the /planets switch in 1.40, the minimum was set to 2. Starting 1.50.9, this minimum is set to 3.
Always be brave!
Waking up Fleets
For a fleet that arrives at a system that has enemy presence, a pop-up will appear, asking if you want to attack. For fleets that already hover in an enemy system such a pop-up does not happen every turn: they are asleep. Such fleets are awoken when circumstances change causing the Select Combat pop-up to appear, for example when another fleet arrives or a star base is built. This mechanic did not work properly for a newly built Fighter Garrison and Artemis System Net. Now, completion of those will also wake up fleets. On the other hand, completion of planetary shields will no longer wake up ships. In addition, fleets will wake up when a satellite, ground defense building or Artemis is destroyed. This especially reduces micromanagement when a player is using spies to attempt sabotage, eliminating the need to click ‘Engage Enemy Forces’ each turn to ensure engaging the enemy exactly the turn when a defense is destroyed.
Colony Beam Attack Bonus Bug
Fixed a bug that caused the defending fleet at a colony without a combat satellite or at an outpost to get Battlestation's +10 Beam Attack bonus.
Ship Initiative
Ship initiative is a feature introduced in patch 1.31 intended to make combat more balanced. If enabled, all ships of both players act in the same and every combat round, and move in order of their initiative, from the highest to the lowest.
Instead of using the classic formula
trunc[beam_attack / 10] + speed
in 1.50, ship initiative is calculated as
beam_attack + speed * 10
so +5 attack is not lost due to rounding (and even +2 attack makes a difference).
Ships can be tied by initiative in which case they act in semi-random order in classic. In 1.50, ships are strictly ordered by the following comparisons:
Turn Structure and Time Warp Facilitator Bugs
Note that all information in this section applies only to ship initiative mode.
The original combat turn structure contained a number of bugs and inconsistencies, mostly related to Time Warp Facilitator:
All these problems have been fixed in 1.50 by changing the turn structure. TWF turn is a full-scale turn now, and non-TWF ships are skipping most steps of it.
The table below summarizes these changes. It lists all actions for different turn phases and which ships are subjected to them. All actions in the table are prepended with a single letter code:
A - Action applied to all ships.
T - Action applied to TWF ships only.
M - Action applied to missiles.
Actions colored red are the ones removed or changed by 1.50, green are those added by 1.50, actions not colored are the same in 1.40 and 1.50.
Classic | 1.50 | |
Before ordinary turn | A Refresh combat stats M Replenish missiles’ moves A Retreat or recharge ships ^2 A Rotate Satellite | A Refresh combat stats M Replenish missiles’ moves A Recharge ships ^1 A Retreat A Rotate Satellite |
Ordinary turn | A Move ships, fire | A Move ships, fire |
Between ordinary and TWF turns | A Lose Absorber’s charge M Move missiles A Update cloaks T Recharge FMR & HyperX A Apply plasma web & BHG T Retreat or recharge ships A Rotate satellite | (A Absorber keeps charge) M Move missiles T Apply plasma web & BHG T Recharge shields T Update cloaks T Recharge FMR & HyperX T Repair T Refresh combat stats T Recharge ships T Retreat T Rotate satellite |
TWF turn | T Move ships, fire | T Move ships, fire |
After TWF turn | A Lose Absorber’s charge A Update cloaks A Recharge FMR & HyperX A Recharge shields A Repair | (A Absorber keeps charge) M Move missiles A Apply plasma web & BHG A Recharge shields A Update cloaks A Recharge FMR & HyperX A Repair |
^1 Recharge ships -- recharge ships’ weapons and replenish move points.
^2 Retreat or recharge ships -- only present in classic game. For each ship either a retreat or recharge is performed. This causes some ships to not yet be recharged when retreats happen, and thus defensive fire from those ships cannot be triggered by retreat U-turn.
Finally, note that
Defensive Fire
Defensive Fire is a special ability of regular mount beams, intended to give an inactive player some defensive means during the active player’s move. Sadly, in combat with ship initiative enabled the whole mechanic was plagued with bugs, which rendered it inconsistent and incomprehensible. All problems have been fixed in 1.50, however because the whole mechanics was so severely bugged for all the years, and it was impossible to improve on it while keeping the “original feel” in combat, we have turned DF off by default for initiative games with parameter defensive_fire. With initiative off, DF is always on as it was in classic. More details can be found in section Defensive Fire.
Mid Flight Update of Ship Coordinates
Ship movement in combat can trigger defensive fire, and on-impact anti-missile fire. In classic, in some cases a ship’s initial coordinates are used for intermediate calculations. Both defensive fire and anti-missile fire are affected by this, the range to target is calculated from a ship’s initial coordinates. An example: you order a ship to fly from point A to point B. Somewhere in between in point C the ship is impacted by a missile volley. PD and Spatial Compressors should fire automatically at this point. But since the range to missile is calculated from point A and missile is currently at point C, Spatial Compressor will consider missile out of range and will not fire. Likewise if distance AC is more than PD range, then PD weapons will not fire. Ship coordinates are now updated during flight, so both anti-missile fire and defensive fire calculate range correctly. In addition, several small bugs that could affect Spatial anti-missile fire have been fixed.
Destroyed Weapons
Ships now lose shots right after a weapon is destroyed. The game does not store states for individual weapons in slot, so a shot is only lost if a number of weapons remaining functional is lower than the number of shots. E.g. if you have a slot with 10 phasors, with remaining 8 shots, and 1 phasor is broken, you’ll still have 8 shots. Then, if 5 more phasors break you will be left with 4 functioning phasors so shots will be decreased to 4.
Indestructible Specials Bug
If damage inflicted on a special system was equal to its hit points, the special kept functionality but it became impossible to damage it further. Such specials were effectively acting as regular indestructible ones (reinforced hull, battle pods, etc). This bug has been fixed and to keep the original feel, +1 HP has been added to all specials.
Ship Repair Bugs
Immobilization
Fixed the discrepancy between the immobile label (which is intended to indicate if it’s possible to board the ship) and the actual ability to board after trapping a ship with a Black Hole Generator or Tractor Beam. Previously a ship just affected by BHG was not marked immobile while it was possible to board it and a ship released from BHG or Tractor Beam kept the immobile marking while no longer being boardable.
Boarding
Ship Drive Explosion
In classic, when a ship's drive explodes, there is a 10% chance that a 'nooo' exclamation can be heard in this process. This behavior is changed in 1.50 and the exclamation can now be heard when a ship’s drive explodes and there is a leader onboard. Optionally, by enabling leader_dies_with_no, this effect is extended to ships with leaders onboard that are destroyed by a regular or a quantum detonator explosion.
Done and Wait States Cleared on Capture
Telepathic races are able to control captured ships in combat. In classic (and only when ship initiative is on), a captured ship could not be controlled on the turn of capture if its original owner had already pressed ‘done’ for it. In 1.50 telepathic races can always control captured ships on the turn of capture. ‘Wait’ state is also cleared on capture when ship_initiative is set to 2. This allows the capturer to decide whether to wait.
Fighters Point Blank Bug
In classic, all 4 types of fighter crafts will strike immediately when fired point blank, except when fired left-to-right. This is fixed in 1.50 and fighters now strike immediately at point blank regardless of attack direction.
Fighters Chasing Unrelated Ships Bug
Fighters no longer chase unrelated ships, won’t highlight when an unrelated ship is moving, and will highlight when targeting the current ship indirectly (i.e. when targeting something that targets the current ship directly or indirectly). Previously only fighters targeting the current ship directly would be highlighted.
Fighters Chasing Missiles
Previously fighters were unable to chase non-moving missiles at the end of turn, effectively skipping a turn. This is fixed in 1.50.
Fighter Bays Destroyed by Returning Flight
Partially destroyed fighter flights (a group of 4 ships) that have returned to the mothership no longer cause permanent destruction of weapon bays.
Helmsman and Ordnance Bonus for Fighters
Helmsman and Ordnance bonuses now apply to fighters (all types: beams and bombs). Fighters are the only weapons not to benefit from Ordnance in classic; even Energy Absorber fire benefits from it.
Missile Alerts Bugs
Symmetric Bombing
Fixed the bug that did not allow bombing on the south and east sides of medium, large and huge planets. Bombing is now symmetric, and the distance from which a planet can be bombarded is the same from each side, regardless of its size.
Ground Installation +1 Hits Bug *
Due to a calculation error in Tactical Combat, ground installations were not destroyed until the damage dealt to them strictly exceeded their total hit points, in effect giving them +1 HP.
Civilian Structures +1 Hits Bug
Due to a calculation error in Tactical Combat, civilian structures were not destroyed until the damage dealt to them strictly exceeded their total hit points, in effect giving them +1 HP.
Spherical Weapons Range
Spherical weapons are Pulsar, Plasma Flux and Spatial Compressor. In classic, the targeting range for those weapons was inconsistent with the damaging range. Sometimes you could fire at an object (ship or missile) and not hit it, and sometimes you could hit an object which you were unable to fire at. This is considered a bug, because for all other weapons you can only fire at an object if it’s in range. in 1.50, targeting ranges have been made equal to actual damaging ranges, so now you can fire at an object if and only if it’s possible to damage it. In addition, range is now calculated from the firing ship’s center to the target’s edge; in classic it was the distance between centers. In effect, sphericals ranges to ships are 6, 6 and 4 squares respectively, and a fraction more to missiles.
BHG Doesn’t Use the Whole Slot
Ships no longer fire all Black Hole Generator shots from one slot, they use only one shot at a time.
BHG Simultaneous Action
Ships affected with BHG for 2 turns straight are destroyed at the end of turn 2, unless the BHG carrying ship is destroyed before, in which case the target is released. In classic this led to asymmetric behavior where ships on one side are destroyed first and ships on the other side affected by BHGs from destroyed ships are released. We consider it a bug, in 1.50 all such ships are destroyed simultaneously.
Stasis Field
The following bugs have been fixed:
Destroyed BHG and Stasis Freeing Ships
When a BHG or Stasis weapon is destroyed, a buggy number of ships used to be freed. Now it works as follows:
Cloaking Device Bugs
Phasing Cloak Area Damage
Ships cloaked by Phasing Cloak are no longer affected by spherical weapons or ship explosions.
Phasing Cloak Cuts Tractor Beams
Ship which phase cloaks is supposed to go to “another dimension”. But Tractor Beams targeting such ships and outgoing from such ships are not cut in classic. Moreover such ships can be captured while phase cloaked which is obviously a bug. In 1.50, Tractors both from and towards phase cloaked ships cease. Such ships cannot be boarded when cloaked.
Displacement Device
Miss chances for missile and energy absorber shot against displacement device have been corrected to 30% (was 29% for missiles and 70% for absorber, which contradicted description and was inconsistent with beams).
Energy Absorber
Inertial Nullifier
Inertial Nullifier reduces the turning cost of a ship from 8 per 90° to zero, effectively being a teleport for the purpose of rotation, but unlike Sub-Space Teleporter it causes the missiles targeting such ship to move. In games with ship initiative on, but missile initiative off, this could even lead to missiles striking Nullifier ships a turn earlier than ships without such device. Missiles now ignore Nullifier rotations.
Sub-Space Teleporter
AI Expected Damage Bugs
During tactical combat the AI assesses possible damage to enemy and friendly targets. In situations where no damage can be done, miscalculations resulted in AI stuck attacking impregnable targets or fleeing for no reason. Fixes are:
AI Stall when Targeting Missile
When an AI ship launches a missile and then is captured, another AI ship may decide to attack that missile, figuring it was launched by an enemy ship. But the firing code checks that the missile is friendly and does nothing. This results in AI trying to fire at the same missile endlessly. This is fixed in 1.50.
No Autodone in Combat
A ship’s turn no longer automatically ends when it has no ammo and movement points left. This is helpful if you want to retreat, self-destruct or board after moving.
AUTO Retreat
AI ships that are out of ammo or have no ammo will retreat from combat, unless they have a Warp Dissipator or Wide Area Jammer fitted. In 1.50, a rule was added that such ships will also stay in combat if they have a leader onboard, since the effects of leaders, just like Warp Dissipator and WAJ, are fleet-wide.
In addition, the rule that human player fleets never retreat from combat can be altered with the parameter human_player_fleet_auto_retreat in which case they act the same way as AI fleets.
Retreat Disappearances Bug
Ships no longer disappear when made immobile while turning to retreat. Such ships stay in combat instead. In classic, such ships could be lost after the battle despite a successful retreat animation.
Shuttle Capture Upon Retreat Bug
Ships that are captured by Assault Shuttles during retreat now stay in combat.
Relaxed End of Combat
During a turn, combat now ends on each next ship if its side has won and there are no missiles on the other side and there is no colony on the other side. Upon the end of the turn, the winner check works as before and combat ends even with missiles or a colony present. This more relaxed ending of combat is intended against missile & self destruct (“Hand of Death”) exploits, as well as for overall coherence of the turn sequence. If no enemy is present or there is no need to act, pressing T ends both the turn & combat.
In an exception to the new rule: To prevent AI / AUTO combat from aimlessly jerking ships, combat ceases if the only remaining side is an AI or a human player on AUTO combat, even if the ships can still bomb the planet or launch missiles (missiles last flight still happens).
Super-fast Combat Mode (Z) Improved
Super-fast mode is activated when you press Z in combat against an AI opponent. It is similar to pressing Auto but skips some graphics and allows combat to resolve much quicker. The following changes were introduced for this mode:
Crew Level Bonuses
Classic formulae for strategic Beam Attack and Beam Defense are very simple:
strat_BA = racial_bonus + computer_bonus
strat_BD = base hull_defense + (drive_no - 1) * 10
1.50 formulae have been adjusted to optionally honor crew bonuses for beam attack, beam defense and missile defense. With option enabled, Space Academy is no longer a useless building and Warlord becomes more valuable. Note that a racial bonus for BD now applies but Trans-Dimensional bonus still does not (since there is no combat speed in strategic combat). Note also that Weaponry and Helmsman bonuses have no effect in strategic combat and ship scan currently still shows misleading values.
Weapon Selection and Actual Damage
Weapons used to be chosen using the damage values of the strategic column, but for actual damage in combat values from the tactical column were used. This could lead to suboptimal weapons being fitted on ships, for example Neutron Blaster (12 max damage) was favored over Gauss Cannon (10 max damage), while in combat Gauss max damage is higher than Neutron Blaster (18 vs 12). In 1.50, the strategic column is used for both weapon selection and actual damage in combat. The strategic column has been updated with values from the tactical column where necessary to preserve classic values, with the exception of Special Weapons (see next paragraph) and Dragon Breath that now does 250 damage instead of 300 (maximum value in the strategic column is 255).
Special Weapons Damage
Special Weapons damage values were incorrect and/or inconsistent. Most notably Bombers and Heavy Fighters did no damage in combat at all because their damage values were set 0 in the tactical column of the weapons table. Damages of other weapons were inconsistent with their tech level. In 1.50, the special weapons damage values were taken from the strategic column of the weapons table, except for Plasma Web that uses values from tactical column and Bomber / Heavy’s that use values from the book “Master of Orion II: Battle at Antares, The Official Strategy Guide” (1996). Note that weapons are chosen basis highest max damage and in case of a tie basis lowest weapons table id, and therefore Bomber (#30) is correctly chosen over Pulsar (#36) in case both technologies are Known.
Weapon | Tech Lvl | Cum RP | Classic dmg | 1.50 dmg | Source for 1.50 value |
Interceptor | 2 | 80 | 6-15 | 1-4 | Strategic Column |
Gyro Destabilizer | 6 | 900 | 1-4 | 3-8 | Strategic Column |
Pulsar | 10 | 5300 | 2-24 | 4-20 | Strategic Column |
Bomber | 10 | 7080 | 0-0 | 5-20 | Strategy Guide |
Plasma Web | 12 | 9450 | 5-25 | 5-25 | Tactical Column |
Heavy Fighter | 14 | 16580 | 0-0 | 8-32 | Strategy Guide |
Spatial Compressor | 22 | Xenon | 4-32 | 5-40 | Strategic Column |
Black Hole Generator | 22 | Xenon | 6-15 | 100-100 | Strategic Column |
Stellar Converter | 17 | 34950 | 400-400 | 250-250 | Strategic Column |
Artemis System Net Defender Wins Bug
Artemis System Net will no longer grant a wrongful victory to the defending side in strategic combat. This happened when Artemis System Net managed to destroy at least one attacking ship before the combat. In such a case the defender was declared a winner even if the whole defending fleet was destroyed. No prompt for bombardment or invasion was presented to the attacker and his fleet was forced to flee.
Inconsistent Rounding of Range
The calculation of range for contact was rounded down, while the range for ships was rounded up. Notably with Iridium Cells this caused situations where a ship could orbit an enemy colony, without establishing contact. Range calculation for contact is now also rounded up, making it consistent with the ability to visit a colony.
Scanners and Communications Discrepancy
Fixed the discrepancy between the effective ranges of Scanners and Communications by increasing the default ranges of Tachyon and Sub-Space Communications by 1:
Scanner help exe Comms help exe exe
Space 1 2 - - 1.31 1.50
Tachyon 3 4 Tachyon within 3 2 3
Neutron 5 6 Sub-Space within 6 5 6
Sensors 8 9 Hyperspace unlimited 255 255
Depending on ship movement (approaching or departing) range differs. The minimum range is listed for scanners, but maximum range is set in code. For communications the listed value is now equal to the value in code.
Navigator Affects Fleets Immediately
All actions with navigator leaders now affect fleets immediately. In classic you could send several fleets to different destinations with one single navigator. This is no longer possible and only the fleet in which the navigator actually travels gets a speed bonus and the ability to pass black holes. If you split fleets en-route, leaving one new fleet without a navigator, or just send the last navigator away from a fleet, you are prompted that such action will lead to an ETA change or even to loss of the fleet to a black hole, and given a chance to cancel your action. If a navigator levels up or catches up with a fleet en-route, it will increase that fleets’ speed immediately.
Other Player's Dimensional Portal Bug
In classic you could attack Antares using a Dimensional Portal built by another player. In that case your fleet would travel to coordinates 0, 0 instead of attacking immediately. Upon reaching the destination battle with Antarans would take place. This was mostly a multiplayer issue because AI never builds a portal and rarely can acquire one. This bug is fixed in 1.50, it is no longer possible to attack Antares using another player’s portal.
Auto-Scrap
To prevent your treasury from becoming negative the game automatically scraps things. The patch changes the following:
Auto Ship Design
A number of bugs causing auto-designed ships to be different from manually designed ships have been fixed. This includes both AI and player starting ships. Auto-designed ships are now fully equivalent to manually designed ones:
Warlord Ships
The crew level bonus now applies immediately for new ships built by Warlords instead of from the next turn.
No Computer Hit Points Bug
Ships that have no computer fitted no longer receive the computer’s hit points.
Ship Detection Bug
Destroyed stealth devices now actually lose their effect on the main screen instead of providing an additional bonus.
Antaran Fighters Bug
Fixed Antaran fighters not working on defensive Cruiser and Titan ships.
Antaran Bombs Bug
Fixed bombs having a forward arc instead of 360 degrees on Antaran offensive Battleship and Titan ships as well as on the Avenger ship.
Pre-Warp Refit Bug
In Pre-Warp games it is now possible to refit ships without having researched Cold Fusion (Colony Ship field). As soon as you are able to build ships, you can refit them.
Refit Design vs Queue Discrepancy
Fixed the inconsistency between the cost shown in the Refit screen and the actual refit cost that the player had to spend.
Incorrect Feudal Refit Cost
Fixed refit cost calculation for the Feudal government. Now the Feudal reduction for hull cost applies properly.
“Feudal Bug”
In both Hotseat and networked multiplayer games, the cost for building or refitting a ship is now calculated correctly. Sometimes the basic ship cost was calculated in another player's context, which had the most noticeable effects when a Feudal player was involved, hence the name of the bug. It was the reason why Feudal was usually banned in multiplayer games. This bug happened for non-Feudal players too, but with a much smaller effect.
Command Points not Updating After Landing OP or CS Bug
Fixed occurrences where landing a Colony Ship or Outpost Ship would not decrease the used command points and maintenance cost. This could even lead to auto scrapping in the next turn if at negative command and low on money.
Outpost Ship Conflicts with Colonization Bug
If you had both an outpost ship and a colony ship present in a star system you were sometimes unable to colonize habitable planets in that system both with colony ship and colony base. The game wouldn’t present a colonization prompt and the "colonize planet" button wouldn’t appear when a fleet was selected and a colony base would be trashed (sold). This is fixed in 1.50.
Colony Ship Conflicts with Building Outpost Bug
Similar to the previous bug. If you had both an outpost ship and a colony ship present in a star system you were sometimes unable to build an outpost in that system. The game wouldn’t present the outpost building prompt and the "build outpost" button wouldn’t appear when a fleet is selected. This is fixed in 1.50.
Lander Ships Armor
The ‘best armor minus 1’ rule for lander ships has been removed. They now always have the best armor fitted, irrespective of whether they are already in the queue or not when new armor tech becomes available.
Satellite Weapon Mods
Satellite beam weapons can now have mods. By default all mods are allowed except AP and SP for point defense weapons. Missiles can now be made MIRV (though not enabled by default). This can be configured with defenses_allowed_mods. Mods now cost space for both beam weapons and missiles. This causes slightly less beam weapons to be fitted when mods are applied at L1 and higher. For missiles, ECCM is still free of cost and available at level 0 miniaturization (a change that was made in patch 1.3), while for ships it’s a L1 tech at +25% cost. FST and ARM are available at L1 as before, but each now have the same +25% cost as for ships. The space of satellites has been increased in compensation. Note that a Star Base now starts with 4 nukes at L0 instead of 3, and still has 4 and 5 nukes at L1 and L2 respectively, same as in classic.
Beam Weapons Arc Cost
The cost of the 360⁰ Beams on satellites now is +50% instead of +25%. The space of satellites has been increased in compensation.
Choice of PD Weapon
The best PD weapon by dmg/space for combat satellites is now selected taking Auto Fire and Enveloping mods into account. Inherent ENV is also taken into account.
Evenly Spread Missiles
A combat satellite has three slots for missiles. In classic, each slot can contain a maximum of 30 missiles and missiles 1-30 are fitted in the first slot, 31-60 in the second slot and 61-90 in the third. As a result, most of the time only the first slot was used in unmodded games, which restricted a satellite’s firing options (could only shoot missiles at one target each combat round). In 1.50, 1-3 missiles are fitted in the first slot, 4 missiles are fitted as 2-2-0 and if there are more than 4 missiles, they are evenly spread over the three available slots. In addition, each slot can now contain up to 99 missiles instead of 30.
Space Allocation
In classic, a Star Base has 300 space allocated as 25%/ 12.5%/ 12.5%/ 50% for Hv, regular, PD and missiles respectively. The default Star Base now has 400 space (+100 in compensation for mods and arcs) with a new 26/13/12/49 allocation, for a starting weapons complement of 3 Hv / 3 reg. / 6 PD / 2+2 nukes (Classic had 3/3/6/3). Note that AI’s satellite strength assessment takes these custom allocation percentages into consideration. The allocation of available space for heavy beams, regular beams, point defense beams and missiles / torpedoes is configured with satellite_space_allocation.
Compare classic vs new default Star Base with L1 Fusion Beams and L1 Nukes:
Satellite Size Class
Satellite generation and repair now uses hull table rows 6-8 (Star Base, Battlestation, Star Fortress) for hit points of computer and shield. This means that a star base has 10 hp for a computer instead of 5 and 15 hp for the shield instead of 6. For size calculation of special systems, classes 2-4 (Cruiser, BB, TT) are assumed, unchanged from classic.
Satellite Capture Bug
Unrelated to starbases_capture option, a rare bug could cause the attacker to capture a satellite. The attacker should capture the satellite and the defender should recapture it but lose the battle afterwards. If the attacker proceeds to conquer the colony the satellite will be captured. This is fixed in 1.50.
Fighter Flight Buggy Counts
Fighter crafts used to create problems when returning home. Instead of trying to fill all space of the available bays, they only landed in the first available empty slot, resetting the weapon amount in the process. For example:
1. You have slot 1 = 10 interceptors, slot 2 = 1 interceptor and launch both.
2. First 1 interceptor returns and lands to slot 1, setting the weapon amount of that slot to 1, in effect “breaking” 9 bays.
3. Then 10 interceptors return and choose not to land to slot 1 since it already has 1 fighter residing. They land to slot 2, but since that slot can only hold 1 interceptor, the other 9 are immediately lost.
The amount of fighters returning does no longer create such issues and fighters can even return to partially filled slots. They will now fill up every vacant slot upon return. Additionally, newly spawned fighters at a Fighter Garrison will always have the maximum number of flights (groups of 4). Consider 2. and 3. of the above example again for the new situation:
2. First 1 interceptor returns and lands to slot 1, setting the weapon amount of slot to 1 (again “breaking” 9 bays).
3. Then 10 interceptors return and try to land on slot 1 first, filling 9 free bays (restoring the amount of bays to 10), after which the remaining interceptor fills the 1 bay of slot 2.
Note that returning fighters reset a slot’s shot, so no fighters can be launched from that same slot in that turn. Note also that fighter craft bays that are destroyed by damage or raids, will not be able to be refilled on return.
Ground Batteries Arc Cost
The cost of the 360⁰ Beams on batteries now is +50% instead of +0. Total space of batteries has been increased by +50% in compensation.
Max Ground Unit Dies Bug
When marine and armor units of a subterranean colony reach the maximum number, that last unit will no longer die and be rebuilt in 5 turns endlessly.
Barracks / No Barracks Inconsistency
The number of transport ships to be disbanded after a successful invasion is calculated as the maximum number of troops the colony can hold, divided by 4 and rounded up. In result the actual number of troops that remain on a colony can exceed the maximum by 1-3. Those excess troops die by 1 unit per turn. Due to a bug, this did not happen in colonies without Barracks, so they could end up with more troops than the maximum. The same situation also occurred in colonies that had Biospheres scrapped. Fixed in 1.50.
Buildings & Freighters Free Cash Bug
Upon completion of a building or a spy in version 1.31, the corresponding maintenance fee is charged immediately. To prevent bankruptcies due to completion of such building or spy, the game compensates once for that fee. Due to a rule change introduced in patch 1.40 (a side effect of the Credit Cheat fix), maintenance is no longer charged immediately but started only the next turn. The compensation however still exists, causing the player to receive free money upon completion of such projects. In 1.50 this compensation for buildings and spies was removed.
The same mechanic applied to freighter fleets, however the actual maintenance charged in version 1.31 is between 0 and 3 BC depending on food shortage (while the food is not actually freighted!), and the compensation is fixed at 5 BC. As a result, there always is a net benefit of 2-5 BC’s. In version 1.40 no maintenance is charged for freighters on the turn of building so the net benefit is always 5 BC. The default in 1.50 is 0 BC. Because freighters are a special case and some players are accustomed to the old behavior, the amount of BC compensation is tunable with parameter freighters_cash_bonus.
1.31 | 1.40 | 1.50 | |
Maintenance cost from new building | Immediately | Next turn | Next turn |
Maintenance cost 1x compensation | Yes | Yes (free cash) | No |
New spy immediate cost | 1 BC | 0 BC | 0 BC |
New spy 1x compensation | 1 BC | 1 BC (free cash) | 0 BC |
New freighter immediate cost if shortage | 0-3 BC (0.5 BC each, rounded down) | 0 BC | 0 BC |
New freighter cost 1x compensation | 5 BC | 5 BC (free cash) | 0 BC (tunable) |
New freighter actually used for food transport if shortage | Next turn! | Next turn | Next turn |
Food from new building used if shortage | Next turn! | Next turn | Next turn |
Food from new building sold if surplus | Immediately! | Next turn | Next turn |
Tax from new population | Immediately | Next turn | Next turn |
Tax from new spaceport and stock exchange | Immediately | Next turn | Next turn |
Building Removal Bugs
Autobuild recalculation
Colonies are not recalculated in autobuild anymore, so newly grown pop doesn’t participate in production when autobuild is on.
Opponent’s Bought Production
Normally production is zeroed when you capture a colony. Sometimes AI has bought production there which will appear as non-zero production after capturing. This is fixed in 1.50 by also zeroing the bought prod. Note that it should not be possible to create such a situation, all bought production must resolve and be zeroed before battles, so this is likely a bug in AI.
Dimensional Portal
In 1.50 you can only build one Portal per system, like Artemis System Net.
Food Replicator
The Food Replicator no longer causes situations of negative production, only producing food if there is sufficient production available.
Turn 0 Research Points
Research Points produced on turn 0 are not lost if you did not choose tech on turn 0.
Advanced Damage Control
Being redundant for a Cybernetic race, ADC technology is removed from its tech tree.
Strategic Tech Tree Corrections
Removed the following unused techs from the strategic tech tree:
The Transporters tech is also unused in strategic games but has not been removed because for Lithovore races the Food Replicators tech is not placed in the tree, so the absence of Transporters would cause an empty tech field, and consequently a crash.
Added to the strategic tech tree:
(perhaps Warp Interdictor and Warp Dissipator were accidentally swapped).
Hyper-Advanced Tech Cost Bug
Fixed the cost of level 1 hyper-advanced tech fields that were shown as 25k research points but had a real cost of 15k. Now both actual and displayed cost is 25k RP.
Techs from Scrapping
Added the possibility to acquire shield technology from a scrapped ship. In addition, the occasional "You received the following techs from scrapping this ship" message pop-ups with a blank list have been fixed.
Techs from Surrender
The player that an opponent surrenders to now receives all technologies from that opponent. Previously he only received technologies up to #83 from the technology list, due to the erroneous use of technology field number instead of technology app number.
Map Knowledge from Surrender
Map knowledge is now transferred on surrender, preventing the occurrence of some odd situations for the receiver like having a surrendered fleet at an unexplored system.
Human-to-Human Technology Interaction
Diplomacy interactions involving technologies (exchange, gift, demand) between human players now include every possible technology. Previously it followed AI trade preferences (AI could be unwilling to trade some tech it deemed “useless”, most notable example being Optronic Computer).
Spy Roster Overflow Exploit
You can have a maximum of 63 defending spies in MOO2. Thereafter, the game will scrap any newly built spy. In classic this scrapping provides you with 100 BC, which is about twice as profitable as trade goods are. This can be considered an exploit. In 1.50, extra spies are scrapped at a common rate of ½ build cost.
AI Objective Bug
At the start of a game, each AI will get one of 6 objectives assigned: Diplomat, Ecologist, Expansionist, Industrialist, Militarist or Technologist. The AI's race picks are an input for this determination. The function that is used for that purpose had incorrect values for Ship Defense and Ship Attack (SD+20, SD+40, SA+25) and as a result those traits were not taken into account. These values are now variable and depend on the actual settings for Custom Race (where classic is: SD+25, SD+50 and SA+20).
Diplomatic Blunder and Marriage Events Bug
The Diplomatic Blunder and Marriage events that GNN reports had no effect in classic. This has been fixed, these events now modify relations between the players involved.
Assign To Farming Bug
Fixed inability to move pop from non-food world to farming on food world. Previously, when using the Colonies screen to assign a colonist as a Farmer on another planet, and the originating planet cannot farm, you incorrectly got an error, "No room for another colonist in this job field".
Ghost Colonies
A ghost colony is a colony with no population. Such a colony may appear due to the use of bioweapons, extermination of conquered population, or as a result of starvation (if planet_extinction = 1). A ghost colony exists as long as it has buildings. No new buildings can be built on a ghost colony, and every building present has a 10% chance to be destroyed each turn.
The average number of turns a colony lives with 1..48 buildings:
0 0 (colony is destroyed immediately if no colonists inbound)
1 10
2 14.7
3 17.9
4 20.3
5 22.2
…
48 42.8
When there are no buildings left on the planet, it becomes a zero colony. A zero colony is a special ghost colony with no population and no buildings. Such a colony is lost immediately unless it has freighted colonists inbound. By setting zero_colony_lost = 1, a zero colony is lost next turn even if it has freighted colonists inbound.
In classic, there was a bug which made it impossible to bomb or invade a ghost colony, causing it to essentially become an indestructible outpost. This is fixed in 1.50, however invasion is only possible when the colony has at least 1 building present.
Setting planet_extinction = 1 makes starvation lethal for the last colonist, so it is possible to create a ghost colony by starving populace. This option does not affect AI as it tends to starve its citizens and suffers too much from such a rule.
Population Capacity Clipped To 42
The maximum population on a planet is now clipped to 42, which is the maximum properly supported by the game. No matter which techs or racial traits you’ve got or how you mod population tables, no planet will support more than 42.
43rd Android Ignores Pop Limit Bug
Fixed the bug that occurred when you already had 42 colonists on a colony and built an android. The game would not warn you of the pop limit when an android was inserted into the queue. This android would not kill a colonist when built but became a 43rd colonist. You could continue building androids at such colony until the game crashed.
Freighted Colonists Ignore Pop Limit Bug
Fixed the bug that allowed overpopulating colonies. Previously, if for a given planet race S supported more pop than race A, (when S is aquatic, subterranean or tolerant) and you had only colonists of race S on this planet then you could send colonists of race A there in amounts exceeding allowed maximum. E.g. if you had a Sakkra colony 7/7 and Alkari supported 5 colonists on the same planet, then you could send 5 Alkari there without losing any colonists, resulting in a colony with 12/7 pop.
It’s an urban legend that the game likes to compensate for a race’s weakness with leaders.
Random Officer Check Players Order
Randomized the order in which players roll for leaders. The check is no longer done in ascending order (player 0, player 1, etc) each and every turn, so player 0 no longer always gets the first choice from the available leaders.
Ordinary Assassin Skill Bug *
Leaders with the ordinary Assassin skill (without the asterisk) are now able to kill enemy spies.
Assassin Blocking Mind Control Bug
Leaders with ordinary Telepath or Telepath* skills now protect colonies from being mind controlled. In classic, leaders with ordinary Assassin skill did that instead.
Telepath Skill Bug *
Leaders with the Telepath skill now get the correct skill level applied. Previously it was using one level less than the actual level of the leader.
Leader Arriving on a Captured Ship Bug
Normally a leader present on a ship that is captured is killed. But a leader who was still traveling to a now-captured ship was unaffected by this, resulting in an enemy’s leader residing on that ship. Such a leader is now sent back to the owner’s officer pool upon ship capture.
GNN Reports Systems Instead of Colonies
In some GNN news reports, the system name was mistakenly used instead of the colony name. This has been fixed and an updated EVENTMSE.LBX is supplied for all languages.
Wandering Monsters GNN
Now players should get correct GNN reports about monster events for all monster types and states of events.
Monsters Search Range
Added 10 parsecs to the monster's search range for finding a new target colony. Previously it was possible that a monster that could have stayed, disappeared due to its inability to find a new target.
Toxic Amoeba
The effects of an amoeba that has won combat at a colony now properly applies to AI colonies, transforming the planet to a Toxic climate. In addition the Amoeba is ensured to stay in the game if its target colony is destroyed before it arrives.
Nova Fixup
Planet food output is now zeroed and soil enrichment removed from planets that have been hit by a Nova, preventing such planets from being farmable after recolonization.
Comets
A comet now immediately counts as destroyed when 100% of that comet is destroyed, not the turn after. In addition an overflow in GNN’s comet message has been fixed, and more than 100% progress is no longer reported.
Comets and Monsters Hyperspace Flux Bug
Fixed a bug that failed to prevent comets and monster events from occurring during a hyperspace flux and that even made it possible for them to happen during a flux before their set turn delays, e.g. a dragon could already show up at turn 60 during a flux.
Serendipity Bug
The Serendipity event will no longer cause a blank box in tech choice if it occurs in the same turn as a regular technology breakthrough.
Pirate Raid Bug
The Pirate Raid event will no longer cause an income if it happens to a player with large reserves. Due to overflow, pirates used to “donate” money to richer empires.
Unstable Wormhole Bug
An unstable wormhole can now happen to fleets with eta=2 turns. (Was eta>=3 turns.)
Build queues can now be auto filled by loading one of 11 configurable build lists, drastically reducing micromanagement. A build list is a plain text file containing a list of buildable items and can be viewed and edited with any plain text editor (like Notepad on Windows). Build lists can also contain commands which affect how the queue is updated.
The lists are bound to keys Q and 0-9, the corresponding files being BUILD.CFG, BUILD0.CFG, ..., BUILD9.CFG. Keys can be used in the Build screen and in the Colonies screen. Used in the Colonies screen, the list’s contents will be loaded to only the highlighted colony’s queue, or in combination with the SHIFT key to all build queues. The default lists are as follows:
Q BUILD.CFG merge buildings
0 BUILD0.CFG clear the queue
1 BUILD1.CFG prepend ship design 1
2 BUILD2.CFG prepend ship design 2
3 BUILD3.CFG prepend ship design 3
4 BUILD4.CFG prepend ship design 4
5 BUILD5.CFG prepend ship design 5
6 BUILD6.CFG prepend ship design 6
7 BUILD7.CFG prepend freighter
8 BUILD8.CFG prepend spy
9 BUILD9.CFG append housing
BUILD.CFG (Q) contains a reasonably ordered list of buildings and is set to merge by default. This should suffice for colony buildup in casual games against the AI.
The portion of a line starting with # is a comment and is ignored, blank lines are also ignored. Otherwise a build list is just a list of items separated by spaces or newlines.
Each buildable item is either:
Products are:
Modes affect how products are inserted. Modes are:
Commands are:
buy buy a current product regardless of build progress.
buy10% buy a current product if it’s at least 1/10 built
buy50% buy a current product if it’s at least 1/2 built
buy75% buy a current product if it’s at least 3/4 built
unbuy unbuy the current product if it’s bought
clear clear the queue apart from bought prod and ships being refitted
clear_refits delete from the queue ships being refitted, except bought ones
stop stop reading the file and apply the list, ignoring all text after ‘stop’
Append a transport to the queue:
transport
Or, which is the same:
append
transport
Insert a spy and a freighter in the beginning of queue (but not if bought prod is present):
prepend
spy
freighter_fleet
Remove everything from queue apart from bought prod and refits and add two android workers:
clear
android_worker
android_worker
Scrap absolutely everything in queue and build design 6 repeatedly:
unbuy
clear
clear_refits
design6
repeat
Insert research lab on a colony where automated factory is already built and
insert both otherwise:
merge
automated_factory
research_lab
You can do a few special tricks using merge mode. The idea behind it is that merge changes only those slots, the products from which are on the list. So you can do ‘clear’ or ‘buy only’ for specific products. For example to remove only hydroponic farms and food replicators from the queue:
merge
hydroponic_farm
food_replicator
clear
And to buy only automated factory:
merge
automated_factory
buy
Playing 1.50 standard game mode, you get all the fixes and improvements as described in the chapters above. Config settings are at defaults in 1.50 standard. If you select this Core option in MOO2 Launcher, the Map option field is automatically set to none (“--”).
The 1.50 improved mod (150i) aims, as the name suggests, to improve on the standard game experience. Main elements are:
In addition, there are several other mods. Notable changes are described below. More information about changes, like 1.50 improved map settings, tweaked weapons and specials stats, etc, can be found in the Excel manual. For a complete overview of all changes, refer to the actual 150i config files.
AI Behavior
The AI makes better use of colony bases and builds combat ships of better design. It is more likely to research the automated factory tech field early and can research hyper-advanced level 1 tech fields that miniaturize late game weapons and specials.
Toxic Planet Terraforming
In 150i, Toxic worlds can be transformed to Barren climates by building a Recyclotron.
Research
The accumulated research points (RP’s) exceeding 2x the research cost of the tech being researched are stored over instead of lost. In addition, accumulated RP's are not reset to 0 when the tech currently being researched is acquired from non-research means like spying, capture, or artifact planets.
Tactics Leader
Because the Tactics and Tactics* skills do not work, the skill set of the three Tactics leaders has been adjusted for 1.50 improved:
Khunagg Nimraaz Rash-Iki
- Removed Tactics - Removed Tactics* - Removed Tactics
- Added Assassin - Added Famous - Upgraded to Commando*
Commando Leader
A defending commando gives 2.5x the regular commando bonus to ground troops, just like an attacking commando already gives in classic.
Ship Initiative 2.0 (aka Strict Combat Sequencing)
This combat mode is an enhancement of classic ship initiative combat. If enabled it automatically force-enables ship initiative, regardless of its setting in the Game Settings menu. It changes rules for selecting which ship moves next: Combat is split in two stages, pre-wait and post-wait. In the pre-wait stage ships move as usual, in order of their initiative (highest to lowest) and can wait if they want to act later. However in the post-wait stage, ships move in reverse order (lowest initiative to highest) and cannot use the Wait button anymore. Because the Wait button can be used only once for each ship, the player can no longer cycle ships endlessly.
Missile Initiative
In classic games with ship initiative off, missiles move at the end of each combat turn, but with ship initiative on, missiles move at the end of the next turn. In 150i, missiles move at the end of the combat turn the same way as in classic games with ship initiative off. In addition, missiles launched in different turns will not glue together. Under classic rules, missile stacks from different turns can join and form one stack.
Nuclear and Merculite Missile
Nuclear Missile Damage is lowered from 8 to 6, and Merculite from 14 to 12.
Simplified Beam Formula
This new formula fixes irregularities in the classic formula and is enabled in 150i. In general the accuracy on ranges 6+ becomes lower and a large BA-BD delta won't cause the range penalty to be ignored.
(range 6+ is: 7+ squares for PD; 16+ for regular mount; 34+ for Heavy mount)
To Hit Penalty
As a balance for the Simplified Beam Formula, the ranged_to_hit_penalty has been lowered by 5 for the ranges 6, 7 and 8: -55, -70, -85 become -50, -65 and -80.
Star Bases
Since the enabling of simplified_beam_formula lowers accuracy at longer range and star bases are immobile hence often have to fire from longer distances, the attack bonus of all satellites has been raised by +10. As a consequence, beam attack and ship initiative of the whole defending fleet is raised by that same +10.
Interactive Combat Stats
Under classic combat rules, ships recalculate most of their stats at the beginning of the next turn. First, this is inconsistent with several effects applying immediately. Second, this is somewhat counterintuitive, e.g. a ship tractored to full immobilization is legal for boarding (counted as immobile), while still being able to move. Interactive Combat Stats (ICS) causes ship stats to update within the turn, as soon as any event affecting them occurs. Note that with ICS enabled, each ship’s initiative rating can also change during the turn, affecting ship ordering instantly.
Involved stats are:
Involved events are:
Example 1: Ship Destruction.
Destroying enemy ship A may result in:
For the same event in classic (or with ICS off) only the mobility state is changed. The rest of stats do not update until the end of the turn and ordnance does not change for the rest of the battle.
Example 2: Ship speed update.
Let’s assume that a ship with speed 10 and 8 unused move points has just been fully stopped with Tractor Beam:
If the Tractor Beam is removed on the next turn:
Note: Setting a Tractor weapon slot to yellow or red no longer stops the beam in 1.50, which allows firing at another target with other weapons without disabling the beam from the tractored target. Classic behavior is a problem especially in ICS because the tractored target immediately regains stats when the beam is disabled.
Below two tables summarize the differences between 1.31/1.40, 1.50 standard and 1.50 improved with ICS. The columns are:
The tables show that 1.50 standard makes column Boardable consistent with “Immobile” label, and column Stashed speed consistent with Calc speed. 150i ICS also makes Move points consistent with both speed columns.
Table 1. The effects of firing with Tractor / BHG at a ship with moves left.
1.31/1.40 | Move points | Stashed speed | “Immobile” label | Calc speed | Boardable |
Tractor | > 0 | 0 | yes | 0 | yes |
BHG | > 0 | > 0 | no | 0 | yes |
1.50 standard | Move points | Stashed speed | “Immobile” label | Calc speed | Boardable |
Tractor | > 0 | 0 | yes | 0 | yes |
BHG | > 0 | 0 | yes | 0 | yes |
150i ICS | Move points | Stashed speed | “Immobile” label | Calc speed | Boardable |
Tractor | 0 | 0 | yes | 0 | yes |
BHG | 0 | 0 | yes | 0 | yes |
Table 2. The effects of releasing ship from Tractor / BHG on the next turn of firing.
1.31/1.40 | Move points | Stashed speed | “Immobile” label | Calc speed | Boardable |
Tractor | 0 | 0 | yes | > 0 | no |
BHG | 0 | 0 | yes | > 0 | no |
1.50 standard | Move points | Stashed speed | “Immobile” label | Calc speed | Boardable |
Tractor | 0 | > 0 | no | > 0 | no |
BHG | 0 | > 0 | no | > 0 | no |
150i ICS | Move points | Stashed speed | “Immobile” label | Calc speed | Boardable |
Tractor | > 0 | > 0 | no | > 0 | no |
BHG | > 0 | > 0 | no | > 0 | no |
Another type of mod entirely, this experimental mod is designed for 2-player tactical combat. The map has 4 systems: Orion, 2 home systems, and a neutral system. Each player builds 30 command points worth of ships. Both players send their fleet to the neutral system and duke it out. No retreating! The loser can now make designs to counter his opponents ships and rebuild his fleet, while the winner adds new ships (can be new designs) to his surviving ships until he again has a fleet of 30 command points.
New Game settings
Difficulty Level: Any
Galaxy Size: Small
Galaxy Age: Any
Players: 2 (Any other # will crash the game on mapgen!)
Tech Level: Pre-warp, Average, Post-warp (Advanced will crash the game!)
Tactical Combat: On
Random Events: On/Off (Events are delayed by 127 turns)
Antarans Attack: On/Off (Antarans are delayed by 127 turns)
Command usage per ship class
Frigate 1
Destroyer 2
Cruiser 6
Battleship 10
Titan 15
Doom Star 30
The config is not described here, except for three parameters of note:
multibuild = 1;
Enables multiple ships to be built each turn. New (beta) parameter for the Melee mod. Known bug: Colony on Trade Goods gets both BC and production points each turn and therefore not suitable for mods that have regular economy (which is most mods).
confirm_battle_message_timeout = 90;
Sets the timeout for the disappearance of the confirmation messages “X attacks Y at Z”, “outpost destroyed” and “colony captured by mind control” in Multiplayer. The timeout is in ticks and set to 90 for Melee. Default is 32.767 which is approximately 30 minutes.
auto_close_board_result_popup = 1; *
If set to 1, the pop-up of boarding results for raid and capture will close automatically, using the same delay as in AUTO combat. Useful for multiplayer games, because with this setting enabled the defender does not get an action when it isn’t his turn.
This patch uses configuration files to customize the game and to support mods. They are plain text files and can be viewed and edited with Notepad or any other plain text editor. Config is modular, each config file can "include'' other config files. This helps keep config files short while allowing easy switching between mods. By default the game loads ORION2.CFG on startup, which may look like this:
include 150\150i.CFG;
# include 150\ICE-X.CFG;
In this example the mod 150i is enabled and ICE-X is disabled (commented out by # sign) and. If you comment out 150i and uncomment ICE-X, the game will start with ICE-X enabled.
A quick way to understand config syntax is to look inside the configs that are shipped with this patch. For a more formal description about config machinery continue reading.
By default the game loads ORION2.CFG from the game folder. It will complain and terminate if this file does not exist or is malformed. Although most users will never need to use anything but this default file, there is a way to provide another file or even several files. This is done by using /c switch:
ORION150.EXE /c=A.CFG
If you did specify at least one /c switch then configs provided this way will be read instead of ORION2.CFG. In the example above config will be loaded from A.CFG. You can specify /c several times, in this case files will be loaded sequentially. You may specify paths, but remember that all file and directory names must be in DOS 8.3 format.
If all config files have been loaded successfully the game will extract all current settings to EXTRACT.CFG. This file is a full config and can be loaded (for example you can rename it to ORION2.CFG and restart the game). Extraction is mostly intended as an aid for modding and development, but you can also use it to review your current settings. For creating a new mod EXTRACT.CFG is a good starting point: make a copy of it in the 150\mods\ folder, rename it to a new mod name and adjust parameters.
You can change extracted file’s name by specifying /extract command line switch:
ORION150.EXE /extract=X.CFG
You can reload config without restarting the game. This is done by pressing ALT-RE in the main screen, colony build screen or in combat, after which success or failure is reported via a pop-up. This is very useful for testing but can be used to cheat so it won’t work in multiplayer games. Additionally, ALT-RI reloads only interface options and is allowed in multiplayer games.
You can extract current settings anytime in the same mentioned screens. Press ALT-EEE and the game will write settings to EXTRACT.CFG (or whatever was specified in /extract=). This again is mostly for testing and modding, but you can also use it to check server’s game settings if you are a client in network multiplayer.
In network multiplayer the host’s config is broadcast and applied by clients so that all sides have the same game settings. This doesn’t change config files on a client’s disk, only the memory state for the duration of the game. Only non-interface options are broadcast, so if the host has renamed some weapon, the change will be visible only to the host. The same goes for parameters like scroll_interval, clear_button, etc.
The syntax should be fairly obvious from reading ORION2.CFG or EXTRACT.CFG, but for those interested here is the summary:
Include
Command include allows to spread configuration among several files. Its primary function is to allow easy enabling and disabling of mods, but also can be useful if you want to separate several aspects of a mod. For example game rules and map generation rules are generally independent, so you can write:
include \150\MyMod.cfg;
include \150\harshmap.cfg;
This way you will be using MyMod.cfg game rules with map generation controlled by harshmap.cfg.
Relative Include
By default, all file paths in config are relative to the game directory, but paths starting from ..\ are interpreted relative to the CURRENT FILE, e.g. if you have file:
150\mods\my.cfg
Then inside it, two following includes are equivalent:
include \150\mods\cfg\extra.cfg;
include ..\cfg\extra.cfg;
Variable Include
File path in include is actually a template that supports variables LANG, LANG_ID and LANGUAGE, e.g. the following command:
include \150\MyMod\$LANGUAGE$\mymod.cfg;
will include file 150\MyMod\English\mymod.cfg if your installation has English set as a language. This allows the creation of multilingual mods. Variables and their values are:
Installation Language | $LANGUAGE$ | $LANG$ | $LANG_ID$ |
English | English | en | 0 |
German | German | de | 1 |
French | French | fr | 2 |
Spanish | Spanish | es | 3 |
Italian | Italian | it | 4 |
Installation language may be changed by putting a number from LANG_ID column to language.ini file in the game directory and restarting the game.
Optional Include
Normally include requires a file to exist. The game will report an error if the file being included is missing. This can be prevented by putting ? before the file name:
include ?\150\maybe.cfg;
This prevents the config loader from aborting if 150\maybe.cfg does not exist.
Stop
You can skip the rest of the current file using stop command:
stop;
It has no arguments and is intended for testing. Note that config parsing will continue after include if the current file that contains stop was included. For example if file’s A 10th line is include B; and file’s B 20th line is stop; then lines beyond 20 in B are skipped and parsing continues from line 11 of A.
The General form of setting a parameter is:
<parameter> = <value>;
Here parameter is one of fixed parameter names like speed_fast_bonus, android_morale or mod_name:
speed_fast_bonus = 4;
android_morale = workers_only;
mod_name = “My mod”;
Here all 3 parameters have different types. The first is a number, the second is a string from a fixed set and the third is an arbitrary string.
Numeric Value
Numeric parameters accept numbers in a certain range. Each parameter has its own range, for example speed_fast_bonus can be 0 to 255, while fighters_use_pd can be only 0 or 1 (this is called boolean; for such parameters 0 means disabled or off and 1 means enabled or on). Sometimes you need to write parameter in binary (a bit mask), this can be done by prepending a value with 0:
weapon plasma_cannon available_mods = 010010;
Here 010010 is a binary form of the number 18. All numbers starting with 0x are parsed as hexadecimal, for example 0x1a or 0x1A equals to 26. Any other number starting from 0 is interpreted as binary, so writing 0123 will result in a parse error (2 and 3 are not binary digits).
Ratio Value
Ratio value represents a rational number. This is needed when ratio cannot be accurately expressed as percentage and rounding is undesirable for some reason. It consists of two 16 bit integers separated with / symbol:
govt_bonus feudal_reduction = 1/3;
Note that no space is allowed between / and numeric components, but you can optionally drop /<num> part if you want an integer value, i.e. specifying 2 is legal and is the same as specifying 2/1.
String From a Fixed Set
Some parameters accept a string from a fixed set. For example android_morale accepts one of 8 strings:
You cannot write “all_androids” for example. The list of options for each parameter can be found in the corresponding entry in PARAMETERS.CFG.
Arbitrary String Value
Some interface parameters like mod_name accept arbitrary strings:
mod_name = MyMod;
If you want spaces or special symbols inside the string you’ll need to use double quotes:
mod_name = "MyMod version 1.0";
Inside the quotes all special characters but " and ^ are interpreted as part of the string. For example a # symbol inside a quoted string will not start a comment. Symbol ^ is an escape character and allows the use of symbols " and ^ in strings.
Some parameters are tables. You can set a single value or the whole table in one shot. To set a single value in a table:
<table> <row> <column> = <value>;
E.g. to set damage bonus for point defense mount when no high energy focus is present:
mount_dmg nohef pd = 50;
To set the whole table:
<table> = <value1> <value2> ... <valueN>;
E.g.:
mount_dmg = 50 100 150 75 150 225;
The latter form is called bulk notation and requires you to know the order of rows and columns. Consult PARAMETERS.CFG comments for specific table, columns and rows are listed in the correct order there.
You do not have to always specify the whole table, you can specify a part of it:
mount_dmg hef pd = 75 150 225;
In this example you can also drop PD if you know it’s a first column:
mount_dmg hef = 75 150 225;
In tables you usually want to specify all values for completeness but if you want to leave some intermediate values unchanged you may skip items by using - (dash) symbol:
mount_dmg nohef pd = 50 - - 75;
In this example values 50 and 75 are assigned to PD mount without and with HEF respectively. Two dashes skip values for normal and Hv mods without HEF.
More bulk notation examples can be found in the section Modding Notes.
For a number of LBX files you can specify an alternative file to be loaded instead. This is useful to provide custom texts or graphics. Since patch 1.50.5 this feature is also used for multilingual support.
If you specify non-existing files the game will refuse to start or reload config. The check is simplistic and cannot detect malformed files, using those will result in sudden crashes.
The following LBXs are supported:
For example:
info.lbx = \150\MyInfo.LBX;
Here we tell the game to load MyInfo.LBX from 150 subdirectory instead of INFO.LBX.
To reset to a default LBX set the corresponding parameter to 0 (a null string):
info.lbx = 0;
You can change these parameters on the fly because most LBXs are loaded on demand whenever the game needs them.
Multilingual mods require different LBXs depending on current language. To support such mods all lbx parameters are processed as templates similar to include command’s templates. Actual filename depends on the current language, e.g. this:
help.lbx = \150\HELP_$LANG$.LBX;
will expand to \150\HELP_EN.LBX if your current language is English. Refer to include command description for the complete list of variables and their values. Note, that unlike include templates, optional files via ? are not supported.
This patch comes with an extensive configuration. The main config file is ORION2.CFG, and it refers to other config files by means of the “include” command. Default configuration is also supplied in machine-readable form in config.json.
ORION2.CFG specifies the location of build lists, scripts, updated 1.50 LBX’s as well as other CFG’s to be loaded:
build.cfg = \150\build\BUILD$ID$.CFG;
Location of all eleven build lists.
main.lua = \150\scripts\main\MAIN$ID$.LUA;
Location of main scripts.
newgame.lbx = \150\lbx\NEWGAME.LBX; – Required file
Contains updated graphics for the New Game screen. The 1.50 exe will crash without it. The file has been made optional and not a replacement of the original lbx to preserve compatibility with the classic exe’s: This updated lbx file cannot be used with version 1.40, 1.31 or any prior versions.
racesel.lbx = \150\lbx\RACESEL.LBX;
Contains the redrawn Darloks button, now spelled ‘Darloks’ instead of ‘Darlocks’.
colsysdi.lbx = \150\lbx\COLSYSDI.LBX;
Fixes colors for tiny toxic, radiated and barren planets in the Colony screen.
techname.lbx = \150\lbx\TECHNAME.LBX;
This file contains a couple of spelling corrections.
eventmse.lbx = \150\lbx\$LANG$\EVENTMSE.LBX; – Required file
contains GNN news fixes (available in all languages).
estrings.lbx = \150\lbx\$LANG$\ESTRINGS.LBX; – Required file
Supports the updated Colony Info Summary window in the Colonies screen (available in all languages). The English language file also contains updated Leader Hire Pop-up texts and several spelling corrections.
help.lbx = \150\lbx\$LANG$\HELP.LBX;
English only: Contains corrected and substantially improved descriptions.
hestrngs.lbx = \150\lbx\$LANG$\HESTRNGS.LBX;
English only: Contains several text corrections.
maintext.lbx = \150\lbx\$LANG$\MAINTEXT.LBX;
English only: Contains a couple text corrections.
rstring0.lbx = \150\lbx\$LANG$\RSTRING0.LBX;
English only: Deletes ‘Used’ that appeared after Robotic Factory in the Industry Summary.
skildesc.lbx = \150\language\$LANG$\SKILDESC.LBX;
English only: Corrects texts of Leader Skills.
techdesc.lbx = \150\language\$LANG$\TECHDESC.LBX;
English only: Corrects weapons and specials texts as seen in the Ship Design Dock.
scan_mods = \150\mods;
Where to search for mods.
include ?\150\ENABLE.CFG;
Contains the mods that are enabled by MOO2 Launcher. Set your desired mods in ENABLE.CFG manually when not using MOO2 Launcher.
enable USER;
Causes USER.CFG to be included after all other mods. See Custom Interface Settings.
Config file 150/USER.CFG contains all user specific interface settings. This file can be opened from the Edit menu in MOO2 Launcher. Settings are disabled (#) by default:
disable_vsync = 0;
Screen switches can be made even faster by setting disable_vsync = 1. With this setting screen switches happen without delay, greatly speeding up the interface. It might produce some funky colors during screen switching from time to time.
screen_fade_speed = 25;
Sets fade-ins and fade-outs when switching screens. The 1.50 default setting is 25, while classic was 10. Values up to 100 can be set.
scroll_interval = 2;
Slows down edge based scrolling in tactical combat. The scroll interval value sets the number of ticks between scrolling events. One tick is approximately 1/18 of a second. We have set the default at 2 ticks. 1-3 ticks should be optimal for most people. Set it to 0 to experience the classic scrolling behavior, which is unreasonably fast on modern computers.
wormhole_color = 4;
This parameter specifies the index of the color used to draw wormholes. Possible values are 0-255. Classic value of 4 is a dark grey (default). Use 10 or 20 for lighter greys. Color map:
no_graph_smoothing = 1;
if set to 1, history graphs will not be smoothened.
no_initial_tech_prompt = 0;
If set to 1, the Select Research prompt on turn 1 is skipped.
no_outpost_prompt = 0;
If set to 1, the outpost creation prompt upon arrival at a system is skipped.
warn_blockers = 0;
This config parameter allows skipping the “repeat before a product” dialog in the Colony Build screen. Depending on this and the ‘Auto Delete Trade Goods/Housing’ setting, repetitive items (housing, trade goods or repeat builds) in the queue may be deleted, kept, or a dialog will appear asking what to do upon exiting the Colony Build screen.
warn_blockers = 1 | warn_blockers = 0 | |
Auto Delete = off | ask | keep |
Auto Delete = on | delete | delete |
Classic default behavior was to ask and 1.50 default is to keep. Additionally the ‘Auto Delete Trade Goods/Housing’ setting now functions properly when using the , and . keys to cycle colonies in the Colony Build screen.
design_button_shield = update;
This parameter controls if the shield of a ship design is updated to best available or stays as is upon clicking the Design button (in Colony Build screen). The default is set to ‘update’, which is classic behavior. Alternatively it can be set to ‘intact’, which disables this auto update and preserves current designs.
design_button_computer = update;
Same as above, but for computer.
clear_button_shield = intact;
This controls how the CLEAR button in the Ship Design screen (Design Dock) behaves regarding shield. The three options are:
intact - Don't change shield currently set (default, classic).
update - Update to the best available.
clear - Set to none.
clear_button_computer = intact;
Same as above, but for computer. Classic is ‘update’, which is inconsistent with shield behavior: It doesn’t remove the shield but puts the best available computer to the design. In 1.50 the default is ‘intact’, the same as for the shield.
missile_ammo_x2 = 1;
Default ammo when selecting a missile in Ship Design is x2. Classic is x5.
confirm_battle_message_timeout = 180;
Timeout for the following combat confirmation messages in Multiplayer: 'X attacks Y at Z', 'outpost destroyed' and 'colony captured by mind control'. The value 180 is approximately 10 seconds.
auto_close_board_result_popup = 1;
If 1, board results pop-up times out like AUTO resolve.
no_center_on_next_ship = 0;
If 1, the Combat screen is not centered on the next ship, in the same way it is in combat with ship initiative off.
finds_presented_by_scientist = 0;
If 1, a scientist instead of a trooper presents tech finds from artifacts planets.
rebel_display = 0;
Rebels are only present in conquered colonies. With this parameter a rebel picture along with statistics can be shown in a colony’s military pop-up anyway.
info_lbx_menu = classic; info.lbx = 0;
Setting info_lbx_menu to ‘ice’ instead of ‘classic’ and loading the corresponding INFO.LBX with info.lbx = \150\lbx\INFO.LBX causes the INFO menu to start with the Turn Summary instead of the History Graph button:
# format version = "Version: $VERSION$" 1 r 587 408;
If enabled, sets the position of the version number on the Title screen for all mods.
# format mod_name = "Mod: $MOD$" 1 r 587 422;
If enabled, sets font size, alignment and position of the config name on the Title screen for all mods.
# format prod = "$TURNS$ turns" 0 l 531 103;
If enabled, sets placement of turn counter on the Colony screen for all mods.
# format prod2 = "$TOTAL_PROD$ / $PRODUCT_COST$" 0 r 625 103;
If enabled, sets placement of stored production and item total production cost on the Colony screen for all mods.
prod_format housing = -2 g0;
Prod format allows to reorder building list items in colony production screen and to assign color groups to products. The first parameter is called order and defines order in which products appear in the list. Items with smaller order appear first. Items with same order are sorted alphabetically. E.g. by default order is -2 for housing, -1 for trade goods, and 0 for all buildings. This places housing first, trade goods second and then all buildings sorted alphabetically. The second parameter sets color group for item, see font_color_group below.
font_color_group g0 normal = 0xCC 0xCB 0xC9;
font_color_group g0 queued = 0x99 0x98 0x96;
There are 10 groups in total, g0 through g9. Each group has a color for products not in the build queue (normal) and for products added to the build queue (queued). Each color has three components: base, dim and dark. The two latter are needed for anti aliasing. For best effect they should be darker shades of the same color as base. Each color is a palette index from 0 to 255. By default all groups are set to the classic orange font. The palette is:
This file 150/ENABLE.CFG lists the enabled mods. It is generated automatically by MOO2 Launcher every time it starts the game, so all manual edits are lost. Default is:
enable 150; (core mod)
Edit the file manually if you are not using MOO2 Launcher and want to play another mod. For example to play ICE-M, comment out (or delete) the existing lines and write:
enable ICE-M; (core mod)
enable MAP2_ICE; (map)
Choices of mods included with the standard pack are:
Core Mod Mod Name
enable 120c; Version 1.2 mod
enable 150; 1.50 standard
enable 150i; 1.50 improved
enable 150m; 1.50 multiplayer
enable ICE; ICE
enable ICE-X; ICE-X
enable Melee; Melee
enable VDC-GM3NR; VDC ...-GM3-NR
Map Map Name
enable MAP1_150i; 1.50 improved
enable MAP1_150m; 1.50 multiplayer
enable MAP2_ICE; ICE
enable MAP2_ICE_MP; ICE MP (multiplayer)
enable MAP5_GM3; Goodmap3
enable MAP6_OR2; Orange
enable MAP7_MELEE; Melee (2 players)
Mirror Mirror Name
enable MIRROR; Full Mirror
enable MIRROR_EXHW; Full Mirror except home systems
enable MIRROR_HW; Mirror home systems only
Additional Options
enable RANDOMTECH; Randomize Tech
enable TREELESS; Hidden Tech Tree
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 | Meaning |
/skipintro | - | Skips the intro movie. |
/date | - | Displays the version date and exits the game. |
Game rule switches | ||
Command line form | Config form | Meaning |
- (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 | /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 | /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 | /droids = 1; | All players start out with the ability to build androids (all 3 types). |
The switch /picks was removed because of its range limitation of 10-14 picks. The number of picks can now be set via the parameter number_of_race_picks.
Map generation switches | ||
Command line form | Config form | Meaning |
/seed=0 (v1.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. |
/nobh | mapgen /nobh = 1; | No black holes on map. |
/nowh | mapgen /nowh = 1; | No wormholes on map. |
/nonebula | mapgen /nonebula = 1; | No nebulas on map. |
/noorion | mapgen /noorion = 1; | Orion and the Guardian not on map. |
/nosplint | 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. |
/planets=3 | mapgen /planets = 3; | Sets the minimum number of planets in all home systems. Valid values are 1-5, the default is 3. |
/minstart | 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. |
/hugestart | 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. |
/richstart | 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). |
/goodstart | 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. |
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:
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 ⅔ 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 +½ 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.
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 = ¼ 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 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:
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:
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.
Fighters
Several aspects of fighters’ behavior were made configurable.
Note that fighters’ PD damage is rounded up, in the same way as for ships.
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:
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.
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:
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.
Defensive Fire is a special ability of regular mount beams, intended to give an inactive player some defensive means during the active player’s move. Every ship equipped with such beam is performing checks every time an enemy ship moves using a pre-calculated value, the “Defensive Fire Range”, that is the closest distance some enemy ship can move to that ship. The closer the moving ship position to that value - the greater chance the Defensive Fire will occur, and if that ship will reach DFR - the chance becomes 100% (as its “most optimal time” to use the guns, no other ship can move closer from now). The following table summarizes chances for defensive fire to occur:
Sadly in combat with ship initiative enabled the whole mechanic was plagued with bugs, which rendered it inconsistent and incomprehensible:
All of the above problems have been fixed in 1.50. However, because the whole mechanics was so severely bugged for all the years, and it was impossible to improve on it while keeping the “original feel” in combat, we have turned DF off by default for games with ship initiative on and added the parameter defensive_fire, that controls whether DF is enabled or not in INI games. With INI off, DF is always on as it was in classic.
In addition, the parameter defensive_fire_max_range can limit the range at which DF is operative, and alternate_defensive_fire can be used to set a more straightforward static chance dependency on a range between 2 ships. Note that rolls happen per travel square, but probability is set per 3 squares, so the chance of triggering fire is different between entering the range and passing through it. The chances per range can be set with alternate_defensive_fire_range.
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 ⅓ 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
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 considered 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 ⅓ instead of ½ 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 ½ of all incoming missiles / fighters will be destroyed. The default setting of 50% destroy chance can be configured via the lightning_field_ratio parameter.
Megafluxers
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
All aspects of Shields can be fine tuned in Config:
Spying Related Parameters
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.
spies_can_frame_anyone
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.
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. A few tips:
Notes on assigning technologies to different techfields:
tech phase_shifter = 125 -1 38 0;
Notes on techfield modding:
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 = 37;
tech_field high_energy_distribution prev_field_id = 13;
tech_field magneto_gravitics next_field_id = 46;
tech_field matter_energy_conversion prev_field_id = 45 27 1150 8;
tech_field electromagnetic_refraction prev_field_id = 46;
tech_field_name matter_energy_conversion = "testername";
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:
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.
Picks
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 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.
federation_no_mixed_races_penalty
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.
spy_govt_bonus
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.
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 +¾ 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 1 0 Pop +0 2 0 F+0 3 X Prod 6 X SD
0 2 Dict 1 1 Pop -50 2 1 F-½ 4 X Res 7 X SA
0 4 Demo 1 2 Pop +50 2 2 F+1 5 X Tax 8 X GC
0 6 Uni 1 3 Pop +100 2 3 F+2 9 X Spy
10 1 lowg_world 17 1 cybernetic 25 1 telepathic
11 1 highg_world 18 1 lithovore 26 1 lucky
12 1 aquatic 19 1 repulsive 27 1 omniscient
13 1 subterranean 20 1 charismatic 28 1 stealthy_ships
14 1 large_hw 21 1 uncreative 29 1 trans-dimensional
15 -1 hw_richness 22 1 creative 30 1 warlord
15 1 hw_richness 23 1 tolerant
16 1 arti_world 24 1 fantastic_traders
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.
All non-player ships can be modded in some way;
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 85 -1 0;
destroyer = 10 0 -1 5 -1 -1 -1 -1 45 30 -1 10;
cruiser = 15 0 -1 0 -1 -1 -1 10 30 30 -1 15;
battleship = 15 0 -1 5 -1 -1 -1 15 25 25 -1 15;
titan = 15 0 -1 10 -1 -1 -1 15 25 20 -1 15;
doomstar = 15 0 -1 15 -1 -1 -1 15 20 20 -1 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:
ai_ship_design_bio_weapons_theme
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.
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.
offensive_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.
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 anomaly_min = 4;
event_duration beast_min = 4;
event_duration flux_min = 4;
event_duration anomaly_chance = 20;
event_duration beast_chance = 20;
event_duration flux_chance = 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
Experience
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
Since patch 1.50.7 there is limited scripting support. The language used for scripts is a modified version of Lua 5.3. This is an experimental feature, it may be a bit rough to use. For example, currently there is no way to interrupt a script, so if you forgot to break from an endless loop you’ll have to crash and restart the game.
Each script is run in a certain context. This determines the set of available API functions as well as details of their workings.
Context | Description |
player | Scripts run in Main screen by a player (unless Lua cheat is enabled). Get functions return only objects observable by the current player. Only owned objects are modifiable, e.g. can scrap or rename ships. |
universal | Scripts specified by newgame_postprocessor_script parameter that are run right after a new game is generated. All game objects are available and modifiable. |
Scripts run in Main screen when Lua cheat is enabled. Used for testing. | |
pregame | Scripts specified by pregame_script parameter that are run before race selection. Only config and game settings are available, no galaxy or players exist yet. Can be used to randomize tech tree or race picks. |
combat | Scripts run in combat by a player. Combat ships and the rest of the game objects observable by a player are available. |
A player can run a script in the Main screen by pressing 0, ..., 9 to run MAIN0.LUA, …, MAIN9.LUA. Those scripts are run in player context unless Lua cheat is enabled.
The game will automatically run a script from a file given by config parameters newgame_postprocessor_script and pregame_script. Both parameters allow specifying multiple files separated by a semicolon. They are also accumulative, which means that specifying them multiple times results in joining values. E.g this:
newgame_postprocessor_script = CORE.LUA;
newgame_postprocessor_script = MAP.LUA;
is equivalent to:
newgame_postprocessor_script = "CORE.LUA;MAP.LUA";
This is needed so that different mods don't overwrite each other's scripts.
Utility Functions
Several Lua library functions are available and work as described in Lua documentation. Aside from that, there are a few custom functions for general purposes.
Name | Contexts | Description |
tostring | any | Returns stringified version of its args, concatenated if args are many. Used internally by print and msgbox. |
any | Outputs a line to ORION2.LOG. | |
msgbox | any | Brings up a message box, useful for debugging. |
get_conf | any | Returns the currently active configuration settings (see Modding with Config). Passing a string parameter will only return the corresponding subsection of the config, which requires a lot less memory. |
get_game | any | Returns general information about the game, such as number of players and other starting settings. |
get_coordinate_distance_between_stars | any | Accepts two star ids and returns the euclidean distance between them. A distance of 30 equals 1 parsec. |
get_memory_used | any | Returns the number of bytes currently allocated as memory for Lua, useful to find peaks. |
get_milliseconds | any | Returns currently elapsed milliseconds from DOS-perspective. Subtract from an earlier call to measure runtime for a given block of Lua code. |
Memory management
Memory available for running Lua scripts is limited. Exceeding the limit will at best fail the script with an error popping up as a message box, at worst it can crash your multiplayer game.
Unused memory is generally not cleaned up during script-execution by default, this so-called garbage collection can be triggered by calling the following function:
collectgarbage()
Here are some best practices on how to avoid memory issues:
Manipulating Players
Player table - is a Lua table with player info indexed by player id. Example:
{ [0] = {name = “Human”, … }, [1] = {name = “Alkari”, … } … }
Tech table - is a Lua table with state of each tech for a player indexed by tech id. States are:
0 - unacquirable (other Advanced Governments),
1 - acquirable,
3 - researched.
Tech Field table - is a Lua table with the state of each tech field of a player indexed by the name of the field. States are:
0 - unavailable for research,
1 - available later in the tech tree,
2 - researchable right now,
3 - researched.
Name | Contexts | Description |
get_players | universal, player | In universal context: Returns a player table with all players, including traits, spies and population in transit. In player context: Returns only those in contact with the current players. |
get_current_player_id | player | Returns the id of the player calling the script. |
get_player_techs | universal, player | Accepts player id and returns a tech table. In player context will return nil if you have no contact with that player or /noreport config option is enabled. |
get_player_fields | universal, player | Accepts player id and returns a tech field table. In player context will return nil if you have no contact with that player or /noreport config option is enabled. |
get_player_hyper_advanced_progress | universal, player | Accepts player id and returns amount of completed Hyper-advanced stages for every tech branch. |
set_player_techs | universal | Accepts tech table, sets player’s techs. |
set_player_fields | universal | Accepts tech field table, sets player’s tech fields. |
Manipulating Stars
Star table - is a Lua table with star info indexed by star id. Example:
{ [0] = {name = “Orion”, … }, [1] = {name = “Sol”, … } … }
Star id array - is a Lua table in which values are star ids and keys are numbers 0..n-1.
Name | Contexts | Description |
get_stars | universal, player | Returns a star table for all stars in the galaxy except Antares. |
set_stars | universal | Accepts star table, sets star attributes. |
del_stars | universal | Accepts star id array, removes stars. |
add_stars | universal | Accepts a number, adds that many empty stars. Returns star id array of created stars. |
randomize_star | universal | Accepts a star id and a monster chance. Star keeps its color, but is otherwise randomly recreated using galaxy generation parameters, including planets and system specials. Monster chance is an integer percentage, set -1 to use the galaxy generation default. |
upgrade_star_guarded_by_monster | universal | Accepts id of a star that has no special and a monster name e.g. Dragon. Adds such monster to the star and causes corresponding planet upgrades and specials using galaxy generation rules. |
Manipulating Planets
Planet table - is a Lua table with planet info indexed by planet id. Example:
{ [0] = {star = 12, orbit = 0, … }, [1] = {star = 12, orbit = 4, … } … }
Planet id array - is a Lua table in which values are planet ids and keys are numbers 0..n-1.
Name | Contexts | Description |
get_planets | universal, player | Returns a planet table for all planets. In player context only known planets are shown. |
set_planets | universal | Accepts planet table, sets planets attributes. |
del_planets | universal | Accepts planet id array, removes planets. |
add_planets | universal | Accepts a planet table, creates these planets and puts them in orbit of the stars as defined in the given table. |
Manipulating Colonies
Colony table - is a Lua table with colony info indexed by colony id. Example:
{ [4] = {planet = 63, … }, [12] = {planet = 75, … } … }
Population table - is a Lua table in which an array of individual population units of a colony is returned, as well as growth gains and per mille units for every race. Example:
{ pop = { [0] = {job = 1, … }, [1] = {job = 1, … } … }, race2growth = { [0] = 73, [1] = 0, …}, race2extra = { [0] = 146, [1] = 0, … } }
Name | Contexts | Description |
get_colonies | universal, player | Returns a colony table for all colonies. In player context only owned colonies are shown. |
get_pop_info_of_colony | universal, player | Accepts id of a colony, returns a population table. In player context, only an id of an owned colony is accepted. |
get_buildings_of_colony | universal, player | Accepts id of a colony, returns table with all building names as keys and status of existence as values. In player context, only an id of an owned colony is accepted. |
get_build_queue_of_colony | universal, player | Accepts id of a colony, returns the build queue of that colony as an array with the value “nothing” representing an empty queue slot. In player context, only an id of an owned colony is accepted. |
Manipulating Ships
Ship table - is a Lua table with ship info indexed by ship id. Example:
{ [0] = {design = { name = “Scout”, ...}, x= 56, … }, [1] = { … } … }
Name | Contexts | Description |
get_ships | universal, player | Returns a ship table for all active ships (not including those currently being built or refitted). In player context only ships you can see or own are returned. |
get_queued_ships | universal, player | Returns a ship table for all ships that are being built or refitted. In player context only your own ships are returned. |
del_ships | universal, player | Accepts ship id array, deletes these ships. Does not accept ships that are currently being built or refitted. In player context only ships you own may be deleted. |
Manipulating Leaders
Leader table - is a Lua table with leader info indexed by leader id. Example:
{ [0] = {name = “Ruola”, title = “Weapons Officer”, xp = 0, … }, [1] = { … } … }
Name | Contexts | Description |
get_leaders | universal, player | Returns a leader table for all 67 colony leaders and ship officers. In player context only leaders that are hired or waiting to be hired are shown. |
Retrieving combat-specific information
These functions are only available during tactical ship combat. To check if your script is executed during combat, you can use the following condition:
if type(get_active_combat_ship) == “function” then
Name | Contexts | Description |
get_combat_info | universal, player | Returns general information about the current battle, such as turn count and involved players. |
get_active_combat_ship | universal, player | Returns detailed information about the ship that is currently acting, including information about weapons, specials, systems and any damage they sustained. |
get_combat_ships | universal | Returns combat-relevant information about all ships involved in the current battle, including satellites and planets. overmap_ship is a reference to the given ship as it would be return by get_ships. combat_ship_id is usually different from the id of the overmap ship, it is used to retrieve further information. |
get_combat_ship_weapons | universal | Returns information about all weapon slots of the given ship. Use the combat_ship_id of the given ship as a parameter, not the overmap ship id. |
get_combat_ship_specials | universal | Returns information about all specials of the given ship. Use the combat_ship_id of the given ship as a parameter, not the overmap ship id. |
Experimental "raw" API
Patch 1.50.18 introduces a number of new functions which use an experimental binding library and will likely change, so no in-depth description is provided. See MIRROR.LUA and RANDTECH.LUA for usage examples. Currently all such functions work only in universal and pregame contexts.
Accessed Objects | Get | Set | Del | Add |
Overmap ships | rget_ships | rset_ships | rdel_ships | radd_ships |
Leaders | rget_leaders | rset_leaders | ||
Nebulas | rget_nebulas | rset_nebulas | rdel_nebulas | radd_nebulas |
Players | rget_players | rset_players | ||
Tech tree (tech config table) | rget_techs | rset_techs | ||
Tech tree (tech_field config table) | rget_fields | rset_fields | ||
Tech tree (starting_techfield config table) | rget_starting_ fields | rset_starting_ fields | ||
Race picks (race_pick config table) | rget_picks | rset_picks |
POPRACE Population of the considered race.
POPAGG Aggregated Population of the planet.
(POPRACE, annexed pop, natives and droids)
POPMAX Maximum population of the planet.
PROD Total industry produced on the colony
FACTOR1 2000
FACTOR2 40
g general bonus (default 0)
r race bonus (-50% growth = -50, +50% = 50, +100% = 100)
i AI bonus (0-4 based on difficulty level)
t tech bonus (microbiotics = 25, universal antidote = 50)
l leader bonus (only the best medicine bonus applies)
e event bonus (boom = +100, plague = -200*)
h housing (formula)
Population growth is calculated separately for each race on a planet. In multiracial colonies, the population value displayed in the Colony screen is the sum of all growth rates added to the number of functioning population units and therefore becomes less directly indicative of the time to gain a next full population unit.
The formula for the basic growth of a race (a) is:
a = trunc[(FACTOR1*POPRACE*(POPMAX-POPAGG)/POPMAX)^0.5]
The default value of FACTOR1 can be modified with growth_formula_factor.
(a) is truncated (rounded down) before it is multiplied with the sum of seven bonuses (b):
b = (100+g+r+i+t+l+e+h)/100
If all seven bonuses are zero, then (b) is 1.
The general bonus (g) is applied to all players in the game and can be set with growth_rate_bonus general_modifier which is 0 by default.
The growth bonuses from the technologies (t) microbiotics and universal antidote can be set individually with growth_rate_bonus. By default the bonuses from these two techs do not stack. This can be changed with microbiotics_and_antidote_cumulative.
The formula for housing (h) is:
h = FACTOR2*PROD/POPAGG
Obviously this only applies when you are housing. The default value of FACTOR2 is 40, which can be set via housing_formula_factor. In addition POPAGG can be removed from the formula with parameter housing_no_popagg.
The product a*b is again truncated after which the growth bonus of cloners is added.
* Note that since plague is part of the growth formula, there will be no loss of population due to a plague if the colony is at maxpop, since there is no growth then.
The standard bonus of cloners is +100k. The bonus is shared pro rata between all races on the planet, no matter if a race can grow or not, thus for each race:
c = 100*(POPRACE/POPAGG)
If there is only one race on the colony, then POPRACE = POPAGG and the full bonus is applied to that one race. If a race cannot grow, then its share of growth is lost.
Examples:
1. On a new colony with natives, +75k is allocated to the 3 natives and +25k to the one colonist, resulting in a loss of the +75k and a net growth of only +25k.
2. On a colony with 1 droid and 1 regular pop, Cloners’ net bonus is +50k.
3. On a colony with mixed races, Cloners’ bonus will be lower than +100k if there is a non-subterranean race that cannot grow anymore and a subterranean race that still can.
The growth bonus provided by Cloning Center can be set with cloners_growth_bonus up to a maximum bonus of 127 (default is 100).
Every Spy you train can fulfill one of two functions. (1) On a mission, your spy goes off into the colonies of a race of your choice and tries to steal technologies, attempts to destroy enemy buildings or hides awaiting new orders. Any spy's success is noticed by the target race and has an adverse effect on relations, unless you are able to frame another race for your actions. (2) As an Agent, your operative roams inside your empire, ferreting out enemy spies and eliminating them.
You can train up to 63 defensive agents and 63 spies per opponent. Though not shown on the Races screen, each spy increases the bonus for the specific slot he is assigned to: The first five spies add 2 points each, and spies 6 to 10 add 1 point each. Subsequently, each pair of spies adds 1 point to the bonus. So with spy 11 the bonus is still +15 while spy 12 brings it up to +16. The maximum bonus is +41 for 62 or 63 spies.
Total spying bonus per slot is the sum of racial, governmental, leader and technology bonuses plus the bonus from the spies assigned to it. Bonuses are:
Defense Offense
Government Feudalism 0 -
Confederation 0 -
Dictatorship 10 -
Imperium 15 -
Democracy -10 -
Federation -10 -
Unification 15 -
Galactic Unification 15 -
Race Spy -3 picks -10 -10
Spy +3 picks 10 10
Spy +6 picks 20 20
Telepathic 10 10
Technology Neural Scanner 10 10
Telepathic Training 5 5
Cyber Security Link 10 10
Stealth Suit 10 10
Psionics 10 10
Leaders Telepath 2 to 18 -
Spy Master - 2 to 18
Assets Agents 0 to 41
Spies 2 to 41
Before any spy activity happens, assassins get a chance to act. The chance to assassinate an enemy spy depends on a leader’s skill level and varies from +2% to +18% per turn.
To have any chance for stealing and sabotage, at least one spy needs to be sent to the opponent. On the other hand, defenses against enemy spies are active (and enemy spies can be killed) even with zero defending agents.
Action Thresholds
For offensive spies to be successful a threshold needs to be overcome that consists of the defender's bonus (DB) and an action threshold (T). Default action thresholds are:
stealing is successful: 80
stealing is successful and frame another race: 90
sabotage is successful: 70
sabotage is successful and frame another race: 90
Definitions
T — action threshold
DB — defender bonus
AB — attacker bonus
E = T + DB - AB — effective threshold
AR — attacker roll 1..100
DR — defender roll 1..100
Formula
Each turn both attacker and defender get a roll(100). A spying action is successful if:
AR = 100 (aka lucky roll)
or
AR - DR > E
So with a low enough effective threshold you always succeed, but with a high enough threshold you don’t always fail, because of the lucky roll.
The probability (p) of success can be formalized as follows:
E <= -100 : p = 1
-100 <= E <= -1 : p = 1 - (101+E)*(100+E)/2/10000
0 <= E <= 99 : p = (99-E)* (98-E)/2/ 9900 + 0.01
99 <= E : p = 0.01
Below graph has three lines plotted, one for each action threshold (T). On the x-axis the attacker - defender bonus (AB-DB) and on the y-axis the chance for success (p). Note that on the left side the lines do not quite reach 0 because of the lucky roll.
The invisible wars between spies are both deadly and silent. Most of the time, spies simply fail. Sometimes they are killed by enemy spies.
After the roll for stealing and sabotage happened, there is a roll for spies killing spies. Kill formula is comparable to the one for stealing and sabotage, except that the defender gets an extra +20 bonus, and the attacker gets +20 if he has chosen HIDE. (So on HIDE your spies are not active, but can kill opponents' spies and be killed by them.) At +80 a defender is killed, and at -80 an attacker, and both parties have the possibility to kill with lucky rolls, so both can lose a spy in the same turn.
The maximum number of ships a player can bring into tactical combat. Orbital platform and planet defenses of the defending player do not count towards the limit, so the defender can have 99 ships + orbital platform + planet.
If the fleet count is higher than 99, ships with the smallest size class will be barred from entering combat.
A maximum of 500 ships can be in the game at any given time.
The following count towards that limit:
Not counting towards the limit:
Ship size class does not matter, both a frigate and a doom star count as 1 ship. If all 500 ships are in players hands, the Antarans can no longer invade the galaxy!
Several things determine the chance to hit, but it boils down to three factors: Beam Attack, Beam Defense and Range Penalty.
Beam Attack Modifiers
Beam Attack (BA) is a way of rating the firing ship’s beam offense capability. It is calculated based on the type of computer on board, ship systems like battle scanner, crew experience, leaders and racial bonuses. Battlestation and Star Fortress give an additional BA bonus to all ships in the defensive fleet. Individual beam weapons get additional bonuses based on mount type (Pd +25 BA) and mods (Co +25 BA, AF -20 BA).
Beam Defense Modifiers
Beam Defense (BD) is a rating of the target ship’s dodging ability, calculated basis 5x its combat speed plus bonuses from ship systems like inertial stabilizer, crew experience, leaders and race.
Beam Defense of Missiles
Missile Beam Defense is calculated as follows:
5 * Speed + MissileBonus
Speed = BaseSpeed of Missile + 2 * (FTLlevel - 1) + FastBonus
BaseSpeed is 12 and FastBonus is 4 for all missile types.
Drive | FTLlevel | Speed | Missile | MissileBonus |
None | 0 | 10 | Nuclear | -10 |
Nuclear | 1 | 12 | Merculite | 15 |
Fusion | 2 | 14 | Pulson | 40 |
Ion | 3 | 16 | Zeon | 70 |
Anti-Matter | 4 | 18 | ||
Hyper | 5 | 20 | ||
Interphased | 6 | 22 |
Beam Defense of Fighters
Fighter Beam Defense is calculated as follows:
5 * Speed + RacialShipDefenseBonus + FighterPilotBonus + HelmsmanBonus (in 1.50 only).
Speed = BaseSpeed of Fighter + 2 * (FTLlevel - 1) + TDBonus
TransDimensionalBonus is 4 for all fighter types.
Fighter | BaseSpeed |
Interceptor | 10 |
Assault Shuttle | 6 |
Bomber | 8 |
Heavy Fighter | 8 |
Range Penalty to Accuracy
The farther away a target is, the less likely it becomes for a beam weapon to hit it. The range penalty to a beam’s accuracy comes from below table:
Range | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Penalty | 0 | 0 | 10 | 20 | 30 | 40 | 55 | 70 | 85 |
One range unit equals 3 squares. At range 0 two opponents share the same square, for example when interceptors are on top of the target ship. At range 1 opponents are adjacent to each other or have 1-2 squares between them.
For calculation purposes, Point Defense weapons get a penalty as if range is doubled and for Heavy mount weapons the actual range is halved (and rounded down):
Range | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Regular (sq) | 0 | 1-3 | 4-6 | 7-9 | 10-12 | 13-15 | 16-18 | 19-21 | 22-24 |
PD (sq) | 0 | 1-3 | 4-6 | 7-9 | 10-12 | ||||
Hv (sq) | 0-3 | 4-9 | 10-15 | 16-21 | 22-27 | 28-33 | 34-39 | 40-45 | 46-51 |
Penalty | 0 | 0 | 10 | 20 | 30 | 40 | 55 | 70 | 85 |
Classic Fusion Beam, Plasma Cannon and Mauler Device have an inherent 2x range to-hit penalty (weapon flag #1). This mod doubles the calculated penalty. So after all Hv/ Reg/ PD calculations are done and Rangemaster Unit effect is applied, the result is doubled.
Obviously for the Mauler Device which always hits, there is no effect and therefore this mod has been removed from Mauler in 1.50. In the 1.50 improved mod, the penalty has also been removed from Fusion Beam so only the Plasma Cannon keeps it.
Classic Chance to Hit Formula
Then it’s a matter of chance. A random number between 1 and 100 (inclusive) is rolled and the following formulae apply:
HIT IF: (with max dmg)
[1] random(100) roll > 95
ELSE HIT IF: (with max dmg)
[2] BA+CO-AF-BD >= 99
ELSE HIT IF: (real penalty affects dmg distribution)
[3a] BA+CO-AF-BD + random(100) roll >= hit_threshold
[3b] hit_threshold = min(40 + range_penalty* - PD_bonus; 95)
*doubled for inherent 2x range to-hit penalty mod
Thus, if the random number is greater than 95 (a 5% lucky shot, no matter the odds), or BA+CO-AF-BD is larger than 98, the beam strikes the target. Else, BA+CO-AF-BD minus the range penalty (plus possible PD bonus) must be 39 or higher to ensure a hit.
Note that Mauler Device and Energy Absorber always hit unless the target ship has a Displacement Device while Stellar Converter always hits regardless of the presence of a Displacement Device.
1.50 Alternative Chance to Hit Formula (Optional)
The chance to hit formula contains a major flaw: Range penalties, being a big deal in theory, don’t work well in reality, up to having no effect at all. Formula 3 contains a cap of 95, making range penalty above 55 for non-PD beam or 80 for PD beam of no additional effect (despite being present in the game). Moreover, formula 2 contains a deeper flaw: with good BA and low BD the range penalty is ignored altogether. Among good examples of this flaw are ‘sure-hit-no-matter-the-distance’ situations, low usability of Rangemaster Unit (especially compared with Battle Scanner), and a very low effect of the inherent 2x range to-hit penalty weapon mod.
Setting simplified_beam_formula = 1 enables a more straightforward way of chance to-hit calculations, with distance penalties consistently affecting chance:
HIT IF: (with max dmg)
[1] random(100) roll > 95
ELSE HIT IF: (with max dmg)
[2] BA+CO-AF-BD - range_penalty + PD_bonus >= 99
ELSE HIT IF: (real penalty affects dmg distribution)
[3] BA+CO-AF-BD - range_penalty + PD_bonus + random(100) roll >= 40
There are 2 pairs of types of beam weapons, affecting damage distribution:
Damage values of both types are later modified with Hv, PD, HEF and Ordnance effects.
Not Reduced by Range
If a beam hits, it does damage. For weapons of which the damage is not reduced by range, like Mass Driver, Gauss and Disrupter, no dissipation penalty applies. Note that a Laser Cannon with NR mod can still do lower than 4 damage (1-3 dmg), in cases of low accuracy. Example: The lowest damage of a NR Laser with base damage 10-40 instead of 1-4 is 10, whereas an unmodded 10-40 Laser can have a damage as low as 4 at range.
Reduced by Range
For weapons of which the damage is reduced by range (dissipation), a penalty based on the distance the beam must travel to the target is taken into account, lowering the damage potential (round to nearest applies and the minimum damage potential is always 1). Below table of damage potential by range includes examples for Laser Cannon, Phasor, Mauler and Death Ray:
Range (sq) | 0 | 1-3 | 4-6 | 7-9 | 10-12 | 13-15 | 16-18 | 19-21 | 22-24 |
Penalty | 0 | -10 | -20 | -30 | -40 | -50 | -60 | -65 | |
Dmg | 100% | 90% | 80% | 70% | 60% | 50% | 40% | 35% | |
Laser | 1-4 | 1-4 | 1-3 | 1-3 | 1-2 | 1-2 | 1-1 | 1-1 | |
Phasor | 5-20 | 5-18 | 4-16 | 4-14 | 3-12 | 3-10 | 2-8 | 2-7 | |
Mauler | 100-100 | 90 | 80 | 70 | 60 | 50 | 40 | 35 | |
Death Ray | 50-100 | 45-90 | 40-80 | 35-70 | 30-60 | 25-50 | 20-40 | 18-35 |
Equal Min-Max Damage
As can be seen from the table, for Mauler Device because min=max dmg the actual damage is known after applying the damage dissipation and Hv, PD, HEF and Ordnance effects. If the beam hits, the min damage value (possibly modified with effects named above) will be applied. For weapons with different min-max damages there is still no final damage value and the story continues:
Different Min-Max Damage
The actual damage for weapons with different min-max damages is based on the damage potential modified with the accuracy of the shot, using the following formula:
UNCAPPED DAMAGE IS:
min_dmg + (max_dmg-min_dmg+1) * A / B
WHERE:
A = roll_plus_attack - hit_threshold
B = 100 - hit_threshold
roll_plus_attack = min(random(100) roll + BA+CO-AF-BD; 100)
hit_threshold = min(40 + range_penalty* - PD_bonus; 95)
* doubled for inherent 2x range to-hit penalty mod
CAPPED DAMAGE IS:
The overall result is capped at max_dmg.
Examples
1. Death Ray’s dmg at 23 sq, assuming roll=85 and (BA+CO-AF-BD-range_penalty)=10:
18 + (35-18+1) * A / B
A = ((85 + 10) - (40 - -85)) = (95 - 95) = 0
B = (100 - (40 - -85)) = (100 - 95) = 5
Thus, actual damage is equal to min_dmg = 18.
2. If the target is closer, and the distance is only 11 squares:
35 + (70-35+1) * A / B
A = ((85 + 10) - (40 - -30)) = (95 - 70) = 25
B = (100 - (40 - -30)) = (100 - 70) = 30
And it follows that the actual damage is min_dmg + ⅚ (max_dmg-min_dmg + 1) = 65.
Hv, PD, HEF & Ordnance
These bonuses are percentages of damage of a regular mount beam. (In 1.50 the HEF bonus can be set for each mount separately.) Their interaction is not multiplicative but additive and they work the same way as dissipation range penalty, modifying min&max damage, so these bonuses are not subject to dissipation themselves.
Ordnance works best for (regular) ship beams, since they benefit from rounding up, so a 10% Ordnance bonus for a 5 damage ship beam will mean +1, while for a 5-9 damage fighter beam or missile it will still be +0.
Examples for a 50-100 beam with dissipation Range_penalty of 30:
Hv
50*(100 {base} + 50 {Hv} - 30 {Range_penalty})% = 60;
100*(100 {base} + 50 {Hv} - 30 {Range_penalty})% = 120.
Hv+HEF
50*(100 {base} + 50 {Hv} + 50 {HEF} - 30 {Range_penalty})% = 85;
100*(100 {base} + 50 {Hv} + 50 {HEF} - 30 {Range_penalty})% = 170.
PD
50*(100 {base} - 50 {PD} - 30 {Range_penalty})% = 10;
100*(100 {base} - 50 {PD} - 30 {Range_penalty})% = 20.
PD of beam with 2x penalty set to applying for dissipation
50*(100 {base} - 50 {PD} - 2*(30) {Range_penalty})% = -5;
100*(100 {base} - 50 {PD} - 2*(30) {Range_penalty})% = -10
Note: in this case actual min and max damage will be 1.
At max distance all PD beams that are reduced by range will do a puny 1 dmg without HEF/Ordnance, no matter their max dmg strength. Even a 1000 dmg PD beam will still do only 1 dmg at max range. So PD does less damage at range than one might expect.
PD + HEF of beam with 2x penalty set to applying for dissipation
50*(100 {base} - 50 {PD} + 50 {HEF} - 2*(30) {Range_penalty})% = 20;
100*(100 {base} - 50 {PD} + 50 {HEF} - 2*(30) {Range_penalty})% = 40.
Missiles can be shot down by regular and PD mount beam weapons, Interceptors, Anti-Missile Rockets and spherical weapons like Pulsars.
Torpedoes, unlike missiles, cannot be fired at or damaged by these weapons.
Three special systems can defend against both missiles and torpedoes:
Note that Lightning Field acts before MIRV missile warheads separate but Cloak and Displacer effects happen afterwards.
Missiles and torpedoes that get through enemies defenses and reach a ship, have a 100% chance to hit that ship, unless that ship has missile evasion capabilities from:
The probability of a single missile warhead getting jammed is equal to the missile evasion bonus of the defender minus the best known scanner bonus of the attacker and this probability is halved if the missile has ECCM (Electronic Counter Countermeasures).
The jamming chance is calculated for each warhead, so it may happen that not all warheads of a MIRV missile hit, but some get jammed.
Note that all monsters, the Guardian and Antarans have a Neutron Scanner onboard in tactical combat, and Sensors in strategic combat.
Note also that the Dragon Breath (a special torpedo with a standard damage of 300 and a dissipation of 15 damage per square) is unaffected by jamming.
Example
The probability that an ECCM warhead guided by a Tachyon Scanner gets jammed by the target ship that enjoys evasion from a Wide Area Jammer fleet bonus (+70), Stabilizer (+25), race penalty (-20), regular crew and a leader with 10 helmsman bonus, is:
P = [(70+25-20+7+(10/2))-20] / 2 = 33%
Anti-Missile Rockets (AMR) have a maximum range of 15 squares, can only target Missiles, and fire either manually or automatically on impact of missiles.
A special way of rounding up (ceiling) is used to determine distance for AMR, effectively shifting the Squares-to-Range conversion by one, thus treating range0 as range1.
Standard range (sq) | 0 | 1-3 | 4-6 | 7-9 | 10-12 | 13-15 | 16-18 |
AMR range (sq) | - | 0-2 | 3-5 | 6-8 | 9-11 | 12-14 | 15-17 |
Range | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
Unlike most Special Weapons that fire all weapons from their stack simultaneously, Anti-Missile Rockets fire in a beam-like manner, one Rocket at time, and each launch has its own Chance-to-Hit roll.
Type, hit points or mods of the target missile do not matter for Chance-to-Hit calculation, only distance is relevant. If a rocket hits a missile stack, it destroys one missile from it.
The AMR special formula for Chance-to-hit is:
AMR Chance-to-Hit = 70 - rounddown((Range + 2) * 10 / 3) - 1
Chances calculate as follows:
AMR Range (sq) | - | 0-2 | 3-5 | 6-8 | 9-11 | 12-14 | 15 |
Range | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
Chance-to-Hit (%) | 65* | 61 | 58 | 55 | 51 | 48 | 45 |
Thus, within 0-2 squares of the ship’s center, AMR fire has a 61% chance of success against any missile, making it very useful against high-level missiles.
Note: In-game it is impossible to know the exact distance to a Flyer.
* It is theoretically possible to fire AMR from range0: If target missile coordinates perfectly match the center coordinates of the firing ship, then the chance to hit is 65%.
Pulsar
Listed damage is 2-24 points per size class of affected ship, in a 6-square radius.
Plasma Flux
The Eel’s weapon is very similar to the Pulsar but has 10-40 points of damage listed.
Spatial Compressor
Can do 4-32 damage irrespective of size class and does all damage to structure only, ignoring shields and armor, similar to a Gyro or the ESD mod. Range is 4 squares. Contrary to Pulsars, Compressors autofire against incoming missiles and fighters.
Engine Explosion
If a ship's drive is destroyed, it will cause an explosion that has a damage potential of 5 times the maximum engine hit points (without Reinforced Hull). This damage value is tripled if the ship has a Quantum Detonator onboard. Contrary to other spherical weapons, the damage caused by a drive explosion dissipates linearly over range.
Satellites
Satellites have no drive, however if an orbital platform self-destructs it will still cause an explosion as if it has an engine of its corresponding ship size class (Star base gets Cruiser engine hp).
Actual damage done is calculated in different, independent ways for flyers and ships:
Missiles and Fighters
First of all, Fighters have a 50% chance to avoid the effects of any spherical damage. If they fail this ‘evade’ roll, they are treated in the same way as missiles.
For each spherical weapon in a slot a damage value is generated:
D = (DamageMin + random(max-min)) * ordnance
Note that Ordnance does not affect engine explosion. An engine explosion against missiles is just a static damage value with linear dissipation without roll.
The sum of all these damage values is multiplied by 25 and divided by the given hit points of one missile or fighter in the stack. Then, a random(100) value is generated for each flyer in the stack and compared with the result. If result >= roll, the flyer is destroyed:
DESTRUCTION IF:
aggD * 25 / hit points >= random(100)
Ships
For ships, the process is repeated and a new damage value (D) is generated. In the same way as for flyers above, the total damage per slot is calculated. The resulting value is the (structure) damage for Spatial Compressor. For other sphericals: After that, additional random(aggD) roll(s) follow and the number of rolls is determined by the size class of the target ship (0,1,2,3,4,5) + 1. Thus a frigate gets one roll, a destroyer two rolls, etc. Each roll is re-rolled if the outcome is not 1, causing a bigger chance to roll 1 in result. The addition of all results is the damage value against that ship.
Final Notes
Unlike beams, sphericals always use all weapons from the slot. As a result, it makes a difference for missiles and shields if you have 1 slot with 5 weapons or 5 slots with one weapon. Fired from one slot, they do damage together (cumulative) and not separately.
Every described damage calculation is done per target, so damage values for two different missile stacks or two separate, same-size class ships that get hit from the same spherical weapon shot can differ.
Finally, damages of ship explosions can dissipate to 0 for missiles, but have a minimum damage of 1 against ships.
Indestructible Special Systems
The following special systems cannot be destroyed in combat:
Troop Pods
Doubles the number of marines onboard a ship. This special system can be destroyed in combat, but the extra marines will not be killed-off then. However if the ship is not repaired when next combat starts, the additional marines will be gone.
Energy Absorber
Reflection Field
Inertial Nullifier
If you attack an enemy’s colony world that has no defenses present or if you win the combat that results from it, your fleet gains control of the orbital space around the planet. This gives you the opportunity to assault the colony itself. One of the choices you can have in the Orbital Combat Selection window is to bombard the colony.
Estimated Bomb Hits
The orbital bombardment phase can be seen as a micromanagement reducing process. In a simulation the number of bomb hits is determined as follows: All remaining ships fire all weapons 10 times, or as many times as there is ammo in 10 turns (so for example 5 shots for torpedoes) and total damage is calculated from it. This damage is divided by 100 to get the displayed number in the Orbital Combat Selection window.
Note:
Depletion of Non-Missile Ammo Bug
Due to a bug in classic, bombs only got 5 ammo and fighters no ammo at all during the 10 turn simulation. Now, bombs get 10 ammo and fighters do 1 launch. Fixing this bug revealed another problem for fighters: the simulation always used the base weapon, e.g. laser cannon for interceptors, instead of the best available one. This has been fixed too.
Planet Hits
Each building 1 hit
Stored Production (if >0) 1 hit (larger stored prod increases its hit chance)
Each full population 1 hit
Each fraction of pop (100k) 1 hit (population growth happens before combat)
Each Marine 1 hit (modified by Heavy-G, Powered Armor)
Each Tank 2 hits (modified by Heavy-G, Battleoids)
There is no set chance to hit something, the roll is per total of planetary structures.
From the start of the game, the population graph stays flat for many turns, which can appear to be caused by some turn delay for updating it. This is however not the case. Instead, the line stays flat due to an overactive graph-smoothing function. This can be disabled with no_graph_smoothing, greatly improving the accuracy of the graph.
Unit value: Each pop = 1.
The buildings graph also benefits from disabling graph smoothing. Colony Base PP’s count towards graph score, but are subtracted next turn when CB is built (or scrapped).
Unit value: Production cost of the building.
Graph smoothing is most helpful here, since without it, the graph can become a bit messy. The unit value for each size class of ship is always the same, no matter if the ship is an empty hull or fully decked out with weapons and specials.
Unit values: Frigate = 20
Destroyer = 40
Cruiser = 80
Battleship = 160
Titan = 320
Doom Star = 640
When a Creative race completes research of a technology, it also completes the field and the full tech field RP is added to the tech graph. For a non-Creative race it depends on the number of technologies in the field. 1 tech*: full field value; 2 techs: ⅔ field value; 3 techs: ½ field value; 4 techs: ⅖ field value. For both races gaining a tech app via non-research means adds full field value or ⅓ - ¼ - ⅕ of field value to the graph respectively.
* Not taking into account race specific tech tree adjustments.
Unit value: Creative via own research = Research Point value of field.
non-Creative via own research= ⅔, ½ or ⅖ RP value of field.
Crea & Non-Crea via other way = ⅓, ¼ or ⅕ RP value of field.
Your long struggle against hostile forces of the rest of the galaxy can only end in triumph or ignominy. If your last colony is destroyed or conquered, your empire no longer exists. In this case, your personal fate as an ex-emperor is something better left unmentioned.
On the other hand, you might win.
Despite the game's name, defeating the Guardian of Orion does not automatically give you the game, although the benefits acquired from doing so brings ultimate victory close. By default you are rewarded with the ancient Death Ray technology. This prize can be changed to any tech with defeat_orion_reward_tech. Use the technology table to look-up the desired tech number (47 = Death Ray).
There are three ways to win the game - exterminate all opponents; get elected as the supreme leader of the galaxy by a two-thirds supermajority vote; or lead a successful assault against the Antaran homeworld by sending your fleet to their realm using a Dimensional Portal. If you time it right you can achieve two win conditions - defeat the Antarans and all opponents (the battle at Antares needs to happen last); or defeat the Antarans and also win by election.
The highest score that the game can display is 32.767. One point more results in a displayed score of -32.768. The maximum possible score is -1 (from 65.535 points).
The difficulty level has no effect on the score, but the following items matter:
Time
A starting value is calculated from galaxy size and number of players:
Small: 100 points per player
Medium: 120 points per player
Large: 140 points per player
Huge: 160 points per player
One point is subtracted from the starting time value each turn. Time score can go negative if the number of played turns exceeds the starting value!
Population
+1 point for every unit of population.
Player Elimination
+50 points for every eliminated player.
Captured Colonists
Each event of capturing colonists grants you points (note that this is not a modifier for captured population at the end of the game). Points vary according to galaxy size because “larger galaxy provides more opportunities to capture population”:
Small: 2 points per captured colonist
Medium: 1 point per captured colonist
Large: 2/3 point per captured colonist (rounded down)
Huge: 1/2 point per captured colonist (rounded down)
Technology
Each researched technology field adds 3 points. Tech field 0 (Capitol, Spy Network and Pulse Rifle) and Tech field Engineering (Colony Base, Star Base and Marine Barracks) are always known from the start and are worth 3 points each. Thus, the Average Tech level starts with a tech score of 21 points (2*3 points + 5*3 points for the Pre-warp tech fields Nuclear Fission, Cold Fusion, Chemistry, Electronics and Physics).
Stolen, received or found technology does not increase the score unless it was the last one in a field and completes it. Each Hyper Advanced I level gives 5 points but Hyper Advanced levels II or higher add no points to the score.
The Guardian
Defeating the Guardian adds 100 points. This value can be changed with hi_score orion.
Antares Win
A win by defeating the Antaran Homeworld adds 250 well deserved points to the score. The value can be changed with hi_score antares.
Council Win
Brings in a meager 100 points. The value can be changed with hi_score council.
(blue = 1.50 hotkey changes or additions)
Any Screen
PageUp Speed up all in-game animation (maximum +3).
PageDown Slow down all in-game animation (minimum -3).
Main Screen / Galaxy Map
F1 Cycle forward through fleets
F2 Cycle backward through fleets
F3 unknown
F4 Change all relocations to a given system
F5 Go to next colonized system (opens system window)
F6 Go to previous colonized system (opens system window)
F9 Find distance between two stars
F10 Quick Save
+ Zoom in
- Zoom out
1 Execute script MAIN1.LUA (default: tech differential report)
2 Execute script MAIN2.LUA (default: spy report)
3 Execute script MAIN3.LUA (default: exploration report)
…
9 Execute script MAIN9.LUA (empty script)
0 Execute script MAIN0.LUA (default: game information)
c Colonies screen
p Planets screen
f Fleets screen
l Leaders screen
r Races screen
i Info screen
t Next Turn
ALT-F1 End of turn summary on/off
ALT-F2 End of turn wait on/off
ALT-F3 Enemy moves on/off
ALT-F4 unknown
ALT-F5 Auto-select ships on/off
ALT-F6 Animations on/off
ALT-F7 Auto-select colony on/off
ALT-F8 Relocation lines on/off
ALT-F9 Load game
ALT-F10 Save game
ALT-q Quit without saving
ALT-re Reload config without restarting the game (not allowed during MP games)
ALT-ri Reload interface options only (allowed during MP games)
Colonies Screen
n Sort colony list by Name
p Sort colony list by Population
f Sort colony list by Food
i Sort colony list by Industry
s Sort colony list by Science
r Sort colony list by Production
b Sort colony list by BC
c Goto Colony screen of first colony in the list
q Load BUILD.CFG on selected colony (+SHIFT for all colonies)
0 Load BUILD0.CFG on selected colony (+SHIFT for all colonies)
...
9 Load BUILD9.CFG on selected colony (+SHIFT for all colonies)
+ Scroll Up
- Scroll Down
SPACE RETURN button
ESC Escapes to Main Screen
Fleets Screen
, Go to previous fleet
. Go to next fleet
F5 Change all relocations to a new system
ALT-F5 Cancel all relocations
Colony Screen
a Turn on AUTOBUILD
b BUY or UNBUY an item
c CHANGE, go to the Build screen
. Go to previous colony
, Go to next colony
SPACE RETURN button
ESC Escapes to previous screen
Build Screen (Construction Orders Screen)
q Load BUILD.CFG into queue
0 Load BUILD0.CFG into queue
...
9 Load BUILD9.CFG into queue
b BUY or UNBUY an item
e REPEAT BUILD button
r REFIT button
, Go to previous colony
. Go to next colony
SPACE OK button
ESC Escapes to previous screen without saving changes.
ALT-ad Runs Autodesign, updating all ship designs.
ALT-re Reload config without restarting the game (not allowed during MP games)
ALT-ri Reload interface options only (allowed during MP games)
Design Dock: Select Weapon System and Select Special System Screens
- Scroll Up
+ Scroll Down
ESC Escapes to Ship Design Overview without saving changes.
Battle Map (Tactical Combat)
a Auto Combat. Click anywhere to turn it off.
b Board
c Center on active ship
d Done
o Options
r Retreat
s Scan
t End your turn (acts like Done for all your ships).
w Wait
z Super-fast resolution mode (vs AI only). Click anywhere to turn it off.
ALT-re Reload config without restarting the game (not allowed during MP games).
ALT-ri Reload interface options only (allowed during MP games).
Orbital Combat Selection Window
b Bombard
d Destroy (Stellar Converter)
h Hold
a Drop All
i Invade
m Mind Control (Telepathic races)
ESC Cancel
Hall of Fame
ALT-c Reset the Hall of Fame high scores. This will restore the default scores.
Cheats / Testing
The cheat reporting code has been fixed. A cheat warning is now always issued on the next turn after cheating and the warning cannot be lost anymore.
Cheats described below work in the Main screen, unless specified otherwise.
ALT +
eee Extracts current config to EXTRACT.CFG
(Main screen, Build screen and on the Battle Map during combat)
re Reloads ORION2.CFG (single player game only)
(Main screen, Build screen and on the Battle Map during combat)
lua Toggles universal context for main screen scripts.
ale Previously disabled leader cheat. Pop-up allows you to select a leader
id. That leader will offer to join the next turn.
allai Turns all players to AIs, including yourself. Note that if End Of Turn Wait
is off, turns will pass automatically and continue endlessly, even when there is only 1 player left in the game.
crunch Finishes the current building project of a colony when used in the
Colony screen. Used in the Build screen, it adds 32000 stored production, enabling the completion of successive build projects in 1 turn each.
einstein Grants your empire knowledge of every application in every field of
research, except for the Hyper-Advanced fields.
iseeall Toggles Omniscience on and off. Note that if this cheat is toggled on when Evolutionary Mutation is researched, 3 picks are subtracted for the cost of Omniscience, leaving only 1 pick for mutating the race.
menlo Finishes your current research project. Now adds 1000k instead of 10k and is tunable with menlo_research_points.
moola Adds 1000 BCs to your imperial treasury.
scor Reports current score (Note the removed ‘e’ from ‘score’)
toggle Toggles availability of all buildings in the Build screen on and off. Even those not researched.
x Cycles between all players, except annihilated ones (SP & Hotseat only).
We would like to thank:
The MOO2 devs, for their inspiring game. Special thanks to the coding team, they made our task of improving this game both manageable and enjoyable.
Darza, for his ‘YUGE’ contribution to the 1.50 patch project.
Lord Brazen, for his 1.40 patch which is incorporated into the 1.50 patch.
Andrey Tyukov, for his fixes included here, marked by * for ones identically implemented and by ** for modified implementations.
Dmitry Yulmukhametov, the author of the original OCL
Nirran, for his work on OCL Improved from which we took many offsets.
TF8, for his mapgen tool which also has a lot of info on game data structures.
Grig De Griz, for his editor suite MoO2 Workshop that we used for updating help text files and manipulating images.
Epirasque, for his work on Lua code and scripts.
All users who provided feedback, for reporting bugs, sharing design suggestions and other advice to polish the patch.
Enjoy playing Master of Orion II: Battle at Antares with this patch!
The MOO2 1.50 Project team
[1] In addition, the picture for seven opponents has been redrawn, centering the 7.
[2] In addition, “Psilons” has been centered on its button and misc. pixel artifacts have been cleaned up.