DefaultGameCore.ini settings - XCOM:EU 2012

From Nexus Wiki

Jump to: navigation, search

Contents

Overview

This description of the DefaultGameCore.ini (DGC.INI) file is directly based on the Compiled list of DefaultGameCore.ini settings and their functions thread in the Nexus XCOM Mod Talk forum. All credits to him for the first version of this page which essentially kicked off the beginning of the organized modding process for XCOM:EU 2012.

The DGC.INI file is found in the <Steam install path>\XComGame\Config folder. This is known as the 'loose' file. There is also a copy embedded ("cooked") into the game executable file XComGame.EXE, which is part of what is called the resource cache. By default the game only uses certain settings from the loose file, and most mods must alter the embedded version. It has now been discovered how to force the game to use the entirety of the DGC.INI instead of the resource cache copy. (See the Recent Discoveries section.)

Many commonly sought tweaks to the game people have requested help with are made to the DGC.INI file, and now are documented in the article How to DIY common mod solutions - XCOM:EU 2012. That article and this should be your first stops when looking to make any change you think should be "simple or easy".

Programs and Tools

Any plaintext editor (like Notepad, but not Write) is sufficient. Other tools mentioned in Modding Tools - XCOM:EU 2012 may be useful but are not required.


XCOM Config (INI) files

(From the Nexus Mod Talk Forum minmax money rewards don't seem to work (XComGameData.ini) thread.)

Most games since the release of Windows Vista write stuff into My Games because the game folder itself is often in Program Files which the Windows OS now makes inaccessible to alteration for security reasons.

XComGameCore.ini resides in the My Games\XCOM Enemy (Unknown/Within)\XComGame\Config folder. It is a mirror copy of the DefaultGameCore.ini file found in the game config folder: <Steam install path>\XCOM - Enemy Unknown[\XEW]\XComGame\Config. (Note that EW files are located under the XEW folder that is added to the XCOM - Enemy Unknown folder when that expansion is added.) Making changes to XComGameCore.ini won't work because the original DefaultGameCore.ini file would overwrite it at game launch.

The DefaultGameData.ini file similarly should be getting mirrored into the XComGameData.ini file in the My Games folder.

In EU these copies were made to support the addition of downloadable content (DLC). The config files in My Games were merged versions of the base game + DLC. So far there's no DLC for Enemy Within, but as prolific as the map team was for the expansion it wouldn't surprise me to see DLC packs of new maps.

EW added DefaultContent.ini to the path XCom-Enemy-Unknown\XEW\XComGame\Config\ to contain elements of new units such as the UnitPackageInfo for MEC units, i.e. UnitPackageInfo=(PawnType=ePawnType_MecMark3,ArchetypeName="Unit_MecMark3.ARC_Unit_MecMark3"), and the decorative armor data, i.e. ArmorKitPackageInfo=(KitType=eKit_Deco_GeneMod1,ArchetypeName="Deco_Titan0.ARC_Deco_Titan0"). (See the Nexus Forums thread Unlock All Decorative Armors for all Armors for more details.)

The core game's map set is in DefaultMaps.ini, which corresponds to the XComMap.ini file in My Games as well.

In Enemy Within's DefaultMaps.ini file most of the new maps are prefaced with the comment:

;Temp XPack

The two config files DefaultGameData.ini and DefaultGameCore.ini (at least originally) corresponded to two different classes in XComGame.upk.

  • XGTacticalGameCore (and it's parent class XGTacticalGameCoreNativeBase)
  • XGGameData

This is why the first tag you see in DefaultGameCore.ini is [XComGame.XGTacticalGameCore], and the first tag you see in DefaultGameData.ini is [XComGame.XGGameData].

These tags identify which UPK/class' config variables are being set in the following section.

Later these INI files were expanded to read in config variables for other classes. For example DefaultGameCore.ini has the following tags:

  • [XComGame.XGTacticalGameCore]
  • [XComGame.XComPrecomputedPath]
  • [XComGame.XGAction_FireCustom_Flamethrower]
  • [XComGame.XGAction_FireCustom_Barrage]
  • [XComGame.XGAbility_Electropulse]
  • [XComGame.XGAbility_Electropulse]
  • [XComGame.XGUnitNativeBase]
  • [XComGame.XComPerkManager]

If you open these classes in UE Explorer you'll see that the variables in the INI file are config-type class variables in the class.

For example XComPerkManager function has the following class variables:

config TGeneModTree GeneModPerkTree
private array<TPerk> m_arrPerks
privatewrite bool m_bInitialized
const localized string m_strBattleFatigueSecondWave
const localized string m_strBonusTitle[EPerkType]
const localized string m_strBonusTxt[EPerkType]
const localized string m_strPassiveTitle[EPerkType]
const localized string m_strPassiveTxt[EPerkType]
const localized string m_strPenaltyTitle[EPerkType]
const localized string m_strPenaltyTxt[EPerkType]
config TPsiPerkTree PsiPerkTree
private config array<config XGTacticalGameCoreNativeBase.EPerkType> RandomPerks
config array<config TSoldierPerkTree> SoldierPerkTrees

The variables of type config are precisely the variables being defined in the DefaultGameCore.ini.

DefaultGameData.ini works similarly but defines config variables for a different set of classes:

  • [XComGame.XGGameData]
  • [XComStrategyGame.XComDropshipAudioMgr]
  • [XComStrategyGame.UITellMeMore]
  • [XComStrategyGame.XGExaltSimulation]
  • [XComGame.XComMeldContainerActor]
  • [XComGame.XGBattle_SPCovertOpsExtraction]
  • [XComGame.XGBattle_SPCaptureAndHold]
  • [XComStrategyGame.XGFacility_CyberneticsLab]
  • [XComStrategyGame.XGFundingCouncil]
  • [XComStrategyGame.XGFacility_Barracks]
  • [XComStrategyGame.XGStrategyActorNativeBase]

I don't know how the config parser knows which config file to examine for a class's config variable data, nor the order in which they are read.


Next -- the relationship between the \XEW\XComGame\Config\ files and the \My Games\XCom - Enemy Within\XComGame\Config\ files.

The files in the root XCom folder (sub-folder XEW for EW) are the "master" copies. These files all begin with "Default" (e.g. DefaultGameCore.ini, DefaultGameData.ini).

Whenever the game is launched, near the very beginning of execution it performs merge operations, creating copies of the config files in the \My Games\...\Config\ folder. These files all being with "XCom" (e.g. XComGameCore.ini, XComGameData.ini, etc.).

For the present state of Enemy Within these are simply copies (but with all comments stripped out).

However, once DLC for Enemy Within are released, these My Games versions are expected to be merged versions of the base game + DLC config files, as when DLCs were released for EU.

These files are reconstructed (or are supposed to be) every time the game launches so altering the versions in My Games' should be fruitless.

In EU there was a bug with some of the localization files in which the My Games merged version wasn't being properly overwritten.

There was also a bug in EU in which the XComEngine.ini config file was being improperly merged causing the file to load an additional copy of some DLC art assets every time the game was launched. This would lead to very long "dropship loading screen" times.

Modding Information

The information presented here does apply to making hex code changes in the executable's internal resource cache to produce the equivalent change.

Also, bear in mind that loose files are loaded and read AFTER the game executable is launched. This means they can override mod changes made to the internal resource cache of the EXE by hex-editing or tools like ResourceHacker. Choose your method of applying specific mods accordingly.

Changes made to the DGC.INI file may not be applied as you might expect. As pointed out by the Long War mod lead programmer in this post:

In all cases you can change a value and then load a previous save-game, but the change may not be present, may be effective in limited ways, or may be completely effective.
For example, changing the Character= line for an XCOM soldier will not affect the stats of any soldiers already recruited, but will affect any soldiers recruited after the INI change (including reward soldiers).
Changing the Character= line for an alien won't affect any aliens in a save-game saved in a tactical mission, but will change any aliens in later tactical missions.
Changing an ItemBalance= line will update the item value in the strategy game the next time it is loaded.
The primary issue is that some items are read once when a new campaign is started and the values are then stored in the save-game file. Most items, however, are read "on the fly" from the INI file as needed.

INI file applicability

At present it appears only the BALANCE Modes (i.e. BalanceMods_Easy, etc.) values override the values embedded within the compiled XComGame.exe file. Internally BALANCE Modes translate to Game DIFFICULTY setting as follows:

BALANCE Mode Game DIFFICULTY
EASY Tutorial
NORMAL Normal
HARD Classic
CLASSIC Impossible

Sections where you find the description "(BALANCE Mode dependent.)" have such settings. Where such BALANCE Mode setting labels appear identical but are presented 4 times, they are listed in order from EASY/Tutorial to CLASSIC/Impossible, sometimes with comments appended like so:

 ; EASY/Tutorial
 ; NORMAL/Normal
 ; HARD/Classic
 ; CLASSIC/Impossible

Mutual Interoperability


Obscure Property effects



Abilities

Abilities can be added to Armors, Weapons, Equipment, and Characters(UNITS); however they don't always function as they should when added to different items. This is a complete list of the Abilities in the game with a brief description about what each does. The following sections that pertain to each item type will have a list of abilities that are known to work or be interchangeable.

Note: Seems that psionic skill can be added even to ungifted soldier this way, however i was able to make the process work only using Ghost Armor for now, maybe because ability on the skill bar appear only on ABILITIES? All other active abilities but 0 seems to be ignored. Need more test, fix this when confirmed differently.

Note2: ALL Ability and property descriptions with internal names can be found in the file XComGame.int present in install sub-folder .\XComGame\Localization\Int.

The various eAbilities are enumerated in XGTacticalGameCoreData.EAbility and it's related articles under the sub-category Enum Values XCOM Modding. They do not appear in DefaultGameCore.ini, but are found and listed in XcomGame.upk:XGTacticalGameCoreData.

The descriptions only are presented here for quick reference. Refer to XGTacticalGameCoreData.EAbility for the values needed to apply these abilities.

Appear on Armor

  • eAbility_Fly = Allows units to fly while in tactical mode and requires iFlightFuel=1(or higher) for the turn duration of flight.
  • eAbility_Ghost = Unit becomes invisible for 1 turn or until they make an attack and has a limited number (4) of uses per battle.

Appear on Characters

  • eAbility_CivilianCover = Gives the ability "Head Down" which provides a 10 Defense bonus when used, does not require cover. (Perhaps other effects as well but unknown to me)
  • eAbility_TakeCover = Gives the ability "Hunker Down" which doubles the Cover Bonus and provides immunity to critical hits, reduces sight radius.
  • eAbility_MindMerge = GIVES SECTOIDS THE "MIND MERGE" ABILITY UNIT BUFF, APPEARS TO DO NOTHING FOR PLAYER CONTROLLED UNITS (NEED MORE INFO)
  • eAbility_Launch = GIVES FLOATERS THE ABILITY TO JUMP TO A DISTANT COVER POINT, APPEARS TO DO NOTHING FOR PLAYER CONTROLLED UNITS, BREAKS GROUND MOVEMENT; REQUIRES FLIGHT TO MOVE (NEED MORE INFO)
  • eAbility_Intimidate = GIVES MUTONS THE ON HIT REACTION ABILITY WHICH CAUSES PANIC IN NEARBY PLAYER CONTROLLED UNITS, APPEARS TO DO NOTHING FOR PLAYER CONTROLLED UNITS (NEED MORE INFO)
  • eAbility_BloodCall = GIVES MUTONS THE "BLOOD CALL" ABILITY WHICH GIVES A WILL, AIM, AND MOBILITY BUFF TO THE UNIT THAT USES IT AS WELL AS OTHER NEARBY MUTON UNITS. APPEARS TO DO NOTHING FOR PLAYER CONTROLLED UNITS (REQUIRES MUTON FLAG, NEED MORE INFO)
  • eAbility_CloseCyberdisc = GIVES CYBERDISCS THE ABILITY TO "CLOSE" AFTER TAKING AN ACTION OTHER THAN MOVEMENT, or when taking damage. APPEARS TO DO NOTHING FOR PLAYER CONTROLLED UNITS(NEED MORE INFO)
  • eAbility_PsiControl = Gives Sectoid Commanders and Ethereals the Psi Control ability that work similarly to Mind Control usable the player soldiers.(Note:This skill can be added to player soldiers using armor mod, seems to not work correctly tough. Test: In my test the ability appear only After the soldier turn is over and can't make any more action, the ability disappear as soon as the soldier turn is restored only to reappear when finished once more making the ability unusable. Need more test on different environment to confirm)
  • eAbility_MindFray = Standard Mindfray ability given to all first level psionic soldiers, accuracy is based on user/victim willpower scores. If successful, it reduces target attributes (accuracy, mobility, willpower) and deals 5 points of damage, Ethereals and Sectoid Commanders also have this skill (Note: the ability can be added to normal soldiers skill bar using an armor mod)
  • eAbility_GreaterMindMerge = GIVES THE "GREATER MIND MERGE" ABILITY TO SECTOID COMMANDERS. APPEARS TO DO NOTHING FOR PLAYER CONTROLLED UNITS (NEED MORE INFO)
  • eAbility_PsiPanic = Give the Psi Panic ability to Sectoid Commanders, shared ability with player psionic soldier. This skill forces the target to make an unspecified 'Will Check'; if they fail this check, they panic. Panicking units become unresponsive to orders and may attack nearby allies or enemies (Note: This ability can be added to any soldier using the armor mod)
  • eAbility_Rift = Ability possessed by Ethereals, but rarely (if ever) used by the AI. Rift is also gained by the Volunteer just before game final assault. This psionic skill generates a wide and flat area effect that lasts for a few turns and damages every unit as soon as the field is created, and any unit that lingers within the field takes further damage; the damage depends on the victim's Will (Note: this skill is gained legitimately by one soldier just before game conclusion, it's possible to mod the extremely high exp value needed for making this ability allowed to any gifted soldier, with such mod the ability simply appear on the user skill bar without prompting for a level up. Warning: It's untested if the final level script check for volunteer using this skill as a tracker, if so problem may arise when facing the last map, untested yet)
  • eAbility_PsiDrain = Ability normally possessed by Ethereals, permit the user to drain the health of an ally or mindlinked (i.e. mindcontrolled) unit to restore their own, works if added to the player(Note: the ability can be activated only if the user health is not at it's maximum value)
  • eAbility_BullRush = Ability possessed by Muton Berserker; allows them to charge through cover and obstacles (including walls), then damage units near the end of the charge (Note: ability tested with Mind Control only, untested with player soldiers)
  • eAbility_Bloodlust = Muton Berserker's Bloodlust 'ability'; gives a free ~5 tile move towards whoever last shot it, or its previous target if its current attacker is out of LoS or somewhere it can't reach, even if it isn't the Berserker's turn yet.
  • eAbility_ShotOverload = (NEED MORE INFO)

Appear on Items

  • eAbility_ShotStandard = Allows normal attack actions
  • eAbility_Overwatch = Allows the use of overwatch command
  • eAbility_ShotStun = Allows the use of the "Stun" command, appears to only work on the Arc Thrower (Has 0 uses on other items)
  • eAbility_ShotSuppress = Allows the use of the "Suppress" command
  • eAbility_FragGrenade = Allows the use of the "Frag Grenade" command. (NEED MORE INFO)
  • eAbility_SmokeGrenade = Allows the use of the "Smoke Grenade" commmand. SUPPORT ABILITY (NEED MORE INFO)
  • eAbility_BattleScanner = Allows the use of the "Scanning Drone" command. SNIPER ABILITY (NEED MORE INFO)
  • eAbility_AlienGrenade = Allows the use of the "Plasma Grenade" command. (NEED MORE INFO)
  • eAbility_ShredderRocket = Allows the use of the "Shredder Rocket" command. HEAVY ABILITY (NEED MORE INFO)
  • eAbility_RocketLauncher = Allows the use of the "Rocket Launcher" command. HEAVY ABILITY (NEED MORE INFO)
  • eAbility_MedikitHeal = Allows the use of the "Medkit" command, appears to only work on the Medkit (Has 0 uses on other items)
  • eAbility_Plague = The Thin Man's "Poison Spit" ability. Appears to be a secondary/backpack based item, rather than a true unit ability like psi attacks. (NEED MORE INFO)
  • eAbility_CombatStim = Adds the Combat Stim effect to the SUPPORT Smoke Grenade. (NEED MORE INFO)
  • eAbility_Grapple = Adds the "Grapple" command, allows units to move to higher terrain. (Duplicated as a property, need to check functionality of each)
  • eAbility_Repair = Adds the "Repair" command allowing units to repair mechanical units (SHIVS/DRONES).
  • eAbility_DeathBlossom = Adds the "Death Blossom" attack to Cyberdiscs. (NEED MORE INFO)
  • eAbility_CannonFire = Adds the "Cannon Fire" attack to the Sectopod. (NEED MORE INFO)
  • eAbility_DestroyTerrain = Adds the "Destroy Terrain" attack to the Sectopod. (NEED MORE INFO)
  • eAbility_ClusterBomb = Adds the "Cluster Bomb" attack to the Sectopod. (NEED MORE INFO)
  • eAbility_PsiLance = Ability possessed by Ethereals, charge and launch a purple sphere at the target causing damage depending on target will(Note: This skill can be added to player soldier by armor mod, work somewhat curiously, seems soldier shot with it's own weapon as well very evident when this skill is used by a sniper, speculatively speaking it may simply trigger an invisible weapon used by Ethereals in the primary weapon slot. With this skill the chance to hit by a soldier become 100% on all the test i have done, if used by sniper with Double Tap skill allow for a second shot using normal weapon. This skill has no cooldown apparently)

Properties

Properties can be added to Armors, Weapons, Equipment, and Characters(UNITS) and have effects similar to abilities. Sometimes in order for an ability to function, the property must also be present. This is a complete list of the Properties in the game with a brief description about what each does. The following sections that pertain to each item type will have a list of properties that are known to work or be interchangeable.

Appear on Armor

  • eAP_Grapple = Adds the "Grapple" command, allows units to move to higher terrain. (Duplicated as an Ability, need to check functionality of each)
  • eAP_DualWield = (NEED MORE INFO - probably obsolete/disabled code)
  • eAP_PoisonImmunity = Grants immunity to poison effects, used by Titan suit. (NEED MORE INFO)
  • eAP_BackpackLimited = (NEED MORE INFO - probably obsolete/disabled code)
  • eAP_AirEvade = Grants half-cover bonus when flying, used by Archangel suit. (NEED MORE INFO)
  • eAP_Psi = Only appears on Psi Suit, likely related to the special +10 Will bonus it grants when using offensive psi powers. (NEED MORE INFO)
  • eAP_Tank = Only appears on SHIV plating. (NEED MORE INFO)

Appear on Characters

  • eCP_CanGainXP = Allows for the accumulation of XP, appears to only effect soldier units
  • eCP_Robotic = Gives unit the "Robot" trait. Immune to PSI abilities, can't be healed using medkit, requires repair, takes more damage from extra damage to robot abilities.
  • eCP_Hardened = Used by Sectopods, Chryssalids, and Berzerkers; grants the 'Hardened' trait, which reduces the chance of scoring critical hits on them, apparently 40%.
  • eCP_Flight = Appears to duplicate the FLY ability, not sure on how it functions differently. (NEED MORE INFO)
  • eCP_AirEvade = Grants half-cover bonus to flying units, such as Floaters and Cyberdisks, when they are fully airborne or in the open.(NEED MORE INFO)
  • eCP_Climb = Appears to give ThinMen and Chryssalids the ability to move to higher terrain without the need to activate an ability. (NEED MORE INFO)
  • eCP_PoisonImmunity = Grants immunity to poison effects. Used by Thin Men and Chryssalids.
  • eCP_DeathExplosion = Causes Cyberdiscs and Sectopods to explode upon death. (NEED MORE INFO)
  • eCP_MeleeOnly = Used by Chryssalids, Zombies, and Berzerkers, presumably so their AI knows that it should actively close to melee range rather than try to make ranged attacks or behave like other enemies (using cover, etc.). (NEED MORE INFO)
  • eCP_Poisonous = Attacks inflict the "Poisoned" status. (NEED MORE INFO)

Appear on Weapons

  • eWP_Pistol = Items can be placed in the "Sidearm" slot on the loadout screen, counts as a pistol for equipment restrictions and recieves pistol weapon upgrades from Armory upgrades.
  • eWP_UnlimitedAmmo = Item does not need to be reloaded, Ammo does not deplete. (typically on pistols)
  • eWP_Rifle = Items can be placed in the "Primary" weapon slot on the loadout screen, counts as a rifle for equipment restrictions.
  • eWP_Assault = Adds the "Assault" class restriction to an item, allowing the Assault class to equip it.
  • eWP_Heavy = Adds the "Heavy" class restriction to an item, allowing the Heavy class to equip it. This also reduces the ammo capacity of the weapon to three shots (as per the LMG and other Heavy exclusive weapons).
  • eWP_Support = Adds the "Support" class restriction to an item, allows the Support class to equip it.
  • eWP_Sniper = Adds the short range accuracy penalty normally associated to the sniper rifles. Does not allow the Sniper class to equip (use eWP_AnyClass).
  • eWP_MoveLimited = Adds the "Cannot move and fire" trait to a weapon, preventing it from being used to attack after moving.
  • eWP_NoReload = Adds the "Cannot be relaoded" trait to a weapon, preventing if from being relaoded.
  • eWP_CantReact = Adds the "Cannot perform reaction attacks" to a weapon, preventing it from being used for Overwatch.
  • eWP_Secondary = ??UNKNOWN?? PERHAPS ALLOWS USE OF THIS ITEMS EFFECT WITHOUT NEEDING TO SWITCH TO IT. (NEED MORE INFO)
  • eWP_Backpack = Item can be placed/will use a Backpack slot on the loadout screen.
  • eWP_AnyClass = Any class can use this item, removes class restrictions. (NOTE THAT THIS DOESN'T ALWAYS APPLY TO THE HEAVY CLASS - THIS IS LIKELY A BUG IN THE ORIGINAL PROGRAM - AND YOU MAY NEED TO ADD THE HEAVY CLASS TAG AS WELL AS THIS TAG FOR A HEAVY TO USE THE ITEM; SEE ABOVE)
  • eWP_Explosive = Counts as an ??explosive?? (NEED TO TEST THIS EFFECT ON OTHER ITEMS)
  • eWP_Integrated = Appears on SHIV weapons and various alien weapons (cyberdisk weapon, sectopod cannons, chryssalid claws, etc.), possibly prevents changing loadout/item capture/dropping. (NEED MORE INFO)
  • eWP_Melee = Adds the "Melee" trait to a weapon making its attacks melee only. (NEED MORE INFO)

Armor

Armor entries are just what they seem to be, they are the item that your character wears in the Armor slot. At this time there does not appear to be a way to add additional armors to the game, however you can modify the existing armors to add various effects. I am going to list the effects that I know from personal experience can be changed at this time. Again, additional feedback is requested.

Armors use the following format Which can be broken down into THREE distinct segments; Abilities, Properties, and Stats:

Armors=(ABILITIES[0]=eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,Properties[0]=eAP_None,Properties[1]=eAP_None,Properties[2] =eAP_None,Properties[3]=eAP_None,iType=eItem_ArmorKevlar,iHPBonus=1,iDefenseBonus=0,iFlightFuel=0,iWillBonus=0,iLargeItems=1,iSmallItems=1,iMobilityBonus=0)

The first segment is Abilities and appears be limited to a maximum of THREE abilities, I have not tested adding more than THREE abilities at this time and it may be possible to add more. Abilities that are known to be interchangable are:

  • Fly - Gives the flight command, requires the iFlightFuel=XX stat to have a number greater than 0 to activate, uses fuel on each turn.
  • Ghost - Gives the ghost command making your unit invisible until the next turn or they attack, grants 4 uses. There doesn't appear to be a way to increase use count at this time.

RESERVED FOR FUTURE ADDITIONS

The Second segment is Properties and appears be limited to a maximum of THREE properties however I have not tested adding more than THREE properties at this time and it may be possible to add more. Properties that are know to be interchangable are:

  • Grapple - Gives the ability to use the grapple command to move to higher terrain.

RESERVED FOR FUTURE ADDITIONS

The Third Segment is Stats which grant flat bonus's to units that have the item equipped are are relatively self explanatory. Here is a breakdown of each of the stats:

  • iType = This is the ITEM REFERENCE for the game, DO NOT CHANGE THIS AS THIS IS HOW THE GAME IDENTIFIES WHICH ARMOR IS WHICH.
  • iHPBonus = This is the amount bonus HP that the armor grants to the unit. Can be a POSITIVE/NEGATIVE number for Bonus/Penalty.
  • iDefenseBonus = This is the amount of bonus Defense the armor grants to the unit. Can be a POSITIVE/NEGATIVE number for Bonus/Penalty. For reference, partial/full cover grant 20/40 defense.
  • iFlightFuel = This is the amount of "Fuel" the armor has to maintain flight and is required if you intend to use the Fly ability. One fuel per round of flight.
  • iWillBonus = This is the amount of bonus WILL that the armor grants to the units. Can be a POSITIVE/NEGATIVE number for Bonus/Penalty.
  • iLargeItems = This is the number of "Large" item slots the armor has. (I HAVE NOT TESTED THIS SETTING)
  • iSmallItems = This is the number os "Small" item slots the armor has. Increasing this number adds addtional backpack slots, however it seems that making it THREE or greater breaks the ability to add items to the backpack during loadout.
  • iMobilityBonus = This is the amount of bonus MOBILITY points that the armor grants, allowing the unit to move further in combat. Can be a POSITIVE/NEGATIVE number for Bonus/Penalty.

Characters

Characters are the UNITS that engage in battle during tactical missions, and have a variety of abilities and properties. I have not extensively tested adding or removing abilities to characters so I dont have a list of what can and can not be done to these yet, however I will break down what I DO know about them. In the case of player Soldiers this information is pulled for the initial soldiers you are given at the start of the game, and then modified with the difficulty setting bonus/penalties. However any additional soldiers you recruit appear to pull from a different set of references. This could be, and probably is, a bug in the main game code that may be fixed in a future patch.

Characters use the following format which can be broken down into FOUR distinct segments; Stats, Abilities, Properties, and "Functions" (for lack of a better word coming to mind at the moment)

Characters=(iType=eChar_None,HP=1,Offense=0,Defense=0,Mobility=12,SightRadius=27,Will=0,Psionics=20,CritHitChance=0,CritWoundChance=0,FlightFuel=0,Reaction=0,ABILITIES[0] =eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,ABILITIES[4]=eAbility_NONE,ABILITIES[5]=eAbility_NONE,ABILITIES[6] =eAbility_NONE,ABILITIES[7]=eAbility_NONE,Properties[0]=eCP_None,Properties[1]=eCP_None,Properties[2]=eCP_None,Properties[3]=eCP_None,Properties[4]=eCP_None,Properties[5] =eCP_None,bCanUse_eTraversal_Normal=False,bCanUse_eTraversal_ClimbOver=False,bCanUse_eTraversal_ClimbOnto=False,bCanUse_eTraversal_ClimbLadder=False,bCanUse_eTraversal_DropDown=False,b CanUse_eTraversal_Grapple=False,bCanUse_eTraversal_Landing=False,bCanUse_eTraversal_BreakWindow=False,bCanUse_eTraversal_KickDoor=False,bCanUse_eTraversal_JumpUp=False,bCanUse_eTravers al_WallClimb=False,bCanUse_eTraversal_BreakWall=False,eClass=eSC_None,bHasPsiGift=False)


Addendum: The player soldier seems to be the (Characters=(iType=eChar_Soldier) section, not character. All the new recruits and the soldier at the base DO NOT seem to use this statistic, check for the rookie section below.

Note: All Modification done to Soldiers IS NOT RETROACTIVELY APPLIED TO SOLDIER ALREADY PRESENT AT THE BASE OR ON MISSION, because the soldiers already present at the base statistic ARE WITHIN THE SAVE FILE.


The first segment is BASE stats that the character will have before any bonuses or penalties are applied. In the case of player Soldiers these stats are pulled for the initial soldiers you are given at the start of the game, and then modified with the difficulty setting bonus/penalties. However any additional soldiers you recruit appear to pull from a different set of stats altogether. This could be, and probably is, a bug in the main game code that may be fixed in a future patch.

  • iType = This the CHARACTER REFERENCE for the game, DO NOT CHANGE THIS AS THIS IS HOW THE GAME IDENTIFIES WHICH CHARACTER IS WHICH.
  • HP = This is the BASE HP
  • Offense = The BASE AIM of the unit
  • Defense = The BASE DEFENSE
  • Mobility = This is the BASE MOBILITY
  • SightRadius = This is the number of tiles the unit can see around it, increase/decrease to see further/shorter distances. (NOTE, SETTING THIS HIGHER THAN 27 APPEARS TO CAUSE THE GAME TO CRASH ON MISSION LOADS)
  • Will = The BASE Will of the unit, increase/decrease to panic less/more often. Also effects chance to be PSIONIC when testing.
  • Psionics = NO IDEA HOW THIS STAT EFFECTS ANYTHING (NEED MORE INFO)
  • CritHitChance = BASE chance to inflict a critical hit.
  • CritWoundChance = NO IDEA HOW THIS STAT EFFECTS ANYTHING (NEED MORE INFO)
  • FlightFuel = This is the amount of "Fuel" a character has to maintain flight, required to use the FLY ability.
  • Reaction = NO IDEA HOW THIS STAT EFFECTS ANYTHING, I BELIEVE ITS A LEGACY SETTING FROM WHEN THE GAME HAD A PERCENT CHANGE TO REACT RATHER THAN USING OVERWATCH (NEED MORE INFO)

The second segment is Abilities and appears to be limited to a maximum of SEVEN Abilities however I have not tested adding more than SEVEN so it may be possible to do so. I had intended to included a list of abilities that I know can be swapped around however as I wrote before I have not tested swapping enough to be certain of many of them. Here are the few I did test:

  • CivilianCover = Gives the ability "Head Down" which provides a 10 Defense bonus when used, does not require cover. (Perhaps other effects as well but unknown to me)
  • TakeCover = Gives the ability "Hunker Down" which doubles the Cover Bonus and provides immunity to critical hits, reduces sight radius.

RESERVED FOR FUTURE ADDITIONS

The Third segment is Properties and appears to be limited to a maximum of FIVE Properties however I have not tested adding more than FIVE so it may be possible to do so. I had intended to included a list of Properties that I know can be swapped around however as I wrote before I have not tested swapping enough to be certain of many of them. Here are the few I did test:

RESERVED FOR FUTURE ADDITIONS

The Fourth segment, which I have termed "Functions" is made up of how the character is able to traverse the battlefield and effect its environemnt, made up by a series of TRUE/FALSE statements. These should be more or less self explanatory, but here are the details as I see them:

  • bCanUse_eTraversal_Normal=TRUE/False = Can move across normal terrain
  • bCanUse_eTraversal_ClimbOver=TRUE/False = Can "Vault" over objects like railings, fences, gravestones, etc.
  • bCanUse_eTraversal_ClimbOnto=TRUE/False = Can climb onto terrain that has standable spots and does not require a major height change. (for example, ground to "Porch")
  • bCanUse_eTraversal_ClimbLadder=TRUE/False = Can use ladders to change levels
  • bCanUse_eTraversal_DropDown=TRUE/False = Can drop from a higher level to a lower level without the use of a ladder/stairs
  • bCanUse_eTraversal_Grapple=TRUE/False = Can move to a higher level from a lower level without the use of a ladder/staris
  • bCanUse_eTraversal_Landing=TRUE/False = NO IDEA, PERHAPS TIED TO THE FLY ABILITY SO THAT A CHARACTER TO MOVE FROM FLYING TO WALKING
  • bCanUse_eTraversal_BreakWindow=TRUE/False = Can move through windows by breaking them
  • bCanUse_eTraversal_KickDoor=TRUE/False = Can move through doors by kicking them open
  • bCanUse_eTraversal_JumpUp=TRUE/False = Can do a "Leap" onto higher terrain (Thinmen/Chryssalids)
  • bCanUse_eTraversal_WallClimb=TRUE/False = Similar to climb ladder, treats walls as ladders for the purpose of changing levels
  • bCanUse_eTraversal_BreakWall=TRUE/False = Can knock down walls to move through them (NOT TESTED NO IDEA HOW THIS ACTUALLY FUNCTIONS BUT WOULD BE FUN FOR A JUGGERNAUT LOL RUN)
  • eClass=eSC_None = Is the CLASS of the UNIT (Support/Heavy/Sniper/Assult) (I RECOMMEND NOT CHANGING THIS AS I HAVE NO IdEA HOW IT WILL EFFECT RANKING UP FROM ROOKIE TO SQUADDIE)
  • bHasPsiGift=TRUE/False = Sets the can use PSI abilites flag. (NOT TESTED!! COULD MAKE ALL YOUR SOLDIERS BE PSI CAPABLE, COULD DO NOTHING)

Soldier/NPC UNIT Balance Mods

This section of the DefaultGameCore.INI deals with bonus's/penalties units get on the various difficulty settings, as well as stat increases related to leveling up and few various other settings. Things that should be noted here are that the penalties and bonus's applied to your SOLDIERS in this secion only appear to effect the soldiers you START the game with, NOT soldiers you recruit later. This is likely a bug/unintentional behavior and may be fixed in a future patch. Also of note is that the difficulties listed are NOT the difficulties displayed in game. The equivalences are presented in the table below. So keep that in mind when you adjust "Classic" settings in the INI you are actually adjusting IMPOSSIBLE settings in the game.

Internally BALANCE Modes translate to Game DIFFICULTY setting as follows:

BALANCE Mode Game DIFFICULTY
EASY Tutorial
NORMAL Normal
HARD Classic
CLASSIC Impossible

At present it appears only the BALANCE Mode section values override the values embedded within the compiled XComGame.exe file.

First lets look at the UNIT bonus Penalty table, which is laid out like this:

  • BalanceMods_Easy=(eType=eChar_None, iDamage=0, iCritHit=0, iAim=0, iDefense=0, iHP=0, iMobility=0, iWill=0)

Each MODE has its own separate table, designated by BalanceMods_EASY, NORMAL, HARD, or CLASSIC. Each table has an entry for every UNIT type designated by eType=eChar_UNITTYPENAME, then followed by the bonus's and penalties applied to that unit. If you look back at the CHARACTERS section, you can see what each stat does, what the BASE is for that stat, and then see how the bonus/penalty will effect that unit. All of these settings should be self explanatory but if they are not you can reference back to my previous explanations of what each stat does and figure it out from there.

Note: Will and Mobility modification on difficulty balance for soldiers doesn't seems to work correctly sometimes, need more test.

Next you have a small section dealing with soldiers level up bonus's which is laid out first by listing the WILL gains that all soldiers get upon leveling, and then showing what each individual class gets at each rank. Note that this is NOT broken down to difficulty modes, so no matter what difficulty you play at your soldiers will always use the same tables for stat progression. First I'll cover the WILL increase, listed at thier default values:

  • iRandWillIncrease=6 (This is the random amount of will every soldier gains upon leveling up, listed as the number 6 to mean 1 to 6. A soldier will gain anywhere from 1 to 6 will upon leveling up)
  • iBaseOTSWillIncrease=2 (This is the FLAT will increase soldiers get once you have reseached IRON WILL in the Officer Training School, meaning every soldier will get 2 additional WILL for every level up)
  • iRandOTSWillIncrease=4 (This is the RANDOM will increase soldeiers get once you have researched IRON WILL in the Officer Training School, meaning every solder will get a random amount between 1 and 4 upon leveling up)

With the default settings and with Iron Will your soldiers are capable of getting anywhere from 4 to 12 WILL upon every level up. 1d6+1d4+2 (If you prefer the DICE method)

Next you have the listing for each class:

  • SoldierStatProgression=(eClass=eSC_Support, eRank=eRank_Squaddie, iHP=1, iAim=5, iWill=2, iDefense=0, iMobility=0 )
  • eClass=eSC_Support(HeavyWeapons, Assualt, or Sniper) = Is the CLASS designation for the listing.
  • eRank=eRank_Squaddie(or other rank) = Is the RANK that any soldier of that class will recieve the listed bonuses
  • iHP = The number of additional HP given at that rank
  • iAim = The amount of AIM given at that rank
  • iWill = The amount of WILL given at that rank (note this is in addition to the random will increase listed earlier that all soldiers get regardless of class)
  • iDefense = THIS DOES NOTHING!! It should give bonus defense on rank up, however this setting appears to not function.
  • iMobility = Gives additional movements points at that rank.

Alien 'AIM' and 'CRIT' Bonuses

A common request is to mod one or both of these alien bonuses. Here is a simple procedure that should serve as a model for similar changes:

  1. Download XCOMModHelper (or other tool that enables loose INI file loading). (See the Modding Tools - XCOM:EU 2012 wiki article for a list and links.)
  2. Enable loading of loose INI files (the INI files in the Config folder):
    • If you want to mod XCOM Enemy Unknown (EU), run: XCOMModHelper.exe -c EUConfig.xml
    • If you want to mod XCOM Enemy Within (EW), run: XCOMModHelper.exe -c EWConfig.xml
    You can alternatively edit the resource cache of XComGame.exe or XComEW.exe with tools like Resource Hacker, but editing text files is more comfortable and less likely to be overwritten by patches.
  3. Locate, backup and edit DefaultGameCore.ini:
    • <Steam Installation Path>\SteamApps\common\XCom-Enemy-Unknown\XComGame\Config\ for XCOM Enemy Unknown.
    • <Steam Installation Path>\SteamApps\common\XCom-Enemy-Unknown\XEW\XComGame\Config\ for XCOM Enemy Within.
; Thinman example
;
; BalanceMods_Easy = Easy difficulty
; BalanceMods_Normal = Normal difficulty
; BalanceMods_Hard = Classic difficulty
; BalanceMods_Classic = Impossible difficulty
;
; You are looking for iCritHit and iAim:
BalanceMods_Easy=(eType=eChar_Thinman,iDamage=-2,iCritHit=0,iAim=0,iDefense=0,iHP=-1,iMobility=0,iWill=0)
BalanceMods_Normal=(eType=eChar_Thinman,iDamage=-2,iCritHit=0,iAim=0,iDefense=0,iHP=-1,iMobility=0,iWill=0)
BalanceMods_Hard=(eType=eChar_Thinman,iDamage=0,iCritHit=10,iAim=10,iDefense=0,iHP=0,iMobility=0,iWill=0)
BalanceMods_Classic=(eType=eChar_Thinman,iDamage=0,iCritHit=10,iAim=10,iDefense=0,iHP=2,iMobility=0,iWill=0)

You can check applied changes in game by giving the Thinman some ridiculous health like iHP=10, and then reverting it before resuming normal play.

Country Funding Balance Mods

This section deals with the funding you receive on a monthly basis from the various countries you have satellite coverage for.

At present it appears only the BALANCE Mode values override the values embedded within the compiled XComGame.exe file.

Internally BALANCE Modes translate to Game DIFFICULTY setting as follows:

BALANCE Mode Game DIFFICULTY
EASY Tutorial
NORMAL Normal
HARD Classic
CLASSIC Impossible

Funding Multiplier by BALANCE Mode / Game DIFFICULTY

  • FundingBalance=1.5 ; EASY/Tutorial
  • FundingBalance=1  ; NORMAL/Normal
  • FundingBalance=1  ; HARD/Classic
  • FundingBalance=1  ; CLASSIC/Impossible

The order in which those appear seems to be the only determining factor for their use, and it would seem that this setting only effects the funding from countries with satellites. The funding you get from council missions/abductions is handled elsewhere. This is a MULTIPLIER so leaving it at 1 means you get DEFAULT funding, increasing or decreasing it means you get less/more funding. 2 would be TWICE and .5 would be HALF.

Next up is the country list, which has 36 countries listed as possible funding sources, but only 16 of which show up in game as being capable of sending a satellite to. Perhaps there are 36 for future DLC? Or maybe it was done for country specific versions of the game? Who knows. You can easily edit these values to be whatever you want. However remember that any value that is currently listed as ZERO(0) will NOT add that country to the list of countries you can send satellites to, and seem to have no effect on the game at all.

Country Funding Amounts
  • FundingAmounts=180 ;USA
  • FundingAmounts=150 ;Russia
  • FundingAmounts=100 ;China
  • FundingAmounts=100 ;UK
  • FundingAmounts=100 ;Germany
  • FundingAmounts=80 ;France
  • FundingAmounts=100 ;Japan
  • FundingAmounts=60 ;India
  • FundingAmounts=60 ;Australia
  • FundingAmounts=0 ;Italy
  • FundingAmounts=0 ;SouthKorea
  • FundingAmounts=0 ;Turkey
  • FundingAmounts=0 ;Indonesia
  • FundingAmounts=0 ;Spain
  • FundingAmounts=0 ;Pakistan
  • FundingAmounts=100 ;Canada
  • FundingAmounts=0 ;Iran
  • FundingAmounts=0 ;Israel
  • FundingAmounts=70 ;Egypt
  • FundingAmounts=80 ;Brazil
  • FundingAmounts=70 ;Argentina
  • FundingAmounts=50 ;Mexico
  • FundingAmounts=80 ;SouthAfrica
  • FundingAmounts=0 ;SaudiArabia
  • FundingAmounts=0 ;Ukraine
  • FundingAmounts=100 ;Nigeria
  • FundingAmounts=0 ;Venezuela
  • FundingAmounts=0 ;Greece
  • FundingAmounts=0 ;Columbia
  • FundingAmounts=0 ;Portugal
  • FundingAmounts=0 ;Sweden
  • FundingAmounts=0 ;Ireland
  • FundingAmounts=0 ;Scotland
  • FundingAmounts=0 ;Norway
  • FundingAmounts=0 ;Netherlands
  • FundingAmounts=0 ;Belgium

Finally, there is the CONTINENT bonus sections, that dictates the number of scientists and engineers you get for each continent per difficulty level. This again is a fairly straight forward list of settings that follows this format:

  • ContBalance_Easy=(eCont=eContinent_Africa, iEngineers1=1, iScientists1=0, iEngineers2=2, iScientists2=1, iEngineers3=3, iScientists3=2 )
  • ContBalance_Easy(Normal,Hard,Classic) = the game mode difficulty setting for the bonus scientists/engineers
  • Cont=eContinent_Africa(Asia, Europe, NorthAmerica, SouthAmerica) = the continent that grants those bonus
  • iEngineers/Scientists1(2,3,4,etc) = The NUMBER OF SATELLITES REQUIRED IN THAT CONTINENT TO GET THE BONUES
  • iEngineers/ScientistsX=0,1,2,3, etc = The number of engineers/scientists you get.

XP Levels

At present it appears only the BALANCE section values override the values embedded within the compiled XComGame.exe file.

Psi XP Levels are the XP required to reach each "Rank" of Psi Abilities. None and Rank 1 require 0 Psi XP for obvious reasons, and rank "Volunteer" has what appears to be a setting meant to prevent anyone from ever getting that much from Psi XP alone. There are only 3 RANKS built into the game. Volunteer is a position rather than a rank.

Psi XP Levels (NONE, 1, 2, 3, Volunteer)

  • m_iPsiXPLevels=0
  • m_iPsiXPLevels=0
  • m_iPsiXPLevels=50
  • m_iPsiXPLevels=120
  • m_iPsiXPLevels=10000000

Soldier XP Levels are the amount of XP needed to reach each of the available ranks for your soldiers. This is a pretty straight forward setting that can be easily adjusted to make ;your soldier rank up slower/faster.

Soldier XP Levels (Rookie, Squaddie, Corporal, Sergeant, Lieutenant, Captain, Major, Colonel)

  • m_iSoldierXPLevels=0
  • m_iSoldierXPLevels=90
  • m_iSoldierXPLevels=300
  • m_iSoldierXPLevels=510
  • m_iSoldierXPLevels=745
  • m_iSoldierXPLevels=1100
  • m_iSoldierXPLevels=1560
  • m_iSoldierXPLevels=2150

Constants

These are the initialization values of variables that are used as 'constant values' within the game. Changes to any of these values will probably affect the balance of the game play between the XCOM and Alien sides.

Tactical constants

These are the BASE materials you'll get from killing one of these units, modified by BALANCE Mode/Difficulty.

  • CYBERDISC_ELERIUM=4
  • HFLOATER_ELERIUM=2
  • DRONE_ELERIUM=2
  • SECTOPOD_ELERIUM=10
  • CYBERDISC_ALLOYS=8
  • HFLOATER_ALLOYS=4
  • DRONE_ALLOYS=4
  • SECTOPOD_ALLOYS=15

EW added/moved more Tactical Constants to the DGC.INI file:

  • REACTION_PENALTY=0.7f  ; Reaction fire amount of hit chance.
  • DASHING_REACTION_MODIFIER=0.7f  ; Reaction fire amount of hit chance against a dashing unit.
  • LOW_COVER_BONUS=20 ; The defense increase a unit gains from entering low cover
  • HIGH_COVER_BONUS=40 ; The defense increase a unit gains from entering high cover
  • HUNKER_BONUS=2.0f
  • AIR_EVADE_DEF=20 ; The defense increase a unit gains from air evasion bonus (Has char prop eCP_AirEvade)
  • NO_COVER_DEF=20 ; innate defense value (Has char prop eCP_NoCover)
  • REACTION_PENALTY=0.7f ; Reaction fire amount of hit chance.
  • DASHING_REACTION_MODIFIER=0.7f ; Reaction fire amount of hit chance against a dashing unit.
  • POISONED_AIM_PENALTY=20
  • FOUNDRY_PISTOL_AIM_BONUS=10
  • FOUNDRY_SCOPE_CRIT_BONUS=10
  • FOUNDRY_PISTOL_CRIT_BONUS=20
  • HARDENED_ENEMY_CRIT_VALUE=60
  • FLANKING_CRIT_BONUS=50

Minimum Scatter

MIN_SCATTER controls the minimum accuracy of manually-aimed area-effect attacks, such as Rockets or Grenades, on a scale of 0 to 100. 90 = 90%, and so on.

  • MIN_SCATTER=90

Shoot when Panicked

This appears to be the "Chance" that your soldiers or other NPC units will attempt to shoot a target (friendly or enmey) when they panic. Believed to be shortened percent, meaning its multiplied by 10 or a 50% chance. Needs confirmation.

  • SHOOT_WHEN_PANICKED=5

Terror Infection Chance

Chance of offscreen kills resulting in zombies on Chryssalid terror missions (BALANCE Mode dependent.)

  • TerrorInfectionChance=0  ; EASY/Tutorial
  • TerrorInfectionChance=0  ; NORMAL/Normal
  • TerrorInfectionChance=0.5  ; HARD/Classic
  • TerrorInfectionChance=1  ; CLASSIC/Impossible

A Setting of 1 means you ALWAYS get zombies, even if the kill occured off screen. A setting of .5 is a 50% chance for off screen zombies, and 0 is no chance of off screen zombies.

Note that ON SCREEN Chysallid kills will always turn into zombies regardless of this setting as long as you don't end the mission before they can convert. IE. A body that has not yet gotten up as a Zombie will NOT keep a mission going.

ThinMan Plague Slider

Similar to SHOOT WHEN PANICKED, believed to be a percent chance that a ThinMan will use its Plague ability if its available. (BALANCE Mode dependent.)

  • ThinManPlagueSlider=5  ; EASY/Tutorial
  • ThinManPlagueSlider=5  ; NORMAL/Normal
  • ThinManPlagueSlider=10  ; HARD/Classic
  • ThinManPlagueSlider=10  ; CLASSIC/Impossible


Although it appears to be an integer value, ThinManPlagueSlider is actually a FLOAT


This does affect the probability of a ThinMan using Plague, but in a more subtle way. Abilities are prioritized based on dynamic circumstances, and each ability's priority is used as a weight for randomly selecting which ability will be performed.

The ThinManPlagueSlider is used to set the Plague abilities "Intangible" score component (there are also Offense and Defense components) via:

fScore = -1.00 + class'XGTacticalGameCore'.default.ThinManPlagueSlider[iDiff] / 5.00;
  • A value of 5 results in a priority of 0.0
  • A value of 7.5 results in a priority of 0.5
  • A value of 10 results in a priority of 1.0

For comparison, the "Offense" priority of shooting with a standard shot is compute via:

If mod_hit_chance > 30%

priority = 0.30 + 0.5 * mod_hit_chance + mod_hit_chance * mod_hit_chance

This priority is doubled if the target is the VIP or if the shooting unit is mind-merged.

  • mod_hit_chance of 0.35 results in offense priority of 0.60
  • mod_hit_chance of 0.50 results in offense priority of 0.80
  • mod_hit_chance of 0.70 results in offense priority of 1.14

If mod_hit_chance <= 30%

priority =0.5 * mod_hit_chance + mod_hit_chance * mod_hit_chance
  • mod_hit_chance of 0.25 results in offense priority of 0.19
  • mod_hit_chance of 0.20 results in offense priority of 0.14
  • mod_hit_chance of 0.10 results in offense priority of 0.06


Instead of the base hit chance, a modified form that gives a bonus for shooting at wounded targets is used:

mod_hit_chance = hit_chance + 0.07 for each HP below 5  (for target)
  • Target has 1 HP : +0.28
  • Target has 2 HP : +0.21
  • Target has 3 HP : +0.14
  • Target has 4 HP : +0.07
  • Target has 5+ HP : +0.00

Death Blossom Slider

Similar to SHOOT WHEN PANICKED, believed to be a percent chance that a Cyberdisc will use its Death Blossom ability, however the presence of the 20 on Impossible difficulty makes one wonder about the percentage. (BALANCE Mode dependent.)

  • DeathBlossomSlider=5  ; EASY/Tutorial
  • DeathBlossomSlider=5  ; NORMAL/Normal
  • DeathBlossomSlider=10  ; HARD/Classic
  • DeathBlossomSlider=20  ; CLASSIC/Impossible


Blood Call Slider

Similar to SHOOT WHEN PANICKED, believed to be a percent chance that a Muton will use Blood Call ability. (BALANCE Mode dependent.)

  • BloodCallSlider=5  ; EASY/Tutorial
  • BloodCallSlider=5  ; NORMAL/Normal
  • BloodCallSlider=10  ; HARD/Classic
  • BloodCallSlider=10  ; CLASSIC/Impossible

Alien Grenade Slider

Same as above, only this is the chance that an alien who CAN use grenades, WILL use grenades. The presence of 0.25 here makes one wonder about the chances, as people have seen grenades used often enough on normal to know its not 0.25% chance. We really need someone to find the reference point in the code to where this number is used in a calculation. (BALANCE Mode dependent.)

  • AlienGrenadeSlider=0.25
  • AlienGrenadeSlider=0.25
  • AlienGrenadeSlider=1
  • AlienGrenadeSlider=10

Maximum Active AI Units

Maximum number of aliens that can be attacking you at one time. -1 == no limit.

This setting determines the Maximum number of units who will make attacks per round, not just against you, but also againt NPC civilians. Setting this higher/lower has a major effect on "Terror" missions as the off screen aliens will just go to town killing civilians. Combine with Off Screen infection chance for good times!! (BALANCE Mode dependent.)

  • MaxActiveAIUnits=5  ; EASY/Tutorial
  • MaxActiveAIUnits=5  ; NORMAL/Normal
  • MaxActiveAIUnits=-1  ; HARD/Classic
  • MaxActiveAIUnits=-1  ; CLASSIC/Impossible

Aim Bonuses & Penalties

These settings affect aim bonuses or penalties when attacking an enemy within CLOSE_RANGE. This aim bonus is calculated using the following: ([CLOSE_RANGE]-[Distance from Enemy]) X [AIM_CLIMB] == [Aim Bonus] An example would be a soldier with a base aim of 65 attacking a flanked sectoid from 10 blocks away: (14-10) X 3 == 12%. Add this to the soldiers base aim of 65% for a final hit chance of 77%.

CLOSE_RANGE : The distance at which an enemy is considered to be in "Close Range" and thus obtains aim bonuses or penalties. (Default is 14 grid blocks)
ASSAULT_LONG_RANGE_MAX_PENALTY : The maximum penalty an assault weapon can receive at any distance. It can never drop beyond this value. (Default is 40%)
AIM_CLIMB : The aim bonus in percent that non sniper/assault weapons receive when in CLOSE_RANGE, per grid block. (Default is 3% per grid block)
ASSAULT_AIM_CLIMB : The aim bonus in percent that assault class weapons receive when in CLOSE_RANGE, per grid block. (Default is 4% per grid block)
SNIPER_AIM_FALL : The aim penalty in percent that sniper class weapons receive when in CLOSE_RANGE, per grid block. (Default is -2% per grid block)
  • CLOSE_RANGE = 14.0f
  • ASSAULT_LONG_RANGE_MAX_PENALTY = -40
  • AIM_CLIMB = 3.0f
  • ASSAULT_AIM_CLIMB = 4f
  • SNIPER_AIM_FALL = -2.0f

UFO LURK Chance

Percentile chances that a UFO will linger (LURK) after it has completed its mission, allowing it to be spotted and attacked on the GeoScape. Ref: XComGame.upk >> XGOvermind >> DetermineUFOTactics().

They also determine what unactivated alien pods do in tactical missions. Pods are either set to lurk or patrol. Lurking pods sit still and wait to be activated. Patrol pods move around. See XGTactic_Lurk class and XGTactic_Patrol class for the details of the behaviors. Ref: XComGame.upk >> XGOvermind >> DetermineAbductionTactics().

See discussion in thread Turning on alien pods on the Nexus Forums.

  • ABDUCTION_LURK_PCT=50
  • SMALL_UFO_LURK_PCT=0
  • LARGE_UFO_LURK_PCT=50

Grapple Distance

The MAXIMUM movement units a use of the grapple ability will move you. The game counts all height (Z) level changes as a single point of movement, which is why the grapple will yank you to the top of buildings from really far away. Setting this higher/lower will of course increase/decrease the distance you can grapple onto roofs.

  • GRAPPLE_DIST=15

Max Critical Wound

The percentage of the original shot damage value that can contribute to the critical damage, for example in tabletop terms: If BASE damage of 10 means you can get a critical hit of up to 90% (9) meaning total possible damage = 19. In tests lowered this to 50 and critical hits (total damage shown) are lower as anticipated. Worth bearing in mind that just because your base damage is 10, it doesn't mean you will HIT for 10... you may hit for 5, meaning your critical damage max would then be 4 = 9.

MAX_CRIT_WOUND=90

Fragment Balance

Perhaps a multiplier to the number of Weapon Fragments recovered based upon the Game Mode of (Easy,Normal,Classic,Impossible).

FragmentBalance seems to govern how many weapon fragments you get from each alien killed without explosives. A sectoid plasma pistol when FB=1 returns about eight fragments; at .25 (the default) that number is 2 fragments. (BALANCE Mode dependent.)

  • FragmentBalance=0.25  ; EASY/Tutorial
  • FragmentBalance=0.25  ; NORMAL/Normal
  • FragmentBalance=0.25  ; HARD/Classic
  • FragmentBalance=0.25  ; CLASSIC/Impossible

Strategy Game Constants

Abduction Reward

Covers how much cash/scientists/engineers you are awarded when you complete an Abduction Mission.

  • ABDUCTION_REWARD_CASH=200
  • ABDUCTION_REWARD_SCI=4
  • ABDUCTION_REWARD_ENG=4

Council Day

Perhaps the minimum number of days, and then the range of random days added to the minimum that must pass before a new council mission is offered. Needs testing.

  • COUNCIL_DAY=20
  • COUNCIL_RAND_DAYS=7

Council Funding

Similar to the funding multiplier for Satellites in the previous section, these setting multiple the amount of CASH funding you get for the random council missions. (BALANCE Mode dependent.)

  • COUNCIL_FUNDING_MULTIPLIER_EASY = 1.5f  ; EASY/Tutorial
  • COUNCIL_FUNDING_MULTIPLIER_NORMAL = 1  ; NORMAL/Normal
  • COUNCIL_FUNDING_MULTIPLIER_HARD = 1  ; HARD/Classic
  • COUNCIL_FUNDING_MULTIPLIER_CLASSIC= 1  ; CLASSIC/Impossible

UFO Constants

Detect the UFOs that are carrying out abductions and terror missions BEFORE they start them. This allows you to shoot down the UFO's before hand. 0 = no, 1 = yes.

  • ShowUFOsOnMission=0

AI Terrorize Most Panicked

Chance that the Terror Attack will occur in the MOST PANICKED country. This of course gives you the chance to lower panic in those countries by completing the mission. Basically a game saver as long as you don't screw up the mission.

  • AI_TERRORIZE_MOST_PANICKED = 75

UFO Visibility Chance

Haven't entirely worked this out yet but essentially you have UFOs flying around all the time, unseen by the player. Generally the player gets to see 1 UFO per month with a percentile chance of a second UFO becoming visible.

EARLY & LATE referring to before & after the Alien Base assault mission is completed.

UFO_LIMIT appears to be a cap on the # of UFOs that the player can be given in any month - so if the abduction/terror UFOs are enabled, then you will get the chance to see only 2 total, regardless of "second-chance" UFOs flying around. When increased to 4, encountered a standard UFO, an abduction UFO, then a third small UFO. As this raised no other event, can only assume was a "second chance" UFO (which was shot down and got a mission for). This after raising both EARLY and LATE UFO chances to 75. Needs confirmation.

LATE_UFO_CHANCE = 50 ; Chance of Aliens sending out a second UFO in the months after you've defeated the base. EARLY_UFO_CHANCE = 50 UFO_LIMIT = 2 UFO_INTERCEPTION_PCT=66

Chance that a UFO will require interception - " I *think* that this is the percentage that any "Observed UFO" will need to be intercepted by the player i.e. is "made visible" to the player, so even if you get a second-chance UFO you may not need to intercept it - but that is pretty much a guess and only makes a lot of sense if the abduction/terror UFOs were enabled, so it may be legacy code..... Big chunk of guessing in there. :-0 "

BASE Balance Factors

Make it cost more/less resources to build things vs BASE depending on what you set these to; 1 being BASE, 2 being TWO times BASE, 0.5 being half base. and 0 being FREE. Item time balance is a straight multiplier of the time required to build an item. e.g. ItemBalance=(eItem=eItem_Satellite,iCash=150,iElerium=0, iAlloys=0, iTime=20, iEng=5) ITEM_TIME_BALANCE=3 will turn those 20 days into 60 days (tested, verified). Woorks with percentiles, so item balance = 1.2 will add 20% time to the iTime of each eItem.

  • TECH_TIME_BALANCE=6.66
  • ITEM_TIME_BALANCE=1
  • ITEM_CREDIT_BALANCE=1
  • ITEM_ELERIUM_BALANCE=1
  • ITEM_ALLOY_BALANCE=1
  • FACILITY_COST_BALANCE=1
  • FACILITY_MAINTENANCE_BALANCE=1
  • FACILITY_TIME_BALANCE=1

ALLOY UFO BALANCE

Multiplier of Alloys you get from UFO's. (BALANCE Mode dependent.)

  • ALLOY_UFO_BALANCE=2.5  ; EASY/Tutorial
  • ALLOY_UFO_BALANCE=2  ; NORMAL/Normal
  • ALLOY_UFO_BALANCE=2  ; HARD/Classic
  • ALLOY_UFO_BALANCE=2  ; CLASSIC/Impossible

ELERIUM UFO BALANCE

Amount of Elerium you get PER INTACT POWER SOURCE on a UFO. (BALANCE Mode dependent.)

  • UFO_ELERIUM_PER_POWER_SOURCE=30  ; EASY/Tutorial
  • UFO_ELERIUM_PER_POWER_SOURCE=25  ; NORMAL/Normal
  • UFO_ELERIUM_PER_POWER_SOURCE=25  ; HARD/Classic
  • UFO_ELERIUM_PER_POWER_SOURCE=25  ; CLASSIC/Impossible

ALLOY UFO BASE

The BASE Alloys each ship type gives BEFORE the ALLOY Multiplier is used.
  • UFOAlloys=30 ;eShip_UFOSmallScout
  • UFOAlloys=60 ;eShip_UFOLargeScout
  • UFOAlloys=80 ;eShip_UFOAbductor
  • UFOAlloys=100 ;eShip_UFOSupply
  • UFOAlloys=130 ;eShip_UFOBattle
  • UFOAlloys=60 ;eShip_UFOEthereal

UFO Wreck Losses

Percentages of Alloys/Elerium lost to damage/wreck. Not sure if this is done before or after the multiplier. So assuming a SMALL UFO on NORMAL MODE that was UNDAMAGED (set down) and you DIDN'T destroy any of its structure during a mission the calculation COULD be: BASE 30 x MULTIPLIER 2 x RANDOMIZED WRECK LOSS 0 in this case = 60 Alloy for perfect clear. Now, if you shot it down it would be a wreck and would then roll a RANDOM percent loss of total alloy between 50% and 90%. Needs confirmation.

  • MIN_WRECKED_ALLOYS=0.5
  • MAX_WRECKED_ALLOYS=0.9
  • MAX_LOST_WRECKED_ELERIUM=0.75
  • MIN_LOST_WRECKED_ELERIUM=0.5

Research/Laboratories

Number of starting scientists, the MINIMUM number of scientists you need for your first lab, then the MULTIPLE you need for each additional Lab (First at 6, second at 11, third at ; 16, etc). The time reduction bonus you get per lab, in this case 1.2 means you are getting a 20% BONUS per lab in research time reduction. Adjacency bonus of 1.1 works the same ; way, giving you a 10% additional bonus in time reduction.

  • NUM_STARTING_SCIENTISTS=5
  • LAB_MINIMUM=6
  • LAB_MULTIPLE=5
  • LAB_BONUS=1.2
  • LAB_ADJACENCY_BONUS=1.1

Engineering/Workshops

Identical to the research/lab section, only for engineers. Here the percentages are clearly stated as such, so for each adjacent lab you are getting a 7% cost REFUND (not cost reduction) on foundry projects, item building, and facility building. ENG BONUS is the number of engineers each workshop gives.

  • NUM_STARTING_ENGINEERS=5
  • WORKSHOP_MINIMUM=6
  • WORKSHOP_MULTIPLE=10
  • WORKSHOP_REBATE_PCT=7
  • WORKSHOP_ENG_BONUS=5

Satellite Control Multiples

Uplink/Nexus multiple is the number of Engineers you need AFTER the first one is built. So your first Satellite uplink required 5, then 15, then 25, then 35.

  • UPLINK_MULTIPLE=10
  • NEXUS_MULTIPLE=15

Soldier Values

The number of Soldiers you start the game with, and the maximum number of soldiers you can have recruited at one time.

  • NUM_STARTING_SOLDIERS=12
  • BARRACKS_CAPACITY=99

Soldier Variations

When "Second Wave" is enabled and you use the "Not Created Equally" setting, the Soldiers you start the game with will have a RANDOM stat value between the LOW and the HIGH values listed here (NOTE: Overrides stats listed on the SOLDIER character profile). Your rookie recruits will have the values listed in the ROOKIE section.

  • LOW_AIM=50 ;Random chance variation for aim? Seems only a medium stat value
  • HIGH_AIM=80 //Random chance variation for aim? Seems only a medium stat value
  • LOW_MOBILITY=12 //Random chance variation for mobility? Seems only a medium stat value
  • HIGH_MOBILITY=14 //Random chance variation for mobility? Seems only a medium stat value
  • LOW_WILL=20 //Stat medium, changing this is necessary when the starting will has been modified, keep same range of value ex: with start will 70 lower 50 hight 90
  • HIGH_WILL=60 //Stat medium, changing this is necessary when the starting will has been modified, keep same range of value ex: with start will 70 lower 50 hight 90
  • ROOKIE_AIM=65 //Confirmed work value allowed between 1-200. May not be safe use more than 155.
  • ROOKIE_MOBILITY=12 //Confirmed work limit untested
  • ROOKIE_STARTING_WILL=40 //Confirmed work value allowed between 1-200. May not be safe use more than 140.

PSI Related

This number is the divisor used in a calculation to determine the % chance that a soldier will have the Psi gift, Lower numbers Increase the chance, Higher numbers Decrease the chance. If you want virtually all soldiers to be Psionic make this a 0.1 (In theory the chance go beyond 100%) Setting this to 1 give a 44.5-52.5% depending on rank, lower rank seems to have higher chance.

  • PSI_GIFT_CHANCE=4

If your first PSI_TEST_LIMIT soldiers are not psi-capable, your next soldier is guaranteed to be positive. At the default value of 5, this would be the first soldier added to the second batch, as the psi-testing is resolved in reverse order.

  • PSI_TEST_LIMIT=5

Training hours is the number of hours it takes to test for Psionic ability (24hr a day, 240 = 10days). Training slots is the number of slots in the training facility, default being ; 3 of course. I have raised this at high as 7 with no problems, it can probably go higher but I have not tested it higher then 7.

  • PSI_TRAINING_HOURS=240
  • PSI_NUM_TRAINING_SLOTS=3


Soldier Recovery

When a soldier is injured on a mission this is the BASE and then RANDOM ADDITIONAL days it takes before the soldier is fully healed and able to return to combat. 1d6+4

  • BASE_DAYS_INJURED = 4
  • RAND_DAYS_INJURED = 6

Soldier Recruitment

How much money it takes to recruit soldiers, per difficulty level.

  • SOLDIER_COST=10
  • SOLDIER_COST_HARD=15
  • SOLDIER_COST_CLASSIC=15

Tank Values

Settings related to SHIVS (Known at TANKS in most settings). Base days to repair + random days, 1d4+1. How many base HP they have. This value are the bonus hit points the SHIV posses over the normal soldier hp value, increasing this give the SHIV more hp.

  • BASE_DAYS_INJURED_TANK = 1
  • RAND_DAYS_INJURED_TANK = 4
  • ALLOY_SHIV_HP_BONUS = 8
  • HOVER_SHIV_HP_BONUS = 8

Headquarters Balance Mode Values

Internally BALANCE Modes translate to Game DIFFICULTY setting as follows:

BALANCE Mode Game DIFFICULTY
EASY Tutorial
NORMAL Normal
HARD Classic
CLASSIC Impossible

Money you start with on all difficulty settings (NOTE IT IS EFFECTED BY THE FUNDING MULTIPLIER)

  • HQ_STARTING_MONEY = 100

BASE money you get each month, before income from satellites are added. (BALANCE Mode dependent.)

  • BASE_FUNDING = 175  ; EASY/Tutorial
  • BASE_FUNDING = 175  ; NORMAL/Normal
  • BASE_FUNDING = 75  ; HARD/Classic
  • BASE_FUNDING = 50  ; CLASSIC/Impossible

The power granted for free by the base depending on difficulty level. BASE Power that your Base has. (BALANCE Mode dependent.)

  • HQ_BASE_POWER = 40  ; EASY/Tutorial
  • HQ_BASE_POWER = 35  ; NORMAL/Normal
  • HQ_BASE_POWER = 30  ; HARD/Classic
  • HQ_BASE_POWER = 30  ; CLASSIC/Impossible

Base Facility Values

The amount of additional power that each generator type will create and the adjacency bonus for having multiple generators next to each other.
Note it's necessary to change the FacilityBalance relatives to the generator if this value are modified.

  • POWER_NORMAL = 6
  • POWER_THERMAL = 20
  • POWER_ELERIUM = 30
  • POWER_ADJACENCY_BONUS = 2

This appears to be the RANDOM number of steam vents you can have, ranging from 1-3 in the case of default settings. Increase for more possible steam vents. Note that the MAXIMUM number of spaces in the BASE is 35 (7x5). Increasing this number HIGHER than 35 may cause bugs/crashes if you happen to randomly get more than 35 possible steam vents.

  • NUM_STARTING_STEAM_VENTS = 3

Listed in HOURS how long it takes to Refuel, Repair (regardless of how much damage), Rearm (change weapons), or Transfer to a new continent.

  • INTERCEPTOR_REFUEL_RATE=24
  • INTERCEPTOR_REPAIR_HOURS=168
  • INTERCEPTOR_REARM_HOURS = 24
  • INTERCEPTOR_TRANSFER_TIME = 72

How much CASH it costs per month to maintain your skyranger (a setting that I think is stupid as you will ALWAYS have one and you can't build more.. so why is this even a setting, ; perhaps in a previous build you could have more than one.. who knows). And BASE Squad size BEFORE Officer training school upgrades. You could set this to 6 to have a squad size of ; 6 right off, but increasing it beyond 6 seems to cause problems. Please check the increased squad size thread for more info on this.

  • BASE_SKYRANGER_MAINTENANCE = 20
  • SKYRANGER_CAPACITY = 4

How many satellites each Satellite uplink type can support. Basic is 2, Nexus is 4, and adjacency is 1 additional per.

  • UPLINK_CAPACITY = 2
  • UPLINK_ADJACENCY_BONUS = 1
  • NEXUS_CAPACITY = 4

Seems to relate to the number of spaces in the BASE you have to work with to build facilities.

  • NUM_TERRAIN_WIDE = 7
  • NUM_TERRAIN_HIGH = 5

How much it costs to excavate a BASE square (BEFORE DEPTH MULTIPLIER), how many days it takes, and how much it costs to remove a facility and how many days it takes to remove. Some think there was a typo here and they meant for it to be FREE to remove facilities but that it should take 5 days to do it, as the 5 credit cost is just stupid, and the instant removal of a facility which took days to build (or dirt that took 5 days to remove) makes little to no sense.

  • BASE_EXCAVATE_CASH_COST = 10
  • BASE_REMOVE_CASH_COST = 5
  • BASE_EXCAVATE_DAYS = 5
  • BASE_REMOVAL_DAYS = 0

Mission Timers

How many hours you have to start the mission before it disappears and you get the panic penalty for not doing the mission.

  • UFO_CRASH_TIMER = 48
  • TERROR_TIMER = 30
  • UFO_LANDED_TIMER = 30
  • ABDUCTION_TIMER = 30

UFO WRECK Values

Percent chances that different "Goods" on UFO's will be intact after being shot down. PS = Power Source, NAV = Flight Navigation Computer, STASIS = Stasis Pod, Surgery = Alien Surgery ; Bed, and the rest don't need explaining.

  • UFO_PS_SURVIVE = 33
  • UFO_NAV_SURVIVE = 50
  • UFO_STASIS_SURVIVE = 25
  • UFO_SURGERY_SURVIVE = 25
  • UFO_ENTERTAINMENT_SURVIVE = 25
  • UFO_FOOD_SURVIVE = 25
  • UFO_HYPERWAVE_SURVIVE = 100
  • UFO_FUSION_SURVIVE = 100
  • UFO_PSI_LINK_SURVIVE = 100

Percent chances that a UFO that is NOT shot down will find and destroy your satellite over that country.

  • UFO_FIND_STEALTH_SAT = 25
  • UFO_FIND_SAT = 100
  • UFO_SECOND_PASS_FIND_STEALTH_SAT=50
  • UFO_SECOND_PASS_FIND_SAT=100

PANIC Base Values

  • PANIC_TERROR_CONTINENT=2 ;How many Panic points the continent gets from a terror attack
  • PANIC_TERROR_COUNTRY=2 ;How many Panic points the country gets from a terror attack
  • PANIC_UFO_SHOOTDOWN=-1 ;Panic reduction for shooting down a UFO over a country for that country
  • PANIC_UFO_ASSAULT=-1 ;Panic reduction for assulting a landed/crashed UFO in a country
  • PANIC_SAT_DESTROYED_CONTINENT=1 ;Panic increase for the continent if a satelite is destroyed
  • PANIC_SAT_DESTROYED_COUNTRY=2 ;Panic increase of the country if a satelite is destroyed
  • PANIC_SAT_ADDED_COUNTRY=-2 ;Panic reduction for adding a satelite to a country
  • PANIC_SAT_ADDED_CONTINENT=0 ;Panic reduction for adding a satelite to a country for that countries continent
  • PANIC_ALIENBASE_CONQUERED=-2 ;Global panic reduction for completing the alien base assualt
  • PANIC_UFO_IGNORED=2 ;Panic increase for an ignoreed UFO in that country
  • PANIC_UFO_ESCAPED=1 ;Panic increase for an escaped UFO in that country

BALANCE Mode Panic Values

Internally BALANCE Modes translate to Game DIFFICULTY setting as follows:

BALANCE Mode Game DIFFICULTY
EASY Tutorial
NORMAL Normal
HARD Classic
CLASSIC Impossible

Panic added to a country for a missed/aborted Abduction mission. (BALANCE Mode dependent.)

  • PANIC_ABDUCTION_COUNTRY_EASY=1  ; EASY/Tutorial
  • PANIC_ABDUCTION_COUNTRY_NORMAL=1  ; NORMAL/Normal
  • PANIC_ABDUCTION_COUNTRY_HARD=1  ; HARD/Classic
  • PANIC_ABDUCTION_COUNTRY_CLASSIC=2  ; CLASSIC/Impossible

Panic added to a continent for a missed/aborted Abduction mission. (BALANCE Mode dependent.)

  • PANIC_ABDUCTION_CONTINENT_EASY=1  ; EASY/Tutorial
  • PANIC_ABDUCTION_CONTINENT_NORMAL=1  ; NORMAL/Normal
  • PANIC_ABDUCTION_CONTINENT_HARD=1  ; HARD/Classic
  • PANIC_ABDUCTION_CONTINENT_CLASSIC=1 ; CLASSIC/Impossible

Panic reduction for completing an Abduction mission.

  • PANIC_ABDUCTION_THWARTED_CONTINENT=0 ; for that continent
  • PANIC_ABDUCTION_THWARTED_COUNTRY=-3 ; for that country

Total GLOBAL panic at the start of the game. (BALANCE Mode dependent.)

  • STARTING_PANIC_EASY=0  ; EASY/Tutorial
  • STARTING_PANIC_NORMAL=0  ; NORMAL/Normal
  • STARTING_PANIC_HARD=8  ; HARD/Classic
  • STARTING_PANIC_CLASSIC=16  ; CLASSIC/Impossible

BALANCE Mode Panic Defection Chance Rolls

Internally BALANCE Modes translate to Game DIFFICULTY setting as follows:

BALANCE Mode Game DIFFICULTY
EASY Tutorial
NORMAL Normal
HARD Classic
CLASSIC Impossible

Amount of Panic needed for a country to leave the XCOM Project. (BALANCE Mode dependent.)

  • PANIC_DEFECT_THRESHHOLD_EASY=5  ; EASY/Tutorial
  • PANIC_DEFECT_THRESHHOLD_NORMAL=5  ; NORMAL/Normal
  • PANIC_DEFECT_THRESHHOLD_HARD=5  ; HARD/Classic
  • PANIC_DEFECT_THRESHHOLD_CLASSIC=5  ; CLASSIC/Impossible

If a country has X panic and you don't help it, it will leave 100% of the time. (BALANCE Mode dependent.)

  • PANIC_DEFECT_THRESHHOLD_NOT_HELPED_EASY=5  ; EASY/Tutorial
  • PANIC_DEFECT_THRESHHOLD_NOT_HELPED_NORMAL=5  ; NORMAL/Normal
  • PANIC_DEFECT_THRESHHOLD_NOT_HELPED_HARD=5  ; HARD/Classic
  • PANIC_DEFECT_THRESHHOLD_NOT_HELPED_CLASSIC=5 ; CLASSIC/Impossible

Maximum number of countries that can leave the project per month due to panic. (BALANCE Mode dependent.)

  • PANIC_DEFECTIONS_PER_MONTH_EASY=1  ; EASY/Tutorial
  • PANIC_DEFECTIONS_PER_MONTH_NORMAL=2  ; NORMAL/Normal
  • PANIC_DEFECTIONS_PER_MONTH_HARD=3  ; HARD/Classic
  • PANIC_DEFECTIONS_PER_MONTH_CLASSIC=8  ; CLASSIC/Impossible

Percent Chance of defection based on the number of panic blocks a country has.
NOTE THAT to even START checking, a country needs 5, so at a minimum there is a 50% chance a country will leave once the checking starts. (BALANCE Mode dependent.)

  • PANIC_DEFECT_CHANCE_PER_BLOCK_EASY=10  ; EASY/Tutorial
  • PANIC_DEFECT_CHANCE_PER_BLOCK_NORMAL=10  ; NORMAL/Normal
  • PANIC_DEFECT_CHANCE_PER_BLOCK_HARD=10  ; HARD/Classic
  • PANIC_DEFECT_CHANCE_PER_BLOCK_CLASSIC=10  ; CLASSIC/Impossible

If country has satellite, "Chance of Leaving", BLOCK REDUCTION for the PANIC DEFECT CHANCE, basicly a 10% reduction in chance. (BALANCE Mode dependent.)

  • SAT_HELP_DEFECT=1  ; EASY/Tutorial
  • SAT_HELP_DEFECT=1  ; NORMAL/Normal
  • SAT_HELP_DEFECT=1  ; HARD/Classic
  • SAT_HELP_DEFECT=1  ; CLASSIC/Impossible

Else If continent has one or more satellite, "Chance of Leaving" BLOCK REDUCTION for the PANIC DEFECT CHANCE, basicly a 10% reduction in chance. (BALANCE Mode dependent.)

  • SAT_NEARBY_HELP_DEFECT=1  ; EASY/Tutorial
  • SAT_NEARBY_HELP_DEFECT=1  ; NORMAL/Normal
  • SAT_NEARBY_HELP_DEFECT=1  ; HARD/Classic
  • SAT_NEARBY_HELP_DEFECT=1  ; CLASSIC/Impossible

If a country has a satellite, it will remove panic once a month, but the chance of this happening is PANIC_REDUCTION_CHANCE (below). (BALANCE Mode dependent.)

  • SAT_PANIC_REDUCTION_PER_MONTH=1  ; EASY/Tutorial
  • SAT_PANIC_REDUCTION_PER_MONTH=1  ; NORMAL/Normal
  • SAT_PANIC_REDUCTION_PER_MONTH=1  ; HARD/Classic
  • SAT_PANIC_REDUCTION_PER_MONTH=1  ; CLASSIC/Impossible

Percent chance that a country will reduce panic because it has a satelite, see SAT_PANIC_REDUCTION_PER_MONTH above. Applies to PANIC LEVEL 5. (BALANCE Mode dependent.)

  • PANIC_5_REDUCTION_CHANCE=100  ; EASY/Tutorial
  • PANIC_5_REDUCTION_CHANCE=100  ; NORMAL/Normal
  • PANIC_5_REDUCTION_CHANCE=50  ; HARD/Classic
  • PANIC_5_REDUCTION_CHANCE=50  ; CLASSIC/Impossible

Percent chance that a country will reduce panic because it has a satelite, see SAT_PANIC_REDUCTION_PER_MONTH above. Applies to PANIC LEVEL 4. (BALANCE Mode dependent.)

  • PANIC_4_REDUCTION_CHANCE=50  ; EASY/Tutorial
  • PANIC_4_REDUCTION_CHANCE=50  ; NORMAL/Normal
  • PANIC_4_REDUCTION_CHANCE=25  ; HARD/Classic
  • PANIC_4_REDUCTION_CHANCE=25  ; CLASSIC/Impossible

Percent chance that a country will reduce panic because it has a satelite, see SAT_PANIC_REDUCTION_PER_MONTH above. Applies to PANIC LEVEL 3 or less. (BALANCE Mode dependent.)

  • PANIC_LOW_REDUCTION_CHANCE=25  ; EASY/Tutorial
  • PANIC_LOW_REDUCTION_CHANCE=25  ; NORMAL/Normal
  • PANIC_LOW_REDUCTION_CHANCE=10  ; HARD/Classic
  • PANIC_LOW_REDUCTION_CHANCE=10  ; CLASSIC/Impossible

Starting Continent Bonuses

These directly relate to the percent bonuses you get for your starting continent and then for satellite coverage. NOTE that the south american bonus of instant interogation/autopsy ; is not listed. The bonus's are FUNDING BONUS (30% increased funding for Africa), FUTURE COMBAT (50% Foundry and OTS cost reduction, AIR AND SPACE(50% Aircraft build/maintenance ; reduction, EXPERT(50% reduction in cost of workshops/labs). All of these can be freely adjusted and the changes reflect in the game. You want to make things FREE go right ahead. ; lol

  • CB_FUNDING_BONUS=30
  • CB_FUTURECOMBAT_BONUS=50
  • CB_AIRANDSPACE_BONUS=50
  • CB_EXPERT_BONUS=50

Second Wave

Second Wave options are options that were originally intended to be enabled for additional playthroughs after you complete the game for the first time. The developers were not able ; to finish them completely so they may/may not work as intended. I do NOT recommend changing these settings other than ENABLING THEM (ENABLE_SECOND_WAVE = 1) as they may have many ; unintended game breaking consequences.

  • ENABLE_SECOND_WAVE = 0
  • SW_FLANK_CRIT=100
  • SW_COVER_INCREASE=1.5f
  • SW_SATELLITE_INCREASE=1.45f
  • SW_ELERIUM_HALFLIFE=24
  • SW_ELERIUM_LOSS=0.05f
  • SW_ABDUCTION_SITES=4
  • SW_RARE_PSI=8
  • SW_MARATHON=2.0f
  • SW_MORE_POWER=2.0f

The settings for Species Points Limit are dependent on the console the game is running on.
The AssetCost for each alien has no bearing on the difficulty of the alien, but seems to correlate with the complexity of the model/animation.
E.g. Sectoids are 100 points, Drones are 75 points, Outsider is 50 points, Sectopod is 75 points. This is used by the function CostAlienSquad(out TAlienSquad kSquad).

  • SPECIES_POINT_LIMIT=500

Presumably the minimum distance at which a kill cam will trigger. Considering the MAXIMUM range for weapons in this game is 100 by default, this setting ensures that there will ALWAYS be a kill. Not confirmed.

  • KILL_CAM_MIN_DIST=720.0

ITEM Base Balance Costs

List of all items in the game and the BASE cost for them.
BALANCE Mode / Game DIFFICULTY adjustments will be applied to these costs.

  • ItemBalance=(eItem=eItem_Medikit, iCash=25, iElerium=0, iAlloys=0, iTime=7, iEng=5)
  • ItemBalance=(eItem=eItem_ArcThrower, iCash=35, iElerium=0, iAlloys=0, iTime=7, iEng=5)
  • ItemBalance=(eItem=eItem_TargetingModule, iCash=20, iElerium=0, iAlloys=0, iTime=7, iEng=5)
  • ItemBalance=(eItem=eItem_ReinforcedArmor, iCash=20, iElerium=0, iAlloys=0, iTime=7, iEng=5)
  • ItemBalance=(eItem=eItem_ChitinPlating, iCash=85, iElerium=0, iAlloys=10, iTime=7, iEng=15)
  • ItemBalance=(eItem=eItem_CombatStims, iCash=50, iElerium=0, iAlloys=5, iTime=7, iEng=15)
  • ItemBalance=(eItem=eItem_MindShield, iCash=150,iElerium=30,iAlloys=10, iTime=10, iEng=35)
  • ItemBalance=(eItem=eItem_Skeleton_Key, iCash=25, iElerium=10,iAlloys=10, iTime=7, iEng=15)
  • ItemBalance=(eItem=eItem_LaserPistol, iCash=10, iElerium=0, iAlloys=10, iTime=7, iEng=10)
  • ItemBalance=(eItem=eItem_LaserAssaultRifle, iCash=25, iElerium=0, iAlloys=15, iTime=7, iEng=12)
  • ItemBalance=(eItem=eItem_LaserAssaultGun, iCash=30, iElerium=0, iAlloys=25, iTime=7, iEng=12)
  • ItemBalance=(eItem=eItem_LaserSniperRifle, iCash=35, iElerium=0, iAlloys=25, iTime=7, iEng=12)
  • ItemBalance=(eItem=eItem_HeavyLaser, iCash=30, iElerium=0, iAlloys=25, iTime=7, iEng=12)
  • ItemBalance=(eItem=eItem_PlasmaPistol, iCash=100,iElerium=10,iAlloys=20, iTime=10, iEng=20)
  • ItemBalance=(eItem=eItem_PlasmaLightRifle, iCash=125,iElerium=15,iAlloys=20, iTime=10, iEng=20)
  • ItemBalance=(eItem=eItem_PlasmaAssaultRifle, iCash=200,iElerium=20,iAlloys=30, iTime=10, iEng=20)
  • ItemBalance=(eItem=eItem_AlloyCannon, iCash=200,iElerium=20,iAlloys=50, iTime=12, iEng=25)
  • ItemBalance=(eItem=eItem_HeavyPlasma, iCash=250,iElerium=30,iAlloys=30, iTime=10, iEng=25)
  • ItemBalance=(eItem=eItem_PlasmaSniperRifle, iCash=250,iElerium=25,iAlloys=30, iTime=15, iEng=25)
  • ItemBalance=(eItem=eItem_BlasterLauncher, iCash=275,iElerium=65,iAlloys=50, iTime=15, iEng=35)
  • ItemBalance=(eItem=eItem_ArmorCarapace, iCash=25, iElerium=0, iAlloys=15, iTime=10, iEng=10)
  • ItemBalance=(eItem=eItem_ArmorSkeleton, iCash=30, iElerium=0, iAlloys=10, iTime=10, iEng=15)
  • ItemBalance=(eItem=eItem_ArmorTitan, iCash=150,iElerium=10,iAlloys=35, iTime=10, iEng=25)
  • ItemBalance=(eItem=eItem_ArmorArchAngel, iCash=200,iElerium=35,iAlloys=50, iTime=14, iEng=35)
  • ItemBalance=(eItem=eItem_ArmorGhost, iCash=250,iElerium=50,iAlloys=40, iTime=14, iEng=40)
  • ItemBalance=(eItem=eItem_ArmorPsi, iCash=400,iElerium=40,iAlloys=20, iTime=10, iEng=30)
  • ItemBalance=(eItem=eItem_SHIV, iCash=50, iElerium=0, iAlloys=0, iTime=7, iEng=5)
  • ItemBalance=(eItem=eItem_SHIV_Alloy, iCash=75, iElerium=0, iAlloys=20, iTime=7, iEng=10)
  • ItemBalance=(eItem=eItem_SHIV_Hover, iCash=100,iElerium=20,iAlloys=30, iTime=7, iEng=20)
  • ItemBalance=(eItem=eItem_Interceptor, iCash=40, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_Firestorm, iCash=200,iElerium=20,iAlloys=40, iTime=14, iEng=20)
  • ItemBalance=(eItem=eItem_Satellite, iCash=100,iElerium=0, iAlloys=0, iTime=20, iEng=5)
  • ItemBalance=(eItem=eItem_IntWeap_I, iCash=35, iElerium=0, iAlloys=0, iTime=7, iEng=5)
  • ItemBalance=(eItem=eItem_IntWeap_III, iCash=35, iElerium=0, iAlloys=25, iTime=7, iEng=10)
  • ItemBalance=(eItem=eItem_IntWeap_IV, iCash=100,iElerium=20,iAlloys=20, iTime=10, iEng=20)
  • ItemBalance=(eItem=eItem_IntWeap_V, iCash=200,iElerium=20,iAlloys=30, iTime=10, iEng=30)
  • ItemBalance=(eItem=eItem_IntWeap_VI, iCash=150,iElerium=20,iAlloys=30, iTime=10, iEng=35)
  • ItemBalance=(eItem=eItem_IntConsumable_Hit, iCash=10, iElerium=0, iAlloys=0, iTime=0, iEng=5)
  • ItemBalance=(eItem=eItem_IntConsumable_Dodge, iCash=50, iElerium=0, iAlloys=0, iTime=0, iEng=10)
  • ItemBalance=(eItem=eItem_IntConsumable_Boost, iCash=20, iElerium=0, iAlloys=0, iTime=0, iEng=10)
  • ItemBalance=(eItem=eItem_Elerium115, iCash=3, iElerium=1, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_AlienAlloys, iCash=2, iElerium=0, iAlloys=1, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_WeaponFragment, iCash=1, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_UFOPowerSource, iCash=75, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_UFONavigation, iCash=40, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_AlienFood, iCash=10, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_AlienEntertainment, iCash=17, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_AlienStasisTank, iCash=10, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_AlienSurgery, iCash=25, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_UFOFusionLauncher, iCash=125,iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_DamagedUFOPowerSource, iCash=30, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_DamagedUFONavigation, iCash=20, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_DamagedAlienFood, iCash=5, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_DamagedAlienEntertainment,iCash=5,iElerium=0,iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_DamagedAlienStasisTank,iCash=5, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_DamagedAlienSurgery, iCash=10, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_DamagedHyperwaveBeacon,iCash=45, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_SectoidCorpse, iCash=5, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_FloaterCorpse, iCash=5, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_ThinManCorpse, iCash=5, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_MutonCorpse, iCash=5, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_CryssalidCorpse, iCash=5, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_CyberdiscCorpse, iCash=7, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_SectopodCorpse, iCash=10, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_DroneCorpse, iCash=2, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_EtherealCorpse, iCash=15, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_SectoidCommanderCorpse,iCash=10, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_BerserkerCorpse, iCash=5, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_MutonEliteCorpse, iCash=8, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
  • ItemBalance=(eItem=eItem_FloaterHeavyCorpse, iCash=6, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)

FACILITIES Base Balance Costs

List of all the Facilities in the game and the BASE cost for them.
BALANCE Mode / Game DIFFICULTY adjustments will be applied to these costs.

  • FacilityBalance=( eFacility=eFacility_AccessLift, iCash=50, iElerium=0, iAlloys=0, iMaintenance=10, iTime=5, iPower=-2)
  • FacilityBalance=( eFacility=eFacility_ScienceLab, iCash=125, iElerium=0, iAlloys=0, iMaintenance=24, iTime=10, iPower=-3)
  • FacilityBalance=( eFacility=eFacility_Workshop, iCash=130, iElerium=0, iAlloys=0, iMaintenance=26, iTime=10, iPower=-3)
  • FacilityBalance=( eFacility=eFacility_SmallRadar, iCash=150, iElerium=0, iAlloys=0, iMaintenance=15, iTime=14, iPower=-5)
  • FacilityBalance=( eFacility=eFacility_Power, iCash=60, iElerium=0, iAlloys=0, iMaintenance=11, iTime=5, iPower=6);MAKE SURE TO SYNC THIS WITH POWER_NORMAL
  • FacilityBalance=( eFacility=eFacility_Foundry, iCash=75, iElerium=0, iAlloys=0, iMaintenance=20, iTime=10, iPower=-3)
  • FacilityBalance=( eFacility=eFacility_OTS, iCash=125, iElerium=0, iAlloys=0, iMaintenance=25, iTime=8, iPower=-3)
  • FacilityBalance=( eFacility=eFacility_AlienContain, iCash=85, iElerium=0, iAlloys=0, iMaintenance=18, iTime=7, iPower=-5)
  • FacilityBalance=( eFacility=eFacility_LargeRadar, iCash=300, iElerium=0, iAlloys=25, iMaintenance=26, iTime=21, iPower=-8)
  • FacilityBalance=( eFacility=eFacility_ThermalPower, iCash=200, iElerium=0, iAlloys=0, iMaintenance=23, iTime=8, iPower=20);MAKE SURE TO SYNC THIS WITH POWER_THERMAL
  • FacilityBalance=( eFacility=eFacility_EleriumGenerator, iCash=275, iElerium=30,iAlloys=40, iMaintenance=29, iTime=14, iPower=30);MAKE SURE TO SYNC THIS WITH POWER_ELERIUM
  • FacilityBalance=( eFacility=eFacility_PsiLabs, iCash=200, iElerium=20,iAlloys=20, iMaintenance=30, iTime=14, iPower=-3)
  • FacilityBalance=( eFacility=eFacility_HyperwaveRadar, iCash=175, iElerium=0, iAlloys=10, iMaintenance=30, iTime=14, iPower=-4)
  • FacilityBalance=( eFacility=eFacility_DeusEx, iCash=200, iElerium=10,iAlloys=10, iMaintenance=100,iTime=14, iPower=-5)

FOUNDRY PROJECT Base Balance Costs

List of all the Foundry Projects in the game and the BASE cost for them.
BALANCE Mode / Game DIFFICULTY adjustments will be applied to these costs.

  • FoundryBalance=(eTech=eFoundry_SHIV, iTime=7, iEngineers=5, iCash=70, iElerium=0, iAlloys=0, iFragments=0, iNumItems=0, eReqTech=eTech_None,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_AlienGrenades, iTime=7, iEngineers=20,iCash=75, iElerium=10,iAlloys=25,iFragments=20,iNumItems=1, eReqTech=eTech_Exp_Warfare,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_SHIV_Heal, iTime=7, iEngineers=10,iCash=70, iElerium=15,iAlloys=15,iFragments=0, iNumItems=0, eReqTech=eTech_EMP, eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_CaptureDrone, iTime=14,iEngineers=10,iCash=175,iElerium=0, iAlloys=0, iFragments=20,iNumItems=4, eReqTech=eTech_AutopsyDrone,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_MedikitII, iTime=14,iEngineers=15,iCash=125,iElerium=0, iAlloys=0, iFragments=20,iNumItems=4, eReqTech=eTech_AutopsyThinMan,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_ArcThrowerII, iTime=14,iEngineers=10,iCash=100,iElerium=20,iAlloys=20,iFragments=20,iNumItems=4, eReqTech=eTech_Elerium,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_AmmoConservation, iTime=14,iEngineers=15, iCash=150,iElerium=0, iAlloys=90,iFragments=20,iNumItems=6, eReqTech=eTech_AutopsyMuton,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_AutomatedLasers, iTime=7, iEngineers=10, iCash=100,iElerium=0, iAlloys=30,iFragments=15,iNumItems=0, eReqTech=eTech_HeavyLasers, eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_AutomatedPlasma, iTime=7, iEngineers=20,iCash=200,iElerium=30,iAlloys=45,iFragments=30,iNumItems=0, eReqTech=eTech_Plasma_Heavy,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_AdvancedFlight, iTime=14,iEngineers=25,iCash=325,iElerium=50,iAlloys=50,iFragments=0, iNumItems=2, eReqTech=eTech_Armor_ArchAngel,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_AdvancedConstruction, iTime=14,iEngineers=30,iCash=375,iElerium=30,iAlloys=50,iFragments=20,iNumItems=2, eReqTech=eTech_AutopsySectopod,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_VehicleRepair, iTime=14,iEngineers=20,iCash=175,iElerium=10,iAlloys=30,iFragments=0, iNumItems=4, eReqTech=eTech_AutopsyHeavyFloater,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_PistolI, iTime=7, iEngineers=5, iCash=75, iElerium=0, iAlloys=0, iFragments=5, iNumItems=0, eReqTech=eTech_None, eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_PistolII, iTime=7, iEngineers=10,iCash=150,iElerium=0, iAlloys=20,iFragments=25,iNumItems=0, eReqTech=eTech_LaserWeapons,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_PistolIII, iTime=14,iEngineers=20,iCash=250,iElerium=20,iAlloys=20,iFragments=50,iNumItems=0, eReqTech=eTech_Plasma_Pistol,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_SHIVSuppression, iTime=7, iEngineers=15,iCash=40, iElerium=0, iAlloys=0, iFragments=0, iNumItems=0, eReqTech=eTech_None,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_StealthSatellites, iTime=7, iEngineers=20,iCash=150,iElerium=20,iAlloys=20,iFragments=0, iNumItems=3, eReqTech=eTech_AlienNavigation,eReqItem=eItem_None)
  • FoundryBalance=(eTech=eFoundry_Scope, iTime=7, iEngineers=10,iCash=75, iElerium=0, iAlloys=0, iFragments=15,iNumItems=0, eReqTech=eTech_WeaponFragments,eReqItem=eItem_None)

OTS Base Balance Costs

List of the officer training school upgrades the BASE cost for them.
BALANCE Mode / Game DIFFICULTY adjustments will be applied to these costs.

  • OTSBalance=(eTech=eOTS_Will_I, iCash=200, eRank=eRank_Major)
  • OTSBalance=(eTech=eOTS_SquadSize_I, iCash=50, eRank=eRank_Sergeant)
  • OTSBalance=(eTech=eOTS_XP_I, iCash=125, eRank=eRank_Sergeant)
  • OTSBalance=(eTech=eOTS_HP_I, iCash=150, eRank=eRank_Lieutenant)
  • OTSBalance=(eTech=eOTS_SquadSize_II, iCash=75, eRank=eRank_Captain)
  • OTSBalance=(eTech=eOTS_XP_II, iCash=250, eRank=eRank_Major)
  • OTSBalance=(eTech=eOTS_HP_II, iCash=275, eRank=eRank_Colonel)

TECHS Costs

List of all researchable technologies in the game and the BASE cost for them.
BALANCE Mode / Game DIFFICULTY adjustments will be applied to these costs.

  • TechBalance=(eTech=eTech_WeaponFragments, iTime=2, iAlloys=0, iElerium=0, iNumFragments=5, iNumItems=0)
  • TechBalance=(eTech=eTech_AlienMaterials, iTime=2, iAlloys=0, iElerium=0, iNumFragments=5, iNumItems=0)
  • TechBalance=(eTech=eTech_Exp_Warfare, iTime=3, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_Xenobiology, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=4)
  • TechBalance=(eTech=eTech_LaserWeapons, iTime=6, iAlloys=5, iElerium=0, iNumFragments=10, iNumItems=0)
  • TechBalance=(eTech=eTech_PrecisionLasers, iTime=8, iAlloys=5, iElerium=0, iNumFragments=5, iNumItems=0)
  • TechBalance=(eTech=eTech_HeavyLasers, iTime=8, iAlloys=5, iElerium=0, iNumFragments=5, iNumItems=0)
  • TechBalance=(eTech=eTech_Plasma_Pistol, iTime=15, iAlloys=0, iElerium=5, iNumFragments=40, iNumItems=1)
  • TechBalance=(eTech=eTech_Plasma_Light, iTime=17, iAlloys=0, iElerium=5, iNumFragments=40, iNumItems=1)
  • TechBalance=(eTech=eTech_Plasma_Rifle, iTime=17, iAlloys=10, iElerium=10, iNumFragments=40, iNumItems=1)
  • TechBalance=(eTech=eTech_Plasma_Heavy, iTime=17, iAlloys=10, iElerium=10, iNumFragments=40, iNumItems=1)
  • TechBalance=(eTech=eTech_Plasma_Sniper, iTime=15, iAlloys=10, iElerium=10, iNumFragments=50, iNumItems=0)
  • TechBalance=(eTech=eTech_Alloy_Cannon, iTime=15, iAlloys=25, iElerium=5, iNumFragments=40, iNumItems=0)
  • TechBalance=(eTech=eTech_BlasterLauncher, iTime=20, iAlloys=20, iElerium=10, iNumFragments=75, iNumItems=0)


  • TechBalance=(eTech=eTech_Plasma_Cannon, iTime=10, iAlloys=0, iElerium=10, iNumFragments=30, iNumItems=0)
  • TechBalance=(eTech=eTech_EMP, iTime=20, iAlloys=0, iElerium=20, iNumFragments=0, iNumItems=40)
  • TechBalance=(eTech=eTech_Fusion_Launcher, iTime=15, iAlloys=10, iElerium=20, iNumFragments=50, iNumItems=0)


  • TechBalance=(eTech=eTech_ArcThrower, iTime=3, iAlloys=0, iElerium=0, iNumFragments=10, iNumItems=0)
  • TechBalance=(eTech=eTech_BaseShard, iTime=3, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_AlienNavigation, iTime=5, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=2)
  • TechBalance=(eTech=eTech_UFOPowerSource, iTime=7, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)
  • TechBalance=(eTech=eTech_Firestorm, iTime=15, iAlloys=10, iElerium=10, iNumFragments=75, iNumItems=0)
  • TechBalance=(eTech=eTech_Elerium, iTime=7, iAlloys=0, iElerium=10, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_Armor_Carapace, iTime=7, iAlloys=10, iElerium=0, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_Armor_Skeleton, iTime=10, iAlloys=15, iElerium=0, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_Armor_Titan, iTime=20, iAlloys=15, iElerium=5, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_Armor_Ghost, iTime=17, iAlloys=15, iElerium=15, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_Armor_ArchAngel, iTime=17, iAlloys=15, iElerium=15, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_PsiArmor, iTime=15, iAlloys=10, iElerium=10, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_Hyperwave, iTime=8, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_PsiLink, iTime=10, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=0)


  • TechBalance=(eTech=eTech_InterrogateSectoid, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_InterrogateFloater, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_InterrogateMuton, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_InterrogateThinMan, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_InterrogateEthereal, iTime=10,iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_InterrogateBerserker, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_InterrogateMutonElite, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_InterrogateHeavyFloater, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=0)
  • TechBalance=(eTech=eTech_InterrogateSectoidCommander, iTime=6, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=0)


  • TechBalance=(eTech=eTech_AutopsySectoid, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)
  • TechBalance=(eTech=eTech_AutopsyFloater, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)
  • TechBalance=(eTech=eTech_AutopsyMuton, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)
  • TechBalance=(eTech=eTech_AutopsyThinMan, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)
  • TechBalance=(eTech=eTech_AutopsyCryssalid, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)
  • TechBalance=(eTech=eTech_AutopsyEthereal, iTime=6, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)
  • TechBalance=(eTech=eTech_AutopsyCyberdisc, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)
  • TechBalance=(eTech=eTech_AutopsyDrone, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)
  • TechBalance=(eTech=eTech_AutopsySectopod, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)
  • TechBalance=(eTech=eTech_AutopsyBerserker, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)
  • TechBalance=(eTech=eTech_AutopsyMutonElite, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)
  • TechBalance=(eTech=eTech_AutopsyHeavyFloater, iTime=2, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)
  • TechBalance=(eTech=eTech_AutopsySectoidCommander, iTime=3, iAlloys=0, iElerium=0, iNumFragments=0, iNumItems=1)

Various other settings

[XComGame.XComPrecomputedPath]

  • BlasterBombSpeed=500.0f

Recent Discoveries

There have been a couple of recent (April-May 2013) discoveries that affect the need for or use of some of XCOM Modding tools. They are summarized here for reference.

Phoning Home

When using mods, it is necessary to prevent each game from connecting to it's update servers behind your back. However, the DNS entry is clearly for a vendor specific address. This appears to be a vendor verifier (i.e. "Firaxis Verifier", in this case) independent of those patches distributed via Steam. They may not be 'patches' per se, but merely replacements of certain files to ensure consistency. This is informally called 'phoning home' and initially was believed to be intended to be a Steam mechanism to prevent cheating in Multi-Player games. However, it has now been determined to affect single-player games as well.

Those interested in the mechanism involved in this 'phone home' process are referred to the Class: IniLocPatcher - XCOM:EU 2012 article.

This edit to the hosts file is not affected by Steam delivered patches or re-installing Steam and does not affect your ability to get updated when you go back to 'Online' mode for ANY reason (such as connecting to the Steam Store). Note this should be used in conjunction with disabling 'auto-updates' for your XCOM game in the Steam Library. Be aware, however, that since November of 2013 XCOM patches seem to disregard this Steam 'auto-updates' setting and have been known to apply regardless. Having a backup copy of your complete modded XCOM game tree current and available elsewhere is recommended as well.

At present, the EU 'phone home' process is known to overwrite Armors, Characters, and Weapons arrays of the EXE internal resource cache version of the DefaultGameCore.INI file, and the ...\My Documents\My Games\XCOM - Enemy Unknown\ file XComGameCore.INI file which is a merged copy from the DGC.INI and DLC content.

  • My Games\XCOM - Enemy Unknown\XComGame\Logs\EMS\
  • XComDLC.ini (XComGame.XComDLCManager)
  • XComGame.int (XComGame.XComDLCManager)
  • XComGameCore.ini (overwriting Armors, Characters and Weapons arrays)
  • XComMPGame.ini (overwriting a lot of MP related arrays)

These may be in My Games (if you have DLCs installed) or the <Steam install path> equivalent path, or both. If you are having problems with mods that alter one of these files not seeming to 'stick', check that your hosts file has the correct servers disabled according to the Launch.log as described below.

To determine where your game attempts to communicate, you want to examine your \My Games\<Steam Game folder>\Logs\Launch.log file. You are looking for lines similar to these:

The entries marked like so are:

  1. The Server IP address: 65.118.245.165
  2. The Server DNS Name: prod.xcom.firaxis.com

These are what you will place into the hosts file to block attempts to connect.

  • Start Menu > Right click on 'Notepad' (or any text editor), select "Run as Administrator"
    • File > Open > %systemroot%\system32\drivers\etc\hosts. The hosts file has no '.' suffix, so make sure you don't add .txt or anything else. Also, %systemroot% on most systems is C:\Windows, but the exact folder name may vary by OS version. The value of the global environmental variable %systemroot% on your system can be determined by entering 'set' on the Windows command line, or as it's shortcut is called, the Command Prompt. But the variable %systemroot% (including the percent "%" signs) can safely be used without knowing it's actual value.
    • Add these three lines to the hosts file:
      (The first line is a comment. The next two lines do the actual work, but are specific to XCOM:Enemy Unknown 2012. Other games may have their own DNS names [i.e. prod.xcom.firaxis.com] and IP addresses [i.e. 65.118.245.165]. The '127.0.0.1' IP address is a local loopback address the prevents attempts to connect to either of the other addresses from ever leaving your computer.)

# Prevent XCOM:EU from Phoning Home
127.0.0.1 prod.xcom.firaxis.com
127.0.0.1 65.118.245.165

  • Save the file.

NOTE: The "Enemy Within" (EW) expansion to XCOM:EU 2012 uses it's own DNS and IP address entries:

# Prevent XCOM:EW from Phoning Home
127.0.0.1 prod.xcom-ew.firaxis.com
127.0.0.1 65.118.245.139

However, early reports (13 Nov 2013) that disabling these addresses in hosts will prevent EW from launching have been attributed to other factors, such as failing to also disable 'auto-updates'. Save game synching with Cloud Storage still functions correctly, even with these addresses disabled.

The XCOM-EW expansion is proof that other DNS and IP addresses can be utilized by the same or different games. Care should be taken to check the Launch.log file as outlined above for changes with each patch or major release.

Disabling Hash checks

Enabling INI loading

Most likely reason for any failure to load the DGC.INI is that (assuming you have the EW version of the game) you modified the DGC.INI in the wrong folder tree. EU is under "XCom-Enemy-Unknown", while EW is under "XCom-Enemy-Unknown\XEW".

Try this to test that the loose DGC.INI file is loading:

  • Edit the DGC.INI as follows:
  • Replace the Original 'eItem_Shotgun' line 'Properties[1]=eWPAssault' entry with '=eWP_Anyclass' as shown below. You can just copy and paste this SINGLE line with any text editor. (Save your '.BAK' file to restore the original DGC.INI.)
  • Load any previous save where you are in the XCOM base (the Strategy game phase) or play a new game to that point, go into the Barracks, View Soldiers, and change the Loadout of a Support class (which couldn't without this change and doesn't have any other class restrictions that might prevent it, as is the case with a Heavy). The 'vanilla' DGC.INI that's in the embedded 'Resource cache' only permits an Assault to equip a Shotgun. With this change, any class can that doesn't have other built-in restrictions.
  • Anyone other than an Assault class equipping a Shotgun proves you are loading the DGC from the correct '\config' folder.

INI file size limitations

Increased Load Times

Enemy Within

Extending/Replacing Functions

In early Dec 2013, wghost81 discovered it was possible to alter the UPK Package information so the game would utilize an expanded or replacement function of any size. This frees the mod creator from the constraint of keeping their code changes to within the original byte size limitations of the vanilla function, as well as providing the possibility to add new functions exclusive to your own mods. See the Hex editing UPK files article entry Hex editing III: Extending/Replacing Functions for details.


This information has been included (via Template:Recent Discoveries - XCOM:EU 2012) in the following articles:

References

Referred to by this article:


That refer to this article:


Personal tools