Bannerlord mechanics

Settlements

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

Every game number of towns, castles and villages that a skill, perk, policy, building or cultural feat changes, at full precision for game v1.5.7: prosperity, loyalty, security, militia, food, tax and tariffs, construction, buildings, workshops, village production and hearths, volunteers, garrison food, governor relation rolls and the bribe to enter a keep.

NavalDLC extends (calls the base model first, then adds its own terms) eight of these numbers: security change, militia change, veteran militia chance, workshop production speed, construction power, village hearth change, tariff income and village production. It delegates (base model only) the prosperity change, the boost amount, town project income and village income.

Reading the tables

Each game number has a header table (consumer method, base, combine rule, clamp) and a source table:

Combine rules

explained_number numbers are built by the game's standard modifier sum:

result = clamp( (base + Σ add) · (1 + Σ factor), min, max )

sequential numbers are stored values (prosperity) or integer code paths (village income, forced volunteers) where each step applies to the running value in code order. custom numbers have their own formula, given in the notes.

Governor rules

Most perks here are governor halves. Two helpers read them, and they differ:

Villages have no governor. A village term reads one of two towns:

Prosperity

Prosperity (stored)

Town.Prosperity. Every writer assigns Prosperity + delta; set_Prosperity raises negative values to 0, so additions apply in event order. Traced writers: the daily tick, Foreman on a building level change, and The Helmsman's Shield on a fishing party drop-off. Raid, siege and quest writers are not enumerated.

Consumer Town::set_Prosperity (Native)
Base prosperity
Combine rule sequential
Clamp min 0
Source Kind Value Stage Scaling Conditions Verdict
Daily prosperity change term add settlement_prosperity_change works
Foreman (Engineering, secondary) perk 100 add bonus role=Governor works
The Helmsman's Shield (Shipmaster, secondary) perk 1 add bonus party=fishing; role=Governor works

IL: TaleWorlds.CampaignSystem.Settlements.Town: set_Prosperity, DailyTick; TaleWorlds.CampaignSystem.CampaignBehaviors.BuildingsCampaignBehavior: OnBuildingLevelChanged; NavalDLC.CampaignBehaviors.FishingPartyCampaignBehavior: OnDropOff.

Daily prosperity change

CalculateProsperityChange starts a standard modifier sum with base 0 and calls CalculateProsperityChangeInternal. No clamp. food_change is the town's daily food change (below). NavalDLC delegates.

Consumer DefaultSettlementProsperityModel::CalculateProsperityChangeInternal (Native)
Base 0
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Food shortage term add ceil(min(0, food_change)) * 0.5 settlement=starving works
High loyalty prosperity bonus term add 0.5 settlement=food_change_positive; settlement=loyalty_above_75 works
Housing costs term add max(0, min(6, 6 - floor(prosperity / 250))) - max(0, min(6, ceil((prosperity - 6000) / 3000))) settlement=town works
Active issue effects term add issue_effects works
Low loyalty prosperity penalty term add -1 settlement=loyalty_at_most_25 works
Prosperity goods sold in the market term add 0.1 * sold_prosperity_goods settlement=town works
Surplus food term add max(0, floor(food_stocks + food_change) - food_stocks_upper_limit) * 0.1 works
Housing (daily project) building add building_effect settlement=daily_project_active; settlement=town works
Crown Duty policy add -1 faction=kingdom_policy_active; settlement=town works
Imperial Towns policy add ruling_clan_owner faction=kingdom_policy_active; settlement=town works
Road Tolls policy add -0.2 faction=kingdom_policy_active; settlement=town works
War Tax policy add -1 faction=kingdom_policy_active; settlement=town works
Apprenticeship (Engineering, secondary) perk 0.01 factor bonus * projects role=Governor works
Clean Infrastructure (Medicine, primary) perk 1 add bonus * civilian_buildings role=Governor works
Helping Hands (Medicine, secondary) perk -0.5 factor bonus role=Governor works
Pristine Streets (Medicine, primary) perk 1 add bonus role=Governor works
Trickle Down (Trade, secondary) perk 2 add bonus role=Governor; settlement=town_or_castle works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementProsperityModel: CalculateProsperityChangeInternal, GetSettlementProsperityChangeDueToIssues.

Loyalty

Daily loyalty change

Standard modifier sum with base 0, every term an add except the governor's Honor trait factor, no clamp in the model. Code order: food stocks, owner culture, policies, projects, issues, security, notable relations, governor perks, drift, then the Honor factor. Town::DailyTick adds the result to the town's loyalty; the stored value is clamped to 0-100. Model constants: security threshold 60, maximum loyalty 100, high/low security effect 1 / -2.5, owner different culture -3, drift medium 50. No sandbox_campaign override.

Consumer DefaultSettlementLoyaltyModel::CalculateLoyaltyChangeInternal (Native)
Base 0
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Active issue effects term add issue_effects works
Loyalty drift term add -0.1 * (loyalty - 50) works
Security effect on loyalty term add min(security, 60) / 24 - 2.5 + max(security - 60, 0) / 40 works
Notables supporting the owner clan or an enemy clan term add 0.5 * owner_supporters - 0.5 * enemy_supporters works
Owner clan culture differs from settlement culture term add -3 culture=owner_clan_differs_from_settlement works
Starvation term add -1 - long_starvation settlement=starving works
Courthouse building add building_effect settlement=town works
Festival and Games (daily project) building add building_effect settlement=daily_project_active; settlement=town works
Citizenship policy add owner_culture_match - 0.5 faction=kingdom_policy_active works
Debasement of the Currency policy add -1 faction=kingdom_policy_active works
Forgiveness of Debts policy add 2 faction=kingdom_policy_active works
Grazing Rights policy add 0.5 faction=kingdom_policy_active works
Hunting Rights policy add -0.2 faction=kingdom_policy_active works
Imperial Towns policy add 1.3 * ruling_clan_owner - 0.3 faction=kingdom_policy_active; settlement=town works
Trial by Jury policy add 0.5 faction=kingdom_policy_active works
Tribunes of the People policy add 1 faction=kingdom_policy_active; settlement=town works
Durable (Athletics, secondary) perk 1 add bonus role=Governor works
Discipline (Bow, secondary) perk 1 add bonus role=Governor; settlement=fortification works
Parade (Charm, primary) perk 5 add bonus * holders role=Personal; settlement=own_clan_town differs
Heroic Leader (Leadership, primary) perk 1 add bonus role=Governor works
Physician of People (Medicine, primary) perk 1 add bonus role=Governor works
Well Strapped (Riding, secondary) perk 0.5 add bonus role=Governor works
Honor trait: governor loyalty gain term factor trait_effect hero=governor_honor_trait; role=Governor; settlement=loyalty_change_positive works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementLoyaltyModel: CalculateLoyaltyChangeInternal, GetSettlementLoyaltyChangeDueToIssues, GetSettlementLoyaltyChangeDueToLoyaltyDrift, GetSettlementLoyaltyChangeDueToSecurity, GetSettlementLoyaltyChangeDueToNotableRelations, GetSettlementLoyaltyChangeDueToOwnerCulture, GetSettlementLoyaltyChangeDueToFoodStocks, GetSettlementLoyaltyChangeDueToProjects, GetSettlementLoyaltyChangeDueToPolicies, GetSettlementLoyaltyChangeDueToGovernorPerks.

Security

Daily security change

The base model builds a standard modifier sum with base 0 and adds, in order: hideouts, looted villages, siege, prosperity, garrison, policies, governor (empty body), projects (empty body), issues, perks, drift, daily security buildings, patrol parties. No factor on the main number, no clamp; the stored security is clamped to 0-100. NavalDLC extends it: after the base result, Writs of Reprisal adds -1 per lord party in the settlement.

Consumer NavalDLCSettlementSecurityModel::CalculateSecurityChange (NavalDLC)
Base 0
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Garrison strength term add garrison_security party=garrison works
Active issue effects term add issue_effects works
Looted bound village term add -2 settlement=bound_village_looted works
Infested hideout nearby term add -2 settlement=infested_hideout_nearby works
Prosperity effect on security term add max(-5, -0.0005 * prosperity) works
Security drift term add -(security - 50) / 15 works
Under siege term add -3 settlement=under_siege works
Guard house (town) building add 0.5 * building_level + 0.5 party=patrol; settlement=town works
Bailiffs policy add 1 faction=kingdom_policy_active; settlement=town works
Magistrates policy add 1 faction=kingdom_policy_active; settlement=town works
Writs of Reprisal policy add -lord_parties faction=kingdom_policy_active works
Serfdom policy add 1 faction=kingdom_policy_active; settlement=town works
Trial by Jury policy add -0.2 faction=kingdom_policy_active works
Mounted Archery (Bow, secondary) perk 0.2 add garrison_security * ranged_strength_ratio * bonus party=garrison; role=Governor works
Ranger's Swiftness (Bow, secondary) perk 0.2 add garrison_security * ranged_strength_ratio * bonus party=garrison; role=Governor works
Renowned Marksmen (Crossbow, secondary) perk 0.3 add garrison_security * ranged_strength / total_strength * bonus party=garrison; role=Governor works
Authority (Leadership, primary) perk 0.2 add bonus * garrison_security role=Governor; settlement=fortification works
Presence (Leadership, primary) perk 5 add bonus * parties map_state=in_settlement; role=PartyLeader works
Stand United (One Handed, secondary) perk 0.3 factor bonus party=garrison; role=Governor works
To Be Blunt (One Handed, secondary) perk 0.5 add bonus role=Governor works
Skewer (Polearm, secondary) perk 1 add bonus role=Governor; settlement=town works
Relief Force (Riding, secondary) perk 0.2 add garrison_security * mounted_strength_share * bonus role=Governor works
Know-How (Roguery, secondary) perk 1 add bonus role=Governor works
Gens d'armes (Tactics, secondary) perk 1 add bonus role=Governor works
Focus (Throwing, secondary) perk 1 add bonus role=Governor works

IL: NavalDLC.GameComponents.NavalDLCSettlementSecurityModel: CalculateSecurityChange; TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementSecurityModel: CalculateGarrisonEffectsOnSecurity, CalculateIssueEffectsOnSecurity, CalculateRaidedVillageEffectsOnSecurity, CalculateInfestedHideoutEffectsOnSecurity, CalculateProsperityEffectOnSecurity, CalculateSecurityDrift, CalculateUnderSiegeEffectsOnSecurity, CalculateSettlementPatrolPartiesBonuses, CalculatePolicyEffectsOnSecurity, CalculatePerkEffectsOnSecurity.

Worked example. A town at security 40 and prosperity 6000 with a garrison worth 3 security, Serfdom, and a governor in the town holding Authority, To Be Blunt and Skewer:

A town with security 40 and prosperity 6000, a garrison worth 3 security, Serfdom, and a governor in the town with Authority, To Be Blunt and Skewer.

Step Source Stage Change Running value
Base Daily security change of a town or castle base 0.0000
1 Authority add +0.6000 0.6000
2 To Be Blunt add +0.5000 1.1000
3 Skewer add +1.0000 2.1000
4 Serfdom add +1.0000 3.1000
5 Garrison strength add +3.0000 6.1000
6 Prosperity effect on security add -3.0000 3.1000
7 Security drift add +0.6667 3.7667
Result Daily security change of a town or castle 3.7667

With these inputs, daily security change of a town or castle is 3.7667.

The prosperity term is max(-5, -0.0005 · 6000) = -3.0000 and the drift is -(40 - 50) / 15 = +0.6667; security rises by 3.7667 a day.

Militia

Daily militia change

The base model returns 0 for a village whose state is not Normal; militia_base adds 2 for fortifications and 0.5 for villages. No factor and no clamp in the base model. Policies, perks, issues and buildings apply only to towns and castles. NavalDLC extends it: after the base result, Accuracy Training (port towns, or villages whose bound town has a port) and factor +0.25 for Bolster the Militia. Town::DailyTick adds the result to Settlement.Militia.

Consumer NavalDLCSettlementMilitiaModel::CalculateMilitiaChange (NavalDLC)
Base militia_base
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Active issue effects term add issue_effects settlement=fortification works
Militia from village hearths term add hearth / 400 settlement=village works
Militia goods sold in the market term add 0.2 * sold_militia_goods settlement=town works
Militia from prosperity term add prosperity / 1000 settlement=fortification works
Militia boost in a rebellious settlement term add prosperity / 1000 * 2 * (1 - min(loyalty, rebellious_threshold) / rebellious_threshold) settlement=fortification; settlement=rebellious works
Retired militia term add -0.025 * militia works
Raise Troops (castle daily project) building add building_effect settlement=castle; settlement=daily_project_active works
Guard house (castle) building add building_effect settlement=castle works
Train Militia (daily project) building add building_effect settlement=daily_project_active; settlement=town works
Bolster the Militia policy factor 0.25 faction=kingdom_policy_active works
Cantons policy add 1 faction=kingdom_policy_active; settlement=town differs
Citizenship policy add 1 faction=kingdom_policy_active; settlement=fortification differs
Serfdom policy add -1 faction=kingdom_policy_active; settlement=town works
Battanian militia feat feat add 0.2 culture=owner_clan_battania; settlement=town differs
Accuracy Training (Boatswain, secondary) perk 2 add bonus role=Governor; settlement=port works
Merry Men (Bow, secondary) perk 1 add bonus role=Governor; settlement=fortification works
Long Shots (Crossbow, secondary) perk 1 add bonus role=Governor; settlement=fortification works
Swift Strike (One Handed, secondary) perk 1 add bonus role=Governor works
Keep at Bay (Polearm, secondary) perk 1 add bonus role=Governor; settlement=town works
Arms Dealer (Roguery, secondary) perk 2 add bonus role=Governor; settlement=under_siege differs
Seven Veterans (Steward, secondary) perk 0.1 add bonus role=Governor; settlement=fortification differs
Slinging Competitions (Throwing, secondary) perk 1 add bonus role=Governor; settlement=fortification works

IL: NavalDLC.GameComponents.NavalDLCSettlementMilitiaModel: CalculateMilitiaChange; TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementMilitiaModel: GetSettlementMilitiaChangeDueToIssues, CalculateMilitiaChangeInternal, GetSettlementMilitiaChangeDueToPolicies, GetSettlementMilitiaChangeDueToPerks.

Veteran militia chance

A 0-1 probability. Settlement::AddTroopToMilitiaParty reads the result once and, per spawned troop, spawns the veteran troop when a random roll is below chance; values ≥ 1 make every spawned militia a veteran. The base model starts from a default standard modifier sum (base 0, no limits). The governor read is the fortification's governor, or for a village the governor of the town it is bound to for trade. NavalDLC extends it with Naval Fighting Training for port towns and for villages whose bound settlement has a port.

Consumer NavalDLCSettlementMilitiaModel::CalculateVeteranMilitiaSpawnChance (NavalDLC)
Base 0
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Training Fields (castle) building add building_effect settlement=castle works
Training Fields (town) building add building_effect settlement=town works
Land Grants for Veterans policy factor 0.1 faction=kingdom_policy_active works
Battanian militia feat feat add 0.2 culture=owner_clan_battania works
Citizen Militia (Leadership, primary) perk 0.2 add bonus role=Governor differs
Naval Fighting Training (Mariner, secondary) perk 0.1 factor bonus role=Governor; settlement=port works
Drills (Polearm, primary) perk 1 add bonus role=Governor differs
Seven Veterans (Steward, secondary) perk 0.1 add bonus role=Governor differs

IL: NavalDLC.GameComponents.NavalDLCSettlementMilitiaModel: CalculateVeteranMilitiaSpawnChance; TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementMilitiaModel: CalculateVeteranMilitiaSpawnChance.

Worked example. A town with Training Fields at level 2 and a governor holding Citizen Militia and Drills, in a kingdom with Land Grants for Veterans:

A town with Training Fields at level 2, a governor with Citizen Militia and Drills, in a kingdom with Land Grants for Veterans. The chance is a 0-1 probability; anything at or above 1 makes every spawned militia a veteran.

Step Source Stage Change Running value
Base Chance that a spawned militia troop is a veteran base 0.0000
1 Training Fields (town) add +0.1500 0.1500
2 Citizen Militia add +0.2000 0.3500
3 Drills add +1.0000 1.3500
4 Land Grants for Veterans factor +10% +0.1350 1.4850
Result Chance that a spawned militia troop is a veteran 1.4850

With these inputs, chance that a spawned militia troop is a veteran is 1.4850.

The chance is 1.4850, above 1, so every spawned militia is a veteran. Drills alone gets there.

Food

Daily food change

An income number (base 0, add only) and the consumption number are built separately, then combined in a new standard modifier sum with base 0: the income is added and the consumption subtracted, then issue effects. No clamp. Town::DailyTick adds the change to the food stocks and clamps the stocks to 0..the food stock upper limit. No sandbox_campaign override.

Consumer DefaultSettlementFoodModel::CalculateTownFoodChangeInternal (Native)
Base 0
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Bound villages food term add village_food settlement=not_under_siege works
Food consumption term add -town_food_consumption works
Food stores goods sold in the market term add sold_food_goods works
Active issue effects term add issue_effects works
Lands around the settlement term add 10 + 5 * is_town settlement=not_under_siege works
Farmlands (castle) building add building_effect settlement=castle; settlement=not_under_siege works
Hunting Rights policy add 2 faction=kingdom_policy_active works
Dirty Fighting (Roguery, secondary) perk 2 add bonus role=Governor; settlement=under_siege differs

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementFoodModel: CalculateTownFoodChangeInternal, GetSettlementFoodChangeDueToIssues.

Food consumption

Consumer DefaultSettlementFoodModel::CalculateTownFoodChangeInternal (Native)
Base 0
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Garrison food consumption term add town_garrison_food_consumption works
Population food consumption term add town_population_food_consumption works
Waterworks building factor building_effect settlement=town works
Triage Tent (Medicine, secondary) perk -0.05 factor bonus role=Governor; settlement=under_siege works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementFoodModel: CalculateTownFoodChangeInternal.

Waterworks: -0.05 / -0.1 / -0.15. Triage Tent applies to the whole consumption number, population and garrison.

Population food

Consumer DefaultSettlementFoodModel::CalculateTownFoodChangeInternal (Native)
Base prosperity / 40
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Master of Warcraft (Steward, secondary) perk -0.05 factor bonus role=Governor works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementFoodModel: CalculateTownFoodChangeInternal.

Only Master of Warcraft changes it.

Garrison food

Consumer DefaultSettlementFoodModel::CalculateTownFoodChangeInternal (Native)
Base garrison_members / 20
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Gourmet (Steward, secondary) perk -0.1 factor bonus role=Governor; settlement=under_siege works
Generosity trait: party food consumption term factor trait_effect hero=governor_generosity_trait; role=Governor works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementFoodModel: CalculateTownFoodChangeInternal.

garrison_members is the garrison party's total member count (0 without a garrison). Generosity trait: trait_effect is +0.1 at Generosity +1 and +2 for a governor who is in the town.

Tax and tariffs

Daily tax

CalculateTownTax starts a standard modifier sum with base 0. CalculateDailyTax adds base_tax = Prosperity · 0.35 · (1 - 0.05 with Council of the Commons); then policy gold cuts (add, proportional to base_tax), perks, the Khuzait feat, issues, security, loyalty and buildings; clamp to 0 at the lower end, no upper limit. AddSettlementIncome adds the truncated result per fief to clan income. No override.

Consumer DefaultSettlementTaxModel::CalculateDailyTaxInternal (Native)
Base prosperity * 0.35
Combine rule explained_number
Clamp min 0
Source Kind Value Stage Scaling Conditions Verdict
Active issue effects term add issue_effects works
High loyalty tax bonus term factor (loyalty - 75) / 25 * 0.2 settlement=loyalty_at_least_75 works
High security tax bonus term factor (security - 75) / 25 * 0.05 settlement=security_at_least_75 works
Low loyalty tax corruption term factor (loyalty - 25) / 50 - 0.5 settlement=loyalty_25_to_50 works
Low security tax corruption term factor -(50 - security) * 0.002 settlement=security_below_50 works
Very low loyalty tax loss term factor -1 settlement=loyalty_below_25 works
Craftsman's Quarters (castle) building add building_effect settlement=castle works
Tax Office building factor building_effect settlement=town works
Bailiffs policy add -0.05 * base_tax faction=kingdom_policy_active; settlement=town works
Cantons policy add -0.1 * base_tax faction=kingdom_policy_active works
Council of the Commons policy add -0.05 * prosperity * 0.35 faction=kingdom_policy_active works
Magistrates policy add -0.05 * base_tax faction=kingdom_policy_active; settlement=town works
Tribunes of the People policy add -0.05 * base_tax faction=kingdom_policy_active; settlement=town differs
Khuzait decreased town tax feat feat factor -0.2 culture=owner_clan_khuzait; settlement=town works
Quick Draw (Bow, secondary) perk 0.05 factor bonus role=Governor; settlement=fortification works
Desert Born (Scouting, secondary) perk 0.025 factor bonus role=Governor; settlement=governed works
Logistician (Steward, secondary) perk 0.1 factor bonus role=Governor works
Price of Loyalty (Steward, secondary) perk 0.005 factor bonus * (skill - 200) role=Governor works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementTaxModel: CalculateDailyTaxInternal, GetSettlementTaxChangeDueToIssues, CalculateSettlementTaxDueToLoyalty, CalculateSettlementTaxDueToBuildings, CalculatePolicyGoldCut, CalculateDailyTax; TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementLoyaltyModel: CalculateGoldGainDueToHighLoyalty, CalculateGoldCutDueToLowLoyalty; TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementSecurityModel: CalculateGoldGainDueToHighSecurity, CalculateGoldCutDueToLowSecurity.

Tariff income

Base: the truncated accumulated trade tax / 5. With withdrawals the rounded base is subtracted from the accumulator. NavalDLC extends it: after the base result, factor -0.1 for Arsenals of State. AddSettlementIncome adds the truncated result.

Consumer NavalDLCClanFinanceModel::CalculateTownIncomeFromTariffs (NavalDLC)
Base floor(trade_tax_accumulated / 5)
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Marketplace building factor building_effect settlement=town works
Arsenals of State policy factor -0.1 faction=kingdom_policy_active works
Steady (Crossbow, secondary) perk 0.05 factor bonus role=Governor works
Salt the Earth (Roguery, secondary) perk 0.05 factor bonus role=Governor works
Giving Hands (Steward, secondary) perk 0.1 factor bonus role=Governor works
Content Trades (Trade, primary) perk 0.1 factor bonus role=Governor works

IL: NavalDLC.GameComponents.NavalDLCClanFinanceModel: CalculateTownIncomeFromTariffs; TaleWorlds.CampaignSystem.GameComponents.DefaultClanFinanceModel: CalculateSettlementProjectTariffBonuses, CalculateTownIncomeFromTariffs.

Town project income

Default standard modifier sum (base 0); returns the truncated result. NavalDLC delegates.

Consumer DefaultClanFinanceModel::CalculateTownIncomeFromProjects (Native)
Base 0
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Craftsman's Quarters (castle) building add building_effect settlement=castle works
Architectural Commissions (Engineering, secondary) perk 20 add bonus role=Governor works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultClanFinanceModel: CalculateTownIncomeFromProjects.

Architectural Commissions: needs a current default (daily) building and, since v1.5.7, the governor in the town.

Village income

Integer arithmetic in code order: income = trunc(accumulated trade tax / 5), 0 when Looted or BeingRaided; Land Tax income -= trunc(0.05 · income); Forest Kin income += round(income · bonus); Logistician income += round(income · bonus). With withdrawals the pre-modifier value is subtracted from the accumulator. NavalDLC delegates.

Consumer DefaultClanFinanceModel::CalculateVillageIncome (Native)
Base floor(village_trade_tax_accumulated / 5)
Combine rule sequential
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Looted or raided village pays nothing term override 0 settlement=village_looted_or_being_raided works
Land Tax policy add -floor(0.05 * village_income_base) faction=kingdom_policy_active; faction=not_ruling_clan works
Forest Kin (Scouting, secondary) perk 0.1 multiply 1 + bonus role=Governor; settlement=village works
Logistician (Steward, secondary) perk 0.1 multiply 1 + bonus role=Governor works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultClanFinanceModel: CalculateVillageIncome.

Forest Kin and Logistician read the village's Bound town governor with no presence check. Land Tax applies to clans in a kingdom that are not its ruling clan.

Clan daily income

Eliminated clans return 0. Sub-methods add into one standard modifier sum (base 0) in order: ruling clan policy income, minor clan tier income, mercenary income, settlement income, the clan leader's workshops, parties, player alleys, tribute, call-to-war agreements, trade agreements, kingdom budget, Spring of Gold. All terms are add; no clamp. NavalDLC extends CalculateClanGoldChange and CalculateClanExpenses (expense side).

Consumer DefaultClanFinanceModel::CalculateClanIncomeInternal (Native)
Base 0
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Player clan alley income term add alley_income faction=player_clan works
Call-to-war agreement income term add call_to_war_income faction=not_mercenary works
Kingdom budget income term add kingdom_budget_income faction=not_mercenary; hero=not_main_hero_clan_leader works
Mercenary contract income term add mercenary_income faction=mercenary works
Clan tier income for clans without fiefs term add clan_tier * (80 + 40 * is_mercenary) faction=no_fiefs; faction=not_player_clan works
Caravan and party income term add party_income works
Fief income term add settlement_income works
Trade agreement income term add trade_agreement_income faction=not_mercenary works
Tribute income term add tribute_income faction=not_mercenary works
Clan leader's workshop income term add workshop_income works
Crown Duty policy add 0.05 * kingdom_trade_tax faction=kingdom_policy_active; faction=ruling_clan works
Debasement of the Currency policy add 100 * kingdom_fiefs faction=kingdom_policy_active; faction=ruling_clan works
Land Tax policy add floor(0.05 * other_clan_village_income) faction=kingdom_policy_active; faction=ruling_clan works
Road Tolls policy add floor(own_town_trade_tax / 30) faction=kingdom_policy_active; faction=ruling_clan differs
State Monopolies policy add floor(0.05 * own_workshop_profit) faction=kingdom_policy_active; faction=ruling_clan works
War Tax policy add floor(0.05 * kingdom_town_tax) faction=kingdom_policy_active; faction=ruling_clan works
Spring of Gold (Trade, primary) perk 0.001 add min(1000, bonus * gold) role=ClanLeader works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultClanFinanceModel: CalculateClanIncomeInternal, AddPlayerClanIncomeFromOwnedAlleys, AddIncomeFromCallToWarAgrements, AddIncomeFromKingdomBudget, AddMercenaryIncome, AddIncomeFromParties, AddSettlementIncome, AddIncomeFromTradeAgreements, AddIncomeFromTribute, CalculateHeroIncomeFromWorkshops, AddRulingClanIncome.

Clan renown

Clan.Renown += amount when the amount is > 0, after which the clan tier may rise. Each caller passes its own amount; callers do not combine.

Consumer Clan::AddRenown (Native)
Base 0
Combine rule custom
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Artisan Community (Trade, primary) perk 1 add bonus * workshops role=ClanLeader works
Great Investor (Trade, primary) perk 1 add bonus party=caravan; role=ClanLeader works

IL: TaleWorlds.CampaignSystem.Clan: AddRenown; TaleWorlds.CampaignSystem.GameComponents.DefaultClanFinanceModel: CalculateHeroIncomeFromWorkshops, AddIncomeFromParty.

Both run only when withdrawals are applied. A profiting caravan holds more than 10000 trade gold at the daily tick.

Construction

Daily construction power

The base model starts a standard modifier sum with base 0 and CalculateDailyConstructionPowerInternal adds Prosperity · 0.01, the boost, governor skill and perks, market goods, buildings, loyalty factors and the Battanian feat, then an at-least-0 limit; the result is returned truncated. Loyalty ≤ 25 sets an at-most-0 limit. The clamp is lazy, so every later add and factor, including NavalDLC's, is still clamped: at loyalty ≤ 25 construction is 0. The no-boost variant uses the same method without the boost term. NavalDLC extends it: after the base result, factor +0.2 for Maritime Weal Edict when the settlement has no port.

Consumer NavalDLCBuildingConstructionModel::CalculateDailyConstructionPower (NavalDLC)
Base prosperity * 0.01
Combine rule explained_number
Clamp min 0
Source Kind Value Stage Scaling Conditions Verdict
Construction boost term add construction_boost_amount * min(1, boost_progress / boost_cost) settlement=boost_active works
High loyalty construction bonus term factor (loyalty - 75) / 25 * 0.2 settlement=loyalty_at_least_75 works
Low loyalty construction penalty term factor (loyalty - 25) / 50 - 0.5 settlement=loyalty_25_to_50 works
Very low loyalty stops construction term cap 0 settlement=loyalty_at_most_25 works
Production goods sold in the market term add 0.25 * sold_production_goods works
Mason (castle) building add building_effect settlement=castle works
Mason (town) building add building_effect settlement=town works
Maritime Weal Edict policy factor 0.2 faction=kingdom_policy_active; settlement=no_port differs
Battanian slower construction feat feat factor -0.1 culture=owner_clan_battania; settlement=loyalty_above_25 works
Faster building production (Engineering skill effect) skill effect 0.0025 per point factor bonus * skill role=Governor ui_only
Faster building production (Engineering skill effect) skill effect 0.0025 per point factor bonus * skill role=Governor works
Carpenters (Engineering, secondary) perk 0.12 factor bonus role=Governor; settlement=town works
Military Planner (Engineering, secondary) perk 0.25 factor bonus role=Governor; settlement=castle works
Stonecutters (Engineering, primary) perk 0.3 factor bonus role=Governor; settlement=fortification differs
Forced Labor (Steward, secondary) perk 0.01 factor bonus + min(0.3, prisoners / 3 * bonus) role=Governor differs
Self-made Man (Trade, secondary) perk 0.3 factor bonus role=Governor; settlement=building_marketplace differs
Confidence (Two Handed, secondary) perk 0.3 factor bonus role=Governor works

IL: NavalDLC.GameComponents.NavalDLCBuildingConstructionModel: CalculateDailyConstructionPower; TaleWorlds.CampaignSystem.GameComponents.DefaultBuildingConstructionModel: CalculateDailyConstructionPowerInternal; Helpers.PerkHelper: GetGovernorEngineeringSkillEffectForHero.

Worked example. A town with prosperity 5000, Mason at level 2 and loyalty 85, with an Engineering 100 governor holding Carpenters in the town, in a kingdom with Maritime Weal Edict and no port:

A town with prosperity 5000, Mason at level 2, loyalty 85, an Engineering 100 governor with Carpenters in the town, in a kingdom with Maritime Weal Edict and no port. Inputs: prosperity 5000.

Step Source Stage Change Running value
Base Daily construction power of a town or castle base 50.0000
1 Mason (town) add +6.0000 56.0000
2 Carpenters factor +12% +6.7200 62.7200
3 Maritime Weal Edict factor +20% +11.2000 73.9200
4 Faster building production factor +25% +14.0000 87.9200
5 High loyalty construction bonus factor +8% +4.4800 92.4000
Result Daily construction power of a town or castle 92.4000

With these inputs, daily construction power of a town or castle is 92.4000.

The four factors are summed (+12%, +20%, +25%, +8%) and applied once to 56.0000. Maritime Weal Edict raises construction power by 11.2000; by its text it should lower it.

Worked example. The same town at loyalty 20. The high loyalty factor is gone and the at-most-0 limit caps the result; the NavalDLC factor added after the cap is still capped:

The town of the first example at loyalty 20, so the high loyalty bonus is gone and construction power is capped at 0; the later Maritime Weal Edict factor is still capped. Inputs: prosperity 5000.

Step Source Stage Change Running value
Base Daily construction power of a town or castle base 50.0000
1 Mason (town) add +6.0000 56.0000
2 Carpenters factor +12% +6.7200 62.7200
3 Maritime Weal Edict factor +20% +11.2000 73.9200
4 Faster building production factor +25% +14.0000 87.9200
Clamp maximum 0 clamp -87.9200 0.0000
Result Daily construction power of a town or castle 0.0000

With these inputs, daily construction power of a town or castle is 0.0000 (limited from 87.9200).

Boost amount

boost = boost_bonus + trunc(boost_bonus · (relocation + spring_of_gold)), where boost_bonus is 50 for a town and 20 for a castle, and relocation / spring_of_gold are the secondary bonuses of Relocation and Spring of Gold when the governor has them (summed before one multiply). For towns, CalculateDailyConstructionPowerInternal then sets boost = boost + Round(boost · clockwork). NavalDLC delegates.

Consumer DefaultBuildingConstructionModel::GetBoostAmount (Native)
Base boost_bonus
Combine rule custom
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Clockwork (Engineering, secondary) perk 0.2 multiply 1 + bonus role=Governor; settlement=town works
Relocation (Steward, secondary) perk 0.2 factor bonus role=Governor works
Spring of Gold (Trade, secondary) perk 0.2 factor bonus role=Governor works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultBuildingConstructionModel: GetBoostAmount, CalculateDailyConstructionPowerInternal.

None of the three checks governor presence. Clockwork applies to towns only.

Boost cost

The boost reserve one boost spends, which also divides the boost progress in construction power. Starts at 500 for a town and 250 for a castle, then the Generosity factor, then rounded. NavalDLC delegates.

Consumer DefaultBuildingConstructionModel::GetBoostCost (Native)
Base boost_base_cost
Combine rule sequential
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Generosity trait: construction boost cost term multiply 1 - trait_effect hero=governor_generosity_trait; role=Governor works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultBuildingConstructionModel: GetBoostCost.

Buildings

Building effect

level_amount is the building type's base effect amount at the building's current level. Every building's effect skips level 0 and daily projects that are not the town's current default building, then applies the result to the consumer number as add or factor.

Consumer DefaultBuildingEffectModel::GetBuildingEffect (Native)
Base level_amount
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Bound village hearths (Denar by bound village hearth effect) term override bound_village_hearths * level_amount settlement=effect_denar_by_bound_village_heart works
Public Speaker (Charm, secondary) perk 0.1 factor bonus role=Governor works
Battlements (Engineering, secondary) perk 100 add bonus role=Governor; settlement=fortification differs
Contractors (Steward, secondary) perk 0.1 factor bonus role=Governor works
Master of Planning (Steward, secondary) perk 0.2 factor bonus role=Governor works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultBuildingEffectModel: GetBuildingEffect.

Building amounts (levels 1 / 2 / 3, or a single value for a daily project):

Building Effect Amounts
Housing (daily project) Prosperity Add 2
Courthouse Loyalty Add 0.3 / 0.6 / 1.0
Festival and Games (daily project) Loyalty Add 3
Guard house (castle) Militia Add 1 / 2 / 3
Train Militia (daily project) Militia Add 2
Raise Troops (castle daily project) Militia Add 3
Training Fields (town, castle) MilitiaVeterancyChance Add 0.1 / 0.15 / 0.2
Farmlands (castle) FoodProduction Add 6 / 12 / 18
Waterworks FoodConsumption AddFactor -0.05 / -0.1 / -0.15
Tax Office TaxPerDay AddFactor 0.05 / 0.1 / 0.15
Craftsman's Quarters (castle) DenarByBoundVillageHeartPerDay 0.2 / 0.4 / 0.6 per bound village hearth
Marketplace TariffIncome AddFactor 0.1 / 0.2 / 0.3
Mason (town) ConstructionPerDay Add 3 / 6 / 9
Mason (castle) ConstructionPerDay Add 2 / 4 / 6
Warehouse WorkshopProduction AddFactor 0.05 / 0.1 / 0.15
Roads and Paths (town, castle) VillageHeartsPerDay Add 0.1 / 0.2 / 0.3
Roads and Paths (town, castle) VillageProduction AddFactor 0.05 / 0.1 / 0.15
Irrigation (town daily project) VillageHeartsPerDay Add 1
Irrigation (castle daily project) VillageHeartsPerDay AddFactor 0.5

Inert building effects: the daily security effect (read by the security change) and the militia reduction effect (read for rebellious castles) are carried by no building.

Workshops

Production speed

The base model starts from the production's conversion speed and adds factors from policies of the settlement owner's kingdom, Warehouse, Mercenary Connections (town governor) and Sweatshops (workshop owner). No clamp. NavalDLC extends it: after the base result, factors from policies of the workshop owner clan's kingdom.

Consumer NavalDLCWorkshopModel::GetEffectiveConversionSpeedOfProduction (NavalDLC)
Base conversion_speed
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Warehouse building factor building_effect settlement=town works
Forgiveness of Debts policy factor -0.05 faction=kingdom_policy_active works
Maritime Weal Edict policy factor 0.25 faction=kingdom_policy_active; settlement=port works
Royal Navy Prerogative policy factor -0.05 faction=kingdom_policy_active; item=workshop_smithy_or_wood works
State Monopolies policy factor -0.1 faction=kingdom_policy_active works
Sweatshops (Steward, primary) perk 0.2 factor bonus role=Personal works
Mercenary Connections (Trade, primary) perk 0.25 factor bonus role=Governor works
Calculating trait: workshop production speed term factor trait_effect hero=governor_calculating_trait; role=Governor; settlement=fortification works

IL: NavalDLC.GameComponents.NavalDLCWorkshopModel: GetEffectiveConversionSpeedOfProduction; TaleWorlds.CampaignSystem.GameComponents.DefaultWorkshopModel: GetEffectiveConversionSpeedOfProduction.

Maritime Weal Edict needs the workshop's settlement to have a port. Royal Navy Prerogative applies to smithies and wood workshops. Calculating trait: trait_effect is +0.1 at Calculating +1 and +0.2 at +2 for a governor who is in the town.

Capture refund

Per workshop whose owner's faction is at war with the town's new owner, the owner receives Round(bonus) gold. No other source.

Consumer WorkshopsCampaignBehavior::OnSettlementOwnerChanged (Native)
Base 0
Combine rule custom
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Rapid Development (Trade, primary) perk 5000 add bonus role=Personal; settlement=town differs

IL: TaleWorlds.CampaignSystem.CampaignBehaviors.WorkshopsCampaignBehavior: OnSettlementOwnerChanged.

Rapid Development (differs): the holder is each workshop owner, not the clan leader (game_role ClanLeader).

Villages

Daily hearth change

The base model (base 0) recreates the number for a village in the Normal state with base 4 (hearth < 300), 1.2 (< 600) or 0.2; other states keep 0. Perks, buildings and the bound settlement terms need a bound settlement and the Normal state. The Empire feat factor is added only when the result so far is ≥ 0. No clamp. NavalDLC extends it: after the base result, Fair Winds when the bound settlement has a port and is a fortification.

Consumer NavalDLCSettlementProsperityModel::CalculateHearthChange (NavalDLC)
Base hearth_base
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Active issue effects term add issue_effects settlement=village works
Looted village term add -1 settlement=village_looted works
Irrigation (castle daily project) building factor building_effect settlement=bound_to_castle; settlement=daily_project_active; settlement=village_normal works
Roads and Paths (castle) building add building_effect settlement=bound_to_castle; settlement=village_normal works
Irrigation (town daily project) building add building_effect settlement=bound_to_town; settlement=daily_project_active; settlement=village_normal works
Roads and Paths (town) building add building_effect settlement=bound_to_town; settlement=village_normal works
Grazing Rights policy add -0.25 faction=kingdom_policy_active; settlement=village works
Empire village hearth feat feat factor -0.2 culture=owner_clan_empire; settlement=village works
Energetic (Athletics, secondary) perk 0.2 factor bonus role=Governor; settlement=village_normal differs
Fair Winds (Shipmaster, secondary) perk 0.1 factor bonus role=Governor; settlement=port works
Bush Doctor (Medicine, primary) perk 0.2 factor bonus role=Governor; settlement=village differs
Aid Corps (Steward, secondary) perk 0.2 factor bonus role=Governor; settlement=village_normal differs
Mercy trait: village hearth growth term factor trait_effect hero=governor_mercy_trait; role=Governor; settlement=village works

IL: NavalDLC.GameComponents.NavalDLCSettlementProsperityModel: CalculateHearthChange; TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementProsperityModel: CalculateHearthChangeInternal.

Daily production

Per item. The base model returns 0 unless the village is Normal. For each production entry of the village type whose item matches, the base add and the perks apply only when the village has a trade-bound town; culture feats and buildings of the bound fortification follow. No clamp. NavalDLC extends it: after the base result, Port Authority and Blessings of the Sea (TradeBound governor), then factors Maritime Weal Edict +0.25 and Bolster the Militia -0.05 of the bound settlement owner's kingdom.

Consumer NavalDLCVillageProductionCalculatorModel::CalculateDailyProductionAmount (NavalDLC)
Base 0
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Village base production term add production_rate * (hearth_level + 1) * 0.5 settlement=has_trade_bound; settlement=village_normal works
Roads and Paths (castle) building factor building_effect settlement=bound_to_castle works
Roads and Paths (town) building factor building_effect settlement=bound_to_town works
Bolster the Militia policy factor -0.05 faction=kingdom_policy_active works
Maritime Weal Edict policy factor 0.25 faction=kingdom_policy_active works
Khuzait animal production feat feat factor 0.25 culture=owner_clan_khuzait; item=sheep_cow_warhorse_horse_pack_animal works
Sturgian grain production feat feat factor 0.1 culture=owner_clan_sturgia; item=grain works
Vlandian castle village production feat feat factor 0.1 culture=owner_clan_vlandia; settlement=bound_to_castle works
Steady (Athletics, secondary) perk 0.1 factor bonus item=trade_good; role=Governor; settlement=village_normal differs
Blessings Of The Sea (Boatswain, secondary) perk 0.25 factor bonus item=fish; role=Governor differs
Perfect Health (Medicine, secondary) perk 0.1 factor bonus item=animal; role=Governor differs
Port Authority (Boatswain, secondary) perk 0.15 factor bonus item=walrus_tusk_or_whale_oil; role=Governor differs
Breeder (Riding, secondary) perk 0.05 factor bonus role=Governor differs
Shepherd (Riding, secondary) perk 0.15 add (hearth_level + 1) * 0.5 item=mount; role=Governor differs
Granary Accountant (Trade, secondary) perk 0.2 factor bonus item=grain_olives_fish_date; role=Governor differs
Tradeyard Foreman (Trade, secondary) perk 0.2 factor bonus item=clay_iron_silver_raw_silk; role=Governor differs

IL: NavalDLC.GameComponents.NavalDLCVillageProductionCalculatorModel: CalculateDailyProductionAmount; TaleWorlds.CampaignSystem.GameComponents.DefaultVillageProductionCalculatorModel: CalculateDailyProductionAmount.

Raid recovery

Daily settlement hit point recovery, for villages and towns with hit points < 1 and no map event or siege. Base 0.06 + (7000 - min(7000, max(1000, faction_strength))) / 100000, where faction_strength is the faction's current total strength. The result is applied with IncreaseSettlementHealthAction.

Consumer VillageHealCampaignBehavior::DailyTickSettlement (Native)
Base 0.06 + (7000 - min(7000, max(1000, faction_strength))) / 100000
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Clean Infrastructure (Medicine, secondary) perk 0.3 factor bonus role=Governor; settlement=village differs
In Best Light (Roguery, secondary) perk 0.2 factor bonus role=ClanLeader works

IL: TaleWorlds.CampaignSystem.CampaignBehaviors.VillageHealCampaignBehavior: DailyTickSettlement.

Forced volunteers

count = ceil(Hearth / 30) truncated; In Best Light adds; count culture basic troops are given. Afterwards hit points ×0.2 and hearth falls by count / 2 (integer division).

Consumer VillageHostileActionCampaignBehavior::village_force_volunteers_ended_successfully_on_consequence (Native)
Base ceil(hearth / 30)
Combine rule sequential
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
In Best Light (Roguery, primary) perk 1 add notables party=main_party; role=PartyLeader; settlement=village differs

IL: TaleWorlds.CampaignSystem.CampaignBehaviors.VillageHostileActionCampaignBehavior: village_force_volunteers_ended_successfully_on_consequence.

In Best Light (differs): the perk bonus is never read; the count rises by the village's notable count, one per notable.

Volunteers

Recruit slots

Integer formula. internal = min(6, max(0, 1 + player_recruit_slot_bonus + one_of_the_family)); result = min(6, internal + relation_index + same_faction + ai_recruiter + war_penalty + perk_slots), where perk_slots is the sum of the truncated bonuses of Artisan Community, Combat Tips, Firebrand, Flexible Ethics and Engineering Guilds. Not overridden.

Consumer DefaultVolunteerModel::MaximumIndexHeroCanRecruitFromHero (Native)
Base 1
Combine rule custom
Clamp max 6
Source Kind Value Stage Scaling Conditions Verdict
Difficulty recruit slot bonus term add player_recruit_slot_bonus hero=main_hero works
AI recruiter bonus term add 1 hero=not_main_hero works
Recruiter at war with the notable's settlement term add -(1 + ai_recruiter) faction=at_war_with_notable_settlement works
Relation with the notable term add relation_index works
Notable's settlement in the recruiter's faction term add 1 faction=recruiter_owns_notable_settlement_faction works
Firebrand (Charm, secondary) perk 1 add bonus hero=rural_notable; role=PartyLeader works
Flexible Ethics (Charm, secondary) perk 1 add bonus hero=urban_notable; role=Personal works
Engineering Guilds (Engineering, primary) perk 1 add floor(bonus) role=Engineer differs
Combat Tips (Leadership, secondary) perk 1 add floor(bonus) culture=notable_matches_recruiter; role=PartyLeader works
One of the Family (Roguery, secondary) perk 1 add bonus faction=recruiter_clan_owns_settlement; hero=gang_leader; role=Governor differs
Artisan Community (Trade, secondary) perk 1 add bonus hero=notable_merchant; role=PartyLeader differs

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultVolunteerModel: MaximumIndexHeroCanRecruitFromHero, MaximumIndexCanPartyRecruitFromHeroInternal.

Volunteer production probability

A 0-1 probability. faction_fief_score = Σ over the notable's faction fiefs of village count plus, for towns, 1 / 2 / 3 for prosperity < 3000 / < 6000 / higher. The ratio is 1 when the score is ≥ 46, else (score / 46)^2; the 0.2 · (1 - ratio) term is 0 when the notable has no current settlement. Factors follow; no clamp.

Consumer DefaultVolunteerModel::GetDailyVolunteerProductionProbability (Native)
Base 0.75 * min(1, (0.7 + 0.2 * (1 - min(1, (faction_fief_score / 46) ^ 2))) ^ (slot_index + 1))
Combine rule explained_number
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Cantons policy factor 0.2 faction=kingdom_policy_active works
Recruitment rate campaign option term factor -0.9 settlement=recruitment_rate_modifier_option works
Cavalry Tactics (Riding, primary) perk 0.3 factor bonus unused
Cavalry Tactics (Riding, secondary) perk -0.5 factor bonus role=Governor; troop=Mounted differs

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultVolunteerModel: GetDailyVolunteerProductionProbability.

Garrison

Garrison size the town can feed

The AI's estimate of the largest garrison the town's food supports. food_change is the town's daily food change, garrison the garrison's regular member count, population food Prosperity / 40. With divisor d = 1 + Σ governor perk bonuses (Triage Tent and Gourmet only under siege, Master of Warcraft always; no presence check):

food_change < -prosperity/40:
    newly conquered fortification -> trunc(map(prosperity, 0, 8000, 150, 300))
    otherwise                     -> max(0, garrison - Round(|food_change + prosperity/40| · 20 / d))
otherwise                         -> garrison + Round((prosperity/40 + food_change) · 20 / d)

The perks divide only the food term.

Consumer GarrisonTroopsCampaignBehavior::CalculateMaxGarrisonSizeTownCanFeed (Native)
Base max(0, garrison + round((food_change + prosperity / 40) * 20))
Combine rule custom
Clamp min 0
Source Kind Value Stage Scaling Conditions Verdict
Newly conquered fortification term override floor(150 + min(1, prosperity / 8000) * 150) settlement=food_deficit; settlement=newly_conquered works
Triage Tent (Medicine, secondary) perk -0.05 multiply 1 / (1 + bonus) role=Governor; settlement=under_siege works
Gourmet (Steward, secondary) perk -0.1 multiply 1 / (1 + bonus) role=Governor; settlement=under_siege works
Master of Warcraft (Steward, secondary) perk -0.05 multiply 1 / (1 + bonus) role=Governor differs

IL: TaleWorlds.CampaignSystem.CampaignBehaviors.GarrisonTroopsCampaignBehavior: CalculateMaxGarrisonSizeTownCanFeed.

Master of Warcraft (differs): in this estimate it is applied to garrison food, while the population term stays unreduced; in the real food model it reduces population food.

Notable relations

Town daily tick

A 0-1 probability per perk. White Lies and Scarface each make a random roll at or below bonus separately; a success gives +1 relation between the governor and a random notable.

Consumer Town::DailyTick (Native)
Base 0
Combine rule custom
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Scarface (Roguery, secondary) perk 0.05 override bonus hero=gang_leader; role=Governor differs
White Lies (Roguery, secondary) perk 0.02 override bonus role=Governor works

IL: TaleWorlds.CampaignSystem.Settlements.Town: DailyTick.

Scarface (differs): only gang leaders are eligible, not any notable.

Governor daily tick

A 0-1 probability per perk; each site is its own roll and the rolls do not sum. A success applies +1 relation between the governor's clan leader (or the owner clan leader) and the chosen notables. Virile rolls in BuildingsCampaignBehavior while a daily project is active. No presence check on any of them.

Consumer GovernorCampaignBehavior::DailyTickSettlement (Native)
Base 0
Combine rule custom
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
In Bloom (Charm, secondary) perk 0.02 add bonus hero=opposite_gender; role=Governor; settlement=town_or_castle works
Meaningful Favors (Charm, secondary) perk 0.05 add bonus hero=notable_power_200; role=Governor; settlement=town_or_castle works
Virile (Charm, secondary) perk 0.1 add bonus role=Governor; settlement=daily_project_active works
Young And Respectful (Charm, secondary) perk 0.02 add bonus hero=same_gender; role=Governor; settlement=town_or_castle works

IL: TaleWorlds.CampaignSystem.CampaignBehaviors.GovernorCampaignBehavior: DailyTickSettlement; TaleWorlds.CampaignSystem.CampaignBehaviors.BuildingsCampaignBehavior: DailyTickSettlement.

The relation itself (notable_relation) is defined with the social numbers.

Trading in disguise

Boolean (1 yes, 0 no). In towns and castles, the main hero cannot trade while disguised unless they have Smuggler Connections. Villages take a separate path. NavalDLC extends the location access and settlement action checks, not this one.

Consumer DefaultSettlementAccessModel::CanMainHeroTrade (Native)
Base 1
Combine rule custom
Clamp none
Source Kind Value Stage Scaling Conditions Verdict
Main hero is disguised term override 0 hero=main_hero_disguised; settlement=town_or_castle works
Smuggler Connections (Roguery, primary) perk 0 override 1 hero=main_hero; role=Personal; settlement=town_or_castle works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultSettlementAccessModel: CanMainHeroTrade.

Bribe to enter a keep

The gold the guards ask to let the main hero into a lord's hall or dungeon when access is limited and a bribe solves it. 0 when no bribe is needed. No module overrides the bribe model.

Consumer DefaultBribeCalculationModel::GetBribeInternal (Native)
Base bribe_base
Combine rule custom
Clamp min 0
bribe = max(0, floor(bribe_base · skill_factor / 25) · 25 − bribe_paid)
skill_factor = (1 − Roguery / 300) · 0.65 + 0.35
Source Kind Value Stage Scaling Conditions Verdict
Roguery skill level skill level multiply (1 - skill / 300) * 0.65 + 0.35 hero=main_hero works

IL: TaleWorlds.CampaignSystem.GameComponents.DefaultBribeCalculationModel: GetSkillFactor, GetBribeInternal.

Tooltip differences at a glance

Source Game number What the game does
Maritime Weal Edict Construction power factor +0.2 (faster) for settlements without a port; the text says -20%
Cantons Militia change towns only
Citizenship Militia change towns and castles only, not villages
Battanian militia feat Militia change +0.2 daily militia in towns, not in the feat text
Tribunes of the People Tax cuts 5% of every kingdom town's tax, not only the ruler's
Road Tolls Clan income paid only to the ruling clan, trade tax / 30
Citizen Militia Veteran chance +0.2 on a 0-1 scale (+20 points); the tooltip shows +0.2%
Drills Veteran chance +1.0 on a 0-1 scale: every militia is a veteran
Seven Veterans Veteran chance +0.1 on a 0-1 scale (+10 points); the tooltip shows +0.1%
Seven Veterans Militia change +0.1 daily militia, not in the tooltip
Arms Dealer Militia change flat +2, not +2%
Dirty Fighting Food change +2 food change, no items smuggled
Parade Loyalty change own clan's towns only; stacks per holder
Stonecutters Construction power no aqueducts
Self-made Man Construction power marketplace only
Forced Labor Construction power extra flat factor; no flooring per 3 prisoners; cap +30%
Battlements Building effect needs Granary or Warehouse at level ≥ 1
Rapid Development Capture refund holder is each workshop owner
Energetic, Bush Doctor, Aid Corps Hearth change Normal villages only
Steady, Perfect Health, Breeder, Granary Accountant, Tradeyard Foreman, Blessings of the Sea, Port Authority, Shepherd Village production TradeBound town governor; Shepherd adds +1 of the same tier-1 mount
Clean Infrastructure Raid recovery TradeBound town governor
In Best Light Forced volunteers +1 per notable, bonus never read
Engineering Guilds Recruit slots lost at the cap of 6
One of the Family Recruit slots owner clan's heroes only
Artisan Community Recruit slots recruiting hero, not the quartermaster
Cavalry Tactics Volunteer probability primary +30% never read; the secondary half's -50% cuts cavalry volunteers
Master of Warcraft Garrison food estimate applied to garrison food
Scarface Notable relation roll gang leaders only

Athletics, Boatswain, Bow, Charm, Crossbow, Engineering, Leadership, Mariner, Medicine, One Handed, Polearm, Riding, Roguery, Scouting, Shipmaster, Steward, Tactics, Throwing, Trade, Two Handed.

Changelog