lang/MISC/ENGINE, which the game reads as misc\engine, sets the gameplay mods of the AF engine (HS2Engine and the CustomGameDLL Game_Dll.dll): cover, crew survival, reversing, vehicle motion, paradrops, medics, solo damage, ricochets, shot-down aircrews. The game reads this file once, at startup, after misc\misc.
A change to a value needs no new DLL. Edit the file, then build lang.aps again.
One key value line per setting. A dash in the first column makes the line a comment.
Absent key: the AF value applies. Without the file, the game plays as before.
Value out of range: the engine moves it to the nearest limit.
Pair out of order: both keys take their AF values. The pairs are cover_trees_moderate ≤ cover_trees_dense, cover_small_radius ≤ cover_massive_radius, cover_reach_cells ≤ cover_forest_reach_cells, crew_shot_wait_first_percent ≤ crew_shot_wait_max_percent, ricochet_bounce_near ≤ ricochet_bounce_far and ricochet_bounce_min_degrees ≤ ricochet_bounce_max_degrees. paradrop_scatter must be a power of 2.
The HS2Engine log records each changed value and each correction. The CustomGameDLL DLL writes no log.
Multiplayer: all the players of a game must have the same file, as with the unit sheets.
The file is ASCII with CRLF line ends. Before a commit, run python3 tests/check_tuning_data.py from HS2Engine: it rejects unknown or duplicate keys, values out of range and malformed lines.
Cover table
cover_share <unit> <zone> <damage %> <silhouette %> sets one cell of the table, each % from 0 to 100. cover_prone <damage %> <silhouette %> adds to it for a prone soldier, anywhere. Zones do not stack: the best damage cut and the best silhouette cut count.
Unit
isolated
moderate
dense
narrow
massive
horizontal
building
infantry
10 20
20 50
30 75
0 20
20 40
10 30
20 50
weapon
10 10
10 30
15 50
0 0
10 15
15 30
20 20
vehicle
0 0
0 10
0 20
0 0
0 10
0 0
0 10
Zones: isolated vegetation, moderate forest, dense forest, narrow scenery, massive scenery or hill, lying scenery and craters, house. Units: infantry, fixed weapons (guns, MGs), vehicles. AF value of cover_prone: 30 60.
Keys
A turn is 40 ms at the usual speed. A cell is 32 px. “stock” gives the original game’s value where the setting replaces one.
Cover (HS2_MOD_COVER)
Key
Purpose
Range
AF value
cover_trees_moderate
moderate forest from this many (1 or 2: isolated); at most cover_trees_dense
1..9
3
cover_trees_dense
dense forest from this many (more than 7)
1..9
8
cover_small_radius
px; below it, no cover; at most cover_massive_radius
px beyond a vehicle’s (or wreck’s) radius (+-2 cells are scanned)
0..32
16
cover_reach_cells
cells, any cover (stock 3); at most cover_forest_reach_cells
1..8
3
cover_forest_reach_cells
cells, moderate and dense forest
1..8
5
cover_enough_percent
% silhouette cut (standing infantry) from which all cover is as good and the nearest wins (50: moderate forest, houses, vehicles, the filled shield; 100: the best always)
1..100
50
cover_danger_reach
px from a hazard: no destination within
0..160
64
cover_burst_shots
a hazard’s effect spawns at least this many damaging shots
1..64
2
cover_fragile_armor
a house is a hazard at EXPLOSIVE armour up to this
0..255
2
cover_score_per_mille
0..1000
709
cover_cursor_strong
filled from old P 49 (moderate forest, houses, vehicles)
1..100
49
Crews of destroyed vehicles (HS2_MOD_CREW)
Key
Purpose
Range
AF value
crew_novice_percent
% chance at experience 0
0..100
25
crew_veteran_percent
% chance at full experience (0x8000), linear between
0..100
30
crew_wound_percent
% of the type’s health, the most a wound takes (uniform from 0)
0..100
90
Passengers of destroyed vehicles (HS2_MOD_PASSENGERS)
Key
Purpose
Range
AF value
passenger_novice_percent
% chance at experience 0
0..100
25
passenger_veteran_percent
% chance at full experience (0x8000), linear between
0..100
30
Reversing (HS2_MOD_REVERSE_MOVE)
Key
Purpose
Range
AF value
reverse_range_cells
cells, the farthest destination to reverse to (stock 4; imm8)
1..126
12
reverse_angle
1/32 turns: reverse when the next step is more off the hull (stock random, 8..15; 16: never)
0..16
11
Pushed guns (HS2_MOD_GUN_REVERSE)
Key
Purpose
Range
AF value
gun_push_percent
cannons, AA guns, howitzers, rockets (any other seltype)
10..100
70
gun_push_light_percent
MGs (hmg) and mortars (boxer, hmortar)
10..100
100
Vehicle motion (HS2_MOD_VEHICLE_MOTION)
Key
Purpose
Range
AF value
vehicle_start_percent
% of the speed at a start (after a stop or a pivot); 100: no ramp
10..100
25
vehicle_accel_turns
turns from the start speed to full speed
1..250
6
vehicle_brake_turns
turns from full speed down to the start speed when braking
1..250
2
vehicle_brake_px
px before the end of a path where braking starts; 0: off
0..64
8
vehicle_roll_bins
1/32 turns: a smaller heading change turns while rolling, a larger one pivots in place (stock 0)
0..8
2
vehicle_turn_percent_1
% of the speed while 1/32 turn off the heading
10..100
80
vehicle_turn_percent_2
% of the speed while 2/32 or more off (up to vehicle_roll_bins)
10..100
60
Paradrops (HS2_MOD_PARADROP_SPREAD)
Key
Purpose
Range
AF value
paradrop_scatter
px each axis around the plane (stock 32); a power of two
2..128
64
paradrop_extra_ticks
ticks between successful drops, added to reloadtime
0..25
3
Tank crews (HS2_MOD_CREW_CYCLE)
Tanks: tank, tank2, samo, apc, mzenit. A turn is 40 ms at the usual speed.
Key
Purpose
Range
AF value
crew_exit_turns
turns between two occupants leaving a tank (stock 0; 0: off)
0..250
0
crew_attack_crew
crew a tank needs to fire on the move, open the hatch or use binoculars, whatever the sheet’s attackcrew (all, if it seats fewer); fewer fire only at rest (stock: the sheet’s attackcrew); a member at the open hatch or the binoculars does not count (1: off)
1..10
2
crew_switch_turns
turns fewer than crew_attack_crew need between the driver’s seat (moving, turning the hull) and the gun, both ways: no fire or reload until at the gun, no drive until at the wheel (stock 0)
0..250
50
crew_missing_percent
% added to the reload and target search times per missing member (stock 0)
0..100
25
crew_max_percent
the most that adds up to, % of a full crew’s times
100..1000
200
crew_lone_percent
a lone member’s times, % of a full crew’s
100..1000
200
crew_shot_wait_first_percent
the turret’s wait after a main-gun shot (gunshotwait), % of the sheet’s, with one member missing
100..1000
400
crew_shot_wait_step_percent
% added to it per further missing member
0..1000
200
crew_shot_wait_max_percent
the most that adds up to (the wait stops at 254 turns); at least crew_shot_wait_first_percent
100..2500
1000
Medics (HS2_MOD_MEDIC_PACE)
Key
Purpose
Range
AF value
medic_container_factor
times rarer a medic’s heal in a house or vehicle (stock 1; Random(0x7FFF) x it x reloadtime stays in an int)
1..64
3
Solo damage (HS2_MOD_SOLO_DAMAGE)
The % of the damage after armour that the units of the local player take in a solo game, by level. The damage they deal stays the multiplayer one.
Key
Purpose
Range
AF value
solo_taken_0
VERY EASY; stock 50, crews 25, and dealt x2 before and after armour
0..400
50
solo_taken_1
EASY; stock as VERY EASY
0..400
75
solo_taken_2
MEDIUM, the multiplayer formula; stock 100
0..400
100
solo_taken_3
NORMAL; stock 200, crews about 400
0..400
200
Ricochets (HS2_MOD_RICOCHET)
The chances and the calibre formula stay in misc\misc (shot_ricochet, shot_calibre).
Key
Purpose
Range
AF value
ricochet_bounce_near
px (5 tiles), shortest flight after the bounce; at most ricochet_bounce_far
32..1024
160
ricochet_bounce_far
px (20 tiles), longest
32..1024
640
ricochet_bounce_min_degrees
deflection from the incoming line, left or right; at most ricochet_bounce_max_degrees
0..90
15
ricochet_bounce_max_degrees
0..90
45
ricochet_bounce_speed_percent
% of the shell’s speed after the bounce
10..200
85
Crews of shot-down planes (HS2_MOD_AIRCREW)
Key
Purpose
Range
AF value
aircrew_novice_percent
% chance at experience 0
0..100
20
aircrew_veteran_percent
% chance at full experience (0x8000), linear between
0..100
40
aircrew_corner_range
px (6 cells)
0..320
192
aircrew_surrender_brave_percent
% chance at full morale (0x7FFF)
0..100
10
aircrew_surrender_broken_percent
% chance at the lowest morale (-0x7FFF), linear between