Atlas 0.10 UPDATE - 29.01.2022
Added new Features:
+ Each faction automatically gets a shadow faction with inverted colors (e.g. romans are red-gold so roman rebels are gold-red) and same unit roster. You can define name of the shadow faction as well as the icon. These are the only things you have to do, all the other tasks the tool does for you automatically
+ This enables civil wars and loyalty functions
+ Each culture can have Hording ability configured
+ Buildings can now require a coast to be built (Atlas knows which region has one and which not)
+ Scripting added - define subscripts in templates/world/maps/campaign/imperial_campaign/subscripts, they will be merged together automatically (you can have for example one script for each functionality, the tool merges them for you)
+ You do not have to declare counters in your scripts, Atlas does it for you (it recognizes which counters you use in your script)
+ Use the advantages of quik templating for your script (while, for each loops, ifs combined with your data like factions, regions, ...) for example #for @Region in @Get.AllRegions():
+ A few first Scripting functions you can use in your campaign scripts (Atlas translates them to game script language) for example: ClickOn() to click on a specific button, MessageInfo() to display a specific message
+ MessageInfo() you declare the content of your message directly in the campaign script code - no need to enter it in text\expanded_bi.txt, Atlas translates the message content to a hashkey which serves as the ID of the message and links that ID with the message title and body inside the text-files
+ Includes fully functional subscripts:
-- + Port blockades which cost/generate money
-- + capital changes cost money
-- + diplomatic actions cost money
-- + sieges cost money
-- + sieges require a general in army
-- + settlements can be abandoned for rebels who pay you a tribute
+ You can define special buildings which only the player can build (previous version could only define AI-only buildings)
+ The #counters subscript provides you with a lot of useful variables (counters) to work with
- Is faction x at war with the player?
- Does region x belong to an enemy of the player?
- Does region x have a port?
- ...
+ Agent costs individually configurable per culture - if a culture gets any agent type cheaper, it gets automatically recognized as a culture bonus and will be display in faction selection screen
+ improved BAT launcher - it checks automatically if you have installed your Python and pip correctly and downloads the Python packages it needs to execute (Pillow/PIP, ...)
+ Balancing Analysis mode added (activate it in Configuraiton.xlsx under Settings) which shows you which units are used the most often, which buildings cost how much and how many rounds to build and so on
You can download Version 0.10 in the first post of this thread under attachemets.
Example for a simple script:
Changing capital costs money:
Code:
monitor_event ButtonPressed ButtonPressed make_capital
console_command add_money @Get.Setting("CostPlayerCapitalChange")
@Scripter.MessageInfo("A New Capital", "Our capital has been relocated. A factions capital should always be as close to the center of all your regions. The further a region is away from your capital, the more likely that region is to rebel against you. Keep in mind, that changing your capital costs you denarii every time.")
end_monitor
Sieges can only be executed by Generals
Code:
monitor_event ScrollOpened ScrollOpened seige_scroll
if I_CompareCounter LastSelectedArmyHasGeneral = 0
and I_CompareCounter SiegeScrollOpen = 1
ui_flash_start siege_end_button circle
@Scripter.ClickOn("siege_end_button")
@Scripter.MessageInfo("Siege aborted", "You can only lay siege to a settlement with armies led by a general.")
end_if
end_monitor
Naval Blockades generate/cost money
Code:
monitor_event FactionTurnEnd FactionType slave
#for @BlockingFaction in @Get.AllFactions():
#for @Region in @Get.AllRegionsWithPorts():
if I_CharacterTypeNearTile @BlockingFaction.Id admiral, 2 @{Region.PositionPort.X},@{Region.PositionPort.Y}
and I_CompareCounter HasPort@{Region.UID} = 1
if I_CompareCounter IsPlayer@{Region.UID} = 1
and I_CompareCounter IsEnemy@{BlockingFaction.UID} = 1
inc_counter blockadeMinus 1
if RandomPercent < 25
inc_counter blockadeMinus 1
console_command reseed_random
end_if
if RandomPercent < 25
inc_counter blockadeMinus 1
console_command reseed_random
end_if
end_if
if I_CompareCounter IsEnemy@{Region.UID} = 1
and I_LocalFaction @BlockingFaction.Id
inc_counter blockadePlus 1
if RandomPercent < 33
inc_counter blockadePlus 1
console_command reseed_random
end_if
if RandomPercent < 33
inc_counter blockadePlus 1
console_command reseed_random
end_if
if RandomPercent < 33
inc_counter blockadePlus 1
console_command reseed_random
end_if
end_if
end_if
#end
#end
end_monitor
monitor_event FactionTurnEnd FactionType slave
#for @i in ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40"]:
if I_CompareCounter blockadePlus = @{i}
console_command add_money @{Scripter.Multiply(@{i}, 100)}
@Scripter.MessageInfo("Denarii looted from port blockade", "Our navies blockaded enemy ports and looted @{Scripter.Multiply(@{i}, 100)} denarii in total. The amount of loot per port and round varies between 100 and 4oo denarii.", "naval_blockade")
end_if
if I_CompareCounter blockadeMinus = @{i}
console_command add_money -@{Scripter.Multiply(@{i}, 100)}
@Scripter.MessageInfo("Denarii lost from port blockade", "Our enemies blockaded our ports and we lost @{Scripter.Multiply(@{i}, 100)} denarii because of that. The amount of loot per port and round varies between 100 and 4oo denarii.", "naval_blockade")
end_if
#end
set_counter blockadePlus 0
set_counter blockadeMinus 0
end_monitor
This faction here was created automatically, you did not have to code anything, just provide their name and their faction logo:
Looting by blockading port - start your own pirate empire! Aarrrrrr!