Mass Effect 2
0 of 0

File information

Last updated

Original upload

Created by

Arjed

Uploaded by

ArJed

Virus scan

Safe to use

Documentation

Readme

View as plain text


ME2 Weaponry tweaks

- General description;
- Edit description;
- Weaponry Loadouts;
- Weaponry general description;
- Weapon template;
- Global properties;
- Specialized properties;
- Additional properties;


[++++++++++++++++++++ General description ++++++++++++++++++++]

All game settings are stored in Coalesced.ini file:
Mass Effect 2\BioGame\Config\PC\Cooked\

Programs required:
Notepad++ and ME2IniFixer
https://notepad-plus-plus.org/download/v6.9.1.html
https://www.nexusmods.com/masseffect2/mods/116/?

Edit DLC Bio.ini files: doesn't required to use ME2IniFixer;


Main game weapons properties are stored in Coalesced.ini;
DLC weapons properties are stored in BIOWeapon.ini (in each DLC folder);

All information about mod's weapon stats (properties) described in tables (.xls files):
Infinite ammo system - ME2 WT IA;
Heat/thermal clips system - ME2 WT HT;


[++++++++++++++++++++ Edit description ++++++++++++++++++++]

Download Notepad++; DO NOT USE Word, Wordpad or Notepad - this will break game files;
- go to: Mass Effect 2\BioGame\Config\PC\Cooked\ and open Coalesced.ini file;
- right-click on file > Edit with Notepad++

// How to compare two files in Notepad++ ? //
In Notepad++ add plugin "Compare":
main panel > plugins > plugin manager > show plugin manager > find plugin Compare > Install >
> (if program asks if you would like to update manager? - Yes, only once) >
> Open two Coalesced.ini-s > main panel > plugins > Compare > select one of two files > Set as first to compare >
> switch to second file > main panel > plugins > Compare > Compare
Differences between two files will be highlighted;

Commenting code: comment prevent game engine from reading and executing commands in string.
[< ; >] semicolon before string: ;Variable=Value

If you want to use several Coalesced.ini mods, create merged file:
- copy your current moded file from: Mass Effect 2\BioGame\Config\PC\Cooked\ to any folder (as backup);
- download mod > compare mod file and your file in Notepad++: use Compare plugin > find differences > copy code from mod file to your file (ignore iniversion strings);
- Launch ME2IniFixer;
> if mod is require specific code to run properly - that code takes priority over the others mods code;
> if mod adds new stuff > use mod values instead of yours;
> if some setting has greater/lesser value in compare to your file > read mod description about this value > choose one variant (not both);

EDIT FILE > LAUNCH ME2IniFixer > LAUNCH GAME

^ Definitions:
String/line - Variable=Value
AI - Artificial Intelligence - game engine code that supervise squadmates and enemies behavior;
there are several setting that assigned separately for squad and enemies:

AI = Enemies and Squadmates - by default, if not specified; (all non-player values);
Squad = Squadmember = Squadmate = Hench = Henchman; (separate values);
- squad is squadmember only, not including Shep;

RateOfFire = Firerate;
Crosshair = Scope = Sight;
Magazine = Clip;
Shots = Bullets = Rounds = Projectiles;

^ Description structure:
[SFXGame.SFXWeapon] - section in file;
Damage= - variable;
1.0 - value;
~= - approximately equal (exact value property is unknown);

^ Numerical values:
Integer: Y=80; (min=0; max=unlimited, (recomended=999));
Boolean: true / false; (true=yes/on/use; false=no/off/don't use);
Float type1: 0.7; (min=0.0/0; max=unlimited, (recomended=99.0));
Float type2: 0.7f; (min=0.0f; max=unlimited, (recomended=99.0f)); (f=float);
> if value = 0/0.0/0.0f than it will be disabled (unused);

^ Examples:
RateOfFire=(X=850,Y=850); (where always X=Y);
CrosshairRange=(X=35,Y=80); (where X= min value; Y= max value (from X to Y));
bInfiniteAmmo=true; (true=yes/false=no); (b=boolean);
BurstRefireTime=0.1 (result will be in %-s 0.7f=70%, where 1.0f=100%(max));
DamageAI=0.7f; (result will be in %-s 0.7f=70%, 1.3f=130%; where 1.0f=100%);

^ Formulas:
Damage=(X=100.0,Y=100.0) // of gun, used by player //
1.0f = 100%
DamageAI=0.7f = 70%
100 * 0,7 = 70
DamageAI=(X=70.0,Y=70.0) // of gun, used by AI //

> AR - Assault Rifles; SG - ShotGuns; SR - Sniper Rifles; HP - Heavy Pistols; AP - Auto Pistols; HW - Heavy Weapons;



[++++++++++++++++++++ Weaponry Loadouts ++++++++++++++++++++]

[SFXGame.SFXPlayerSquadLoadoutData]
- Shepard and squad weapons classes usage settings - weapon types they can use in missions;

Types of weapons/weapon classes:
LoadoutWeapons_ ...
AssaultRifles, AutoPistols, HeavyPistols, Shotguns, SniperRifles, HeavyWeapons;

Shepard's classes:
PlayerLoadoutInfo=(ClassName=SFXPawn_PlayerSoldier,WeaponClasses=(LoadoutWeapons_ ...))
Squad:
HenchLoadoutInfo=(ClassName=SFXPawn_Garrus,WeaponClasses=(LoadoutWeapons_ ...))

DLC squadmates: Kasumi, Zaeed and Liara:
Kasumi: Mass Effect 2\BioGame\DLC\DLC_HEN_MT\CookedPC\BIOGame.ini
Zaeed: Mass Effect 2\BioGame\DLC\DLC_HEN_VT\CookedPC\BIOGame.ini
Liara: Mass Effect 2\BioGame\DLC\DLC_EXP_Part01\CookedPC\BIOGame.ini
ME2IniFixer don't needed when you edit dlc files;

> Shepard is able to use: maximum 5, minimum 2 weapon types;
> Squadmate is able to use: only 2 weapon types - min/max;
- if you set more than max number, last weapon type will be invisible in weapon locker/weapon selection screen - choose wisely);
- you can give HeavyWeapons to your squadmates - lot of fun guaranteed!



[++++++++++++++++++++ Weaponry general description ++++++++++++++++++++]

======== Weapons structure hierarchy ========

XWeapon.pcc files stored weapon: construction materials/forms, projectile patterns and count, handling animation (firing, reloading, etc) - in short words, visuals;
> those files can be edited only by special programs (developers tools), none of them are available for users, for now on;

Coalesced.ini controls the gun direct behavior - i.e. how to shoot, how fast, what damage amount deal to the enemy, etc - in short words, mechanics;
DLC BIOWeapon.ini work as extension, by adding (loading) specific weapon to the resulted Coalesced file stucture
(not directly, DLC weapons are inherit only several global values from it);


======== Types of properties ========

Weapon behavior determines by two types of properties - global and specialized:
> properties = damage, firerate, accuracy, etc;

-------------------------- Global --------------------------
Effect on all weapons, stored in many different sections throughout Coalesced.ini;
- Shepard's, squadmate's, enemy weapons;

[SFXGame.SFXWeapon] - base weapon model - all guns inherit their properties from it:
- Logic - if for specific weapon some variable (setting) not set (missing), than it will be inherited from SFXWeapon -
specific weapon will use setting, that is set in SFXWeapon;
> for example, auto aiming parameters - only sniper rifles use them, and they have own valuse per each SR;
other weapon classes will use values, that is set in SFXWeapon;
- DO NOT change values in [SFXGame.SFXWeapon], that present in specific weapon section - just copy them for gun, in which you want to use them;
> for example, don't change SFXWeapon > damage, firerate, accuracy, etc, because those values are used for enemy weapons stats calculation;

- You can override SFXWeapon values by adding them to specific weapon model (section):
> for example, you want to increase damage you deal at very long range (Range_Long=2000.f) by M-98 Widow:
// copy line //
DamageMod_VeryLongRange=1.0f
// from //
[SFXGame.SFXWeapon]
// add line to //
[SFXGameContent_Inventory.SFXWeapon_MassCannon]
// set value //
DamageMod_VeryLongRange=1.5f
- in result, Widow will deal +50% damage at very long range;
> Any string from [SFXGame.SFXWeapon] can be added to any weapon model;

Other weapon-related settings (outside out [SFXGame.SFXWeapon]), cannot be set for specific weapon:
> for example, bAimAssistEnabled=true cannot be added from [SFXGame.SFXGameConfig], as it will be applied for all weapons at once;


-------------------------- Specialized --------------------------
Specific properties for each weapon are initialized/described in its section in Coalesced and BIOWeapon:
[SFXGameContent_Inventory.SFXWeapon ... ]
> You can change/add any setting, that described in "Weapon template" below;
> Specific weapon sections names - full information in weapons tables;

! Important note: for SHOTGUNS, projectiles (pellets) count and spread are capped to: х8 for all shotguns, for "Geth plasma shotgun": x3;
----------------------------------------------------
In result, each time when you launch the game, all properties for all weapons will be recalculated and set based on current string values;



[++++++++++++++++++++ Weapon template ++++++++++++++++++++]

- Strings, defining the mechanics of weapons;
// Settings description schema - each value is set to "0" as an example for each string - set your when edit //;

================= Global ==================

======== Heat system =========
WeaponsUseHeat=true
HeatDissipationRate=0.0f
======== Global damage =========
PlayerCoverDamageMultiplier=0.0f
PlayerCoverLeanDamageMultiplier=0.0f
PlayerStormDamageMultiplier=0.0f
======== Global Ammo =========
bCanDropAmmo=true
PctChanceToDrop=0.0
PctAmmoGiven=0.0
======== Shep's Accuracy =========
Base_Acc_Standing=0.0
Base_Acc_Zoom=0.0
AccMod_Move=0.0
AccMod_ViewTurn=0.0
AccMod_Crouched=0.0
AccMod_MouseMultiplier=0.0
AccMod_MaxCameraLoss=0.0
Base_Interp_Speed=0.0f
InterpMod_Move=0.0f
InterpMul_ViewTurn=0.0f
======== Squad Accuracy =========
m_fStartThreshold_pistol=0.0
m_fStopThreshold_pistol=0.0
m_fDriftRadius_pistol=0.0
m_fStartThreshold_Shotgun=0.0
m_fStopThreshold_Shotgun=0.0
m_fDriftRadius_Shotgun=0.0
m_fStartThreshold_Assult=0.0
m_fStopThreshold_Assult=0.0
m_fDriftRadius_Assult=0.0
m_fStartThreshold_Sniper=0.0
m_fStopThreshold_Sniper=0.0
m_fDriftRadius_Sniper=0.0
m_fCrosshairAccuracyModifier=0.0
======== Global Aiming assistance/Auto aiming =========
bAimAssistEnabled=true
GlobalFrictionFactor=0.0f;
GlobalAimCorrectionFactor=0.0f;
GlobalAdhesionFactor=(X=0.0,Y=0.0);
EnemyMovementAdhesionFactor=0.0;


================= Specialized ==================

======== Damage =========
Damage=(X=0.0,Y=0.0)
DamageAI=0.0f
DamageHench=0.0f
======== Firerate =========
RateOfFire=(X=0,Y=0)
RateOfFireAI=0.0f
======== Fire types =========
bIsAutomatic=true
BurstRounds=0
BurstRefireTime=0.0
======== Ammo ========
bInfiniteAmmo=true
MagSize=(X=0,Y=0)
InitialMagazines=0
MaxSpareAmmo=(X=0,Y=0)
AmmoPerShot=0
fAmmoMultiplier=0
LowAmmoSoundThreshold=0
NoAmmoFireSoundDelay=0.0
SteamSoundThreshold=0
LastBulletStrongerPercent=0.0f
======== Accuracy ========
MinAimError=(X=0.0,Y=0.0)
MinZoomAimError=(X=0.0,Y=0.0)
MaxAimError=(X=0.0,Y=0.0)
MaxZoomAimError=(X=0.0,Y=0.0)
AccFirePenalty=0.0f
ZoomAccFirePenalty=0.0f
AccFireInterpSpeed=0.0f
ZoomAccFireInterpSpeed=0.0f
======== Sight ========
CrosshairRange=(X=0.0,Y=0.0)
ZoomCrosshairRange=(X=0.0,Y=0.0)
bUseSniperCam=true
ZoomFOV=0
======== Recoil =========
Recoil=(X=0.0,Y=0.0)
ZoomRecoil=(X=0.0,Y=0.0)
RecoilCap=0.0f
ZoomRecoilCap=0.0f
RecoilInterpSpeed=0.0f
RecoilFadeSpeed=0.0f
RecoilZoomFadeSpeed=0.0f
RecoilYawScale=0.0f
RecoilYawBias=0.0f
RecoilYawFrequency=0.0f
RecoilPitchFrequncy=0.0f
RecoilMinFadePitch=0.0f
RecoilMinFadeYaw=0.0f
RecoilPitchOscillation=0.0f
======== Reload speed ========
ReloadSuccessDuration=0.0
ReloadFailureDuration=0.0
EjectShellCasingTimeRatio=0.0
======== Tracer projectiles ========
TracerSpawnOffset=0.0
TraceRange=0
ShowTracerDistance=0
======== Fire range & ranged damage ========
Range_Melee=0.0f
Range_Short=0.0f
Range_Medium=0.0f
Range_Long=0.0f
DamageMod_MeleeRange=0.0f
DamageMod_ShortRange=0.0f
DamageMod_MediumRange=0.0f
DamageMod_LongRange=0.0f
DamageMod_VeryLongRange=0.0f
ImpactRelevanceDistance=0
======== Aiming assistance/Auto aiming ========
MagneticCorrectionThresholdAngle=0
MaxMagneticCorrectionAngle=0



[++++++++++++++++++++ Global properties ++++++++++++++++++++]

======== Weapon heat model ========

WeaponsUseHeat=true
- All non-Heavy weapons can use heat system - ammo in magazine will start to restore after certain time (HeatDissipationRate),
just like in ME1 - in result, you'll get semi heat/thermal clip system:

> while you fire from gun, ammo will decrease, if you spend entire magazine, gun will be reloaded
and ammo for current magazine will be resupplied from spare ammo stock;
> if you'll stop firing, ammo will start to regenerate (no ammo will be spend from spare ammo stock);
> weapon cannot be reloaded during ammo regeneration - it will be auto reloaded after entire magazine will be drained;
! - if this value set to true, it will override bInfiniteAmmo parameter for all weapons;
> thermal clips and heavy weapon ammo boxes would work as usual - spare ammo stock will be resuplied when you'll pick them;

> I think this is how developers supposed to implement their "thermal clips idea" - give players a choice: restore ammo in magazine or spend spare ammo!

HeatDissipationRate=0.0f
- Percent of ammo for current magazine (MagSize) that would be restored in heat mode;
min=0.01f; max=1.0f; // in %-s //;


======== Global damage =========
PlayerCoverDamageMultiplier=0.0f
PlayerCoverLeanDamageMultiplier=0.0f
PlayerStormDamageMultiplier=0.0f
- Damage multipliers when Shep shoots from cover and while sprinting;
min=0.01f; max=unlimited; // in %-s, as (Damage=) multiplier //; (1.0f=100%)
- All values =1.0f - the weapon will deal same (static) amount of damage, no matter the the situation;

======== Global ammo ========

bCanDropAmmo=true
- Enemy can drop ammo when Shep kills them;
true=yes; false=no;

PctChanceToDrop=0.0
- Enemy ammo drop chance;
min=0.0; max=1.0; // in %-s //; (1.0=100%);
0.0 = enemy ammo drop disabled;

PctAmmoGiven=0.0
- Ammo amount given (granted) when Shep picks thermal clip, including heavy weapons ammo boxes;
min=0.0; max=1.0; // in %-s //; (1.0=100%);
0.0 = ammo won't be resupplied;


======== Shep's accuracy ========

Base_Acc_Standing=0.0
Base_Acc_Zoom=0.0
- Base accuracy loss when Shep stand and aim;
min=0.0; max=unlimited; // in %-s //; (1.0=100%);
0.0 = no accuracy losses;

AccMod_Move=0.0
AccMod_ViewTurn=0.0
AccMod_Crouched=0.0
- Accuracy loss when you: move, turn, in cover;
min=0.0; max=unlimited; // in %-s //; (1.0=100%);
0.0 = no accuracy losses;

AccMod_MouseMultiplier=0.0
AccMod_MaxCameraLoss=0.0
- Accuracy loss when you turn mouse;
min=0.0; max=unlimited; // in %-s //; (1.0=100%);
0.0 = no accuracy losses;

Base_Interp_Speed=0.0f
InterpMod_Move=0.0f
InterpMul_ViewTurn=0.0f
- Base accuracy modifiers for how quickly accuracy parameters approximate their maximal values per shot when Shep: stand, move, turn;
min=0.01; max=100.0;

m_fCrosshairAccuracyModifier=-17.0
- Determines weapon scope size increase/per shot (CrosshairRange=(X=0.0,Y=0.0) + this value/per shot // X=min; Y=max //);


======== Squad accuracy ========

m_fStartThreshold_pistol=0.0
m_fStopThreshold_pistol=0.0
m_fDriftRadius_pistol=0.0
m_fStartThreshold_Shotgun=0.0
m_fStopThreshold_Shotgun=0.0
m_fDriftRadius_Shotgun=0.0
m_fStartThreshold_Assult=0.0
m_fStopThreshold_Assult=0.0
m_fDriftRadius_Assult=0.0
m_fStartThreshold_Sniper=0.0
m_fStopThreshold_Sniper=0.0
m_fDriftRadius_Sniper=0.0
- Base values for bullet spread/aim error (cone of bullets calculation per shot) for squadmates;
min=0.001; max=99.0; // in %-s //; // as +% from base values of specific weapon //;
// all "0" values = accuracy=100% //;
- nearly impossible to test, set any values;


======== Global Aiming assistance/Auto aiming ========

> This option generaly used in consoles - it helps player to aim more accurate via auto-aiming;

bAimAssistEnabled=true
- Auto aiming, works like homing-sticky projectiles;
true = on; false = off;

GlobalAimCorrectionFactor=0.0f;
AimCorrectionAmount=0.0
- Ballistics: converts all projectiles to homing-sticky type (how close from enemy you need to shoot, that projectile can stick to enemy);

GlobalFrictionFactor=0.0f;
- Ballistics: wiki: the force resisting the relative motion of solid surfaces, fluid layers, and material elements sliding against each other;
when you shot mised the target (when you shot nearly reach target, but missed for 1-2 cm), the projectile converts to homing-sticky type,
and still can reach target (but for very close distance from it) - defined by multiple friction values for specific weapon;
by default, used by SR and SG to help player hit targets when they missed;

GlobalAdhesionFactor=(X=0.0,Y=0.0);
EnemyMovementAdhesionFactor=0.0;
- Ballistics: wiki: tendency of dissimilar particles or surfaces to cling to one another
(cohesion refers to the tendency of similar or identical particles/surfaces to cling to one another).
- mathematical graph of bullet spread (cone of bullets calculation when you shoot);



[++++++++++++++++++++ Specialized properties ++++++++++++++++++++]

> Described strings from [SFXGame.SFXWeapon], that can be set for specific weapon;

======== Damage =========

> Keep in mind, that weapon damage is increase by bonus values: Shep's and squadmate's class skills, armor and gear, research upgrades;

Damage=(X=0.0,Y=0.0)
- Base damage of the gun without bonuses, each bonus will increase this value on certain %t:
Damage=(X=100.0,Y=100.0)
+ 10% = 0.10
Damage=(X=110.0,Y=110.0)

DamageAI=0.0f
- Damage multiplier for enemies, in relation to Damage=(X=0.0,Y=0.0) value;
Damage=(X=100.0,Y=100.0) = Damage=1.0f (=100%);
DamageAI=1.3f = Damage=(X=130.0,Y=130.0) (=130%);

DamageHench=0.0f
- Damage multiplier for squad, in relation to Damage=(X=0.0,Y=0.0) value;
Damage=(X=100.0,Y=100.0) = Damage=1.0f (= 100%);
DamageHench=1.0f = Damage = equals Shep's damage;


======== Firerate =========

RateOfFire=(X=0,Y=0)
- projectiles count released by weapon when fire trigger is pressed - how fast weapon can fire;
- for weapon, used by Shep;
min=10; max=9999; // X always equals Y //;
100 = 1 shot/second;

RateOfFireAI=0.0f
- Rate of fire for enemy and henchmen weapon, in relation to RateOfFire=(X=0,Y=0) value;
min=0.01f; max=unlimited; // in %-s //; (1.0f=100%);

RateOfFire=(X=100.0,Y=100.0) = RateOfFire=1.0f (=100%);
RateOfFireAI=0.9f = RateOfFireAI=(X=90.0,Y=90.0) (=90%);


======== Fire types =========

> All fire types consider RateOfFire parameter;

// full auto //
bIsAutomatic=true
- Weapon doesn't require to rearrange the trigger to keep firing;
true=on; false=off;
- Sets full-auto firetype;
- Disables/overrides burst-fire type;

// semi-auto/single/burst //
BurstRounds=0
- Number of projectiles per burst;
min=0; max=MagSize;
- if max value is used, entire magazine will be relinquished with one button press;
- set =0 or =1 for burst fire type weapon to convert it to full auto;

MagSize=(X=30,Y=30)
BurstRounds=3
(MagSize)/(BurstRounds) = (MagSize=10);
- you'll be able to shoot 10 times with 3 bullets per shot;

BurstRefireTime=0.0
- Delay before next burst;
min=0.0; max=1.0; // in seconds //; (1.0=1 second);
- Sets semi-auto/single/burst-fire firetypes (depends of RateOfFire);
- Disables/overrides full-auto firetype;

// charge //
- weapon charged projectile mechanic is stored in XWeapon.pcc files - for now, they can't be edited;
Charge fyre type cannot be effectively overridden by .ini file values:
- can be converted to semi-auto;
- cannon be converted to full-auto;
But if you realy-realy want to set it anyway, in that case, bIsAutomatic=true will work this way:
when you press fire button, weapon will continue firing untill entire magazine/ammunition stock (for heavy weapon) will be empty;
firing can be stopped (canceled) by pressing fire button again;
> for example: set bIsAutomatic=true for M-622 Avalanche - [SFXGameContent_Inventory.SFXHeavyWeapon_FreezeGun]
and admire the unstoppable blizzard ;)


------------- Fire types construction -------------

> not included - string could be not present in weapon section;

// Full-auto // simple;
bIsAutomatic=true
RateOfFire= more than 100;
-------------
// Semi-auto // simple;
bIsAutomatic=false (or not included);
RateOfFire= less than 100;
-------------
// Single // simple;
bIsAutomatic=false;
RateOfFire= less than 90;
-------------
// Full-auto // with more delay between shots;
bIsAutomatic=true
RateOfFire= more than 100;
BurstRounds=1
BurstRefireTime= from 0.6 to 0.9
-------------
// Semi-auto // with more delay between shots;
bIsAutomatic=false (or not included);
RateOfFire= any, more than 500;
BurstRounds=1
BurstRefireTime= from 0.1 to 0.9
-------------
// Single // with more delay between shots
bIsAutomatic any true/false (or not included);
RateOfFire= less than 80;
BurstRounds=1
BurstRefireTime= from 0.9 to 1.0
-------------
// Burst //
bIsAutomatic=false
RateOfFire= any, more than 200;
BurstRounds= min=2; max=MagSize;
BurstRefireTime= from 0.1 to 0.5
-------------
// Full-auto Burst //
(example: M-15 Vindicator custom model);
bIsAutomatic=false
RateOfFire=(X=600,Y=600)
BurstRounds=3
BurstRefireTime=0.3f
MinRefireTime=0.3f

------------- AI weapons -------------
// X=min; Y=max //;

AI_BurstFireCount=(X=0,Y=0)
- Amount of bursts (shots) enemies and henchmen will shoot (during several seconds ~=7 seconds);
min=1; max=MagSize;
AI_BurstFireDelay=(X=0.0f,Y=0.0f)
- Time enemies and henchmen wait between firing bursts (AI_BurstFireCount) from cover;
min=0.01f; max=unlimited;
AI_BurstFireMovingDelay=(X=0.0f,Y=0.0f)
- Time enemies and henchmen wait between firing bursts (AI_BurstFireCount) out of cover;
min=0.01f; max=unlimited;


======== Ammo ========

> Keep in mind, that ammo capacity is increase by bonus values: armor and gear, research upgrades;

bInfiniteAmmo=true
- All weapons can use infinite ammo system - ammo in magazine will be decreased on firing,
and after weapon reloading, the spare ammo stock won't be decreased;
- You can reload weapon anytime; Thermal clips now irrelevant - you'll never run out of ammo;
true=on; false=off;

MagSize=(X=0,Y=0)
- Number of rounds (projectiles) in gun's current magazine;
min=1; max=9999; // X always equals Y //;

InitialMagazines=0
- Number of spare magazines;
min=1; max~=99;

MaxSpareAmmo=(X=0,Y=0)
- Number of total spare ammo; stock
MaxSpareAmmo= (MagSize)*(InitialMagazines); // X always equals Y //;
// For single-shot weapons types, such as Widow, set custom number - for example, 40 //;

AmmoPerShot=0
- Amount of ammo spent per shot;
min=0; max=MagSize;
// min=0; = infinite ammo without reloading (ammo in current magazine won't be decreased at all) //;
// warning!: if you set this value to M-3 Predator - you won't be able to pass tutorial level (Lazarus station),
as weapon needs to be reloaded there to open the door //;

fAmmoMultiplier=0.5
- Ammo consumption coefficient;
min=0.1; max=1.0; // in %-s //;
// used in Nuke launcher (Cain) - its ammunition counts as %-t of charge //;

LowAmmoSoundThreshold=0
- Low ammo warning - starts, when (this value) rounds in current magazine left;
min=0; max=MagSize-1;

NoAmmoFireSoundDelay=0.0
- Delay before pulling the trigger and playing "click" sound for weapon without ammo;
min=0.0; max=99.0; // in seconds //;

SteamSoundThreshold=0
- Amount of ammo to be left in clip before playing "running low" sound along with normal shooting sound;
min=0.0; max=99.0; // in seconds //;

LastBulletStrongerPercent=0.0f
- Last bullet from magazine will deal more damage;
min=0.0f; max=99.0f; // in %-s //; (1.0f=100%)


======== Accuracy ========

> Counts as increasing value: lesser values = more accuracy;
0.1 ~= 1 cm;
// all "0" values = accuracy=100% //;

MinAimError=(X=0.0,Y=0.0)
MaxAimError=(X=0.0,Y=0.0)
- Bullet drift per shoot from the hip (without aiming);

MinZoomAimError=(X=0.0,Y=0.0)
MaxZoomAimError=(X=0.0,Y=0.0)
- Bullet drift per shoot while aiming;

> SHOTGUNS:projectiles pattern and count are capped;
- AimError will calculate accuracy for each pellet;

AccFirePenalty=0.0f
ZoomAccFirePenalty=0.0f
- Determines cone of fire increase per shot from the hip/zoom;

AccFireInterpSpeed=0.0f
ZoomAccFireInterpSpeed=0.0f
- Determines how quick accuracy parameters approximate their maximal values per shot from the hip/zoom;
- Bigger values = greater speed;
~ MaxAimError > AccFireInterpSpeed - AccFirePenalty > MinAimError;


------------- AI weapons -------------
// X=min; Y=max //;

AI_AccCone_Max=(X=0.0,Y=0.0)
- Maximal accuracy cone for AI;
AI_AccCone_Min=(X=0.0,Y=0.0)
- Minimal accuracy cone for AI;
AI_AimDelay=(X=0.0,Y=0.0)
- Aiming time;
min=0.0; max~=99.0;
- Accuracy values recalculated separately for enemies and squadmates;
i.e. increased/decreased cone of bullets spead on firing;


======== Sight ========

> Don't affect on accuracy - just on player's HUD;
> Counts as dynamic values: greater values = bigger scope;
10 ~= 1 cm;

// X=min; Y=max //;
CrosshairRange=(X=0.0,Y=0.0)
- Scope/crosshair unscoped;
ZoomCrosshairRange=(X=0.0,Y=0.0)
- Scope/crosshair size scoped (aiming);
min=15; max=99;
// recomended: min=25; max=60; in =99 disappear completely //;
// synchronize Accuracy and CrosshairRange: 0.1=20 //;

bUseSniperCam=true
- Sniper scope usage for a weapon;
true=used; false=unused;
// actulaly sniper scope only appeares on sniper rifles, for other weapons it only allows to aim from 1-st person view //;

ZoomFOV=0
- Sniper scope Field Of View - magnification (bigger number=smaller zoom);
min~=10; max~=100;


======== Recoil =========

> Not weapon firing animation (knock back-s), just a gun barrel and crosshair sway from one side to another on firing;

Recoil=(X=0.0,Y=0.0)
- Recoil hip fire;
ZoomRecoil=(X=0.0,Y=0.0)
- Recoil aim fire;
RecoilCap=0.0f
- Max recoil hip fire;
ZoomRecoilCap=0.0f
- Max recoil aim fire;
RecoilInterpSpeed=0.0f
- Shakiness of the screen when firing;
RecoilFadeSpeed=0.0f
- Rate of recoil fade hip fire;
RecoilZoomFadeSpeed=0.0f
- Rate of recoil fade aim fire;
RecoilYawScale=0.0f
- Shakiness angle (up/down) when firing;
RecoilYawBias=0.0f
- Shakiness angle (left/right) when firing;
RecoilYawFrequency=0.0f
- Shakiness angle (top-right > middle-right) when firing;
RecoilPitchFrequncy=0.0f
- Shakiness angle (top-left > middle-left) when firing;
RecoilPitchOscillation=0.0f
- Shakiness angle (round random order) when firing;
RecoilMinFadePitch=0.0f
RecoilMinFadeYaw=0.0f
- Rate of recoil fade;


======== Reload speed ========

ReloadSuccessDuration=0.0
ReloadFailureDuration=0.0
- Values are identical - set equals;
min~=0.1; max=unlimited; // in seconds //;

EjectShellCasingTimeRatio=0.0
- Thermal clip removal animation time;
min=0.0; max=unlimited; // in seconds //;

======== Tracer projectiles ========

TracerSpawnOffset=0.0
- Frequency of tracers - visible projectiles and trails;
min=0.0; max=MagSize;
- if max value is used, every bullet in magazine will be tracer-type;

TraceRange=0
- Max tracer travel distance;
// must be equal or less than ImpactRelevanceDistance value //;

ShowTracerDistance=0
- Max tracer visibility distance;
// must be equal or less than ImpactRelevanceDistance value //;


======== Fire range & ranged damage ========

Range_Melee=300.f
Range_Short=800.f
Range_Medium=1500.f
Range_Long=2000.f
- Max relevant damage on hit distances;
min=10.0f; max=ImpactRelevanceDistance; // in meters, as distance multiplier //;
- Multipliers for DamageMod_-s - what damage amount would be dealt depending of Range_;

DamageMod_MeleeRange=0.0f
DamageMod_ShortRange=0.0f
DamageMod_MediumRange=0.0f
DamageMod_LongRange=0.0f
DamageMod_VeryLongRange=0.0f
- Damage multipliers for projectiles travel distances;
min=0.01f; max=unlimited; // in %-s, as (Damage=) multiplier //; (1.0f=100%)
- All values =1.0f - the weapon will deal same (static) amount of damage, no matter the distance;

ImpactRelevanceDistance=8000
- Max target hit range;
min=10; max=41000; // in meters //;
(max= m_fVehicleInCombatMaxRange=41000; as ~max combat range in the game);

> Ballistics: when projectile travels in a range of distance (Range_), it will deal damage (DamageMod_);


======== Aiming assistance/Auto aiming ========

> See description in Global Aiming assistance/Auto aiming readme section;
> Most values counts as degrees:
1 ~= 10°; (where 36~=360°);
min~=0.01; max~=36;
> If you set greater values to min/max AimError, min/max AccFirePenalty and enable Auto aiming (add and increase values) -
you'll can convert your weapons into "Zorg ZF-1 Pod Weapon System" from "5th Element" movie ;)

------------- Magnetic correction -------------
AimCorrectionAmount=0.0
MagneticCorrectionThresholdAngle=0
MaxMagneticCorrectionAngle=0
- The maximum amount of correction - how close you must be to your target; // in degrees //;
- This values (used by sniper rifles by-default), converting all bullets to homing-sticky type;

------------- Friction -------------
bFrictionEnabled=true
MinFrictionDistance=0.f
MaxFrictionDistance=5000.f
PeakFrictionDistance=2000.f
FrictionMultiplierRange=(X=0.28f,Y=0.28f)
bFrictionDistanceScalingEnabled=false
PeakFrictionRadiusScale=1.25f
PeakFrictionHeightScale=0.4f
FrictionTargetOffset=(Z=22.f)

------------- Adhesion -------------
bAdhesionEnabled=true
MinAdhesionDistance=100.f
MaxAdhesionDistance=6000.f
MinAdhesionVelocity=80.f
CamInputAdhesionDamping=0.4f
bAdhesionDuringCam=true
MaxLateralAdhesionDist=125.f
AdhesionRot=(X=0.f,Y=1.f)



[++++++++++++++++++++ Additional properties ++++++++++++++++++++]

bUpgradesBasicWeapon=true
- Probably replaces Avenger, Shuriken, ... with new picked up weapon for squad, when you recruit someone;


======== Enemy hit/death reactions ========

[SFXGameContent_Inventory.SFXDamageType_...] - for each gun;

Penetration=PenetrationType_Light
- Determines weapon penetration type on enemy hit;
available types: _VeryLight _Light _Medium _Heavy;

bCausesPhysicsImpact=true
- Allow physical damage on target: yes/no;

bCausesRagdoll=false
- Enemy corpse ragdoll can be spawn: yes/no;

fChanceofRagdoll=0.005
- Result will be in %-s 0.7=70%, where 1.0=100%(max) / per shot;

fPhysicsReactionTimeScale=0.3
- Target physical damage reaction time;

HitReactions=(BodyPart="Head" ... ;
- Determines enemy's various reactions for damage on hit;



[++++++++++++++++++++ Notes ++++++++++++++++++++]
https://en.wikipedia.org/wiki/Physics_of_firearms