Bannerlord mechanics

Combat agent stats

Bannerlord v1.5.7 · checked 2026-11-12 · updated 2026-11-13

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:

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

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 )
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

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
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

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))

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))

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
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

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)

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)
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)
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
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

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
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

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

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)
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

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

Weapon damage multiplier

agent_weapon_damage_multiplier = max(0, 1 + damage_effect · skill)

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)
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

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

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

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

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)

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)
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)
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

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

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

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
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)
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

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)
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
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
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

Max health

mount_max_health = (base_health_limit + Sledges) · (1 + Veterinary primary + Veterinary secondary)

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

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

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

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

Game code

Changelog