Combat agent stats
How a battle agent's stats are built from equipment, skills, perks, banners, weather and ships, at full precision for game v1.5.7: movement speed, armor, health and resistances, melee and ranged handling, ammo and shield hit points, effective skill, mount stats, combat AI level, the equip and mount skill requirements and the naval-battle extension. Plain-language versions per skill: Athletics, One Handed, Two Handed, Polearm, Bow, Crossbow, Throwing, Riding, Roguery, Engineering, Medicine, Tactics, Mariner, Shipmaster, Boatswain.
Module overrides. The campaign model is SandBox SandboxAgentStatCalculateModel. NavalDLC NavalAgentStatCalculateModel extends it and is the live model: UpdateAgentStats runs the SandBox chain first, then the naval terms; InitializeMissionEquipmentAfterDeploymentFinished, InitializeAgentStatsAfterDeploymentFinished and GetBreatheHoldMaxDuration are naval extends methods. The getters GetEffectiveSkill, GetEffectiveMaxHealth, GetWeaponDamageMultiplier, GetWeaponInaccuracy, the three resistances, GetInteractionDistance, GetMaxCameraZoom, GetSneakAttackMultiplier, InitializeAgentStats and InitializeMissionEquipment are delegated by the naval model to SandBox unchanged. Mount loss and lameness are SandBox MountAgentLogic. StoryMode and BirthAndDeath change none of these numbers. Custom battles use CustomBattleAgentStatCalculateModel (NavalDLC's NavalCustomBattleAgentStatCalculateModel delegates to it): it hard-codes its skill coefficients instead of reading skill effects and perks. It is outside the campaign catalog; the matching game numbers give its coefficients in their game_numbers.csv notes.
At a glance
| Group | Game numbers |
|---|---|
| Effective skill | agent_effective_skill |
| Movement | agent_max_speed_multiplier, agent_weight_speed_penalty, agent_armor_encumbrance, agent_weapons_encumbrance, agent_combat_max_speed_multiplier, agent_crouched_speed_multiplier, agent_top_speed_reach_duration, agent_step_size |
| Armor | agent_armor_head, agent_armor_torso, agent_armor_arms, agent_armor_legs |
| Health and resistances | agent_max_health, knockback_resistance, knockdown_resistance, dismount_resistance |
| Melee handling | swing_speed_multiplier, thrust_or_ranged_ready_speed_multiplier, agent_handling_multiplier, agent_weapon_damage_multiplier, agent_kick_stun_duration_multiplier, agent_shield_bash_stun_duration_multiplier, agent_shield_missile_collision_body_size, sneak_attack_damage_multiplier |
| Ranged handling | reload_speed, reload_movement_penalty_factor, missile_speed_multiplier, weapon_inaccuracy, weapon_max_movement_accuracy_penalty, weapon_max_unsteady_accuracy_penalty, weapon_rotational_accuracy_penalty, weapon_best_accuracy_wait_time, weapon_unsteady_begin_time, weapon_unsteady_end_time, max_camera_zoom |
| Combat AI | agent_ai_level |
| Ammo, equipment, flags | missile_ammo_amount, shield_hit_points, can_use_item, agent_can_use_all_bows_mounted, agent_can_reload_all_crossbows_mounted, agent_flag_deflect_arrows_2h_sword, interaction_distance |
| Mounts | mount_speed, mount_maneuver, mount_acceleration, mount_armor, mount_max_health, mount_death_chance, mount_lame_chance, agent_attribute_riding, can_mount |
| Naval battles | naval_speed_penalty, naval_movement_accuracy_penalty, naval_rotational_accuracy_penalty, naval_inaccuracy_penalty, naval_ai_shooter_error, naval_external_acceleration_penalty, naval_damage_penalty, breath_hold_max_duration, figurehead_agent_bonus |
Symbols used throughout:
- stage: how a source enters its number.
basesets the start value,addadds a flat amount,factoradds to the summed percentage of the game's standard modifier sum,multiplymultiplies the running value,overridereplaces the value. - standard modifier sum:
result = (base + Σadd) · (1 + Σfactor), then clamped. - Sequential: the stages of the number run one after the other, each
(previous) · (1 + Σ factors of that stage). - effective skill: the agent's skill after captain and party adds (see Effective skill). raw skill: the character's own skill value.
- verdict:
works= does what the tooltip says, or more (broader effects are noted);differs= narrower, different or extra conditions/values than the tooltip (the reason is given);unused= never read by the game;ui_only= only shown in the interface. - skill level: a source that reads the skill value itself, with no skill effect or perk in between; named "Skill level" in the per-skill tables.
- native engine: a driven property that no managed code reads back; the engine's movement, animation or combat AI code consumes it, so its effect in play is not visible in the IL.
Update order
The agent's properties are written by one chain. Later steps read what earlier steps wrote.
| When | Method | Writes |
|---|---|---|
| spawn | InitializeAgentStats |
agent flags (heroes), HealthLimit from GetEffectiveMaxHealth (non-heroes), ArmorEncumbrance |
| spawn | InitializeMissionEquipment |
ammo per slot, shield hit points per slot |
| every update | UpdateHumanStats |
base values: armor sums, encumbrance, max speed, combat max speed, time to reach top speed, riding attribute, 0.93 speed bases, ranged class terms, accuracy penalties, inaccuracy |
| every update | SetWeaponSkillEffectsOnAgent |
weapon speed and reload skill effects, crouched speed; only for CharacterObject agents with a primary wielded item |
| every update | SetMountedPenaltiesOnAgent |
mounted speed, reload and inaccuracy penalties; only with a wielded weapon and a mount |
| every update | SetPerkAndBannerEffectsOnAgent |
perk and banner factors and captain armor adds |
| every update | SetAiRelatedProperties (base model) |
combat AI properties from the AI level |
| every update, naval battle, human | UpdateNavalHumanStats, SetNavalPerksAndEffectsOnAgent |
naval penalties, Pirate's Prowess, Special Arrows armor |
| every update, naval battle | UpdateAgentStats (naval) |
Hawk and Boar figurehead multipliers, Siren damage bonus |
| after deployment, naval | InitializeAgentStatsAfterDeploymentFinished |
figurehead bonuses (Commodore, boarded ship) |
| after deployment, naval | InitializeMissionEquipmentAfterDeploymentFinished |
captain ammo perks, ship ammo and shield upgrades |
| every update, mounts | UpdateHorseStats |
mount armor, maneuver, speed, acceleration, riding attribute, mount difficulty |
Captain and party perks
- Formation captain. Captain halves come from the agent's formation captain. The captain's character is nulled when it is the agent's own character, so a captain never receives his own captain halves. This holds for every captain half in these models.
- Two ways in. Most captain halves go through a shared captain step, which picks the half whose role is Captain. The armor adds of Ignore Pain, Metallurgy and Dauntless Steed read the captain's perk value directly.
- Troop masks. The perk's troop mask is often not enforced; the conditions in the tables are what the code tests (wielded weapon, mount, tier, shield). Mounted or on-foot tests in
GetEffectiveSkillcheck whether the character has a mount, which is equipment-based. - Shield and no-shield blocks. In
SetPerkAndBannerEffectsOnAgentan offhand-shield block and a no-shield block are exclusive: an agent holding an offhand shield runs only the first, any other agent only the second.- Offhand-shield block: Arrow Catcher (both halves), Shieldwall secondary, Basher primary (stun).
- No-shield block: Morning Exercise (both halves), Sprint (both halves), Self Medication secondary, Fleet of Foot secondary, Shield Bearer secondary, Footwork secondary, Reckless Charge secondary, the first Form Fitting Armor secondary stack.
- Outside both blocks: Loose and Move secondary (ranged block), Decisive Battle, Extended Skirmish, Small Unit Tactics, the second Form Fitting Armor stack, the movement banner.
- Party leader. Party leader halves read the agent's party leader. Deep Quivers secondary and Fletcher secondary null the leader when it is the agent himself; Well Prepared secondary includes the leader.
- Epic perks (the "for every skill point above 200/250" halves) test the character's raw skill, not the effective skill.
Effective skill
agent_effective_skill is the skill value every skill-scaled agent stat reads (weapon speed, damage, accuracy, reload, riding effects, resistances).
effective skill = trunc( skill_value + Σ adds )
skill_value: the character's own skill level.Σ adds: captain and party perk adds for the queried skill, below.- The result is truncated to an integer.
| Source | Skill raised | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|---|
| Character skill value | any | base | skill_value | works | |
| Dead Aim secondary | Bow | add | +20 | captain | works |
| Horse Master secondary | Bow | add | +30 | captain; character has a mount | works |
| Donkey's Swiftness secondary | Crossbow | add | +30 | captain | works |
| Strong Arms secondary | Throwing | add | +20 | captain | works |
| Running Throw secondary | Throwing | add | +30 | captain | works |
| Flexible Fighter secondary | Bow, Crossbow, Throwing for infantry; One Handed, Two Handed, Polearm for ranged troops | add | +15 | captain; infantry or ranged | works |
| Wrapped Handles secondary | One Handed | add | +30 | captain; character on foot | works |
| Strong Grip secondary | Two Handed | add | +30 | captain; character on foot | works |
| Clean Thrust secondary | Polearm | add | +30 | captain; character on foot | works |
| Counterweight secondary | Polearm | add | +20 | captain; character on foot | differs |
| Phalanx primary | One Handed, Two Handed, Polearm | add | +30 | party leader; character on foot; formation in shield wall | differs |
| Nimble Steed secondary | Riding | add | +30 | captain; character has a mount | differs |
| One of the Family primary | Vigor and Control skills | add | +10 | party leader; bandit occupation | works |
- Dead Aim, Donkey's Swiftness, Strong Arms and Running Throw have no weapon or troop test: every agent of the formation gets the add whenever that skill is read. Flexible Fighter's "archers" are all ranged troops.
- Counterweight secondary: mounted troops are excluded; the tooltip says all troops.
- Phalanx primary: mounted troops are excluded, not stated in the tooltip. No captain or at-sea test.
- Nimble Steed secondary: only formation troops whose character has a mount; the description says all troops.
- One of the Family: the attribute test is in SandboxAgentStatCalculateModel+<>c.il.
Worked example. A captain's add raises the effective skill the crossbow stats read:
A troop with Crossbow 120 in a formation whose captain (another character) has Donkey's Swiftness. Inputs: skill value 120.
| Step | Source | Stage | Change | Running value |
|---|---|---|---|---|
| Base | Character skill value | base | 120.0000 | |
| 1 | Donkey's Swiftness | add | +30.0000 | 150.0000 |
| Result | Agent effective skill in battle | 150.0000 |
With these inputs, agent effective skill in battle is 150.0000.
Movement
Max speed
agent_max_speed_multiplier is the agent's movement speed multiplier.
S = 0.7 · (1 + running_speed_effect · athletics)
cap = 0.7 · (1 + running_speed_effect · 300)
W = agent_weight_speed_penalty · (agent_armor_encumbrance + agent_weapons_encumbrance) / monster_weight
m0 = env_speed_factor · clamp(S − W, 0, cap)
m1 = m0 · (1 + Σ perk and banner factors)
m2 = m1 · (1 − naval_speed_penalty) naval battle, humans
athletics: effective Athletics.running_speed_effect: the Athletics skill effect "Running speed increased by", 0.001 per point.cap: the same term at skill 300; Athletics above 300 adds no speed.monster_weight:Agent.Monster.Weight.env_speed_factor: the environment speed factor, ×0.9 in rain (outdoor scene with rain density > 0).- Perk factors are summed once on
m0.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Athletics speed factor | factor | 0.001 / point | differs | |
| Total armor and weapons encumbrance | add | −W | works | |
| Rain | multiply | 0.9 | outdoor scene, rain | works |
| Morning Exercise primary | factor | +3% | no offhand shield | differs |
| Morning Exercise secondary | factor | +5% | captain; no offhand shield | differs |
| Sprint primary | factor | +5% | no offhand shield; wielded weapon not ranged | differs |
| Sprint secondary | factor | +3% | captain; infantry; no offhand shield | differs |
| Self Medication secondary | factor | +2% | no offhand shield | differs |
| Fleet of Foot secondary | factor | +4% | captain; no offhand shield | differs |
| Shield Bearer secondary | factor | +3% | captain; no offhand shield | differs |
| Footwork secondary | factor | +2% | captain; no offhand shield | differs |
| Reckless Charge secondary | factor | +2% | captain; no offhand shield | differs |
| Form Fitting Armor secondary | factor | +4% × stacks | captain | differs |
| Fleet Footed primary | factor | +10% | no wielded weapon, no offhand item | differs |
| Nocking Point secondary | factor | +3% | captain; on foot; wielding a bow | differs |
| Loose and Move secondary | factor | +5% | captain; wielding a ranged weapon | works |
| Decisive Battle secondary | factor | +5% | captain; terrain Plain, Steppe or Desert | works |
| Extended Skirmish secondary | factor | +2% | captain; terrain Snow or Forest | works |
| Small Unit Tactics secondary | factor | +5% | captain; formation of at most 15 units | works |
| Banner: increased troop movement speed | factor | 0.15 / 0.25 / 0.3 | agent's formation banner | works |
| Naval deck movement penalty | multiply | 1 − naval_speed_penalty | naval battle, humans | works |
- Athletics speed factor: the clamp to the skill-300 value is not stated in the tooltip.
- Every "no offhand shield" condition comes from the exclusive shield/no-shield blocks; none of these tooltips has a shield condition.
- Morning Exercise, Sprint, Self Medication, Fleet Footed, Fleet of Foot secondary and Shield Bearer secondary write the general maximum speed multiplier, not the combat one, although several tooltips say "combat movement speed".
- Sprint and Fleet Footed test the currently wielded items, not everything equipped as the tooltips say.
- Form Fitting Armor secondary:
stacks = (Tier ≥ 3 and no offhand shield ? 1 : 0) + (Tier ≥ 3 and infantry ? 1 : 0). A tier 3+ infantry troop without a shield gets the bonus twice. No on-foot test. - Nocking Point secondary: mounted archers are excluded.
- Small Unit Tactics: also applies at exactly 15 units (tooltip: less than 15).
- The movement banner applies to every human agent of the formation; the description says infantry.
- The Tactics terrain and formation-size perks sit outside the shield blocks and apply to every agent.
Weight speed penalty
agent_weight_speed_penalty is the coefficient W scales encumbrance by.
agent_weight_speed_penalty = max(0, 0.2 · (1 + weight_penalty_effect · athletics))
weight_penalty_effect: the Athletics skill effect "Weight penalty reduced by", −0.001 per point of effective Athletics. Verdict works.
Armor encumbrance
agent_armor_encumbrance is the armor weight that slows the agent.
agent_armor_encumbrance = max(0, armor_weight · (1 + Form Fitting Armor primary))
armor_weight: the total weight of the agent's armor.- Form Fitting Armor primary: −15%, the agent's own perk, works. Written at spawn and by
UpdateHumanStats; not overridden by NavalDLC.
Weapons encumbrance
agent_weapons_encumbrance is the weapon weight that slows the agent.
e = weapons_weight + 4 · √wielded_length · wielded_weight + 1.5 · shield_weight
weapons_weight: the total weight of the agent's weapons.4 · √wielded_length · wielded_weight: the primary wielded weapon's real length and item weight.1.5 · shield_weight: an offhand item that can block ranged attacks.
| Source | Stage | Effect | Conditions | Verdict |
|---|---|---|---|---|
| Ranger's Swiftness primary | override | drops the wielded term | wielding a bow item | differs |
| Loose and Move primary | override | drops the wielded term | wielding a crossbow item | differs |
| Shield Bearer primary | add | drops the shield term | offhand shield | works |
- Ranger's Swiftness, Loose and Move: only the wielding surcharge is removed; the bow or crossbow's own weight still counts in
weapons_weight. The tooltips say equipped bows/crossbows do not slow you down.
Combat max speed
agent_combat_max_speed_multiplier is the speed cap used in combat.
base = min(1, light + (heavy − light) · min((agent_armor_encumbrance + agent_weapons_encumbrance) / monster_weight, 1))
combat max speed = base · (1 + Σ factors)
light,heavy: managed parameters 6 and 5.- Fleet of Foot primary +4%, unconditional, works. Footwork primary +2% with a wielded melee polearm, works.
- Not touched by the naval extension.
Crouched speed
agent_crouched_speed_multiplier starts at 1.0; SetWeaponSkillEffectsOnAgent adds the Roguery skill effect "Crouched speed" (0.0005 per point of effective Roguery) as a factor. Verdict differs: the method runs only with a primary wielded item, so unarmed agents keep 1.0.
Time to reach top speed
agent_top_speed_reach_duration is how long a human agent takes to reach full running speed (native engine).
duration = 2.5 + max(4 − 0.01 · athletics, 1) / 3.5 − min(monster_weight / (monster_weight + agent_armor_encumbrance + agent_weapons_encumbrance), 0.8)
athletics: effective Athletics. The Athletics term falls from 4/3.5 at 0 to 1/3.5 at 300 and stays there above 300; values per level are in the Athletics table.- No perk, banner or naval term changes it.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Athletics skill level | add | max(4 − 0.01 · athletics, 1) / 3.5 | works |
Step size
agent_step_size is handed to the engine when an agent is created (Mission.SpawnAgent, Mission.SpawnTroop), for every agent (native engine).
step size = min(1, 0.8 + 0.2 · athletics · 0.0033333)
athletics: the character's raw Athletics, not the effective skill. The constant is 0.0033333, so the value stays just under 1 at 300.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Athletics skill level | add | 0.2 · athletics · 0.0033333 | works |
Armor
agent_armor_head, agent_armor_torso, agent_armor_arms, agent_armor_legs are the four body-part armor values of a human agent. All four follow one chain.
a0 = armor_sum
a1 = max(0, (a0 + captain_adds) · (1 + own_factor)) written only when an add or factor applied
a2 = max(0, a1 + 5) naval battle; agent Tier ≤ 3; formation captain has Special Arrows
a3 = a2 · (1 + figurehead_effect) Boar figurehead registration
armor_sum: the head, body, arm and leg armor sums of the spawn equipment.captain_adds: mounted, Dauntless Steed secondary only; on foot, Ignore Pain secondary only; plus Metallurgy secondary either way.own_factor: Ignore Pain primary, on foot.- Clamp: minimum 0.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Equipped armor per body part | base | armor_sum | works | |
| Ignore Pain primary | multiply | 1 + 10% | on foot | works |
| Ignore Pain secondary | add | +5 | captain; on foot | differs |
| Metallurgy secondary | add | +5 | captain | differs |
| Dauntless Steed secondary | add | +5 | captain; mounted | differs |
| Special Arrows primary | add | +5 | captain; naval battle; agent Tier ≤ 3 | works |
| Boar figurehead | multiply | 1 + figurehead_effect | naval battle | works |
- Ignore Pain secondary, Metallurgy, Dauntless Steed: the +5 is added to every body part even when no armor piece is worn there (0 → 5). The tooltips say equipped pieces only.
- The Ignore Pain primary multiplier also scales the captain adds.
- Special Arrows tests the agent's own Tier.
Health and resistances
Max health
agent_max_health is the agent's health limit at spawn.
hero: character_max_hit_points
non-hero: base_health_limit + Σ adds
- Hero agents get their character's maximum hit points with no perk terms, and the agent's health limit is written from this method only for non-heroes.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Agent base health limit | base | BaseHealthLimit | not hero | works |
| Hero max hit points | override | MaxHitPoints | hero | works |
| Well Built secondary | add | +5 | party leader; on foot; not hero | differs |
| Picked Shots secondary | add | +5 | party leader; ranged | works |
| Minister of Health primary | add | 1 · max(Medicine − 250, 0) | party leader | works |
| Unwavering Defense secondary | add | +10 | party leader; infantry on foot; not hero | works |
| Hard Knock secondary | add | +3 | party leader; on foot | works |
| Hardy Frontline primary | add | +5 | party leader | works |
| Thick Hides secondary | add | +5 | party leader; not hero | works |
| Oxen figurehead | add | figurehead_effect | naval battle, after deployment | works |
- Well Built
differs: hero agents are skipped (they use their own maximum hit points), not stated in the tooltip. Switching off at sea is the half's environment, which the tooltip shows (see Effect environment); the same holds for Unwavering Defense, Hardy Frontline and Thick Hides. - Hard Knock secondary: any on-foot troop, not only infantry.
- Oxen adds to the health limit and current health after deployment, heroes included.
Resistances
knockback_resistance = 0.15 + 0.001 · athletics
knockdown_resistance = 0.4 + 0.001 · athletics + 0.1 (mounted) or + 0.15 (on foot, thrust strike)
dismount_resistance = 0.4 + 0.001 · riding
athletics,riding: effective skill. The values are the skill effects "Knock back resistance", "Knock down resistance" and "Dismount resistance", returned directly.- Non-human agents return the maximum float value for all three.
- All sources work.
Melee handling
Swing speed and thrust/ranged ready speed
swing_speed_multiplier and thrust_or_ranged_ready_speed_multiplier are sequential.
s1 = 0.93
s2 = s1 · (1 + speed_effect · skill) weapon's relevant skill
s3 = max(0, s2 · (1 + mounted_penalty)) mounted, penalty < 0
s4 = s3 · (1 + Σ perk factors)
speed_effect: the skill effects One handed weapon speed 0.0007, Two handed weapon speed 0.0006, Polearm weapon speed 0.0006 per point; for thrust/ranged ready also Thrown weapon speed 0.0007.skill: effective skill.mounted_penalty: the Riding skill effect "Mounted weapon speed & reload penalty", −0.3 + 0.003 · effective Riding, at most 0.- Swing:
s4only for a wielded melee weapon. Thrust/ranged ready:s4for any wielded weapon.
| Source | Swing | Thrust/ranged ready | Value | Conditions | Verdict |
|---|---|---|---|---|---|
| Swift Strike primary | yes | +2% | one-handed weapon | works | |
| On the Edge primary | yes | +3% | two-handed weapon | works | |
| On the Edge secondary | yes | +2% | captain; on foot; melee weapon | works | |
| Swift Swing primary | yes | +5% | polearm | works | |
| Swift Swing secondary | yes | +2% | captain; on foot; any melee weapon | works | |
| Blade Master secondary | yes | yes | +2% | captain; on foot; melee weapon | works |
| Way of the Sword primary | yes | yes | +0.2% × (raw One Handed − 250) | one-handed weapon | works |
| Way Of The Great Axe primary | yes | yes | +0.2% × (raw Two Handed − 250) | two-handed weapon | works |
| Way of the Spear primary | yes | yes | +0.2% × (raw Polearm − 250) | polearm | works |
| Quick Draw (Bow) primary | yes | +25% | bow | works | |
| Marksmen primary | yes | +25% | crossbow | works |
- Swift Swing secondary is not limited to infantry or polearms.
Handling
agent_handling_multiplier is sequential: 1.0, then (1 + Σ perk factors) when the primary wielded item is a melee weapon, then in naval battles (1 + Pirate's Prowess).
| Source | Value | Conditions | Verdict |
|---|---|---|---|
| Wrapped Handles primary | +20% | one-handed weapon | works |
| Strong Grip primary | +10% | two-handed weapon | works |
| Counterweight primary | +15% | swingable polearm | works |
| Fury primary | +10% | on foot; melee weapon | differs |
| Fury secondary | +10% | captain; on foot; melee weapon | differs |
| Pirate's Prowess primary | +25% | naval battle; melee weapon | works |
- Fury: only with a wielded melee weapon; the tooltip names no weapon type.
- Pirate's Prowess: naval battles only, which matches its naval_only half (Sea only).
Weapon damage multiplier
agent_weapon_damage_multiplier = max(0, 1 + damage_effect · skill)
damage_effectby the weapon's relevant skill: the skill effects One handed weapon damage 0.0015, Two handed weapon damage 0.0016, Polearm weapon damage 0.0007, Bow Damage 0.0011, Thrown weapon damage 0.0006 per point.skill: effective skill. Only agents that are troops or heroes (not animals) get it. All work.- Crossbow has no damage skill effect here.
Stun, shield area, sneak attack
| Game number | Formula | Sources | Verdict |
|---|---|---|---|
agent_kick_stun_duration_multiplier |
1 · (1 + Dirty Fighting) | Dirty Fighting primary +50%, unconditional | works |
agent_shield_bash_stun_duration_multiplier |
1 · (1 + Basher) | Basher primary +50%, offhand shield | works |
agent_shield_missile_collision_body_size |
0.3 + Σ adds | Arrow Catcher primary +0.01 and secondary +0.01 (captain), Shieldwall secondary +0.01 (captain, shield wall); all need an offhand shield | works |
sneak_attack_damage_multiplier |
1 · (1 + SneakDamage + 2 for Dagger or ThrowingKnife) | SneakDamage = 0.5 + 0.002 · effective Roguery; weapon non-null, CharacterObject agent |
works |
Ranged handling
Reload speed
reload_speed is sequential.
r1 = 0.93
r2 = r1 · (1 + 0.0007 · crossbow) Crossbow-skill weapon
r3 = max(0, r2 · (1 + mounted_penalty)) mounted, penalty < 0
r4 = r3 · (1 + Σ perk factors)
crossbow: effective Crossbow skill (Donkey's Swiftness captain add included).- The naval extension does not change it.
| Source | Value | Conditions | Verdict |
|---|---|---|---|
| Crossbow reload speed | 0.0007 / point | crossbow | works |
| Mounted weapon speed penalty | −0.3 + 0.003 · Riding, at most 0 | mounted | works |
| Rapid Fire primary | +25% | bow | works |
| Rapid Fire secondary | +5% | captain; bow | differs |
| Deadshot primary | +0.2% × max(raw Bow − 200, 0) | bow | works |
| Wind Winder primary | +25% | crossbow | works |
| Wind Winder secondary | +5% | captain; crossbow | works |
| Mighty Pull primary | +0.2% × (raw Crossbow − 200) | crossbow | works |
| Quick Draw (Throwing) primary | +20% | throwing weapon | works |
| Quick Draw (Throwing) secondary | +10% | captain; throwing weapon | works |
- Rapid Fire secondary: only troops wielding a bow; crossbow and throwing troops get nothing.
- Throwing Quick Draw's "draw speed" is applied to the reload speed (readying the next throwing weapon), not to the thrust/ranged ready speed that Bow Quick Draw uses. Slings are included.
Worked example. Within a stage the game sums that stage's perk factors before multiplying, so this example uses one factor per stage:
An agent on foot wielding a crossbow, effective Crossbow skill 150, with Wind Winder and no captain reload perk. Inputs: skill 150.
| Step | Source | Stage | Change | Running value |
|---|---|---|---|---|
| Base | Agent weapon reload speed multiplier | base | 0.9300 | |
| 1 | Crossbow reload speed | factor +10.5% | +0.0976 | 1.0276 |
| 2 | Wind Winder | factor +25% | +0.2570 | 1.2846 |
| Result | Agent weapon reload speed multiplier | 1.2846 |
With these inputs, agent weapon reload speed multiplier is 1.2846.
With a second perk factor in the last stage (for example a Wind Winder captain), the factors add before multiplying: r4 = r3 · (1 + 0.25 + 0.05).
Reload movement penalty and missile speed
reload_movement_penalty_factor: 1.0 · (1 + Nocking Point primary −50%). Nocking Point applies to any wielded ranged weapon, so crossbows and throwing weapons get it too (broader than the tooltip); works.missile_speed_multiplier: 1.0 · (1 + Σ factors), not touched by the naval extension.
| Source | Value | Conditions | Verdict |
|---|---|---|---|
| Perfect Technique primary | +25% | throwing weapon | works |
| Perfect Technique secondary | +10% | captain; throwing weapon | works |
| Unstoppable Force (Throwing) primary | +0.2% × max(raw Throwing − 200, 0) | throwing weapon | works |
| Wet weather | −0.2 | bow or crossbow; weather Wet at the main party's map position | works |
- The wet-weather test reads the main party's map position, not the battle's.
- The wet-weather factor applies only to bows and crossbows; throwing weapons are not slowed by wet weather.
Inaccuracy
weapon_inaccuracy is the wielded weapon's inaccuracy.
i0 = (100 − weapon_accuracy) · E · 0.001 ranged; minimum 0
i1 = max(0, i0 · (1 + 5 − 0.05 · riding)) mounted, when 5 − 0.05 · riding > 0
i2 = i1 · (1 + banner) ranged
i3 = i2 · (1 + naval_inaccuracy_penalty) naval battle, human, ranged
i4 = i3 · (1 − figurehead_effect) Hawk figurehead registration
E: a standard modifier sum starting at 1, plus the accuracy skill effect at the effective weapon skill: Bow Accuracy −0.0009, Crossbow accuracy −0.0005, Thrown weapon accuracy −0.0006 per point; plus Quick Adjustments secondary −5% (captain, bow).- Sling:
E = max(0.2, 1 − 0.007 · skill)replaces the effect. - Melee with a wide grip weapon:
1 − 0.01 · skill. Other melee: 0. No wielded weapon: 0. riding: effective Riding; the term 5 − 0.05 · riding is applied only when it is > 0, for any wielded weapon.banner: decreased ranged accuracy penalty, −0.04 / −0.06 / −0.08.- Hawk applies to any weapon.
- Thrown weapon accuracy skill effect:
differs; slings skip it and use the hard-coded multiplier. All other sources work.
Movement, unsteady and rotational accuracy penalties
Ranged primary weapon only; melee weapons leave these unwritten. w: effective weapon skill. riding: effective Riding. ts: the weapon's thrust speed.
weapon_max_movement_accuracy_penalty:
p0 = 0.125 · max(0, 1 − w/500) on foot
p0 = 0.025 · max(0, (1 − w/500) · (1 − riding/1800)) mounted
p1 = p0 · class_factor Bow 6, Sling 5, other throwing 0.5, Crossbow 2.5
p2 = p1 · (1 + Σ perk factors)
p3 = p2 · (1 + naval_movement_accuracy_penalty) naval battle
weapon_max_unsteady_accuracy_penalty:
p0 = 0.1 · max(0, 1 − w/500) on foot
p0 = 0.12 · max(0, (1 − w/500) · (1 − riding/1800)) mounted
p1 = p0 · class_factor Bow 4.5 / Lerp(0.75, 2, clamp((ts − 45)/90))
Sling 2.4 · Lerp(2.4, 1.2, clamp((ts − 30)/90))
other throwing 1.5 · Lerp(1.5, 0.8, clamp((ts − 91)/14))
Crossbow 1.2
p2, p3 as above
weapon_rotational_accuracy_penalty:
r0 = Bow 0.1, throwing 0.025, Sling 0.2, other ranged 0.1
r1 = r0 · (1 + Σ perk factors)
r2 = r1 · (1 + naval_rotational_accuracy_penalty) naval battle
| Source | Movement | Unsteady | Rotational | Value | Conditions |
|---|---|---|---|---|---|
| Bow Control primary | yes | −30% | bow | ||
| Mounted Archery primary | yes | yes | −30% | bow; mounted | |
| Donkey's Swiftness primary | yes | −30% | crossbow; mounted or on foot | ||
| Steady primary | yes | yes | −50% | crossbow; mounted | |
| Sagittarius primary | yes | yes | −15% | ranged weapon; mounted | |
| Sagittarius secondary | yes | yes | −15% | captain; ranged weapon; mounted | |
| Mounted Skirmisher primary | yes | yes | −20% | throwing weapon; mounted | |
| Quick Adjustments primary | yes | −50% | bow |
All work.
Aim timing
weapon_best_accuracy_wait_time:
Bow 0.3 + (95.75 − ts) · 0.005; throwing axe, throwing knife and javelin 0.2 + (89 − ts) · 0.009
Sling 2.6 + (89 − ts) · 0.12; other ranged (Crossbow) 0.1
then max(0, (previous) · (1 − mounted_penalty)) mounted, penalty < 0
weapon_unsteady_begin_time:
Bow 0.6 + w · 0.01 · Lerp(2, 4, clamp((ts − 45)/90)), ×4 when AI-controlled
throwing 2.5 + w · 0.01; Sling 3 + w · 0.064; other ranged 0; melee wide grip 1 + w · 0.005
then · (1 + Discipline)
weapon_unsteady_end_time:
Bow 2 + b; throwing 10 + b; Sling 22 + b; other ranged 0; melee wide grip 3 + w · 0.01
then · (1 + Discipline)
b: the begin time before perk factors; the begin-time Discipline factor does not feed the end time.- Discipline primary: +50%, bow, works on both times.
- Mounted weapon speed penalty on the wait time: differs. The penalty also lengthens the best-accuracy wait time, which the description does not mention.
Camera zoom
max_camera_zoom = 1 · (1 + one perk factor chosen by the primary wielded weapon's skill): Eagle Eye primary +50% (bow), Long Shots primary +100% (crossbow), Focus primary +25% (throwing). All work.
Combat AI
AI level
agent_ai_level (AgentStatCalculateModel::SetAiRelatedProperties, base model, run for every human agent at the end of UpdateHumanStats; native engine: combat AI). Two levels are built per agent:
level = clamp(skill / 300 · difficulty_factor, 0, 1)
- Melee level:
skill= effective skill of the primary weapon's skill when it is One Handed or Polearm; Two Handed counts as One Handed when the agent holds a secondary item, else Two Handed; any other weapon skill counts as One Handed; no primary weapon: Athletics. - Ranged level:
skill= effective skill of the primary weapon's skill; Athletics without a primary weapon. difficulty_factor: 0.96 when the combat AI difficulty multiplier is above 0.5, 0.32 when it is above 0 and at most 0.5, 0.1 otherwise. In the campaign the multiplier comes from the combat AI difficulty setting (GetCombatAIDifficultyMultiplier).- The melee level (plus the agent's defensiveness for the shield terms) sets blocking, parrying, attack-decision, kick, shield-raise and missile-watch properties; the ranged level sets shooting frequency, wait-before-shoot, horseback missile range and the lead and aim error multipliers. 52 AI properties are written in total; the list is in the
game_numbers.csvnotes. - The naval extension only adds its shooter error term (
naval_ai_shooter_error).
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Melee skill level (One Handed, Two Handed, Polearm or Athletics) | base | clamp(skill / 300 · difficulty_factor, 0, 1) | works | |
| Primary weapon skill level (any weapon skill or Athletics) | base | clamp(skill / 300 · difficulty_factor, 0, 1) | works |
Ammo, equipment and flags
Ammo per slot
missile_ammo_amount, per consumable slot with a relevant skill, human troop and hero agents.
a1 = Round( (item_amount + Round(Σ perk adds)) · (1 + Σ party perk factors) ) spawn
a2 = Round( (a1 + Round(captain add)) · (1 + Σ captain factors) ) naval battle, after deployment
first ranged-consumable slot = ship_max_amount · (1 + extra_throwing_stack)
first ammo slot = ship_max_amount · (1 + extra_archer_quivers)
- The last two lines apply after deployment for the first ship the agent is on, outside naval raid battles, and replace
a1/a2for those slots.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Item ammo amount | base | item_amount | works | |
| Deep Quivers primary | add | +3 | arrows | differs |
| Deep Quivers secondary | add | +1 | party leader (not the agent); arrows | works |
| Fletcher primary | add | +4 | bolts | works |
| Fletcher secondary | add | +2 | party leader (not the agent); bolts | works |
| Well Prepared primary | add | +1 | throwing weapon | differs |
| Well Prepared secondary | add | +1 | party leader (leader included); throwing weapon | works |
| Resourceful primary | add | +2 | throwing weapon | differs |
| Saddlebags primary | add | +2 | throwing weapon; mounted at equipment initialisation | works |
| Military Planner primary | factor | +50% | own party's Engineer; attacker side; event type Siege | works |
| Well Stocked secondary | add | +2 | formation (ship) captain; naval battle; throwing weapon | differs |
| Well Stocked primary | factor | +30% | formation (ship) captain; naval battle; Bow, Crossbow or Throwing consumable | differs |
| Shipwright's Insight secondary | factor | +25% | formation (ship) captain; naval battle; any consumable with a relevant skill | differs |
| Ship extra quivers and throwing stacks | override | item_amount · (1 + ship_extra_stacks) | naval battle | works |
- Ship-upgrade overwrite. On a ship with upgrades the first ammo slot and the first ranged-consumable slot are set from the ship's maximum amount after deployment. Every perk ammo bonus above is lost in those slots; this is the shared
differsreason for the halves that still apply in naval battles. Deep Quivers secondary, Fletcher, Well Prepared secondary, Saddlebags and Military Planner are land_only: the agent environment is naval in every naval battle, so they give nothing there anyway and stayworks. - Military Planner: not Sally Out or Siege Outside; arrows, bolts and throwing weapons.
- Well Stocked: the holder is the agent's formation (ship) captain, not the party First Mate. Shipwright's Insight secondary also counts non-ranged consumables.
Shield hit points
s1 = Round(item_hit_points · (1 + Scaffolds)) spawn, every shield slot
first shield slot = ship_max_hit_points · (1 + crew_shield_factor) naval, after deployment
- Scaffolds secondary: +30%, agent's own perk, differs. On the first ship the agent is on, with the ship's crew shield hit points factor above 1e-5 in size and outside naval raid battles, the first shield slot is overwritten and the Scaffolds bonus is lost there.
Agent flags and interaction distance
| Game number | Source | Effect | Conditions | Verdict |
|---|---|---|---|---|
agent_can_use_all_bows_mounted |
Horse Master primary | flag CanUseAllBowsMounted |
hero agents | works |
agent_can_reload_all_crossbows_mounted |
Mounted Crossbowman primary | flag CanReloadAllXBowsMounted |
hero agents | works |
agent_flag_deflect_arrows_2h_sword |
Projectile Deflection primary | flag CanDeflectArrowsWith2HSword |
hero agents | works |
interaction_distance |
Long Reach primary | 3.0 instead of the base 1.5 | mounted | works |
- The flags are set once when the agent's stats are initialized; the perk bonus values are not read. The deflection itself happens in the game engine.
Equip skill requirement
can_use_item (CharacterHelper::CanUseItem) is the inventory screen's equip check. An item with a relevant skill (weapons; Riding for horses) is refused when
item_skill < item_difficulty
item_skill: the character's raw skill in the item's own relevant skill, not the effective skill. Armor has no relevant skill and skips the check.- Also refused: items flagged not usable by the character's gender, the three dragon banner pieces, and horses that are not rideable.
- Read by the inventory equip slots and transfers (
SPInventoryVM::CanCharacterUseItem) and by the item tooltip's skill requirement line.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Item's relevant skill level | override | off when item_skill < item_difficulty | works |
Mounts
Mount stats are written by UpdateHorseStats; the naval extension does not change non-human agents. "Rider perks" are the rider character's own perks.
Speed
R = (mount_speed_stat + 1) · (1 + Σ factors) ridden
R = mount_speed_stat + 1 no rider
mount_speed = env_speed_factor · 0.22 · (1 + R)
mount_speed_stat: the mount's speed stat with its harness.env_speed_factor: ×0.9 in rain and ×0.9 at night, outdoor scenes only; the night term applies to non-human agents only.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Horse speed | factor | 0.002 / point of rider effective Riding | works | |
| Sweeping Wind primary | factor | +5% | rider | works |
| Banner: increased mount movement speed | factor | 0.05 / 0.08 / 0.1 | rider's formation banner | works |
| Mount without harness | factor | −0.1 | works | |
| Wet weather | factor | −0.25 | weather Wet at the main party's map position | works |
| Rain | multiply | 0.9 | outdoor scene, rain | works |
| Night | multiply | 0.9 | outdoor scene, night | works |
Maneuver
mount_maneuver = (mount_maneuver_stat + Way of the Saddle) · (1 + Σ factors) ridden
mount_maneuver_stat: the mount's maneuver stat with its harness; no rider keeps the stat.- Factors: Horse maneuver 0.0004 per point of rider effective Riding; Nimble Steed primary +10%; no harness −0.1.
- Way of the Saddle primary: +0.3 × max(Riding − 250, 0), rider effective Riding.
- All work.
Acceleration
mount_acceleration (DefaultRidingModel::CalculateAcceleration) is written to the mount's TopSpeedReachDuration (native engine). No active module replaces the riding model.
a = 0.008 · mount_maneuver_stat · (0.7 + 0.003 · (riding − 1.5 · mount_difficulty))
mount_acceleration = clamp(a, 0.15, 0.7)
mount_maneuver_stat: the horse's maneuver stat with its harness (the stat, notmount_maneuver).riding: rider effective Riding; 0 without a rider.mount_difficulty: the horse item's difficulty.- When
ridingis far below 1.5 × difficulty the factor turns negative and the clamp gives 0.15.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Rider Riding skill level | multiply | 0.7 + 0.003 · (riding − 1.5 · mount_difficulty) | works |
Riding attribute
agent_attribute_riding (native engine: horse control) is written for the rider by UpdateHumanStats.
agent_attribute_riding = riding · mount_attribute_riding
riding: effective Riding.mount_attribute_riding: the mount's own riding attribute, 0.8, or 1.0 with a harness; 1.0 when the agent has no mount at the update.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Riding skill level | multiply | riding | works |
Mounting
can_mount (Agent::CheckSkillForMounting) decides whether an agent may get on a mount. It is on when the agent can ride (agent flag CanRide) and
riding ≥ mount_difficulty
riding: effective Riding.mount_difficulty: the horse item's difficulty, stored on the mount agent byUpdateHorseStats.- Read by the mount action (
Agent::Mount), by the "riding skill not adequate" text on the horse, and byCanAgentRideMountof the agent stat model (the naval model delegates).
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Riding skill level | override | on when riding ≥ mount difficulty | works |
Armor
mount_armor = (mount_armor_items + Tough Steed secondary) · (1 + Tough Steed primary) ridden
mount_armor_items: sum of the mount body armor values over spawn equipment slots 1..11; no rider keeps the sum.- Tough Steed primary +20% (rider), Tough Steed secondary +10 (rider's captain). Both work.
Max health
mount_max_health = (base_health_limit + Sledges) · (1 + Veterinary primary + Veterinary secondary)
- Sledges secondary: +15, rider's party leader. Veterinary primary: +20%, rider. Veterinary secondary: +10%, rider's party leader, every rider's mount in the party, heroes included. No rider: base only. All work.
Worked example.
A ridden horse with base health 100; the rider has Veterinary and the rider's party leader has Sledges and Veterinary. Inputs: base health 100.
| Step | Source | Stage | Change | Running value |
|---|---|---|---|---|
| Base | Agent base health limit | base | 100.0000 | |
| 1 | Sledges | add | +15.0000 | 115.0000 |
| 2 | Veterinary | factor +20% | +23.0000 | 138.0000 |
| 3 | Veterinary | factor +10% | +11.5000 | 149.5000 |
| Result | Mount max health at spawn | 149.5000 |
With these inputs, mount max health at spawn is 149.5000.
Mount loss and lameness
When the main hero's mount is removed with state Killed, MountAgentLogic makes one random roll r.
death chance = 0.05 · (1 + Well Strapped)
lame chance = 0.2 · (1 + Well Strapped)
lost if r < death chance, or the horse already has the lame_horse modifier
lame if not lost and r < lame chance
- Well Strapped primary: −50%, so 0.025 and 0.1. Verdict differs: main hero only; other heroes with the perk get nothing.
- Lost removes horse and harness; the harness returns to the party roster. The effective lame window is lame chance − death chance.
Naval battles
UpdateNavalHumanStats runs only from UpdateAgentStats in naval battles for human agents. Each penalty is a standard modifier sum with a minimum of 0.
| Game number | Base | Applied as | Weapon |
|---|---|---|---|
naval_rotational_accuracy_penalty |
0.3 | WeaponRotationalAccuracyPenaltyInRadians · (1 + result) |
ranged |
naval_movement_accuracy_penalty |
0.3 | movement and unsteady accuracy penalties · (1 + result) |
ranged |
naval_ai_shooter_error |
0.2 | AiShooterErrorWoRangeUpdate + result |
ranged |
naval_inaccuracy_penalty |
0.3 | WeaponInaccuracy · (1 + result) |
ranged |
naval_external_acceleration_penalty |
0.03 | WeaponExternalAccelerationAccuracyPenalty + result |
ranged |
naval_speed_penalty |
0.2 | MaxSpeedMultiplier · (1 − result) |
any |
naval_damage_penalty |
0.2 | DamageMultiplierBonus − result |
any |
| Source | Numbers | Value | Conditions | Verdict |
|---|---|---|---|---|
| Naval Battle Combat Penalty Negation | all seven | −0.005 / point of Mariner, at least −1 | works | |
| Rolling Thunder primary | movement accuracy, AI shooter error | −30% | ranged weapon | works |
| Wind Rider primary | speed | −50% | works | |
| Wind Rider secondary | speed | −50% | captain | works |
- Penalty Negation: heroes use effective Mariner. Non-hero troops that are Mariners use skill 200 (effect −1, penalty 0). Other troops get none.
- Rolling Thunder does not reduce the rotational, inaccuracy or external-acceleration penalties.
- Wind Rider: both halves stack as factors; −1.0 total gives penalty 0.
Worked example.
A hero in a naval battle with Mariner 50 and Wind Rider. Inputs: skill 50.
| Step | Source | Stage | Change | Running value |
|---|---|---|---|---|
| Base | Naval deck movement speed penalty | base | 0.2000 | |
| 1 | Wind Rider | factor -50% | -0.1000 | 0.1000 |
| 2 | Naval Battle Combat Penalty Negation Effect | factor -25% | -0.0500 | 0.0500 |
| Result | Naval deck movement speed penalty | 0.0500 |
With these inputs, naval deck movement speed penalty is 0.0500.
Breath hold
breath_hold_max_duration = (base_duration + M − 10 if body armor > 10) · (1 + Old Salt's Touch) humans
base_duration: the base model's value (SandBox returns its argument unchanged).M: the Mariner underwater breathing duration skill effect on a standard modifier sum with base 0. Verdictdiffers: the effect is a percentage factor on 0, soMis always 0; the tooltip promises extra seconds.- Body armor test:
GetBaseArmorEffectivenessForBodyPart(2) > 10subtracts 10 s. - Old Salt's Touch secondary: +30%, captain, naval battles only, works.
- Non-human agents: 1e9.
Figureheads
figurehead_agent_bonus is the figurehead effect applied to an agent after deployment (figurehead_effect = the figurehead's effect amount), when the battle has ships.
| Source | Effect | Verdict |
|---|---|---|
| Figurehead of the boarded ship | ApplyFigureheadBonuses for the first ship the agent is on; skipped when that flagship was already applied through Commodore |
works |
| Commodore primary | army leader has the perk: the figurehead of the agent's own party flagship is applied to every agent of that party | differs |
| Hawk | registered; weapon_inaccuracy · (1 − effect) |
works |
| Boar | registered; armor · (1 + effect) | works |
| Raven | ThrowingWeaponDamageMultiplierBonus + effect |
works |
| Saber-tooth tiger | ArmorPenetrationMultiplierCrossbow and ...Bow + effect |
differs |
| Oxen | HealthLimit and Health + effect |
works |
| Siren | DamageMultiplierBonus + effect while standing on an enemy-side ship with a Siren figurehead |
works |
| Ship crew melee damage factor | boarded ship's CrewMeleeDamageFactor added to MeleeWeaponDamageMultiplierBonus |
works |
- Commodore: each army member party spreads its own flagship's figurehead to its own troops, not the commander's flagship to all allied ships; parties outside an army get nothing.
- Saber-tooth tiger is inert: the penetration properties are read only by
SandboxStrikeMagnitudeModel::CalculateAdjustedArmorForBlow, and the liveNavalStrikeMagnitudeModelrecomputes that path without penetration. - Siren is applied in
UpdateAgentStats, not throughApplyFigureheadBonuses.
Game code
- SandBox.GameComponents.SandboxAgentStatCalculateModel.il:
InitializeAgentStats,InitializeMissionEquipment,UpdateHumanStats,SetWeaponSkillEffectsOnAgent,SetMountedPenaltiesOnAgent,SetPerkAndBannerEffectsOnAgent,UpdateHorseStats,GetEffectiveSkill,GetEffectiveMaxHealth,GetEffectiveArmorEncumbrance,GetWeaponDamageMultiplier,GetWeaponInaccuracy,GetEnvironmentSpeedFactor, the resistances,GetInteractionDistance,GetMaxCameraZoom,GetSneakAttackMultiplier. - SandBox.GameComponents.SandboxAgentStatCalculateModel+<>c.il: the One of the Family attribute test.
- NavalDLC.GameComponents.NavalAgentStatCalculateModel.il:
UpdateAgentStats,UpdateNavalHumanStats,SetNavalPerksAndEffectsOnAgent,InitializeAgentStatsAfterDeploymentFinished,ApplyFigureheadBonuses,InitializeMissionEquipmentAfterDeploymentFinished,GetBreatheHoldMaxDuration. - SandBox.Missions.MissionLogics.MountAgentLogic.il:
OnAgentRemoved. - TaleWorlds.MountAndBlade.AgentStatCalculateModel.il:
GetInteractionDistance(base 1.5),SetAiRelatedProperties,CalculateAILevel,GetMeleeSkill. - TaleWorlds.Core.DefaultRidingModel.il:
CalculateAcceleration. - TaleWorlds.MountAndBlade.Agent.il:
CheckSkillForMounting,Mount,GetInfoTextForBeingNotInteractable. - TaleWorlds.Core.BasicCharacterObject.il:
GetStepSize; TaleWorlds.MountAndBlade.Mission.il:SpawnAgent,SpawnTroop. - Helpers.CharacterHelper.il:
CanUseItem. - TaleWorlds.MountAndBlade.CustomBattleAgentStatCalculateModel.il, NavalDLC.ComponentInterfaces.NavalCustomBattleAgentStatCalculateModel.il: the custom battle models.
Changelog
- v1.5.7 (2026-11-12): Re-verified against v1.5.7 IL: the at-sea skips in max health and One of the Family are replaced by the perk effect environment; Minister of Health is no longer truncated; Shipwright's Insight secondary is a Captain half.
- v1.4.8 (2026-11-11): Raw skill reads added (time to reach top speed, step size, riding attribute, mounting, mount acceleration, combat AI level, equip requirement); custom battle model noted.
- v1.4.8 (2026-11-11): First version from IL.