Naval battles
Every skill, perk, figurehead, feat, policy and fixed term that changes ship siege weapons, ship morale events, ship damage, simulated ship combat, naval battle rewards, ship costs, ship deployment, ship movement and ship collisions in naval missions in game v1.5.7. All of it is NavalDLC.
Module overrides:
NavalMissionSiegeEngineCalculationModel(NavalDLC) extendsCalculateReloadSpeedandCalculateDamageofDefaultSiegeEngineCalculationModel(the base result first, then naval terms) and replacesCalculateShipSiegeWeaponAmmoCount.NavalBattleMoraleModelextendsCalculateMoraleOnRamming,CalculateMoraleChangeOnShipSunkandGetEffectiveInitialMoraleofSandboxBattleMoraleModel(SandBox).NavalDLCCampaignShipDamageModelreplacesDefaultCampaignShipDamageModel::GetShipDamage.NavalDLCCombatSimulationModelreplaces the ship overload ofSimulateHitand extends the troop overload.NavalDLCBattleRewardModelextendsGetCaptureMemberChancesForWinnerPartiesand replacesDistributeDefeatedPartyShipsAmongWinners, in both the sandbox and the StoryMode campaign (StoryMode's ownDistributeDefeatedPartyShipsAmongWinnersis replaced too).NavalDLCShipCostModelreplacesGetShipRepairCostandGetShipUpgradePieceCostofDefaultShipCostModel.NavalDLCCombatXpModelextendsGetXpFromHit.NavalMissionShipParametersModel(campaign) andNavalCustomBattleMissionShipParametersModel(custom battles), andNavalDLCShipDeploymentModel, are NavalDLC models; no other module overrides them.ShipCollisionOutcomeLogicis a NavalDLC mission logic, not a model.
Land and agent counterparts: Battles (initial morale, morale loss on a kill, per-hit XP, loot, simulated troop hits), Combat agent stats (agent reload speed, naval agent penalties, the other figureheads), Combat damage (melee damage on ships, sail fire damage), Sieges (siege bombardment).
Skill guides with these perks: Boatswain, Shipmaster, Mariner, Crossbow.
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. "Captain" halves come from a formation captain; "FirstMate" halves from the party's First Mate role holder; "PartyLeader" halves from the party's leader hero; "ArmyCommander" halves from the army leader.
Ship siege weapons
Reload speed
ship_siege_engine_reload_speed: the reload speed of a siege weapon operated on a ship. Consumer NavalMissionSiegeEngineCalculationModel::CalculateReloadSpeed (NavalDLC, extends). Base base_reload_speed, explained number, no clamp. This is a different number from the agent's own reload speed.
ship_siege_engine_reload_speed = base_reload_speed · (1 + Σ factors)
base_reload_speed: the base model's result.DefaultSiegeEngineCalculationModelreturns its reload speed argument unchanged.- Terms apply only while the mission is a naval battle.
- The captain is the operator's formation captain, nulled when the captain is the operator itself.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Streamlined Operations (Boatswain) | primary | 0.1 | factor | operator's formation captain has the perk | works |
| Viper figurehead | — | 0.25 | factor | the operator stands on a ship with a Viper figurehead | works |
- Streamlined Operations: its tooltip reads "+10% ballista reload time"; the factor raises the reload speed.
- Viper: its text says ballista reload speed, but it applies to any siege weapon the operator reloads while standing on that ship.
Worked example.
A troop reloads a ballista on a ship with a Viper figurehead in a naval battle. The operator's formation captain (another hero) has Streamlined Operations. Base reload speed from the base model is 1. Inputs: base reload speed 1.
| Step | Source | Stage | Change | Running value |
|---|---|---|---|---|
| Base | Siege weapon reload speed in naval battles | base | 1.0000 | |
| 1 | Viper figurehead | factor +25% | +0.2500 | 1.2500 |
| 2 | Streamlined Operations | factor +10% | +0.1000 | 1.3500 |
| Result | Siege weapon reload speed in naval battles | 1.3500 |
With these inputs, siege weapon reload speed in naval battles is 1.3500.
Streamlined Operations adds its +10% factor next to the Viper figurehead, so the result is 1.3500.
Hull damage
ship_siege_engine_hull_damage: damage a ship siege weapon missile deals to a ship hull. Consumer NavalMissionSiegeEngineCalculationModel::CalculateDamage (NavalDLC, extends). Base floor(base_damage), custom, clamp 0 to 2000.
ship_siege_engine_hull_damage = clamp(ceil(floor(base_damage) · (1 + Σ factors)), 0, 2000)
base_damage: the damage argument; the base model truncates it to an integer (a floor for non-negative damage).- No naval-battle test in the method; its only caller is the ship hit handler, and only for missiles from a ship siege engine.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Shipwright's Insight (Boatswain) | primary | 0.3 | factor | the shooting hero has the perk; ship siege engine missile | works |
- Shipwright's Insight: only hero shooters are tested.
Starting ammo
ship_siege_weapon_ammo: a ship siege weapon's starting ammo. Consumer NavalMissionSiegeEngineCalculationModel::CalculateShipSiegeWeaponAmmoCount (NavalDLC, replaces the base). Base ammo_count, custom, no clamp.
ship_siege_weapon_ammo = ceil(ammo_count + Σ adds)
ammo_count: the ammo amount defined on the weapon.- Called when the ship's siege weapons get their initial ammo after deployment.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Smooth Operator (Boatswain) | primary | 5.0 | add | the ship's captain has the perk | works |
Morale events on ships
Ramming
ramming_morale_change: the morale change of the ramming ship's team when it rams an enemy ship. Consumer NavalBattleMoraleModel::CalculateMoraleOnRamming (NavalDLC, extends). Base agent_morale, explained number, no clamp.
ramming_morale_change = agent_morale · (1 + Σ factors)
morale after the ram = agent_morale + ramming_morale_change = agent_morale · (2 + Σ factors)
agent_morale: the agent's current morale (−1 for an agent without the AI morale component). The SandBox base model returns it unchanged.- When two ships of enemy teams collide, the change is computed for every AI-controlled active agent of the first ship's whole team (not only that ship's crew) and added to its morale. The morale setter's own limits then apply.
- The captain is the agent's formation captain, nulled when it is the agent's own character.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Shock and Awe (Shipmaster) | primary | 0.3 | factor | captain; naval battle | works |
| Ram figurehead | — | 0.2 | factor | the first (ramming) ship has a Ram figurehead | works |
- Even with no factor, a ram doubles the morale of the ramming side's AI agents, because the full morale value is added.
Worked example.
An AI troop with morale 50 is on the team of the ramming ship. Its formation captain (another hero) has Shock and Awe, and the ramming ship has a Ram figurehead. Inputs: agent morale 50.
| Step | Source | Stage | Change | Running value |
|---|---|---|---|---|
| Base | Morale change of the ramming ship's team on a ram | base | 50.0000 | |
| 1 | Ram figurehead | factor +20% | +10.0000 | 60.0000 |
| 2 | Shock and Awe | factor +30% | +15.0000 | 75.0000 |
| Result | Morale change of the ramming ship's team on a ram | 75.0000 |
With these inputs, morale change of the ramming ship's team on a ram is 75.0000.
The 75.0000 is added to the agent's current morale of 50.
Ship sunk
morale_change_on_ship_sunk: the morale change of a sunk ship's team. Consumer NavalBattleMoraleModel::CalculateMoraleChangeOnShipSunk (NavalDLC, extends). Base 0, sequential, no clamp.
morale_change_on_ship_sunk = 0 + Enemy of the Wood bonus
- The base model returns 0. The value is added to the morale of every AI-controlled active agent of the sunk ship's team.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Enemy of the Wood (Mariner) | primary | −10.0 | add | the enemy army leader has the perk | works |
- The enemy army leader is the army leader of the first active agent's party of the first team hostile to the sunk ship's formation, read with a fixed naval environment. In mixed teams another army's leader can be checked.
Naval terms on battle morale
The formulas are on Battles and Battles: morale change when an agent falls.
| Game number | Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|---|
initial_battle_morale |
Rallying Cry (Mariner) | primary | 0.2 | factor | naval battle; party leader has the perk | works |
initial_battle_morale |
Lion figurehead | — | 10 | add | agent is on a ship with a Lion figurehead | works |
initial_battle_morale |
Auxiliaries to the Fleet | — | 0.2 | factor | party leader's kingdom has the policy | works |
battle_morale_loss_incapacitated |
Terror of the Seas (Mariner) | secondary | −0.1 | factor | killer's formation captain; naval-only half | differs |
- Lion figurehead: every ship carrying the agent with a Lion figurehead adds 10, for any agent (no party or character test). The agent's own party flagship is skipped when Commodore already applied its figurehead.
- Auxiliaries to the Fleet: the agent needs a party leader hero other than itself. The naval terms join the SandBox sums, so the factor also scales the SandBox adds and the Lion add. It is not gated on a naval battle, so it also applies in land battles (broader than the policy text, naval combat morale of lord parties +20%).
- 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).
Ship damage
Campaign ship damage
ship_damage_received: damage dealt to a ship on the campaign side. Consumer NavalDLCCampaignShipDamageModel::GetShipDamage (NavalDLC, replaces the default). Base raw_damage, explained number, clamp min 0.
ship_damage_received = max(0, raw_damage · (1 + Σ factors))
raw_damage: the damage argument.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Boatswain skill: ship damage reduction | — | −0.0025 per point | factor | damaged ship's owner is a mobile party; its First Mate (else the effective party leader) | works |
| Ram figurehead | — | 0.2 | factor | attacker ship has a Ram figurehead | works |
- The Ram figurehead factor is read on the attacker ship and raises the damage the other ship takes.
Worked example.
A ship takes 100 raw damage from an attacker ship with a Ram figurehead. The damaged ship's party First Mate has Boatswain 100. Inputs: raw damage 100.
| Step | Source | Stage | Change | Running value |
|---|---|---|---|---|
| Base | Campaign damage dealt to a ship | base | 100.0000 | |
| 1 | Ram figurehead | factor +20% | +20.0000 | 120.0000 |
| 2 | Reduce ships' received damage | factor -25% | -25.0000 | 95.0000 |
| Result | Campaign damage dealt to a ship | 95.0000 |
With these inputs, campaign damage dealt to a ship is 95.0000.
Simulated ship-weapon hits
The ship overload of NavalDLCCombatSimulationModel::SimulateHit (NavalDLC, replaces the default) returns two numbers for one simulated ship-weapon hit. The troop overload is on Battles.
ship_simulation_damage: hull damage. Base engine_damage (ranged engine) or engine_damage · hull_size_factor (non-ranged engine), explained number, no clamp.
ship_simulation_damage = engine_damage ranged engine
| (engine_damage · hull_size_factor) · (1 + Σ factors) non-ranged engine (crew strike)
engine_damage: the siege engine type's damage value.hull_size_factor: the striker ship's hull type 0 / 1 / 2 gives 1 / 2 / 3; other types keep 1. Ranged engines use 1.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Striker ship hull size factor | — | engine_damage · hull_size_factor |
base | non-ranged engine | works |
| Seaborne Fortress (Shipmaster) | primary | −0.1 | factor | struck party is mobile and its leader has the perk; non-ranged engine | works |
- Ranged engines skip every term.
Worked example.
In a simulated naval battle a ship with hull size factor 3 sends its crew to strike with a non-ranged engine of damage 10. The struck party's leader has Seaborne Fortress. Inputs: engine damage 10, hull size factor 3.
| Step | Source | Stage | Change | Running value |
|---|---|---|---|---|
| Base | Striker ship hull size factor | base | 30.0000 | |
| 1 | Seaborne Fortress | factor -10% | -3.0000 | 27.0000 |
| Result | Hull damage of one simulated ship-weapon hit | 27.0000 |
With these inputs, hull damage of one simulated ship-weapon hit is 27.0000.
ship_simulation_casualties: crew casualties of the same hit. Base ranged_engine, sequential, no clamp.
ship_simulation_casualties = ranged_engine + (1 if Terror holder wins its roll)
ranged_engine: 1 when the siege engine is ranged, else 0.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Ranged ship weapon base casualty | — | ranged_engine |
base | ranged engine | works |
| Terror (Crossbow) | primary | 0.2 | add | striker party leader has the perk | differs |
- Terror
differs: its tooltip speaks of siege bombardment casualties, but this site applies it to ship-weapon hits in simulated naval combat. The perk check takes the striker party's environment, so the land-only half gives nothing while that party is at sea; the ships of a party that joined the naval battle while not at sea still get it. The roll is seeded by the map event's update count; below 0.2 gives +1 casualty. The land site is Sieges: collateral casualties.
Weighted ship combat factor: in naval map events the troop overload of SimulateHit also adds the striker side's weighted ship combat factor as a factor on simulation_damage (works; see Battles).
Combat XP in naval map events
troop_hit_xp: the formula is on Battles. NavalDLC adds its factors on the same explained number after the base model.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Non-hero attacker in a naval map event | — | 0.5 | factor | attacker party's map event is naval; attacker is not a hero | works |
| Naval Fighting Training (Mariner) | primary | 0.1 | factor | naval map event; attacker is a hero and a companion; party is mobile | differs |
| Auxiliaries to the Fleet | — | −0.15 | factor | attacker party has a map event; its leader's kingdom has the policy | works |
- The +0.5 and Naval Fighting Training are two branches of one test: a non-hero attacker gets +0.5; a hero attacker gets Naval Fighting Training only if it is a companion. Non-companion heroes get neither.
- Naval Fighting Training
differs: per-hit combat XP, not "after each naval battle". - Auxiliaries to the Fleet: any map event, land or naval, hero attackers included. Policy text: troop XP gain −15%.
Battle rewards
Prisoner capture share
prisoner_capture_share: each winner party's chance weight to capture defeated members. Consumer NavalDLCBattleRewardModel::GetCaptureMemberChancesForWinnerParties (NavalDLC, extends the default). Base contribution / total_contribution · capture_factor, custom, no clamp. The method fills two lists per winner party.
share_i = contribution_i · trait_i / total_contribution
w_i = share_i · 1.0 · (1 + Σ factors_i)
list 1_i = w_i / Σ w (when Σ w > 0)
h_i = share_i · capture_factor · (1 + Σ factors_i)
list 2_i = h_i / Σ h (when Σ h > 0)
contribution_i: the winner party's contribution to the battle.total_contribution: the sum over eligible winners. Eligible: contribution above 0, has members, not a villager, caravan or patrol party, nor a garrison or militia in a village.trait_i: 1 plus the party leader's merciful/cruel prisoner-capture trait effects.capture_factor: 0.25, or 1.0 when the defeated side surrendered (second list only; the first list uses 1.0). The NavalDLC renormalisation divides it out again.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Contribution share | — | contribution / total_contribution |
base | — | works |
| Healthy-member capture factor | — | capture_factor |
base | second list only | works |
| River Raider (Shipmaster) | secondary | 0.1 | factor | party leader has the perk | differs |
- Both lists are renormalised by their own sums, so River Raider only shifts captures between winning parties; a sole winner gains nothing.
Ship loot score
ship_loot_score: each winner party's score for receiving defeated ships. Consumer NavalDLCBattleRewardModel::PartyLootShipScore, read by DistributeDefeatedPartyShipsAmongWinners (NavalDLC, replaces the default) to split defeated ships among the winner parties. Base contribution, explained number, no clamp, rounded.
ship_loot_score = round((contribution + men + leader_bonus + leader_clan_tier_term + party_clan_tier_term) · (1 + Σ factors))
contribution: the party's contribution to the battle.men: the party's total man count.leader_bonus: 50000 for a kingdom leader, else 20000 for a clan leader, else 0.leader_clan_tier_term: when the leader has a clan, 5000 at the lowest clan tier up to 10000 at the highest, linear in the tier.party_clan_tier_term: the same for the party's actual clan. A lord party usually gets both.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Men count | — | men |
add | — | works |
| Kingdom leader bonus | — | 50000 | add | party leader is a kingdom leader | works |
| Clan leader bonus | — | 20000 | add | party leader is a clan leader, not a kingdom leader | works |
| Leader's clan tier | — | 5000 to 10000 | add | leader has a clan | works |
| Party clan tier | — | 5000 to 10000 | add | party has an actual clan | works |
| Gilded Purse (Boatswain) | primary | 0.25 | factor | party leader has the perk; party is mobile | differs |
- Gilded Purse
differs: it raises the share score used to split defeated ships among winners; no capture-chance roll changes, so a sole winner gains nothing.
Loot share
battle_loot_share naval terms (formula on Battles):
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Nord hostile action loot bonus feat | — | 0.3 | factor | defeated party is a caravan or villager party; winner has the Nord feat (leader culture, else party culture) | works |
| Pirate's Prowess (Mariner) | secondary | 0.3 | factor | defeated party is a caravan with naval navigation (merchant convoy) | works |
Ship costs
Upgrade piece cost
ship_upgrade_cost: the cost of a ship upgrade piece. GetShipUpgradePieceCost (NavalDLC, replaces the default) returns 0 when the piece is already unlocked or installed in a slot, else the piece value from NavalDLCShipCostModel::GetShipUpgradePieceValueInternal. Base piece_value, sequential, no clamp, rounded.
v1 = piece_value light / medium / heavy value by hull type 0 / 1 / 2
v2 = v1 · (1 + Σ factors) party is mobile
v3 = v2 · 0.9 Royal Navy Prerogative
v4 = v3 · 0.01 neither party argument is in the player clan
ship_upgrade_cost = round(v4)
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Master Shipwright (Boatswain) | primary | −0.3 | factor | First Mate has the perk; party is mobile | works |
| Royal Navy Prerogative (policy) | — | 0.9 | multiply | party's clan is the ruling clan of its kingdom; the kingdom has the policy | works |
| Non-player-clan ship cost factor | — | 0.01 | multiply | neither party argument belongs to the player clan | works |
- Master Shipwright: the same piece value also feeds the ship base value, so it also lowers ship trade value and repair cost (broader than the tooltip).
Worked example.
The player's party buys an upgrade piece whose hull-class value is 1000. The party's First Mate has Master Shipwright, and the player clan is the ruling clan of a kingdom with Royal Navy Prerogative. Inputs: piece value 1000.
| Step | Source | Stage | Change | Running value |
|---|---|---|---|---|
| Base | Ship upgrade piece cost | base | 1000.0000 | |
| 1 | Master Shipwright | factor -30% | -300.0000 | 700.0000 |
| 2 | Royal Navy Prerogative | multiply ×0.9 | -70.0000 | 630.0000 |
| Result | Ship upgrade piece cost | 630.0000 |
With these inputs, ship upgrade piece cost is 630.0000.
Repair cost
ship_repair_cost: the cost to repair a ship. Consumer NavalDLCShipCostModel::GetShipRepairCost (NavalDLC, replaces the default). Base ship_base_value · missing_hp_ratio · 0.25, explained number, no clamp, not rounded.
missing_hp_ratio = (max_hit_points − hit_points) / max_hit_points
ship_base_value = hull_value · (0.01 if the party is not in the player clan) + 0.3 · Σ slots best piece value
ship_repair_cost = ship_base_value · missing_hp_ratio · 0.25 · (1 + Σ factors)
best piece value: per hull slot, the value of the installed piece or a larger unlocked matching piece, from the upgrade piece value above. Master Shipwright, Royal Navy Prerogative and the 0.01 non-player factor therefore also act on this part.- The perk factor needs the party to have a mobile party.
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Ship missing hit-point ratio | — | missing_hp_ratio |
base | — | works |
| Ship base value | — | ship_base_value |
base | — | works |
| Non-player-clan ship cost factor | — | 0.01 | base | party is not in the player clan | works |
| Royal Navy Prerogative (policy) | — | 0.9 | base | through the upgrade-piece part of the ship base value only | works |
| Merchant Prince (Boatswain) | primary | −0.3 | factor | First Mate has the perk | works |
Ship deployment and handling
Deployment limit
ship_deployment_limit: ships a party can deploy in a naval battle. Consumer NavalDLCShipDeploymentModel::GetShipDeploymentLimit (NavalDLC). Base 3, explained number, no clamp, truncated to an integer.
ship_deployment_limit = trunc(base + Σ adds) base = 3, or 8 with the ignore-deployment-limits setting on
| Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|
| Ignore-deployment-limits flag | — | 8 | base | the game's ignore-deployment-limits setting is on | works |
| Port Authority (Boatswain) | primary | 1.0 | add | party leader | works |
| Blessings Of The Sea (Boatswain) | primary | 1.0 | add | party leader | works |
| Merchant Fleet (Boatswain) | primary | 1.0 | add | party leader | works |
| Master and commander (Shipmaster) | secondary | 1.0 | add | party leader | works |
| Stormrider (Shipmaster) | secondary | 1.0 | add | party leader | works |
- This is the per-battle deployment limit. No party ship-count cap reads these perks.
Sail force, oar force, main deck crew
NavalMissionShipParametersModel (campaign missions). NavalCustomBattleMissionShipParametersModel (custom battles) has identical sail and oar methods; its main deck method has no terms. Only NavalCustomGame::InitializeGameModels (0xfe) creates it, so its Windborne, Chain to Oars and wind bonus sites are dead in the campaign.
ship_sail_force = base_sail_force · (1 + Σ factors)
ship_oar_force = max(0, base_oar_force_multiplier · (1 + Σ factors))
main_deck_crew_size = min(ceil(main_deck_crew_capacity · (1 + Σ factors)), total_crew_capacity)
base_sail_force: the base sail force magnitude argument. Terms only when the ship's captain agent has a campaign character.base_oar_force_multiplier: the base multiplier argument; floored at 0.main_deck_crew_capacity,total_crew_capacity: the ship's main deck and total crew capacity. Custom battles:min(ceil(main_deck_crew_capacity), total_crew_capacity).
| Game number | Source | Half | Bonus | Stage | Conditions | Verdict |
|---|---|---|---|---|---|---|
ship_sail_force |
Shipmaster skill: wind bonus | — | 0.0005 per point | factor | the ship captain agent's own Shipmaster | differs |
ship_sail_force |
Windborne (Shipmaster) | primary | 0.2 | factor | the ship captain agent's own character has the perk | works |
ship_oar_force |
Chain to Oars (Shipmaster) | primary | 0.2 | factor | captain of the pilot agent's formation, no self-exclusion | works |
main_deck_crew_size |
Popular Captain (Boatswain) | secondary | 0.05 | factor | party leader of the agent's party | works |
- Shipmaster skill: wind bonus
differs: the ship captain agent's own Shipmaster skill is used, not the party Navigator's. - Popular Captain: every ship whose first unit is from the leader's party gets it, not only the leader's own ship (broader than the tooltip).
Ship collisions
ship_collision_stagger (ShipCollisionOutcomeLogic::HandleAgentActions): when ships collide, every agent on the hit ship within 30 m of the impact point gets a stagger strength
s = impact · 0.15 · 30 / (distance + 0.1) · (0.5 + 0.5 · random) · 100 / (mariner + 100)
impact: the collision strength passed by the logic;distance: metres from the impact point;random: uniform 0..1;mariner: the agent's effective Mariner.s≤ 1: nothing. The ship's pilot is capped at 2. Otherwise a stagger animation, light below 2, medium below 3, heavy from 3, in the impact's direction relative to the agent's movement.
| Source | Stage | Value | Conditions | Verdict |
|---|---|---|---|---|
| Mariner skill level | multiply | 100 / (mariner + 100) | naval battle | works |
Game code
- NavalDLC.GameComponents.NavalMissionSiegeEngineCalculationModel.il:
CalculateReloadSpeed,CalculateDamage,CalculateShipSiegeWeaponAmmoCount. - TaleWorlds.MountAndBlade.ComponentInterfaces.DefaultSiegeEngineCalculationModel.il: base
CalculateReloadSpeed,CalculateDamage. - Helpers.PerkHelper.il: the captain perk helper (Captain-role halves only).
- TaleWorlds.CampaignSystem.Party.MobileParty.il:
HasPerk(Captain role always false). - NavalDLC.GameComponents.NavalBattleMoraleModel.il:
CalculateMoraleOnRamming,CalculateMoraleChangeOnShipSunk,GetEffectiveInitialMorale,CalculateMaxMoraleChangeDueToAgentIncapacitated. - NavalDLC.Missions.MissionLogics.NavalAgentMoraleInteractionLogic.il:
OnShipRammed,OnShipSunk. - TaleWorlds.MountAndBlade.AgentComponentExtensions.il:
GetMorale,ChangeMorale. - TaleWorlds.CampaignSystem.Naval.DefaultFigureheads.il: figurehead effect amounts (Lion, Ram, Viper).
- NavalDLC.GameComponents.NavalDLCCampaignShipDamageModel.il:
GetShipDamage. - NavalDLC.GameComponents.NavalDLCCombatSimulationModel.il:
SimulateHit(ship and troop overloads). - NavalDLC.GameComponents.NavalDLCCombatXpModel.il:
GetXpFromHit. - NavalDLC.NavalPolicies.il: policy texts.
- NavalDLC.GameComponents.NavalDLCBattleRewardModel.il:
GetCaptureMemberChancesForWinnerParties,PartyLootShipScore,GetLootItemChancesForWinnerParties. - TaleWorlds.CampaignSystem.GameComponents.DefaultBattleRewardModel.il: base
GetCaptureMemberChancesForWinnerParties. - NavalDLC.CharacterDevelopment.NavalCulturalFeats.il: Nord loot feat.
- NavalDLC.GameComponents.NavalDLCShipCostModel.il:
GetShipRepairCost,GetShipBaseValue,GetShipUpgradePieceCost,GetShipUpgradePieceValueInternal. - NavalDLC.Missions.MissionLogics.ShipCollisionOutcomeLogic.il:
HandleAgentActions,OnMissionTick. - NavalDLC.GameComponents.NavalDLCShipDeploymentModel.il:
GetShipDeploymentLimit. - NavalDLC.GameComponents.NavalMissionShipParametersModel.il, NavalDLC.GameComponents.NavalCustomBattleMissionShipParametersModel.il:
CalculateWindBonus,CalculateOarForceMultiplier,CalculateMainDeckCrewSize.
Changelog
- v1.5.7 (2026-11-12): Combat sections re-verified against v1.5.7 IL: Streamlined Operations, Smooth Operator and Rallying Cry primary now apply; Shipwright's Insight primary is the shooter's own perk; Terror of the Seas applies its secondary half to morale; the second capture list is renormalised by its own sum; Terror (Crossbow) no longer skips parties at sea.
- v1.4.8 (2026-11-11): Ship collision stagger and its Mariner reduction added.
- v1.4.8 (2026-11-11): Custom-battle ship parameter sites marked dead; hull size factor folded into the simulated-hit base.
- v1.4.8 (2026-11-11): First version from IL.