Battles
Every skill, perk, banner, feat and policy that changes battle morale, combat XP, battle rewards, the auto-resolve simulation, troop sacrifice, team AI tactics, tournaments (entry, start chance, matches resolved without the player), stealth detection and post-battle recovery in game v1.5.7.
Module overrides:
NavalBattleMoraleModel(NavalDLC) extendsCalculateMaxMoraleChangeDueToAgentIncapacitatedandGetEffectiveInitialMoraleofSandboxBattleMoraleModel(SandBox): it calls the SandBox…Explainedmethod first and then adds naval terms to the same explained number. It delegatesCalculateMaxMoraleChangeDueToAgentPanickedandCanPanicDueToMorale.NavalDLCBattleRewardModelextendsGetLootItemChancesForWinnerPartiesand delegates every other reward method.StoryModeBattleRewardModelextendsCalculateRenownGaininstory_campaignonly.NavalDLCCombatSimulationModelextendsSimulateHitandGetBattleAdvantage, and delegatesGetSettlementAdvantage.NavalDLCCombatXpModelextendsGetXpFromHit.StoryModeCombatXpModelextends it instory_campaignonly.NavalDLCTroopSacrificeModelextends the break-in and break-out loss methods and delegates the get-away method.NavalDLCMilitaryPowerModelandNavalDLCTournamentModeldelegate.StoryModeGenericXpModelextendsGetXpMultiplierinstory_campaignonly.DefaultDailyTroopXpBonusModel,TournamentBehaviorand the campaign behaviors below have no module override.MissionCombatantsLogic,Formation, the tournament mission controllers,CharacterObjectandAlarmedBehaviorGroupare not models; no module replaces them.
Naval conditions in detail: Naval battles.
Skill guides with these perks: Leadership, Tactics, One Handed, Two Handed, Polearm, Bow, Crossbow, Throwing, Riding, Scouting, Roguery, Charm, Steward, Medicine, Engineering, Mariner, Shipmaster.
Verdicts: works = does what the tooltip says, or more — broader effects are noted; differs = narrower, different or extra conditions/values than the tooltip; unused = never read by the game; ui_only = only shown in the interface; dead = the code never runs in a campaign (the reason is given). A "skill level" source reads the skill value itself, with no skill effect or perk in between. "Captain" halves come from a formation captain; "Personal" halves from the hero's own character; "PartyLeader" halves from the party's leader hero.
Battle morale
Initial battle morale
initial_battle_morale is an agent's morale when it spawns. Consumer: NavalBattleMoraleModel::GetEffectiveInitialMorale (NavalDLC), which continues the explained number of SandboxBattleMoraleModel::GetEffectiveInitialMoraleExplained. Base base_morale (the method's base morale argument), combine rule custom, no clamp.
initial_battle_morale = (base_morale + Σ adds + Σ naval adds) · (1 + Σ factors + Σ naval factors)
- NavalDLC adds its terms to the SandBox value before the result is taken, so naval adds and factors join the same sums.
- Perks apply only to an agent from a mobile party with a campaign character.
- Leader exclusion: party-leader perks need a party leader hero who is not the agent itself. The party leader's own agent gets none of the PartyLeader terms below.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Fervent Attacker (Leadership) | primary | 4.0 | add | party is the attacker | works |
| Stout Defender (Leadership) | primary | 8.0 | add | party is the defender | works |
| Great Leader (Leadership) | primary | 5.0 | add | army commander; party in an army (army leader's own agent included) | works |
| Great Leader (Leadership) | secondary | 5.0 | add | troop culture matches the leader's | works |
| Uplifting Spirit (Leadership) | primary | 10.0 | add | siege assault or battle outside a besieged settlement | works |
| We Pledge our Swords (Leadership) | secondary | 1.0 | add min(tier6_troops, 10) |
— | differs |
| Lead by example (One Handed) | secondary | 5.0 | add | — | works |
| Stand United (One Handed) | primary | 8.0 | add | party side weaker than the opposing side | works |
| Last Hit (Throwing) | secondary | 5.0 | add | — | works |
| Relief Force (Riding) | primary | 10.0 | add | party is not the leading party of its battle side | differs |
| Patrols (Scouting) | primary | 5.0 | add | scout role; enemy side has a bandit-culture party | differs |
| Renowned Archer (Bow) | primary | 0.1 | factor | ranged troop | works |
| Marksmen (Crossbow) | secondary | 0.1 | factor | ranged troop | works |
| Improviser (Tactics) | primary | 0.0 | cancels the −0.2 disorganized factor | leader has the perk | differs |
| Disorganized party | — | −0.2 | factor | party disorganized; not a siege attacker | works |
| Calculating trait | — | 0.2 / 0.1 for the two lowest Calculating levels | factor | the army leader, else the party leader, has the trait and is not the agent | works |
Reading the table:
- Great Leader primary sits outside the party-leader block: it reads the army leader through the agent's party and does not need the agent's party to have a leader hero.
- Uplifting Spirit: the siege test also covers battles outside the walls of a besieged settlement (broader than the tooltip).
- We Pledge our Swords
differs: the secondary half's bonus value is never read; a constant 1 per healthy tier-6 man in the party is added, capped at 10. The value matches the tooltip, but it takes no environment, so the full value also applies in naval battles although the half is reduced at sea. - Relief Force
differs: the game tests "agent's party is not the leading party of its battle side", not "joined an ongoing battle of allies". - Patrols primary
differs: the party-leader agent gets no bonus and the party must have a leader hero, not in the tooltip. - Improviser primary
differs: only the party leader's perk is checked (tooltip role: party member), and the leader's own agent still takes the −0.2 penalty because the leader character is nulled for that agent. Its bonus (0) is never read. The perk check takes no environment, so it also cancels the penalty in naval battles (the naval morale model calls this one first), although the half is land only.
Naval terms (NavalDLC, second layer):
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Axe of the North Wind (Mariner) | secondary | 20.0 | add | naval battle; mariner troop | works |
| Sunny Disposition (Mariner) | secondary | 20.0 | add | naval battle; not a mariner troop | works |
| Rallying Cry (Mariner) | primary | 0.2 | factor | naval battle; party leader | works |
| Commodore (Shipmaster) | primary | figurehead_effect |
add | army commander; party in an army; own party flagship has a Lion figurehead | differs |
| Lion figurehead | — | 10 | add | agent is on a ship with a Lion figurehead | works |
| Auxiliaries to the Fleet (policy) | — | 0.2 | factor | leader's kingdom has the policy | works |
- The Mariner halves are naval_only; their naval-battle test matches the tooltip line (Sea only).
- Commodore and Auxiliaries to the Fleet do not require a naval battle (only the Mariner perks do). Auxiliaries to the Fleet also applies in land battles.
Morale change when an agent falls
SandboxBattleMoraleModel::CalculateMaxMoraleChangeDueToAgentIncapacitated returns two values, built by CalculateMaxMoraleChangeDueToAgentIncapacitatedExplained. When an agent is removed, the mission applies:
- Item1 =
battle_morale_loss_incapacitated: the morale loss of the victim's AI-controlled allies. - Item2 =
ally_morale_change_on_kill: the morale gain of the killer's side.
Only AI-controlled agents are affected.
weapon_factor = 0.75 default
| 0.25 killing-blow weapon flags have any of mask 1073766400
| 0.3125 ... and all of mask 1073774592
| 0.5 weapon class maps to Bow, Crossbow or Throwing
then max(0, weapon_factor)
Item1 = max(0, battle_importance · 4 · weapon_factor · casualties_factor · (1 + Σ Item1 factors))
Item2 = max(0, battle_importance · 3 · weapon_factor · (1 + Σ Item2 factors))
battle_importance: the battle importance of the affected agent.casualties_factor: the casualties factor of the affected agent's side.- NavalDLC adds Terror of the Seas to the Item1 factors before the clamp. Item2 has no casualties factor and no naval terms.
- Clamp: both values are floored at 0.
Item1 sources (loss of the victim's allies)
Killer-side terms need a killer with a campaign character. Victim-side terms need the victim to have a campaign character.
| Source | Half | Bonus | Side | Conditions | Verdict |
|---|---|---|---|---|---|
| Terror (Two Handed) | primary | 0.2 | killer | two-handed killing blow | works |
| Annoying Buzz (Riding) | primary | 0.2 | killer | ranged killing blow; killer mounted | works |
| Annoying Buzz (Riding) | secondary | 0.05 | killer's captain | ranged killing blow; killer mounted | works |
| Thunderous Charge (Riding) | primary | 0.2 | killer | melee killing blow; killer mounted | works |
| Thunderous Charge (Riding) | secondary | 0.1 | killer's captain | melee killing blow; killer mounted | works |
| Heroic Leader (Leadership) | secondary | 0.1 | killer's captain | any weapon | works |
| Terror (Crossbow) | secondary | 0.25 | killer's captain | crossbow killing blow | works |
| Health Advice (Medicine) | secondary | 0.0 | victim's party surgeon | victim unconscious; sets the loss to 0 | works |
| Standard Bearer (Polearm) | primary | −0.2 | victim's captain | — | differs |
| Loose Formations (Tactics) | secondary | −0.25 | victim's captain | victim's formation in line, loose, circle or scatter | differs |
| Tight Formations (Tactics) | secondary | −0.25 | victim's captain | victim's formation in shield wall, square, skein or column | differs |
| Price of Loyalty (Steward) | primary | −0.005 · (skill − 250) | victim's party quartermaster | skipped for an unconscious victim under Health Advice | differs |
| Decreased Morale Shock banner | — | −0.1 / −0.2 / −0.3 by banner level | victim's formation banner | — | works |
| Terror of the Seas (Mariner) | secondary | −0.1 | killer's captain | naval-only half | differs |
- Captain without self-exclusion: the killer's captain is the killer's formation captain, and the killer is not excluded when it is the captain. A captain killing with Annoying Buzz, Thunderous Charge, Heroic Leader or Crossbow Terror gets both halves; the captain's own kills count (broader than the tooltip). The victim-side captain perks read the casualty's formation captain, also with no self-exclusion.
- Health Advice reset: when the casualty is unconscious and its party's surgeon has Health Advice, the loss is reset to zero and the rest of the method is skipped up to the banner step. Factors already added by the killer side are discarded, and Standard Bearer, Loose Formations, Tight Formations and Price of Loyalty don't apply. The banner factor that follows multiplies 0 and stays 0. The bonus value is not read. The NavalDLC layer only adds factors, so 0 stays 0.
- Standard Bearer, Loose Formations, Tight Formations
differs: the perk is read on the casualty's formation captain and reduces the loss the side suffers when a troop of that formation falls; it is not a penalty reduction felt by the formation's own troops. All three are skipped by the Health Advice reset. - Price of Loyalty
differs: it applies only above Steward 250, and it is skipped for an unconscious casualty whose party has Health Advice. - Decreased Morale Shock banner: the active banner of the affected agent's formation, added as a factor.
- Terror of the Seas
differs: the captain lookup applies the half whose role is Captain, so the secondary half (−10%) lowers the victim side's loss; the +20% primary is never read. The killer's formation captain is checked (including the killer itself).
Item2 sources (gain of the killer's side)
| Source | Half | Bonus | Conditions | Verdict |
|---|---|---|---|---|
| Make a Difference (Leadership) | primary | 1.0 | killer has the perk; any weapon | works |
| Hope (Two Handed) | primary | 0.3 | two-handed killing blow | works |
| Increased Morale Shock by melee troops banner | — | 0.1 / 0.2 / 0.3 by banner level | killer's formation banner; killer's default formation is infantry; melee killing blow | works |
Example: morale gain for a two-handed kill
A hero with Make a Difference and Hope kills an enemy with a two-handed weapon (weapon factor 0.75) in a battle of importance 1. Inputs: battle importance 1, weapon factor 0.75.
| Step | Source | Stage | Change | Running value |
|---|---|---|---|---|
| Base | Morale gain of the killer's side when an enemy agent falls | base | 2.2500 | |
| 1 | Make a Difference | factor +100% | +2.2500 | 4.5000 |
| 2 | Hope | factor +30% | +0.6750 | 5.1750 |
| Result | Morale gain of the killer's side when an enemy agent falls | 5.1750 |
With these inputs, morale gain of the killer's side when an enemy agent falls is 5.1750.
Base battle_importance · 3 · weapon_factor = 2.2500; both perks are factors on that base, so the gain is 5.1750.
Morale loss when an agent panics
battle_morale_loss_panicked: Item1 of SandboxBattleMoraleModel::CalculateMaxMoraleChangeDueToAgentPanicked, the loss of the panicking agent's side. NavalBattleMoraleModel delegates.
battle_morale_loss_panicked = max(0, battle_importance · casualties_factor · 1.1 · (1 + Σ factors))
Item2 = battle_importance · 2
- Factors apply only when the panicking agent has a campaign character; otherwise the raw base is returned. Floored at 0.
- Item2 has no sources.
| Source | Half | Bonus | Conditions | Verdict |
|---|---|---|---|---|
| Standard Bearer (Polearm) | primary | −0.2 | panicking agent's formation captain; no self-exclusion | differs |
| Price of Loyalty (Steward) | primary | −0.005 · (skill − 250) | panicking agent's party quartermaster | works |
| Decreased Morale Shock banner | — | −0.1 / −0.2 / −0.3 | panicking agent's formation banner | works |
Panic
can_panic_due_to_morale (SandboxBattleMoraleModel::CanPanicDueToMorale) is a boolean, base 1 (can panic). NavalBattleMoraleModel calls the base model.
| Source | Half | Bonus | Conditions | Verdict |
|---|---|---|---|---|
| Loyalty and Honor (Leadership) | primary | 3.0 | human agent with a campaign character; its party leader has the perk; troop tier at least the bonus | works |
The bonus (3) is the tier threshold. When the test passes the method returns false: tier 3+ troops cannot panic.
Combat XP
XP per hit
troop_hit_xp is the XP one hit earns, the game's battle experience. Consumer: NavalDLCCombatXpModel::GetXpFromHit, wrapping DefaultCombatXpModel::GetXpFromHit. Combine rule explained number, no clamp. There is no separate post-battle XP award: every perk that says "after battles" acts on this per-hit value.
base = 0.4 · (attacked_power + 0.5) · (attacker_power + 0.5) · (min(damage, max_hp) + fatal_hp) · mission_xp_multiplier
troop_hit_xp = base · (1 + Σ factors)
attacked_power,attacker_power:MilitaryPowerModel::GetTroopPowerof the attacked and attacking troop, with the attacker side's leader simulation modifier.max_hp: the attacked troop's maximum hit points.fatal_hp = max_hpfor a fatal hit, else 0.mission_xp_multiplier: a regular battle 1.0, practice fight 0.0625, tournament 0.33, simulated battle 0.9, no-XP mission 0.- Party and governor perks apply when the attacker has a mobile party with a leader hero. Inspiring Leader is checked after them.
- The party perks pass the attacker party's environment: a
naval_reducedhalf counts half while that party is at sea, aland_onlyhalf nothing.
| Source | Half | Bonus | Conditions | Verdict |
|---|---|---|---|---|
| Lead by example (One Handed) | primary | 0.05 | all troops; halved at sea | works |
| Corps-a-corps (One Handed) | primary | 0.1 | infantry; halved at sea | works |
| Trainer (One Handed) | secondary | 0.05 | not ranged; halved at sea | works |
| Baptised in Blood (Two Handed) | secondary | 0.05 | not ranged; halved at sea | works |
| Bulls Eye (Bow) | primary | 0.1 | ranged; halved at sea | works |
| Mounted Crossbowman (Crossbow) | secondary | 0.05 | ranged; halved at sea | works |
| Resourceful (Throwing) | secondary | 0.1 | troop has a throwing weapon; halved at sea | works |
| No Rest for the Wicked (Roguery) | primary | 0.2 | bandit-culture troop; land only | works |
| Guards (Polearm) | secondary | 0.2 | governor in the town; garrison party; mounted troop | works |
| Projectile Deflection (Two Handed) | secondary | 0.1 | governor in the town; garrison party | works |
| Inspiring Leader (Leadership) | secondary | 0.05 | captain; hero attacker; party mobile and not at sea | differs |
| Non-hero attacker in a naval map event | — | 0.5 | naval map event; attacker not a hero | works |
| Naval Fighting Training (Mariner) | primary | 0.1 | naval map event; attacker is a companion hero | differs |
| Auxiliaries to the Fleet (policy) | — | −0.15 | attacker leader's kingdom has the policy; any map event | works |
- The "after battles" perks (Lead by example, Corps-a-corps, Trainer, Baptised in Blood, Bulls Eye, Mounted Crossbowman) scale per-hit XP, the game's battle experience; their halving at sea is the "Reduced effect at sea" line of their tooltips.
- Inspiring Leader
differs: regular troops never get it. Troop XP is computed with no captain. Only hero attackers' skill XP passes the attacker's formation captain within 10.0 m, with no self-exclusion. The code also skips it at sea, which matches the land_only half (Land only). - Naval Fighting Training
differs: per-hit combat XP, not "after each naval battle". - The naval non-hero +0.5 factor and the Auxiliaries to the Fleet −0.15 factor are on the naval battles page.
Example: one hit by an infantry troop
A melee infantry troop of a land party hits an enemy for 30 damage (not fatal) in a field battle. The party leader has Lead by Example, Corps-a-corps and Trainer; the party is not at sea. Inputs: attacked power 1.5, attacker power 1.5, damage 30, max hp 100, fatal hp 0, mission xp multiplier 1.
| Step | Source | Stage | Change | Running value |
|---|---|---|---|---|
| Base | Combat XP from one hit | base | 48.0000 | |
| 1 | Corps-a-corps | factor +10% | +4.8000 | 52.8000 |
| 2 | Lead by example | factor +5% | +2.4000 | 55.2000 |
| 3 | Trainer | factor +5% | +2.4000 | 57.6000 |
| Result | Combat XP from one hit | 57.6000 |
With these inputs, combat XP from one hit is 57.6000.
The three factors are added together and applied once to the base 48.0000, giving 57.6000.
Two-handed kills and other roster XP grants
troop_xp is a one-off XP grant written straight to the troop roster. Each site is a separate event, not a term of a shared total. Base 0, sequential.
| Source | Half | Bonus | Event | Conditions | Verdict |
|---|---|---|---|---|---|
| Baptised in Blood (Two Handed) | primary | 5.0 | BattleCampaignBehavior::OnHeroCombatHit |
fatal hit by the hero with a TwoHandedSword, TwoHandedPolearm, TwoHandedAxe or TwoHandedMace; every non-hero infantry stack gets trunc(bonus · troop count) |
works |
| Apprenticeship (Engineering) | primary | 5.0 | siege engine built | effective engineer of the building party; every non-hero stack gets trunc(bonus · stack count) |
works |
| Master and commander (Shipmaster) | primary | 1.0 | hourly at sea | once per troop stack | differs |
| Stormrider (Shipmaster) | primary | 30.0 | entering a storm | perk checked for every party, the main party included; once per troop stack | differs |
- Baptised in Blood primary: two-handed polearms count (broader than the tooltip).
- Master and commander, Stormrider
differ: the amount is added once per non-hero roster stack, and a stack holds a single XP value, so the grant is per stack, not per troop. The main-party Stormrider path has no perk check, so the player gets the XP without the perk.
Daily garrison XP
garrison_daily_troop_xp (DefaultDailyTroopXpBonusModel::CalculateTroopXpBonusInternal): base 0, result truncated to int and given to every garrison roster element.
garrison_daily_troop_xp = trunc((0 + building XP + Raise The Meek) · (1 + Projectile Deflection))
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Training Fields (town) | — | 1 / 2 / 3 by level | add | town | works |
| Training Fields (castle) | — | 3 / 4 / 5 by level | add | castle | works |
| Drills (castle daily project) | — | 8 | add | castle; the town's current daily project | works |
| Raise The Meek (Leadership) | secondary | 3.0 | add | governor in the town | works |
| Projectile Deflection (Two Handed) | secondary | 0.1 | factor | governor in the town | works |
Building amounts pass through the building effect model (Steward Contractors and, for daily projects, Master of Planning apply inside).
Hero skill XP multiplier
hero_skill_xp (DefaultGenericXpModel::GetXpMultiplier): base 1, custom. Applied to every skill XP gain of a hero.
| Source | Half | Bonus | Conditions | Verdict |
|---|---|---|---|---|
| Natural Leader (Charm) | secondary | 1.2 (replaces) | hero is a player companion; the player has the perk | differs |
differs: the secondary half's bonus value (0.2) is never read; the method returns the constant 1.2. The perk is read on the player, not the clan leader role.
Battle rewards
DefaultBattleRewardModel. Perk and feat terms need a mobile winner party. NavalDLCBattleRewardModel delegates all of these except the loot share.
Renown
battle_renown_gain = renown_value · contribution_share · renown_multiplier · (1 + Σ factors)
renown_value: the renown value of the battle for the winner's side;contribution_share: the winner party's contribution share;renown_multiplier: the renown multiplier for the winner's side.
| Source | Half | Bonus | Conditions | Verdict |
|---|---|---|---|---|
| Public Speaker (Charm) | primary | 0.3 | party leader has the perk | works |
| Famous Commander (Leadership) | primary | 0.5 | party leader hero | works |
| Long Reach (Throwing) | secondary | 0.2 | party leader has the perk | works |
| Vlandian renown mercenary feat | — | 0.05 | leader's culture, else party culture | works |
| Valor trait | — | 0.1 / 0.2 for the two highest Valor levels | party leader hero has the trait | works |
Influence
battle_influence_gain = 0 (winner's faction is not a kingdom)
= influence_value · contribution_share · influence_multiplier · (1 + Σ factors)
| Source | Half | Bonus | Conditions | Verdict |
|---|---|---|---|---|
| Warlord (Charm) | primary | 0.3 | kingdom faction; party leader hero | works |
Victory morale
victory_morale_gain = (0.5 + renown_value · contribution_share · 0.5) · (1 + Σ factors)
| Source | Half | Bonus | Conditions | Verdict |
|---|---|---|---|---|
| Citizen Militia (Leadership) | secondary | 0.1 | — | works |
| Long Reach (Throwing) | secondary | 0.2 | — | works |
Relation for helping a lord
battle_help_relation_gain (GetPlayerGainedRelationAmount):
r = (side_strength[main side] − player_party_initial_strength) / (side_strength[opponent] + 1)
strength_term = 1 + (1 − r) r < 1
= 0.5 · (3 − r) 1 ≤ r < 3
= 0 r ≥ 3
battle_help_relation_gain = trunc((0.75 + (contribution_rate · 1.3 · (strength_term + side_renown)) ^ 0.67) · (1 + Σ factors))
contribution_rate: the player's contribution rate to the battle;side_renown: the renown value of the main party's side.
| Source | Half | Bonus | Conditions | Verdict |
|---|---|---|---|---|
| Camaraderie (Charm) | primary | 1.0 | the player has the perk | works |
A +1.0 factor gives base · 2.
Loot share
battle_loot_share (NavalDLCBattleRewardModel::GetLootItemChancesForWinnerParties, wrapping the default method): each winner party's share of the defeated party's loot. Custom.
weight = 1 + Roguery skill factor + Rogue Extraordinaire factor
know_how = 1 + Know-How bonus (defeated party is a caravan or villager party), else 1
battle_loot_share = contribution / total_contribution · weight · know_how · 0.5 · naval_factor
- Eligible winner parties: contribution to the battle above 0, has members, not garrison or militia. Ineligible parties are excluded from the list and from
total_contribution. - No loot shares when the hideout send-troops mode is forced or the defeated party is a settlement.
naval_factor: NavalDLC, when the defeated party is a caravan or villager party,1 +the Nord feat and Pirate's Prowess factors.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Roguery skill (RogueryLootBonus) | — | 0.0025 per point | factor | party leader's Roguery | works |
| Rogue Extraordinaire (Roguery) | primary | 0.01 · (skill − 200) | factor | Roguery above 200 | works |
| Know-How (Roguery) | primary | 0.05 | multiply 1 + bonus |
defeated party is a caravan or villager party | works |
| Nord hostile action loot bonus feat | — | 0.3 | factor | Nord culture; defeated caravan or villager party | works |
| Pirate's Prowess (Mariner) | secondary | 0.3 | factor | defeated party is a caravan with naval navigation (merchant convoy) | works |
Negative modifier removal on loot
loot_modifier_removal_chance: per looted item whose modifier lowers its price, the chance it is replaced with the unmodified item. Base 0; the only source sets it.
| Source | Half | Bonus | Read in | Verdict |
|---|---|---|---|---|
| Metallurgy (Engineering) | primary | 0.3 | loot collection, per unit of each looted item, effective engineer of the looting party | works |
| Metallurgy (Engineering) | primary | 0.3 | main party casualty loot | differs |
differs: the player's casualty loot gets two rolls. Casualty loot is rolled first, then the same items go through loot collection, which rolls again on items still carrying a negative modifier. Effective chance for those items 1 − (1 − bonus)^2.
Combat simulation
Battle advantage
simulation_battle_advantage (NavalDLCCombatSimulationModel::GetBattleAdvantage, wrapping the default): each side's advantage, used as striker_advantage of simulation_damage. It is computed for each side's leading party and starts at 1.0.
simulation_battle_advantage = (1 + Σ adds) · (1 + Σ factors)
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Tactics skill (TacticsAdvantage) | — | 0.001 per point | factor | leader hero's Tactics; not a naval map event | differs |
| Pre Battle Maneuvers (Tactics) | secondary | 0.01 · tactics_difference |
add | both parties mobile with leader heroes; difference > 0 | differs |
| Patrols (Scouting) | secondary | 0.1 | factor | opposing party is bandit culture; leader hero | differs |
| Siege attacker penalty | — | −0.1 | factor | attacker side; siege map event | works |
| Mariner skill (NavalAutoBattleSimulationAdvantage) | — | 0.001 per point | factor | naval map event | differs |
| Pirate Hunter (Mariner) | primary | 0.2 | factor | naval map event; bandit leads the defender side | differs |
tactics_difference: own leader's Tactics minus the opposing leader's Tactics.- Tactics skill
differs: skipped for naval map events. - Pre Battle Maneuvers
differs: the bonus is never read; the game adds 0.01 per skill point of difference (tooltip: 1% per 100) to an advantage with base 1.0. - Patrols secondary
differs: requires a leader hero. - Mariner skill
differs: the attacker side's advantage uses the defender leader's Mariner; the defender's bonus is added to both sides.
Example: a siege attacker with Pre Battle Maneuvers
The attacker leader in a simulated siege assault has Tactics 150 and Pre Battle Maneuvers; the defender leader has Tactics 100.
| Step | Source | Stage | Change | Running value |
|---|---|---|---|---|
| Base | Side advantage in simulated battles | base | 1.0000 | |
| 1 | Pre Battle Maneuvers | add | +0.5000 | 1.5000 |
| 2 | Simulation advantage | factor +15% | +0.2250 | 1.7250 |
| 3 | Siege attacker advantage penalty | factor -10% | -0.1500 | 1.5750 |
| Result | Side advantage in simulated battles | 1.5750 |
With these inputs, side advantage in simulated battles is 1.5750.
With Tactics 150 versus 100, Pre Battle Maneuvers adds 0.5000 to the base before the factors.
Settlement advantage
settlement_simulation_advantage (DefaultCombatSimulationModel::GetSettlementAdvantage; NavalDLC delegates). Only for a fortification with a SiegeEvent; otherwise 1.25 for a village, else 1.0, with no perk terms.
wall_strength = 4 + (wall_level − 1), × 0.25 when the settlement's total wall hit points < 1e-05
engine_pressure = 0.25 (any ram or siege tower built)
+ 0.24 improved ram | 0.16 ram | 0
+ 0.24 more than one siege tower | 0.16 one
+ 0.08 · ranged engines (trebuchet, onager, ballista)
+ 0.12 · fire engines (fire onager, fire ballista)
settlement_simulation_advantage = (1 + wall_strength) / (1 + engine_pressure) · (1 + Σ factors)
| Source | Half | Bonus | Conditions | Verdict |
|---|---|---|---|---|
| On The March (Tactics) | primary | −0.2 | any besieger-side party has the perk (army commander); applied once | works |
| On The March (Tactics) | secondary | 0.2 | governor in the besieged town | works |
On The March primary reads the perk with a fixed land environment. That matches its land_only half: besieger-side parties are never at sea. A besiege order targets the settlement, not its port; only the besiege branch of the settlement encounter adds a party to the camp, while a party arriving at sea at a besieged port fights the blockade or enters the port; a party moving onto land switches to land navigation; army members copy the leader's at-sea state.
Simulated hit damage
simulation_damage (NavalDLCCombatSimulationModel::SimulateHit, wrapping the troop overload of the default):
base = floor((0.5 + 0.5 · random) · 40 · (striker_power / struck_power) ^ 0.7 · striker_advantage)
morale_factor = (min(striker_morale − 50, 0) − max(struck_morale − 50, 0)) · 0.005
simulation_damage = base · (1 + Σ perk factors + morale_factor + ship_combat_factor)
striker_power,struck_power: troop power;random: a random number in [0, 1);striker_advantage:simulation_battle_advantageof the striking side.- Perk factors (
CalculateSimulationDamagePerkEffects) apply only when both parties are mobile. ship_combat_factor: the weighted ship combat factor of the striker side, naval map events only.
| Source | Half | Bonus | Conditions | Verdict |
|---|---|---|---|---|
| Tight Formations (Tactics) | primary | 0.1 | striker infantry; struck mounted | works |
| Loose Formations (Tactics) | primary | −0.1 | struck party's perk; struck infantry; striker ranged | works |
| Decisive Battle (Tactics) | primary | 0.05 | striker on Plain, Steppe or Desert | works |
| Extended Skirmish (Tactics) | primary | 0.1 | striker on Snow or Forest | works |
| Coaching (Tactics) | primary | 0.03 | — | works |
| Law Keeper (Tactics) | primary | 0.1 | struck party is bandit; striker not bandit | differs |
| Elite Reserves (Tactics) | primary | −0.2 | struck party's perk; struck troop tier ≥ 3 | works |
| Encirclement (Tactics) | primary | 0.05 | striker party has more healthy men than the struck party | works |
| Counter Offensive (Tactics) | primary | 0.1 | field battle; striker defends | works |
| Counter Offensive (Tactics) | secondary | 0.1 | striker party has fewer healthy men than the struck party | works |
| Besieged (Tactics) | primary | 0.1 | siege assault; striker defends; any hero in the party | works |
| Tactical Mastery (Tactics) | primary | 0.005 · (skill − 200) | army leader's own party; Tactics above 200 | differs |
| Vanguard (Scouting) | primary | 0.05 | struck party on the defender side | works |
| Vanguard (Scouting) | secondary | 0.1 | sally-out; striker on the attacker side | works |
| Rearguard (Scouting) | secondary | 0.1 | battle outside a besieged settlement or sally-out; striker on the defender side | works |
| Side morale | — | morale_factor |
— | works |
| Weighted ship combat factor | — | ship_combat_factor |
naval map event | works |
| Mariner skill (NavalAutoBattleCombatPenaltyNegation) | — | 0.5 per point | — | unused |
- The simulation perks read the perk effect environment of the striking party (its current battle environment).
- Encirclement and Counter Offensive secondary compare healthy men party against party, not battle sides.
- Law Keeper also never applies to a bandit striking party.
- Tactical Mastery
differs: only hits by the army leader's own party get it, not the other army parties. - The Mariner skill effect "Naval Auto Battle Combat Penalty Negation Effect" is
unused: it is never read.
Hero power modifier
hero_power_modifier (DefaultMilitaryPowerModel::GetPowerModifierOfHero; NavalDLC delegates): base 0, sequential. For every perk with primary role Captain the hero has (NavalDLC perks included):
t = required skill / 250
add 0.01 t ≤ 0.3
0.02 0.3 < t ≤ 0.6
0.03 0.6 < t ≤ 0.9
0.06 t > 0.9
0 for no hero. Recomputed when a Captain-role perk is picked. Every source differs: the perk bonus is never read and the power term is not stated in any tooltip. Examples:
| Perk | Required skill / 250 | Add |
|---|---|---|
| Shield Breaker (Mariner) primary | 50/250 = 0.2 | 0.01 |
| Rallying Cry (Mariner) primary | 125/250 = 0.5 | 0.02 |
| Standard Bearer (Polearm) primary | 175/250 = 0.7 | 0.03 |
| Gens d'armes (Tactics) primary | 250/250 = 1.0 | 0.06 |
Example: four Captain-role perks
A hero holding Shield Breaker, Rallying Cry, Standard Bearer and Gens d'armes, four perks whose primary role is Captain.
| Step | Source | Stage | Change | Running value |
|---|---|---|---|---|
| Base | Hero power modifier in simulation | base | 0.0000 | |
| 1 | Shield Breaker | add | +0.0100 | 0.0100 |
| 1 | Standard Bearer | add | +0.0300 | 0.0400 |
| 1 | Rallying Cry | add | +0.0200 | 0.0600 |
| 1 | Gens d'armes | add | +0.0600 | 0.1200 |
| Result | Hero power modifier in simulation | 0.1200 |
With these inputs, hero power modifier in simulation is 0.1200.
Troop sacrifice
Breaking into or out of a besieged settlement
siege_break_lost_troops: consumer NavalDLCTroopSacrificeModel::GetLostTroopCountForBreakingInBesiegedSettlement; break-out (GetLostTroopCountForBreakingOutOfBesiegedSettlement) has the same formula. Both reach DefaultTroopSacrificeModel::GetLostTroopCount. Callers are player menus only, so MainParty is the breaking party.
is_port = targeting the port and at sea (break-in)
= breaking out from the port (break-out)
loss_ratio = clamp(0.12 · ((besieger_strength + 1) / (own_strength + 1)) ^ 0.25, 0.12, 0.24)
first = loss_ratio · regulars · (1 + skill_factor)
siege_break_lost_troops = (5 + floor(first)) · (1 + Σ later factors)
= 0 (is_port and no active blockade)
besieger_strength: summed strength of the besieging parties.own_strength: the party's (or, for an army leader, the army's) strength, naval strength whenis_port.regulars: regular troops of the army or party.skill_factor: the Tactics skill effect "Decrease the sacrificed troop number when trying to get away".
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Tactics skill (TacticsTroopSacrificeReduction) | — | −0.001 per point | factor on first |
player character's Tactics | works |
| Improviser (Tactics) | secondary | −0.25 | later factor | main party leader; halved when is_port |
works |
| Ghost Ship (Shipmaster) | primary | −0.2 | later factor | navigator; break-in at sea, or break-out from port | differs |
| Port without blockade | — | 0 | override | is_port and no active blockade |
works |
- Tactics skill: broader than its description, which names only getting away.
- Ghost Ship
differs: the break-out from the port never gets it. The party inside the town is on land until it sets sail after the break-out, and the half is sea only. - Improviser secondary: the port or sea variant passes the naval environment, so the
naval_reducedhalf counts half (its tooltip shows it).
Getting away
troops_sacrificed_getaway (DefaultTroopSacrificeModel::GetNumberOfTroopsSacrificedForTryingToGetAway; NavalDLC delegates). Player menus only.
strength_ratio = side_strength[opponent] / (side_strength[own] + 1)
first = (5 + 0.1 · regulars · min(strength_ratio, 3) ^ 1.3) · (1 + skill_factor)
second = max(1, Round(first)) · (1 + Swift Regroup)
troops_sacrificed_getaway = Round(second) when Round(second) ≤ available_troops
= −1 otherwise
regulars: the main party's regular members plus those of the army leader's attached parties when the main party is in an army.available_troops: Active non-hero troops on the player's battle side. A result of −1 means the get-away option cannot be paid.Round(x)rounds to the nearest integer; an exact .5 goes to the even integer.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Tactics skill (TacticsTroopSacrificeReduction) | — | −0.001 per point | factor on first |
player character's Tactics | works |
| Swift Regroup (Tactics) | secondary | −0.5 | factor on second |
main party; land only | works |
Team AI tactics
team_ai_tactic_options (MissionCombatantsLogic::EarlyStart) is the number of tactics a team AI may choose from in a field battle. Each side reads its best Tactics skill:
t = max over the side's parties of the party leader's Tactics (0 for a party without a leader hero)
| t | Defender side adds | Attacker side adds |
|---|---|---|
| any | Charge | Charge |
| ≥ 20 | Full Scale Attack, Defensive Engagement, Defensive Line | Full Scale Attack, Ranged Harassment Offensive |
| ≥ 50 | Frontal Cavalry Charge, Defensive Ring, Hold Choke Point | Frontal Cavalry Charge, Coordinated Retreat |
tis the raw skill of each party's leader hero, not an agent's effective skill.- Field battles only. Missions without team AI tactics get Charge only; siege and sally-out missions get their fixed siege tactics with no skill check.
- The team AI then picks among the added tactics.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Tactics skill level | add | +3 at 20, +3 more at 50 | field battle, defender side | works |
| Tactics skill level | add | +2 at 20, +2 more at 50 | field battle, attacker side | works |
Captain selection
captain_selection_score (Formation::GetHeroPointForCaptainSelection) = level + 100 · Charm (raw skill).
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Charm skill level | add | 100 · Charm | dead |
dead: nothing calls the method in any game assembly. Captains are ranked by the character's power instead (GeneralsAndCaptainsAssignmentLogic::SortCaptainsByPriority), so Charm does not affect who becomes captain.
Tournaments
Simulated matches
When a fight tournament match is skipped (TournamentFightMissionController::SkipMatch), Simulate scores each participant from its match equipment (CharacterObject::GetSimulationAttackPower). Each exchange subtracts the attacker's attack from the target's defense.
f = 0.3 + 0.7 · item_skill / 300 item with a relevant skill, else 1
attack = max over weapons of f · effectiveness (+ f · ammo effectiveness for a ranged weapon) + 2.5 · m
defense = 4000 + 10 · armor_sum² / armor_weight + 10 · f · shield effectiveness per shield + 5 · m
m = f_horse · (horse + harness effectiveness)
item_skill: the participant's raw skill in that item's relevant skill: the weapon's own skill (One Handed, Two Handed, Polearm, Bow, Crossbow or Throwing), One Handed for shields, Riding for the horse (f_horse). Items without a relevant skill (pick, banner, firearms) use f = 1.armor_sum: head, body, arm and leg armor;armor_weight: total armor weight.
| Number | Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|---|
tournament_sim_attack_power |
Weapon skill level (the weapon's own skill) | multiply | 0.3 + 0.7 · item_skill / 300 | tournament | works |
tournament_sim_attack_power |
Riding skill level (horse term m) |
multiply | 0.3 + 0.7 · Riding / 300 | tournament | works |
tournament_sim_defense_power |
One Handed skill level (shields) | multiply | 0.3 + 0.7 · One Handed / 300 | tournament, shield | works |
tournament_sim_defense_power |
Riding skill level (horse term m) |
multiply | 0.3 + 0.7 · Riding / 300 | tournament | works |
Archery tournament
tournament_archery_sim_hit_chance (TournamentArcheryMissionController::GetDeadliness) = 0.01 + Bow / 300 · 0.19 (raw Bow), the hit chance per shot of a simulated archery match.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Bow skill level | add | Bow / 300 · 0.19 | tournament | dead |
dead: archery tournaments never start. The only path that creates the archery controller isSandBoxMission::OpenTournamentArcheryMission, which nothing calls, and fight tournaments are the only tournament game in the campaign.
Tournaments without the player
tournament_simulation_score (DefaultTournamentModel::GetTournamentSimulationScore; NavalDLC delegates). A tournament resolved without the player (TournamentManager::SimulateTournament) is won by the participant with the highest score · (0.75 + 0.25 · random).
score = hero_factor · (max(One Handed, Two Handed, Polearm) + Athletics + Riding) · 0.01
hero_factor: 1 for heroes, 0.4 for other troops. All skills are raw.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| One Handed, Two Handed or Polearm skill level (the highest) | add | 0.01 · hero_factor · skill | works | |
| Athletics skill level | add | 0.01 · hero_factor · skill | works | |
| Riding skill level | add | 0.01 · hero_factor · skill | works |
Tournament start chance
tournament_start_chance (DefaultTournamentModel::GetTournamentStartChance; NavalDLC delegates): 0 during a siege or outside the town's week of the season, else
chance = 0.1 · (qualifying parties in town + suitable heroes without a party in town) − 0.2
A hero is suitable when of age and max(One Handed, Two Handed) > 100 (raw, SuitableForTournament).
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| One Handed or Two Handed skill level (the higher) | add | +0.1 per suitable hero | town | works |
Tournament entry
tournament_npc_can_join (FightTournamentGame::CanBeAParticipant; not a model, no module replaces it). The main hero always enters. Other heroes (lords of parties in town, heroes without a party in town, player clan heroes in the main party) need max(One Handed, Two Handed) ≥ 100 (raw), besides being of age, unwounded, combatant, and a lord or wanderer. Regular troops need tier 3 or higher.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| One Handed or Two Handed skill level (the higher) | override | 0 (cannot enter) below 100 | works |
- Player clan companions in the main party enter the player's tournament only with 100 One Handed or Two Handed.
Tournament renown
tournament_renown (DefaultTournamentModel::GetRenownReward; NavalDLC delegates): sequential.
tournament_renown = Round(3 · Duelist + Self Promoter)
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Duelist (One Handed) | secondary | 2.0 | multiply | winner hero has the perk | works |
| Self Promoter (Charm) | primary | 3.0 | add after the multiply | winner hero has the perk | works |
Maximum bet
tournament_max_bet (TournamentBehavior::GetMaximumBet, SandBox): integer 150, multiplied by the whole-number bonus when the player has the perk.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Deep Pockets (Roguery) | primary | 2.0 | multiply | the player has the perk; 150 · 2 = 300 | works |
Hideouts
SetCleanHideoutRelations (HideoutCampaignBehavior) runs after a hideout is cleared. Both numbers are set only by Effort For The People, read on the player.
| Number | Source | Bonus | Effect | Verdict |
|---|---|---|---|---|
hideout_clear_relation |
Effort For The People (Charm) primary | 3.0 | relation +bonus (whole number) with the clan leader of the town nearest the hideout, when that leader is not the player | works |
town_loyalty |
Effort For The People (Charm) primary | 1 | town loyalty +1 when that leader is the player (constant, bonus not read) | works |
- The quick message showing the bonus is printed in every case, even without the perk.
- The +2 relation with a random notable of each nearby village is a different number, not
hideout_clear_relation. town_loyaltyis the stored town loyalty, changed by one-off writes and clamped to [0, 100]. Its other site: Raven Eye (Shipmaster) secondary, 1.0 per fishing party drop-off, governor of the village's bound town (FishingPartyCampaignBehavior::OnDropOff), works.
Stealth detection
stealth_sound_factor (AlarmedBehaviorGroup::UpdateAgentAlarmState, SandBox) scales how loud a sneaking agent is to an alarmed guard, in missions with alarmed agents (stealth and scene missions).
m = max(0, 1 − 0.0001 · roguery − 0.002 · equipment_stealth_bonus)
heard = raw sound · m / (20 + 2.5 · distance²), 0 when 0.125 or less
roguery: the sneaking agent's effective Roguery.equipment_stealth_bonus: the stealth bonus of its equipment.- The heard value plus the seen value, capped at 3, raises the guard's alarm.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Roguery skill level | add | −0.0001 · roguery | works |
Recovery after battle
CampaignBattleRecoveryBehavior. Each number is base 0 and set only by its perk.
| Number | Source | Bonus | Effect | Verdict |
|---|---|---|---|---|
lame_horse_daily_recovery_chance |
Veterinarian (Medicine) primary | 0.3 | daily, with chance bonus: one lame horse becomes a healthy horse; land only | works |
dead_cavalry_mount_recovery_chance |
Veterinarian (Medicine) secondary | 0.5 | per dead mounted troop with a horse in equipment slot 10, with chance bonus: one copy added to the party's ItemRoster | differs |
wounded_troop_battle_xp |
Battle Hardened (Medicine) primary | 25.0 | per WoundedInBattle element, Round(bonus · sea) · count XP; sea = 0.5 at sea, else 1 (the half is naval_reduced) |
differs |
- Veterinarian primary: one horse per day; skipped at sea, as its land-only tooltip shows.
- Veterinarian secondary and Battle Hardened
differ: only after field battle, siege and siege-outside map events (not raids, hideouts, sally-outs, blockades). Veterinarian secondary is land only and Battle Hardened is halved at sea, as their tooltips show.
Game code
- SandBox.GameComponents.SandboxBattleMoraleModel.il:
GetEffectiveInitialMorale,CalculateMaxMoraleChangeDueToAgentIncapacitated,CalculateMaxMoraleChangeDueToAgentPanicked,CanPanicDueToMorale. - NavalDLC.GameComponents.NavalBattleMoraleModel.il:
GetEffectiveInitialMorale,CalculateMaxMoraleChangeDueToAgentIncapacitated(extensions). - TaleWorlds.MountAndBlade.Source.Missions.Handlers.Logic.AgentMoraleInteractionLogic.il:
OnAgentRemoved,ApplyMoraleEffectOnAgentIncapacitated(Item1 and Item2 receivers). - Helpers.BannerHelper.il, TaleWorlds.Core.DefaultBannerEffects.il: banner morale effects and their levels.
- TaleWorlds.CampaignSystem.GameComponents.DefaultCombatXpModel.il:
GetXpFromHit,GetBattleXpBonusFromPerks. - NavalDLC.GameComponents.NavalDLCCombatXpModel.il:
GetXpFromHit(extension). - TaleWorlds.CampaignSystem.CampaignBehaviors.BattleCampaignBehavior.il:
OnHeroCombatHit,OnCollectLootItems. - TaleWorlds.CampaignSystem.CampaignBehaviors.SiegeEventCampaignBehavior.il, NavalDLC.CampaignBehaviors.SeaDamageCampaignBehavior.il, NavalDLC.CampaignBehaviors.NavalStormriderCampaignBehaviour.il: other
troop_xpgrants. - TaleWorlds.CampaignSystem.GameComponents.DefaultDailyTroopXpBonusModel.il:
CalculateTroopXpBonusInternal. - TaleWorlds.CampaignSystem.GameComponents.DefaultGenericXpModel.il:
GetXpMultiplier. - TaleWorlds.CampaignSystem.GameComponents.DefaultBattleRewardModel.il:
CalculateRenownGain,CalculateInfluenceGain,CalculateMoraleGainVictory,GetPlayerGainedRelationAmount,GetLootItemChancesForWinnerParties,GetLootedItemFromTroop. - NavalDLC.GameComponents.NavalDLCBattleRewardModel.il:
GetLootItemChancesForWinnerParties(extension). - TaleWorlds.CampaignSystem.GameComponents.DefaultCombatSimulationModel.il:
SimulateHit,CalculateSimulationDamagePerkEffects,CalculateSimulationMoraleEffects,GetBattleAdvantage,GetPartyBattleAdvantage,GetSettlementAdvantage,CalculateSettlementAdvantagePerkEffects. - TaleWorlds.CampaignSystem.Siege.BesiegerCamp.il:
GetNextInvolvedPartyForEventType,InvolveCondition(0x00-0x0d); TaleWorlds.CampaignSystem.EncounterManager.il:StartSettlementEncounter(camp join 0x00-0x6b, port arrival 0x7e-0x143); TaleWorlds.CampaignSystem.Party.MobileParty.il:SetMoveBesiegeSettlement(0x1e-0x21),CheckTransitionParallel(0xc8-0x106),SetAttachedToInternal(0x110): On The March besiegers are on land. - NavalDLC.GameComponents.NavalDLCCombatSimulationModel.il:
SimulateHit,GetBattleAdvantage(extensions). - TaleWorlds.CampaignSystem.GameComponents.DefaultMilitaryPowerModel.il:
GetPowerModifierOfHero. - TaleWorlds.CampaignSystem.GameComponents.DefaultTroopSacrificeModel.il:
GetLostTroopCount,GetNumberOfTroopsSacrificedForTryingToGetAway. - NavalDLC.GameComponents.NavalDLCTroopSacrificeModel.il: break-in and break-out extensions.
- TaleWorlds.MountAndBlade.MissionCombatantsLogic.il, MissionCombatantsLogic+<>c.il, MissionCombatantsLogic+<>c__DisplayClass13_0.il:
EarlyStartand its side filter and skill selector. - TaleWorlds.CampaignSystem.Party.PartyBase.il:
GetTacticsSkillAmount. - TaleWorlds.MountAndBlade.Formation.il:
GetHeroPointForCaptainSelection; TaleWorlds.MountAndBlade.GeneralsAndCaptainsAssignmentLogic.il, GeneralsAndCaptainsAssignmentLogic+<>c__DisplayClass12_0.il:SortCaptainsByPriority. - TaleWorlds.CampaignSystem.CharacterObject.il:
GetSimulationAttackPower; SandBox.Tournaments.MissionLogics.TournamentFightMissionController.il:Simulate,SkipMatch. - SandBox.Tournaments.MissionLogics.TournamentArcheryMissionController.il:
GetDeadliness,Simulate; TaleWorlds.CampaignSystem.SandBoxMission.il:OpenTournamentArcheryMission. - SandBox.Missions.AgentBehaviors.AlarmedBehaviorGroup.il:
UpdateAgentAlarmState,GetSoundFactor. - TaleWorlds.CampaignSystem.GameComponents.DefaultTournamentModel.il:
GetRenownReward,GetTournamentSimulationScore,GetTournamentStartChance,SuitableForTournament. - TaleWorlds.CampaignSystem.TournamentGames.TournamentManager.il:
SimulateTournament; TaleWorlds.CampaignSystem.TournamentGames.FightTournamentGame.il:CanBeAParticipant,CanNpcJoinTournament,GetParticipantCharacters. - SandBox.Tournaments.MissionLogics.TournamentBehavior.il:
GetMaximumBet. - TaleWorlds.CampaignSystem.CampaignBehaviors.HideoutCampaignBehavior.il:
SetCleanHideoutRelations. - TaleWorlds.CampaignSystem.Settlements.Town.il:
set_Loyaltyclamp. - NavalDLC.CampaignBehaviors.FishingPartyCampaignBehavior.il:
OnDropOff(Raven Eye loyalty). - TaleWorlds.CampaignSystem.CampaignBehaviors.CampaignBattleRecoveryBehavior.il:
DailyTickParty,RecoverMountWithChance,CheckRecoveryForMapEventSide.
Changelog
- v1.5.7 (2026-11-12): Morale, battle rewards and simulation re-verified against v1.5.7 IL: perk halves follow the perk effect environment instead of per-site at-sea halving or skipping; NavalDLC morale terms join the SandBox values; Calculating (initial morale) and Valor (renown) trait factors added; Rallying Cry primary and Great Leader primary changed; Terror of the Seas applies its secondary half to morale; Camaraderie doubles. Party XP, troop sacrifice and recovery perks likewise follow the perk effect environment; Stormrider checks the perk for the main party.
- v1.4.8 (2026-11-11): Raw skill reads added (tournaments the player does not attend, tournament start chance, tournament entry).
- v1.4.8 (2026-11-11): Raw skill reads added (team AI tactics, captain selection, simulated tournament matches, stealth sound factor).
- v1.4.8 (2026-11-11): First version from IL.