Jump to content


Long War EW Proto-Wiki

  • This topic is locked This topic is locked
7 replies to this topic



    Resident poster

  • Supporter
  • PipPipPipPipPip
  • 7,425 posts

Only devs should be able to post here, but it may be unlocked momentarily while we are editing it. Requests for details on certain mechanics should be posted in either the Beta or main mod thread.

Also, we're unlikely to post precise numbers here, especially while we're in Beta (those numbers could rapidly become outdated) and for numbers that are available by looking in DefaultGameCore.ini.



UPDATE: Long Warrior Orost and others have begun a proper wiki project cataloging Long War information. See:


Edited by johnnylump, 25 June 2014 - 02:41 pm.



    Resident poster

  • Supporter
  • PipPipPipPipPip
  • 7,425 posts
How PSI training works, by Amineri:

There's very likely going to be some tweaking of the values as we go forward, and a fair amount of stuff is configurable via the DGC.ini, but here's my initial tab at the values:
1) Without More Than Human active, if unit has Will == targetWill, then there is a 50% chance of success. Success chance increases asymptotically to 100% as Will goes to infinity. There is only a 0% chance if the unit somehow had 0 Will (which is effectively impossible)
2) With More Than Human active, if the unit has WIll == targetWill then there is a 25% chance of success.

Both the 50% and 25% numbers are configurable in the DGC.ini via the PSI_GIFT_CHANCE and SW_RARE_PSI values in the DGC.ini.

The targetWill I had to hard-code into the upk code. Currently it's set up as:
1) Rank 1 powers : targetWill = 60
2) Rank 2 powers : targetWill = 70
3) Rank 3 powers : targetWill = 80
4) Rank 4 powers : targetWill = 90
5) Rank 5 power : targetWill = 100
6) Rank 6 power : targetWill = 120

The ratio of soldierWill/targetWill is also used to determine how long it takes to train each power. If soldierWill == targetWill it takes 10 days to train (defined via PSI_TRAINING_HOURS in DGC.ini)

Note that if anything I've tried to err on the side of making it too difficult to get psi powers. Psi powers are introduced earlier in the game and I wanted to make sure it wasn't going to be too easy to steamroll through the psionic ranks.

In addition to the above, soldiers have to earn PsiXP (although there is now psi mission XP). Also each power has to be unlocked -- typically via a research project (usually interrogation, but a couple of autopsies as well). There is a also a special condition to unlock Rift prior to selecting a Volunteer.



    Resident poster

  • Supporter
  • PipPipPipPipPip
  • 7,425 posts
How randomized initial stats are calculated, from Amineri:

Unfortunatly the Rookie initial stats stuff I ended up having to hard-code in a rather hacked-up manner due to some problems with not having access to local variables in the RandomizeStats and RollForStat code.
>> HP = 3; Offense = 50; Defense = -5; Mobility = 9; Will = 16
The above represents the floor for stats. All stat randomization adds to the above. In vanilla it started with the average and used +/- from there, but I coded it starting from the lowest and adding stats.

There is a "points" system present. By default each rookie gets 48 points for stats. If World Diversity is enabled (without Strict Screening) then each rookie gets 38 + rand(11) + rand(11) starting points instead.

Stats are worth the following points:
HP : 6 points
Mobility : 4 points
Aim : 1 point
Defense : 1 point
Will : 1 point

How it's actually rolled works like so:
1) Roll Mobility -- 4 50% rolls, so +0-4 mobility
2) Roll HP -- 2 50% rolls, so +0-2 HP
3) Roll Aim -- 3 rolls of 2 * rand(6), so +0-10 for each roll and +0-30 aim total
4) Roll Defense -- 2 rolls of rand(6), so +0-5 for each roll and +0-10 defense total
5) Remaining points into Will

At each step the either the 50% coin toss or the rand(6) roll is tweaked based on the remaining points vs expected points left which helps keep the final points spent to the total allowed for the soldier.

For example, a soldier with 48 points to spend after having rolled Mobility and HP on average will have 34 points remaining (6 points spent on +1 HP and 8 points spent on +2 Mobility for 14 out of 48 points spent). Each aim roll is adjusted with the formula :
>> AimIncrease = 2 * Min(5, int(FRand() * float(6) * float(RemainingPoints) / float(19+5*(3-NumberAimRollsMade)) ))

So the first roll has :
AimIncrease = 2 * Min(5, int(FRand() * float(6) * float(RemainingPoints) / float(34)
Second roll has :
AimIncrease = 2 * Min(5, int(FRand() * float(6) * float(RemainingPoints) / float(29)
Third roll has :
AimIncrease = 2 * Min(5, int(FRand() * float(6) * float(RemainingPoints) / float(24)

What this does is biases the randomization up or down based on previous rolls. If lots of points have already been spent then it's less likely to get high rolls, and conversely if few points have been spent its more likely to get higher rolls.

Currently to change how the stats are randomized requires changing the hex code in both RandomizeStats and RollForStat. I do have a plan to eventually tie key parameters to the DGC.ini variables but haven't got to it yet.



    Resident poster

  • Supporter
  • PipPipPipPipPip
  • 7,425 posts
New and changed Perks


Absorption Field: Damage reduction is capped at 40 percent of damage taken.
Automated Threat Assessment: Unit in overwatch gains +15 defense against first shot against him/her, and a half-point of damage reduction
Bombard: Throw all grenades at much longer ranges
Close Encounters: Old Close & Personal
Fast Mover: Unit gains +2 mobility (note 1 mobility roughly equals 2/3 of a tile in a straight line over even terrain)
Grenadier: Carry two HE, AP or Alien grenades in one item slot; throw grenades at longer ranges
Hard Target: Unit gains +1 Damage Reduction
HEAT Warheads: Rockets and grenades do additional damage to robotic enemies
Javelin Rockets: Increased rocket range, can now hit targets beyond visual range
Light 'Em Up: Old Bullet Swarm/Overdrive/Mectoid Plasma Barrage
Lightning Reflexes: All overwatch fire against this unit takes place at a 75% (not -75) penalty
Lock N' Load: +2 shots/bursts when taken as a perk tree perk; when conferred by Hi Cap Mags item, +1 shot/burst
Lone Wolf: Bonus aim and critical chance if you are 7 tiles distant from allies
Neural Damping: Per vanilla, but soldier is ineligible for Psi training with this perk.
Neural Feedback: Protection potentially extends to nearby soldiers
Psi Shadow: Old Mimetic Skin (although not as powerful)
Ranger: +1 damage with your primary weapon and rocket launchers
Repair: Confers +2 charges for Arc Throwers
Packmaster: Vanilla Deep Pockets/Expanded Storage
Psychokinetic Strike: The Psi can blow up some cover in view
Sapper: +1 damage with AP and HE grenades, +2 damage with Alien grenades, triple environmental damage for all weapons
Sharpshooter: Bonus critical chance; bonus aim against targets in full cover
Smart Macrophages: Medikits and Restorative Mist heal more hp
Smoke and Mirrors: Carry two Smoke Grenades, Flashbangs, Chem Grenades, Ghost Grenades or Battlescanners in one item slot, also increases charges from Smoke Grenade and Battlescanner perks by 1
Smoke Grenade: Per vanilla, but if taken as a perk tree perk, deploying a smoke grenade as your first action does not end your turn.
Snap Shot: On snipers, per vanilla. On rocketeers, reduces the range penalty for launching a rocket after moving.Steadfast: Never panic from allies panicking, or being wounded or killed
Squadsight: As vanilla, but with -30% critical chance instead of crits being entirely eliminated. Also, overwatch fire cannot take place at critical ranges.
Suppression: Suppressing an enemy confers a -30 penalty to that unit's aim, reduces the range of all of his/her/its AOE attacks, and provides a free reaction shot if that unit moves. The reaction shot fires *after* the unit leaves cover.

Leader Perks:
Note that only the perks for the commanding officer on the mission are applied to the entire squad. A second, lower-ranking officer on a mission gains the perk bonuses only for him/herself.

Lead by Example: Squad leader shares will with nearby lower-will soldiers
Legio Patria Nostra: Squad receives +1 will per nationality in squad
Stay Frost: Post-mission fatigue reduced by one day
Semper Vigilans: Squad members receive bonus defense when in cover
Fortiores Una: Squad members receive bonus damage reduction when in cover
Into the Breach: Squad members at sergeant rank or lower gain +25% mission XP
So Shall You Fight: Squad members gain +25% kill XP
Band of Warriors: Squad members gain +2 aim bonus for each continent bonus that XCOM has earned
Esprit de Corps: Squad members receive will and defense bonuses.
So Others May Live: Squad members receive permanent aim and will stat increases when completing a mission under this officer with no soldier deaths, up to a maximum of +10.
Combined Arms: Squad reduces enemy cover-based damage reduction by 1.

Edited by johnnylump, 03 May 2014 - 04:49 pm.



    Resident poster

  • Supporter
  • PipPipPipPipPip
  • 7,425 posts
Various upgrades:

* Officers
- Cannot train psi powers
- Cannot convert to MECs
- Can acquire genemods

To promote an officer:
- You must have an available billet. Billets are unlocked by OTS upgrades. The full set of billets are 3 lieutenants, 2 captains, 2 majors, 2 colonels, 1 field commander. Higher-rank billets may be filled by lower-rank officers. (In other words, if you've unlocked captain, you can have 5 lieutenants, or 4 lieutenants and 1 captain, or 3 lieutenants and 2 captains.) If an officer is killed, the billet will cycle back and open up again after a few missions.
- To promote to captain and above, you must have 5 missions "in-grade" (at your current officer rank). So a major must go on five missions as a major before being able to promote to colonel.
- You must have achieved a minimum rank on the regular perk tree. Corporals can promote to lieutenant; Sergeants (or sergeant-equivalents) to captain, etc.

* Psis
- Cannot become officers
- Cannot convert to MECs
- Can acquire any genemods except Neural Damping
- Soldiers with Neural Damping cannot acquire psi abilities

* MECs
- Cannot become officers
- Cannot train psi powers
- Cannot acquire genemods

Edited by johnnylump, 02 May 2014 - 02:15 am.



    Resident poster

  • Supporter
  • PipPipPipPipPip
  • 7,425 posts
How damage reduction works, by Amineri:

- Damage Reduction occurs within the function XGUnit.AbsorbDamage.
- This occurs after Damage Randomization and most perk/item benefits are applied
- HEAT and Shredder bonus damage are applies after AbsorbDamage
- Explosive +/- 1 per unit hit is applied after AbsorbDamage

The steps in AbsorbDamage are:
1) Unit with ShieldHP>0 (i.e. Mechtoids) has damage reduced by 50%
2) Unit with ShockAbsorbantArmor perk has damage reduced by 33% if damage-dealing unit is within 4 tiles distance
3) Unit with AbsorptionFields perk reduced damage based on formula fReturnDamage = fReturnDamage * (0.6 + 0.4 * Min(1, 2/fReturnDamage))
4) Unit with general damage reduction stat set in DGC.ini BalanceMods has damage reduced by that amount
5) Unit with IronSkin perk has damage reduced by 1.0
6) Unit with HardTarget perk has damage reduced by 1.0
7) Unit with DamageControl perk active has damage reduced by 1.5
8 ) Unit with CombatStims active has damage reduced by 40%
9) Units wearing Chyrssalid plating (or Chryssalids) get Melee/KSM damage reduced by 40%
10) SHIVs get damage reduced based on type -- basic: 1.5, alloy, 2.5, Hover, 2.0
11) MECs get damage reduced by 1.0
12) If unit is poisoned, then 50% of reduced damage is restored
13) Cover DR is applied:
13a) Only applies if unit is not flanked by attacker, unless weapon is a Needle Grenade
13b) Low Cover damage reduced by 0.667, OR Full Cover damage reduced by 1.0
13c) If Hunkered Down, then if in Low Cover damage reduced by -0.667 OR Full Cover damage reduced by 1.0
13d) If unit has WillToSurvive perk, damage reduced by 1.5
13e) If Unit has FortioresUna perk, damage reduced by 0.5
13f) If attacking unit has Combined Arms perk, damage increased by 1.0 -- this cannot do more than negate cover damage reduction from 13b-13-e
14) If attacking unit has armor-piercing ammo, damage increased by 1.0 -- this cannot do more than negate damage reduction from all sources above
15) Any fractional damage is randomized using if(FRand() < (fReturnDamage - float(FFloor(fReturnDamage)))

As a simple example, if a unit were to have two sources of 0.5 DR, then they add up to 1.0 DR, which is a guaranteed -1 damage. This happens instead of two separate 50% rolls for resisting one point of damage. Further, this allows finer tuning of multiplicative DR amounts and makes them more meaningful when applied to certain cases (e.g. 50% DR with odd amount of damage).

This can get a little complex. For example, a MEC with Damage Control activated (provides +1.5 DR) and Absorption fields (provides sliding DR amount depending on damage dealt) that is hit with a 9 damage shot ends with :
1) AbsorptionFields perk reduces damage to 9 * (0.6 + 0.4 (2/9)) = 6.2 damage -- effectively 2.8 DR against a 9 damage shot
2) Damge Control then reduces the 6.2 damage by -1.5 to 4.7 damage
3) The fraction 0.7 has a 70% chance to go up and a 30% chance to go down, so 70% of the time the unit would take 5 damage and 30% of the time would take 4 damage.



    Resident poster

  • Supporter
  • PipPipPipPipPip
  • 7,425 posts

In vanilla : Rockets had a 90% chance to hit the exact aim point, and a 10% chance to deviate by an average 10+rand(15) in azimuth (the actual scatter amount was randomized uniformly). To my mind there are two flaws with this system :
1) The shot is either perfectly accurate or misses by a lot
2) The soldier aim doesn't matter

Point 2 is particularly problematic for Long War because the vanilla Heavy was split into Gunner and Rocketeer, and for the Rocketeer the Rocket Launcher is really the primary weapon, but wouldn't have required any aim stat.


In Long War rockets always 'technically' scatter, until the soldier aim (with adjustments) reaches 120. Rocket scatter amount is not uniformly distributed, but instead follows a normal distribution (i.e. "bell curve". This makes it more likely to hit closer to the target than further away, but it has long tails so there' technically no limit for how far it can scatter on a bad enough roll. If you are interested enough to check it out on Wikipedia, I had to put in the Box-Muller transform equations to generate a pair of normally distributed random variables.

In vanilla rockets could only scatter in azimuth (cross range), but in Long War they scatter in both range and cross range. The scatter amount varies with target distance -- easily verified by adjusting the aimed-at target distance. The displayed scatter amount is the standard deviation of the 2D Gaussian distribution, converted into tiles. It's not possible to list a maximum possible scatter because with a Gaussian distribution there is no maximum. The distrubution of the scatter depends on three factors:
1) Soldier aim : higher aim = lower scatter
2) Distance to target point : longer distance = higher scatter
3) MIN_SCATTER configuration variable : lower value = lower scatter

Scatter amount is also doubled if the Rocketeer moved before firing (and the maximum distance is halved). These effects are reduced if the Rocketeer has the Snap Shot perk.

The exact formula used to compute the standard deviation (in meters, where 1 tile = 1.5 meters) is:
fScatter = class'XGTacticalGameCore'.default.MIN_SCATTER * float(120 - Clamp(m_kUnit.GetOffense(), 0, 120)) / float(120)
fScatter *= fScatter * m_fDistanceToTarget / float(20);

This standard deviation is then multiplied by the N(0,1) random variables generated by the Box-Muller equations. So the MIN_SCATTER config variable is the amount of scatter (in meters) by a 0 aim (or less) soldier at a range of 20 meters (for comparison, sight range is 27 meters). scatter amount linearly decreases with improving aim until 120 aim, at which point scatter amount is 0. Scatter amount scales linearly with distance, with the "zero point" at 20 meters.

Because the shot can scatter in any direction, but the distance can be any amount, in order to maximize catching a particular point in the AoE blast that point should be selected as the target point. Aiming at a different point will in general reduce the chances of hitting it, because it can easily scatter in the wrong direction.



    Resident poster

  • Supporter
  • PipPipPipPipPip
  • 7,425 posts
This post describes all Second Wave options in Long War EW (tentatively 3.0 beta)

As in Long War EU, all second wave options are immediately available even if you've never beaten Enemy Within.

- Damage Roulette : Same damage algorithm as in Long War EU. Displayed damage on item cards will correctly reflect this setting.

- New Economy : Same as in Long War EU.

- Strict Screening : Replacement for Not Created Equally. By default soldiers will have randomized but balanced starting stats. Selecting this option will revert to fixed starting stats for all soldiers.

- Hidden Potential: Level-up stats randomized. Adjusted for Long War.

- Training Roulette : Soldier perks are randomized. In general the list of randomized perks is different than in vanilla. (For example, Field Medic cannot be randomized). You can mod the perks eligible for TR in DefaultGameCore.ini.

- Save Scum : Unchanged from Vanilla EW

- Red Fog : Significantly changed from vanilla. Aliens and robotic units are affected. Aim and Mobility penalty scales linearly with damage taken. High WIll stat can reduce the effect. Robotic units have "infinite" will for this purpose, and so will not have aim/mobility penalties until they drop below 50% health

- Absolutely Critical : Unchanged from Vanilla EW

- Liberation : Replaces Psionic Interrogation (requirements for psionics are completely changed). New SW option requires that all countries be re-taken prior to launching the final mission.

- Not-so-Long War : Replaces Marathon. Generates fewer missions per month and increases resource collection and reduces requirements for various things to compensate.

- Results Driven : Income varies with panic level, and the formula has been adjusted to be based on the new 100 point panic scale.

- High Stakes : Abduction cash rewards are randomized instead of fixed (but can still be only cash)

- Diminishing Returns : Unchanged from Vanilla EW

- More Than Human : Chance to successfull traing a psionic power is reduced. Failing to train still does not prevent further attempts.

- Itchy Trigger Tentacle : Unchanged from Vanilla EW

- War Weariness : Funding reduced over time. Rate of funding reduction slowed to match Long War timescale

- E-299 : Renamed to be more consistent with chemical notation. Rate of Elerium decay reduced to match Long War timescale.

- Total Loss : By default soldiers that are MIA (either mission failed or soldier was left behind on abort) have a 50% chance to have their gear recovered, and dead soldiers on successful missions always have their gear recovered. Total loss results in equipment loss for all dead soldiers and all MIA soldiers.

- Alternate Sources : Increased power requirement. Values adjusted for Long War.

- Aiming Angles : Unchanged from Vanilla EW

- Mind Hates Matter : By default only the Neural Damping genemod is prohibited to psionic soldiers. With this option all genemods are prohibited to psionic soldiers.

IPB skins by Skinbox
Page loaded in: 0.527 seconds