XCOM: Enemy Unknown

File information

Last updated

Original upload

Created by

szmind

Uploaded by

szmind

Virus scan

Safe to use

Documentation

Readme

View as plain text

-----------------------
INSTALLING THE MOD
-----------------------
(MAC specific instructions included a little further below.)

1. Start with this before forgetting: Manually edit XComStrategyGame.INT located in ...XEW\XComGame\Localization\INT. Instruction in separate file: Instructions_for_Squadron_Unleashed_INT_Edits.txt

2. Apply "Squadron Unleashed.txt" with PatcherGUI (if you are using PatcherGUI for the first time: search "UPKUtils" on nexusmods).

3. (Optionally) If after tests you dislike auto-sorting of ships' list, install also 'SU_DisableAutoSort.txt' (find it in "optional tools" folder)

--------------------------------
MAC SPECIFIC INSTRUCTIONS
--------------------------------
Thanks to 'critto' for help with those instructions and to 'klipper88' for a bug report which helped me develop a fix for MAC users.

Localization files for the game are located in two places, second of one is more important:
1. /Users/mac/Library/Application Support/Steam/steamapps/common/XCom-Enemy-Unknown/XCOMData/XEW/XComGame/Localization/INT
2. /Users/mac/Library/Application Support/Steam/steamapps/common/XCom-Enemy-Unknown/XCOM Enemy Unknown.app/Contents/Resources/MacOverrides/XEW
The game actually uses files from the second path. So you should make edits to the INT (or ESN/DEU whatever) files in the above MacOverrides/XEW folder.
I have found this advice on how to access the directory: In the finder, to show this directory you've got to right-click on XCOM Enemy Unknown and select "show package contents."
Just in case - I think you should put the edited localization file also in the first specified directory - just to have same version in both places.

COMPATIBILITY
The mod should be compatible with any Long War mod out there. I provided compatibility with the few 'conflicting' mods so far (do not install them, they are included):

UFO Interception Tweak - it has been incorporated with permission from SpazmoJones. Just search for SpazmoFactor in the main txt patch.

LW Customize Air Game. I reupload the compatible version of it (by permission and encouraged by #Vazeron1). However #Vazeron1 did not mention that it disables access to air-stats set in DGC.ini - if you use it one time it overwrites references to DGC.ini.

Slower Interception - incorporated; search for SloMoPlayback in the main txt patch.

----------------
CHANGE LOG
----------------
v.1.1.c
- added support for RUS localization (thanks #Loriendal !!)
- added refuelling hours to the configurator (no need to updated the mod, just use new SU_Configurator.txt)
- simplified (?) comments in the configurator
v.1.1.b
- Fixed a small display bug. Thanks to Rovlad84 for catching it.
v.1.1a
- fixed the code to work on MAC
v.1.1
- reworked stance mechanics, removing the complex dodge/risk staff
- added aim bonus/penalty for jets firing at small/large UFO
- UFOs now pick stance randomly (only Overseer is fixed at BAL)
- added preview of UFO stance on UFO-card during ship selection
- added preview of expected engagement time on UFO-card
- added preview of UFO armor on UFO-card (in numbers) for researched UFOs
- added preview of %aim and DPS (damage per second) of selected jet (account for AP, armor, crit)
- added config-options to mod original LW destruction chances
- default crit damage multiplier cut to 1.5 from 2.0
- default 'lone bullet' damage scaler set at 0.80 and lone bullets don't crit
- weapon info in Hangar shows more useful info (check it out)
- refuelling hours bumped up to 6
- fixed bug: Lt rank-label wrongly assigned with 0 kills
- fixed bug: aim penalty for damaged ships was not actually applied
- removed exploit (XCOM EW legacy): re-engaging without refuelling
- added compatiblity with Campaign Summary by tracktwo
- incorporated Slow Interception (option to slow down battle time passing)
- add Dynamic War compatibility (scaling of kills required for rank)
- improved pilot renaming to keep current rank label (no temp renaming to F.O.)
- geoscape will focus on squadron's home base (not HQ) if any jet is returning
- added option to change LW coded destruction chances related to killing blow

v. 1.0.2
- fixed bug: 'UFO destroyed' way too often
- fixed bug: toggling of jets 'in transfer'
- expanded hit-chance preview on weapon item card in hangar

v. 1.0.1
- fixed bug: teleporting Skyranger

v. 1.0
- initial release

---------------------------------------
GAMEPLAY INSTRUCTIONS
---------------------------------------
GAMEPAD/KEYBOARD SUPPORT
1. You can toggle out a jet with Y/triangle button or TAB key (keyboard).
2. You can launch jets without even scrolling to launch button using X/square button
3. You can still launch jets by scrolling down to launch button and pressing A/cross button or space/enter (keyboard)

WHAT IS AGGRO?
This is a temporary stat that determines threat to UFO as UFO perceives it. The basic formula is:
Aggro = 2 x weapon level
+1 for Firestorm
+2 for AGG stance
-2 for DEF stance
Weapon levels are as follows
Lvl 1. Cannon
Lvl 2. Stingray
Lvl 3. Avalanche
Lvl 4. Laser
Lvl 5. Plasma
Lvl 6. EMP
Lvl 7. Fusion
As Cannon's level 1 does not correspond with its power I coded it to generate aggro 7 (above Avalanche and below Laser).

SHIP SELECTION
1. Click on a jet to toggle in. Click again to toggle out. You do not need to click small stance button. You can click large ship card and then select stance. Size of squadron depends on the rank of best pilot in the squadron.
2. You will get info (from Shen :), heh) about expected average DPS (damage per second) and %Aim of the fighter against that specific UFO.
3. As soon as you hover mouse over another ship or over launch button the list of selected ships is sorted in decreasing order of AGGRO stat.
4. Ship with the highest aggro is the leader. UFO will attack him first.
5. If you put all ships on the same aggro then the leader will be picked randomly.
6. You can select partially damaged ship (>50% HP by default). A damaged ship suffers aim penalty (-25 by default), cannot activate modules and has 20% penalty to speed (probably slowing down the whole squadron).
7. A damaged ship that can be sent has its status in orange not red. It must be refuelled first. Refuelling is automatic as soon as ship is repaired to 50% (customizable threshold).
8. Click launch button to start the hunting :)
9. Squadron flies to destination with unanimous geoscape speed. That is the speed of slowest jet in squadron.

ENGAGEMENT
1. At start of combat name of leader, its stance and weapon will be displayed.
2. UFO stance will be presented as well.
2. Rest of ships are presented by name, ship icon and HP bar in order of aggro (same as prior to launching). They are called supporting ships.
3. Modules are activated by current leader so their availability depends on his stance. Activate modules normally.
4. Clicking on Abort button withdraws current leader and replaces him with next ship in line (if there is any still fighting)
5. A ship that was sent damaged (and suffers additional penalties) has its weapon/stance label marked orange.
6. Supporting ships take care of themselves and auto-withdraw when below 25% HP (customizable)

NEW STANCE MECHANICS
1. Stances work totally different for UFO and jets.
2. Stances picked for jets no longer imply symetric aim penalty/bonus to UFO.
3. Instead jet on AGG gets +15 to Aim but receives +25% more damage.
4. Jet on DEF receives -15 to Aim but can dodge any hit with 20% chance.
5. UFO stance is determined randomly on detection (Overseers are always BAL).
6. UFO on DEF concetrates on escaping. It gains +50% battle speed (so contact time is cut by 33%) but suffers -15 to Aim.
7. UFO on AGG is... well - aggresive :) It slows down redirecting power to weapon cooling systems. That means -25% battle speed (+33% contact time) but gaining +33% firing speed (bullet swarm).
8. The above are all customizable parameters.
6. For more stance consequences for jets see below.

CROWD IN THE AIR AND QUASI-FORMATIONS

1. Beware 'lone bullets' :)
2. When UFO misses the missed bullet is considered 'lone bullet'. It missed the leader but it can hit supporting ships!
3. Supporters on BAL stance have 20% chance to be hit by a lone bullet (customizable).
4. Supporters on AGG have 40% chance to be hit by a lone bullet (customizable).
5. The above is supposed to discourage sending large AGG squadron against puny Scout and returning without scratch.
6. Lone bullets deal only 80% of regular damage on default (customizable though) and cannot crit.
7. Supporters on DEF are safe from lone bullets (hard coded).

ON ENGAGEMENT OVER
1. If UFO is defeated the 'kill' is granted to the last leader.
2. BUT: UFO destruction chance is based on the weapon which fired the killing bullet - not the weapon of last leader. The bullet is marked!
3. Therefore: if you want to manage kill-granting concentrate on leader; if you care about non-destruction of UFO manage your squadron with skill :)
4. You will get individual battle report for every ship. If a pilot is promoted you will be informed of his new rank and size of squadron that he can now command.
5. ...cause max size of squadron depends on the highest rank of pilot selected for the interception.
6. Ships fly back to base at their own geoscape speed - damaged ships return with 80% of their speed. So you can see a nice string of up to 4 jets returning to base :)
7. Ships that returned with more than 50% HP will be scheduled for refuelling first - then for repairs.
8. Refuelling time has been increased to 6 hours (hard coded) to prevent reengagement. RPG-wise consider it as 'refuelling, quick service and ammo replenishing'.

-------------------------------------------------------
ADVANCED CONCEPTS
-------------------------------------------------------
MODULES CLARIFICATION
Modules are activated by the current leader depending on its stance and cannot be carried over to the next leader. Therefore:

Aiming module - will work only for shots of the leader, not supporters. It expires as soon as you switch the leader.
Dodge module - will work only for leader, but dodged bullet does not turn into a lone bullet so it is a final miss. It expires as soon as you change the leader.
Tracking module - is the only one that carries over. It does not expire on leader's change

There is still the limit of 1 charge of a module per battle, not per ship. But you can activate Aiming with AGG leader, then switch to DEF supporter, who can activate Dodging as a new leader.

LONE BULLETS
Lone bullet is still one bullet. It will hit only one target. Supporters with BAL/AGG stance roll for being hit in order of aggro or saying it differently - in order they appear in the formation. Therefore ships just behind the leader roll first. Not because they stay in direct line behind the leader but because AGG is considered 'staying close to leader' or 'staying close to UFO'. The further a ship in the formation (so further from leader) the lower the chance that it will have to roll for being hit - cause the bullet probably has already hit someone else. Though if everybody is on DEF and the last ship is on BAL, all lone bullets will come after him (but with only 20% to hit).

PILOT RANKS / SQUADRON SIZE
As mentioned in basics max size of squadron depends on a pilot with highest rank among those selected for interception. It does not matter if he is the leader or a supporter. If he turns out to be a supporter you can consider him RPG-wise 'a veteran training the less experienced' :) You will also learn shortly the dependance - each officer rank allows a pilot to command a squadron of +1 jet. So Leutenant can command 2, Captain 3 etc. up to 6 jets at Commander.

---------------------------------------------------------
CONFIGURATIONS WORTH CONSIDERING
---------------------------------------------------------
You might consider the following ideas enabled by configurator:

1. Set MinHP_PctToLaunch at 1.0 to completely disable sending damaged ships.

2. Set LoneBulletDamageScaler at 0.0 to totally disable 'lone bullet' mechanics.

3. Set AutoAbortThreshold at 0.0 to disable auto-escape of supporting ships. Or set it at say 0.50-0.60 to minimize the chance of supporter being one-shot killed (large UFOs can punch you for 50-70% with single shot without warning :) Or even better - you can use the configurator to manage your settings throught campaign! Consider it as commander's tool. In early game you might wish to disable auto-abort of supporters, while in late-game set it to 0.60 cause you mainly fight large UFO's then.

4. UFO Interception Tweak is a great feature - bless SpazmoJones for the idea. It allows for longer fights with lower damage - smoothing the overall RNG impact. It also compensates for lower impact of modules by increasing number of available effects (e.g. 3 dodges/hits with Spazmofactor at 1.5 or 4 dodges/hits with factor at 2.0; for my tests I was even using 3.0 to make fights against Scouts longer). Beware though - game records only 60 s of shooting. If you go beyond that then at 60s ships will stop firing :) Is it moddable? Of course, but who would like to sit for >60 s watching. Oh, wait - we all used to do so with one-on-one interceptions spliting it into 4 x 20 s + flight time :))

5. UFO destruction modifiers. You can scale original LW chance of UFO destruction with one simple factor.
This still means that even a small overkill translates into small chance of destruction.
Therefore you can also set a minimum threshold of overkill above which the chance starts occuring at all.
The threshold translates into percent chance that must be accumulated before it is applied at all.
So for example setting threshold at 20 means that if chance of destruction is < 20% UFO crashes without checking the chance.
Well, actually the check is performed but you get a +20 handicap (your dice rolls 20-120 instead of 0-100)
If you overkill for 30% chance with the above setting the actual chance will be (30 - 20)= 10%

--------------------------
CREDITS
--------------------------
wghost81 - for UPKUtils
EliotVU for UE Explorer
XMarksTheSpot and SpazmoJones for sharing know-how on interface modding
Ucross for tireless tests, opinions and many worthy suggestions.
SpazmoJones for early bug hunting and gamepad test
Noganeto1 for help with Spanish localization
Riwwer for encouraging me to do more maths and rethink complicated stances
GamerChris for inspiration on UFO stances being related to battle speed
Rovlad84 for bug reports
Loriendal for RUS localization support

--------------------------
LIST OF MODIFIED OBJECTS:
--------------------------
UPK_FILE=XComStrategyGame
UIInterceptionEngagement.AS_SetAbilityStatusText -> UIInterceptionEngagement.AS_SetTrackingLabelText
XGShip.GetSpeedString -> XGShip.GetStanceLabel
XGShip.GetRange
XGInterception.ToggleInterceptor
UIMissionControl_UFORadarContactAlert.UpdateData
UIMissionControl_UFORadarContactAlert.BeginInterception
UIMissionControl_UFORadarContactAlert.ShipSelection.OnUnrealCommand
UIMissionControl_UFORadarContactAlert.ShipSelection.OnMouseEvent
UIMissionControl_UFORadarContactAlert.ShipSelection.UpdateData
UIMissionControl_UFORadarContactAlert.ShipSelection.OnAccept
UIMissionControl_UFORadarContactAlert.ShipSelection.RealizeSelected
XGInterceptionUI.UpdateSquadron
XGInterceptionUI.IntDistanceSort
XGInterceptionUI.UpdateCurrentTarget
XGInterceptionUI.UpdateView
XGShip.GetScreenSpeedPerSecond
XGInterceptionEngagement.Init
XGInterceptionEngagement.UpdateWeapons
XGInterceptionEngagement.AreAllInterceptorsDead -> XGInterceptionEngagement.GetSquadronStatusBrief
UIInterceptionEngagement.GetAbilityDescription
XGInterceptionEngagement.GetTimeUntilOutrun
UIInterceptionEngagement.OnInit
UIInterceptionEngagement.UpdateEnemyEscapeTimer
UIInterceptionEngagement.Playback
XGInterceptionEngagement.CanUseConsumable
XGInterceptionEngagement.UseConsumable
UIInterceptionEngagement.TryAbort
XGInterceptionEngagement.AnyInterceptorsChasing
XGInterceptionEngagement.IsShipDead
UIInterceptionEngagement.GoToView
UIInterceptionEngagement.ShowResultScreen
XGInterceptionEngagementUI.OnResultLeave
XGInterception.CompleteEngagement
XGInterceptionEngagement.UpdateEngagementResult
XGFacility_Hangar.DetermineInterceptorStatus
XGFacility_Hangar.Update
XGHangarUI.BuildShipWeaponCard
UIShipLoadout.RealizeSelected
UIShipSummary.OnUnrealCommand
UIShipSummary.OnMouseEvent

UPK_FILE=XcomGame.UPK
UIItemCards.UpdateData

UPK_FILE=gfxInterception_SF.upk
gfxInterception.Interception

UPK_FILE=UICollection_Strategy_SF.upk
gfxMissionControl.MissionControl
gfxItemCards.ItemCards