Spearhead 1944 Indirect Fire Support (IFS)
Overview
The Indirect Fire Support system provides battlefield support in various forms: mortars, artillery, CAS, and even direct support from nearby tanks.
The support occurs both by player call-in requests, as well as automatically, and is based on the available intel of enemy threats and capabilities in any given moment.
Usage
When activated via module or functions, the system operates the autonomous form of fire support in the background, depending on indirect fire support assets present in the scenario and mission setup without any action required from the player. That said, by spotting enemy units and vehicles, players, as well as friendly AI forces, will effectively provide information about possible targets to the allied supporting assets, which may affect their decision-making and behavior.
The called-in form of indirect fire support is under the player's direct control. What operations are available and any limits to the activities depend on the mission-specific setup. By using the action menu and hold actions, players can call in mortar, artillery, or CAS support or ask nearby allied tanks for direct fire support. Players can also send a request for emergency fire support that's provided by any available asset at a given moment.
Detailed information
Autonomous fire support for all sides is based on the presence of the artillery assets in the scenario and CAS presence defined in the mission setup. Amongst known enemy units and vehicles, the most tempting targets are chosen when an allied unit is at the appropriate distance to serve as the forward operator (FO). Potential targets must also meet a few additional requirements - including low enough risk for friendly fire.
When the target is accepted, the allocated artillery asset will start the aim procedure, which takes around 20 seconds, in order to take into account the target's movement vector with the assumption that it will continue to move.
Autonomous artillery barrage is a subject of both general aim error and individual round spread. Depending on the mission setup, usually, the main firing action is preceded by a single spotting round - and in the case of players under threat, a few notifications about the incoming fire.
Meanwhile the called-in artillery support is fired at the location requested by the original caller. However, each round is still subjected to a statistical spread, leading to certain inaccuracy.
Via mission setup, certain areas or objects may be blacklisted. As a result, calling fire support to strike those will be impossible. The same applies to the immediate vicinity of the caller.
CAS fire support, both autonomous and called-in, works in a similar way. Typically, though, it's much more precise against moving vehicles since the pilot can correct his aim till the last moment.
Emergency support calls are meant as a desperate last resort. The first available support provider of any type will automatically pick a hostile target near the caller that seems the most threatening, without any friendly fire avoidance - so beware. It's also possible there will be no available support at all.
In general, depending on mission setup and game difficulty, called-in fire support will have various usage conditions and limitations, including radio availability, amount of calls, time interval between the calls, or inability to call the same type of support many times simultaneously. The current status of support availability, if any is present at all, is shown directly in the action menu.
Finally, if the player is close enough to an allied tank, it may be possible to point the tank gunner to a target and engage via the action menu.
Configuration
Mission parameters may allow customization of certain elements of the system for the given play-session in multiplayer mode.
Mission maker setup and use
The advanced customization of IFS is possible via the module to a large extent and even more so via scripting
Detailed documentation is found on the Spearhead 1944.
Indirect Fire Support
During the game, you may encounter or cause various indirect fire support events.
Soldiers present on the battlefield, AI and players alike, will automatically report spotted hostile targets to HQ. HQ, according to its own judgment, may issue orders to attack a worthy target with its own artillery or aerial asset if present and not busy elsewhere.
Sometimes, players also have the possibility to call in such support directly.
Called-in Fire Support
Select and hold a support action to call in the chosen type of support to a position or target in the middle of the screen.
Avoid requesting support too close to your own or allied positions - ordnance has a considerable blast radius and spread.
MissionNamespace Variables
IFS
SPE_IFS_2phwithoutfo
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description: If SPE_IFS_FO is not empty, arty fire mission is divided into two phases. First phase is less accurate and less numerous (probing fire). If this variable is true, two-phase fire is used also without a "proper" FO from SPE_IFS_FO array
SPE_IFS_aacapableassets
Data Type: Array
Locality: GEGlobal
Default Value:["spe_flak_30","spe_flak_38","spe_us_m16_halftrack","spe_m45_quadmount"]
Description: Assets that are capable of AA.
SPE_IFS_acc
Data Type: Number
Locality: GEGlobal
Default Value:2
Description: General accuracy multiplier. Aiming error is multiplied by this value. Set to 0 for spot-on salvo aim (but individual round spread still is present)
SPE_IFS_acceptedradiobackpacks
Data Type: Array
Locality: GEGlobal
Default Value:["b_spe_ger_radio","b_spe_us_radio","b_spe_us_radio_alt","b_spe_us_radio_packboard","b_spe_us_radio_packboard_light"]
Description:
SPE_IFS_active
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description: If false, IFS main loop will exit permanently
SPE_IFS_add_mortar
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description:
SPE_IFS_advhintsallshown
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description:
SPE_IFS_ahint_basics_shown
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description:
SPE_IFS_aibombhelper_disable
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description:
SPE_IFS_allowadvancedhints
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description:
SPE_IFS_allowmortarsagainsttanks
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description:
SPE_IFS_amount
Data Type: Number
Locality: GEGlobal
Default Value:6
Description:
SPE_IFS_amountmultiplier
Data Type: Array
Locality: GEGlobal
Default Value:[[1,1,1],[0.33,0.5,1]]
Description:
SPE_IFS_areablacklist
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description: No target within included areas will become a target of IFS. Also IFS will try to avoid any shells dropping inside those areas. No 100% warranty. Accepted are all entries handled by inArea command (trigger, marker, location or [center, a, b, angle, isRectangle, c] array). If object is given as a center, area will be each check updated depending on object's position.
SPE_IFS_art_spawndirection
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description:
SPE_IFS_artyactive
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description: Artillery component switch (pending fire missions will continue if turned off)
SPE_IFS_artyavailability_side
Data Type: Array
Locality: GEGlobal
Default Value:[WEST,EAST,GUER]
Description: Sides to which artillery and mortar are available.
SPE_IFS_artyavailability_specific
Data Type: Array
Locality: GEGlobal
Default Value:
Description: Each entry in the array is a condition. If one of these conditions returns true, the player has access to IFS.
Conditions:
- Is the unit set to be a transmitter via scripting
- Is the vehicle the unit is in set to be a transmitter via scripting
- Is the unit leader of its group
- Has the unit a radio backpack
- Is the vehicle the unit is in a tank. Tanks always have radios
- Does one of the units that is in the same vehicle as the unit either a transmitter (1.) or has a radio backpack (4.) or has a simple radio
- Checks if a friendly vehicle is in reach of the unit. Distance is based on difficulty
- Checks if a nearby friendly unit can be used to relay as message. Distance is based on difficulty
SPE_IFS_artyavtransmitterdst
Data Type: Array
Locality: GEGlobal
Default Value:[50,25,5,5,5]
Description: Transmitter distance values. Final value is based on difficulty.
SPE_IFS_availablecalls
Data Type: Array
Locality: GEGlobal
Default Value:[[-1,-1,-1],[-1,-1,-1],[-1,-1,-1],[-1,-1,-1]]
Description: How many calls are available per side in format [east, west, independent, civilian] and [mortar, artillery, CAS].
SPE_IFS_cadetdifficulty
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description:
SPE_IFS_calledsupportspermanent
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description:
SPE_IFS_cas_donttrackplayersincadet
Data Type: Array
Locality: GEGlobal
Default Value:[EAST,WEST,GUER,CIV]
Description:
SPE_IFS_cas_horriblemode
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description: If true, CAS will be performed using more performance-friendly function with limited weaponry and "homing" bombs
SPE_IFS_cas_originobjects
Data Type: Array
Locality: GEGlobal
Default Value:[[],[],[],[]]
Description: Per side: [east,west,resistance,any other]. If a subarray holds any objects (for example "dummy" planes on airfields or invisible objects), their positions (distance) will define base requested CAS availability delay and overwrite SPE_IFS_EmergencyCASDelay value. Picked will be origin object closest to player or target. Added delay is 1 second per 100m of distance between the origin and the target.
SPE_IFS_cas_spawndirection
Data Type: Array
Locality: GEGlobal
Default Value:[180,180]
Description: An azimuth direction in degrees/bearing, the CAS plane will come from. Format [bearing,spread]. Formula used: ((_bearing - _spread) + (random (_spread * 2)))
SPE_IFS_cas_spawndistance
Data Type: Array
Locality: GEGlobal
Default Value:[3000,3000,3000]
Description: Distance at which planes will spawn from target. How far from a target CAS plane will be spawned. Format: [min,average,max]. Values below 1000 will default to 1000. Closer means also lower - to keep constant approach pitch/incoming vertical angle, spawning altitude equals ~distance/3.
SPE_IFS_cas_speedlimit
Data Type: Number
Locality: GEGlobal
Default Value:400
Description: Maximum speed in km/h of planes.
SPE_IFS_casactive
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description: CAS component switch (pending CAS missions will continue if turned off)
SPE_IFS_casactivity
Data Type: Array
Locality: GEGlobal
Default Value:[[0,60,300,0,0,[],[],0],[0.1,60,300,1,2,["SPE_FW190F8",1],[],0],[0.25,10,300,1,-1,["SPE_P47",1],[],0],[0,60,300,0,0,[],[],0]]
Description:
SPE_IFS_casavailability_side
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description:
SPE_IFS_checkedpotentialartyclasses
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description:
SPE_IFS_counterbatteryfireispriority
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description:
SPE_AIS_IFS_DebugSwitch
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description: General debug switch. For any debugging to work, this needs to be true.
SPE_IFS_debug
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description:
SPE_IFS_debugdeep
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description:
SPE_IFS_debugswitch_systemchat
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description:
SPE_IFS_em_id
Data Type: Number
Locality: GEGlobal
Default Value:3
Description:
SPE_IFS_emergencyartydelay
Data Type: Number
Locality: GEGlobal
Default Value:5
Description:
SPE_IFS_emergencycallbaseinterval
Data Type: Array
Locality: GEGlobal
Default Value:[[30,45,60,90,45],[30,45,60,90,45],[30,45,60,90,45],[30,45,60,90,45]]
Description:
SPE_IFS_emergencycalloveruseinterval
Data Type: Array
Locality: GEGlobal
Default Value:[[30,45,60,90,45],[30,45,60,90,45],[30,45,60,90,45],[30,45,60,90,45]]
Description:
SPE_IFS_emergencycallslimit
Data Type: Array
Locality: GEGlobal
Default Value:[[-1,5,3,1,3],[-1,5,3,1,3],[-1,5,3,1,3],[-1,5,3,1,3]]
Description:
SPE_IFS_emergencycasdelay
Data Type: Number
Locality: GEGlobal
Default Value:5
Description:
SPE_IFS_emergencyfireactive
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description:
SPE_IFS_emergencyfireimmunity
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description:
SPE_IFS_enemieseast
Data Type: Array
Locality: GEGlobal
Default Value:[1]
Description:
SPE_IFS_enemiesother
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description:
SPE_IFS_enemiesresistance
Data Type: Array
Locality: GEGlobal
Default Value:[1]
Description:
SPE_IFS_enemieswest
Data Type: Array
Locality: GEGlobal
Default Value:[0,2]
Description:
SPE_IFS_enemysides
Data Type: Array
Locality: GEGlobal
Default Value:[[1],[0,2],[1],[]]
Description:
SPE_IFS_fo
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description:
SPE_IFS_foclass
Data Type: Array
Locality: GEGlobal
Default Value:["spe_us_rangers_radioman","spe_us_rangers_sniper","spe_us_radioman","spe_us_sniper","spe_fr_sniper","spe_fr_radioman","spe_ger_radioman","spe_ger_scout_assist_squadlead","spe_ger_scout_ober_grenadier","spe_ger_scout_lieutenant","spe_ger_scout_mgunner2","spe_ger_scout_mgunner","spe_ger_scout_ober_rifleman","spe_ger_scout_rifleman","spe_ger_scout_squadlead","spe_ger_scout_sniper","spe_sturmtrooper_radioman","spe_sturmtrooper_sniper"]
Description:
SPE_IFS_fototargetmaxdistances
Data Type: Array
Locality: GEGlobal
Default Value:[50,150,250]
Description:
SPE_IFS_heavyart_id
Data Type: Number
Locality: GEGlobal
Default Value:1
Description:
SPE_IFS_heavyartillery
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description:
SPE_IFS_heavyartyclasses
Data Type: Array
Locality: GEGlobal
Default Value:["spe_lefh18","spe_m4a1_t34_calliope"]
Description:
SPE_IFS_immunefx_ringing
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description:
SPE_IFS_incomingmarkrange
Data Type: Number
Locality: GEGlobal
Default Value:1000
Description:
SPE_IFS_incomingnotificationrange
Data Type: Number
Locality: GEGlobal
Default Value:300
Description:
SPE_IFS_interval
Data Type: Number
Locality: GEGlobal
Default Value:2
Description:
SPE_IFS_iowamode
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description:
SPE_IFS_lightartillery
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description:
SPE_IFS_lightartyclasses
Data Type: Array
Locality: GEGlobal
Default Value:["spe_m1_81","spe_grw278_1"]
Description:
SPE_IFS_limitshotstocurrentmagazinerounds
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description:
SPE_IFS_monogamy
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description:
SPE_IFS_mort_spawndirection
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description:
SPE_IFS_mortar
Data Type: Array
Locality: GEGlobal
Default Value:["i_mortar_01_f","o_mortar_01_f","b_g_mortar_01_f","b_mortar_01_f"]
Description:
SPE_IFS_mortarclasses
Data Type: Array
Locality: GEGlobal
Default Value:["spe_m1_81","spe_grw278_1"]
Description:
SPE_IFS_pause
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description: IFS will wait with initailization and next main loop cycle until this is false
SPE_IFS_planes_civ
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description:
SPE_IFS_planes_east
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description:
SPE_IFS_planes_ind
Data Type: Array
Locality: GEGlobal
Default Value:["SPE_P47",1]
Description:
SPE_IFS_planes_west
Data Type: Array
Locality: GEGlobal
Default Value:["SPE_FW190F8",1]
Description:
SPE_IFS_progresscallwheninvalid
Data Type: Boolean
Locality: GEGlobal
Default Value:true
Description:
SPE_IFS_requestedheavyartyammo
Data Type: Array
Locality: GEGlobal
Default Value:["SPE_60Rnd_M8","SPE_20x_Shell_105L28_Gr38_HE","SPE_60Rnd_M8","SPE_60Rnd_M8"]
Description: Artillery magazine used for heavy artillery support request [east,west,resistance,any other]
SPE_IFS_requestedheavyartyamount
Data Type: Number
Locality: GEGlobal
Default Value:6
Description: Heavy arty shells count per request
SPE_IFS_requestedheavyartyeta
Data Type: Number
Locality: GEGlobal
Default Value:30
Description: Heavy artillery ETA in seconds from request to shells appearance
SPE_IFS_requestedheavyartygunsamount
Data Type: Array
Locality: GEGlobal
Default Value:[1,3,1,1]
Description: How many heavy arty assets will provide the requested support - determines intervals between shells [east,west,resistance,any other]
SPE_IFS_requestedheavyartygunsrof
Data Type: Array
Locality: GEGlobal
Default Value:[0.5,5,0.5,0.5]
Description: How fast each heavy arty asset can shoot [east,west,resistance,any other]
SPE_IFS_requestedheavyartyspread
Data Type: Number
Locality: GEGlobal
Default Value:150
Description: Shells spread in meters of heavy arty type of requested support
SPE_IFS_requestedmortarammo
Data Type: Array
Locality: GEGlobal
Default Value:["SPE_8Rnd_81mmHE_M1_M43A1","SPE_8Rnd_81mm_FA_Mle_1932_HE","SPE_8Rnd_81mmHE_M1_M43A1","SPE_8Rnd_81mmHE_M1_M43A1"]
Description: Artillery magazine used for heavy artillery support request [east,west,resistance,any other]
SPE_IFS_requestedmortaramount
Data Type: Number
Locality: GEGlobal
Default Value:6
Description: Mortar shells count per request
SPE_IFS_requestedmortareta
Data Type: Number
Locality: GEGlobal
Default Value:15
Description: Mortar ETA in seconds from request to shells appearance
SPE_IFS_requestedmortargunsamount
Data Type: Array
Locality: GEGlobal
Default Value:[3,3,3,3]
Description: How many mortars will provide the requested support - determines shells grouping [east,west,resistance,any other]
SPE_IFS_requestedmortargunsrof
Data Type: Array
Locality: GEGlobal
Default Value:[2,2,2,2]
Description: How fast each heavy arty asset can shoot [east,west,resistance,any other]
SPE_IFS_requestedmortarspread
Data Type: Number
Locality: GEGlobal
Default Value:100
Description: Mortar spread in meters of mortar type of requested support
SPE_IFS_requestedsupportavailabilitydelay
Data Type: Array
Locality: GEGlobal
Default Value:[[60,180,60],[60,180,60],[60,180,60],[60,180,60]]
Description:
SPE_IFS_safetydistance_cas
Data Type: Array
Locality: GEGlobal
Default Value:[50,50,50,50]
Description:
SPE_IFS_safetydistance_heavyarty
Data Type: Array
Locality: GEGlobal
Default Value:[100,100,100,100]
Description:
SPE_IFS_safetydistance_mortararty
Data Type: Array
Locality: GEGlobal
Default Value:[25,25,25,25]
Description:
SPE_IFS_shouldblacklistblockrequestedsupport
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description:
SPE_IFS_sides
Data Type: Array
Locality: GEGlobal
Default Value:[EAST,WEST,GUER]
Description: Sides that have access to IFS.
SPE_IFS_spottinground
Data Type: Array
Locality: GEGlobal
Default Value:[EAST,WEST,GUER]
Description:
SPE_IFS_targetblacklist
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description: IFS will try to not hit these objects.
SPE_IFS_targetmaxspeeds
Data Type: Array
Locality: GEGlobal
Default Value:[10,30]
Description:
SPE_IFS_targetreportingdelay
Data Type: Array
Locality: GEGlobal
Default Value:[[30,30,30,30],[30,30,30,30],[30,30,30,30],[30,30,30,30]]
Description: How long (in seconds) it takes from potential target detection until it may become a valid IFS target, per side ([east,west,resistance,any other]), each side per difficulty ([recruit,regular,veteran,hardcore,custom]);
SPE_IFS_temporarydebugmarkers
Data Type: Array
Locality: GEGlobal
Default Value:[]
Description:
SPE_IFS_vehicledefaulttemptation
Data Type: Array
Locality: GEGlobal
Default Value:[[3,3,2],[3,3,2],[3,3,2],[3,3,2]]
Description:
SPE_IFS_worthyinfantryradius
Data Type: Array
Locality: GEGlobal
Default Value:[[100,150,25],[100,150,25],[100,150,25],[100,150,25]]
Description:
SPE_IFS_worthyinfantrytarget
Data Type: Array
Locality: GEGlobal
Default Value:[[2,4,0],[2,4,0],[2,4,0],[2,4,0]]
Description:
SPE_IFS_wpclasses
Data Type: Array
Locality: GEGlobal
Default Value:["spe_m1_81"]
Description:
Direct Support (DS)
SPE_IFS_DS_checkfriendlyfire
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description:
SPE_IFS_DS_checkproviderlos
Data Type: Boolean
Locality: GEGlobal
Default Value:false
Description:
SPE_IFS_DS_interval
Data Type: Number
Locality: GEGlobal
Default Value:10
Description:
SPE_IFS_DS_providerblacklist
Data Type: Array
Locality: GEGlobal
Default Value:["spe_m4a1_t34_calliope"]
Description:
SPE_IFS_DS_providingtime
Data Type: Number
Locality: GEGlobal
Default Value:30
Description:
SPE_IFS_DSavailability_side
Data Type: Array
Locality: GEGlobal
Default Value:[WEST,EAST,GUER]
Description: To which sides should direct support be available.
SPE_IFS_DSmaxrange
Data Type: Number
Locality: GEGlobal
Default Value:500
Description:
SPE_IFS_DSradius
Data Type: Number
Locality: GEGlobal
Default Value:10
Description: