I did some testing with the following script:
Code:
script
declare_counter loop_counter
set_counter loop_counter=0
monitor_event GeneralCaptureSettlement SettlementName Arretium
and FactionCultureType barbarian
and SettlementBuildingExists >= stone_wall
console_command damage_wall Arretium breach
console_command damage_wall Arretium breach
end_monitor
while compare_counter loop_counter=0
end_while
end_script
This script will cause a couple of breaches in Arretium's walls if it's captured by a barbarian faction and the city has any level stone walls. It could be made faction specific by replacing
Code:
and FactionCultureType barbarian
with
Code:
and FactionType germans
As expected, the script caused a couple breaches in Arretium's (stone) walls when I captured the city playing as the Germans. The Romans laid seige to the city soon after. I didn't really expect this: I thought they would immediately attack through the breaches. Instead, they built a ram, some ladders, and a siege tower. A few turns later they attacked using only the siege tower, but most of their troops poured through the breach. (The other breach was on the opposite side of the city.) I was able to repel the attack and another army attacked a few turns later, having built a couple of rams. As usual, fire from my towers set the rams alight and the troops attacked through the breach again.
It might be worthwhile to repeat this experiment making more breaches in the walls. Perhaps this would induce the attackers to attack without building seige engines first.
Here's a short discussion on extending the above script to work for all settlements on the map:
In order to make this work for ALL settlements, an event monitor would be required for every settlement. There's also problem with the line
Code:
monitor_event GeneralCaptureSettlement SettlementName Narbo Martius
or for the event monitor for any two-word settlement name. The SettlementName condition requires the name string (not the name "tag") but fails to parse the string correctly if it consists of two words. The solution for Narbo Martius to use
Code:
monitor_event GeneralCaptureSettlement region_id=43
instead. You can determine what a settlement's region_id is using the show_cursorstat console command.
Fortunately, the damage_wall console command accepts the settlement name "tag", so it's satisfied with Narbo_Martius. (Appropriate settlement name "tags" are found enclosed in curly braces in the file text\imperial_campaign_region_and_settlement_names.txt)
Bookmarks