I feel like the "bug" where mercs "recruited" in the fort have their full movement points is arguably a feature.
Since this thread is potentially quite useful for anyone trying to use forts as "minor settlements", here is one way forts can be named and monetized. Most of this set up comes down to your preferences. Just as Jadli's script above repurposes the mercenaries system for "recruitment", this set up repurposes the King's Purse to represent "tax income", but you can also use add_money which will show up under "Corruption and Other". This scheme, by design, does nothing for the AI. The goal with this scheme is to make minor settlements (named forts) feel as similar as possible to regular settlements while using as few monitors (for turn times) as possible.
Code:
monitor_event FactionTurnStart FactionType slave
retire_characters slave witch ;don't let the rebel faction do anything with the witches
end_monitor
monitor_event FactionTurnEnd FactionType slave ;this is the start of the next turn cycle, fires before the start of the first human faction's turn for as long as the slave faction exists (i.e. forever)
inc_event_counter rename_forts 1 ;CALL - rename forts, we will get to this below
if not I_IsFactionAIControlled england ;assume england has no minor settlements as we count from 0 each turn
set_kings_purse england 0
end_if
;... all other factions ...
;Minor Settlement 1
if I_FactionNearTile england 0 x, y ;coordinates of fort, this will be true if there is a named character or any agent in the fort, you can also use I_CharacterTypeNearTile if you only want this to work for named characters
and not I_IsFactionAIControlled england ;this is completely optional, but in my mod, we use the king's purse to boost AI factions in script
increment_kings_purse 200 ;this is the value of each minor settlement in "taxation" or whatever you want to call it
end_if
;... all other factions ...
;Minor Settlement 2
;... same as above, all other minor settlements... - this will take up most of the length of your campaign_script document if you have hundreds of minor settlements, but it will not impact performance at all since it's all in a single monitor
end_monitor
To name the forts, we use:
Code:
monitor_event PreFactionTurnStart ;name all forts start of turn 1
inc_event_counter rename_forts 1 ;CALL - rename forts
terminate_monitor
end_monitor
monitor_event EventCounter EventCounterType rename_forts ;FUNCTION - rename forts
and EventCounter > 0
spawn_character slave, NameofMinorSettlement1, witch, age 16, x+offset, y+offset ;a few coordinates away from the fort, or alternatively, somewhere where the spawn will never be interfered with, the witch's name must be unique, if you spawn randomly named slave female agents (princesses or witches), then this will fail and you should use a dummy faction instead of slave
console_command move_character NameofMinorSettlement1, x, y ;coordinates of fort
... repeat for all minor settlements ...
end_monitor
Set the witch's movement points to 0 in descr_character so that when named characters or agents move into the fort, the witch will die. I recommend NOPing the witch's death audio and animations so all that happens is the name on the fort disappears until the next turn. Captains will not kill the witch and do not trip I_FactionNearTile so they can't be used to get income from the minor settlements.
A few final touches are necessary to complete the illusion. You will want to make the witch strat model invisible by assigning the slave faction a texture with nothing in it (100% transparent) and commenting out the shadow line in descr_model_strat. You don't need to do anything with the model but I suppose it might improve performance somewhat if you replace the .cas file with a blank as well. You should also be sure that the slave faction doesn't use its female names list for anything else by preventing regular spawns of princesses and witches. Princesses can be prevented by setting "can_have_princess" to "no" in descr_sm_factions. Witches can be prevented from converting regions to heretic and their spawns can be disabled using the following settings in descr_campaign_db:
Code:
<religion>
<max_witches_per_region uint="0"/>
<max_witches uint="0"/>
<witch_conversion_rate_modifier float="0.0"/>
<witch_conversion_rate_offset float="0.0"/>
<witch_creation_modifier float="0.0"/>
</religion>