Society modding
Contents
Societies[edit]
Societies are best used to model a profession or lifestyle, since a character may only be a member of one society at a time.
Variable | Type | Description | Example | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
primary_attribute | attribute | primary_attribute = intrigue
| |||||||||||||||||||||||||||||||||||||
is_secret | bool | Whether the society can be joined openly or not, society clothing is visible to non-members, etc. | is_secret = yes
| ||||||||||||||||||||||||||||||||||||
criminal | bool | Used for the is_criminal trigger
|
is_criminal = yes
| ||||||||||||||||||||||||||||||||||||
is_religious | bool | Whether the society is religion-based or not, used for opinion value | |||||||||||||||||||||||||||||||||||||
devil_worshipper | bool | Used for the is_devil_worshipper trigger. Also suppresses the "religious differences" opinion modifiers with other members of the same society
|
|||||||||||||||||||||||||||||||||||||
opinion_to_other_members | int | Opinion modifier applied when both characters are members | opinion_to_other_members = +10
| ||||||||||||||||||||||||||||||||||||
opinion_to_pretenders | int | Opinion modifier from a member towards someone who is perceived to be a member but is not | opinion_to_pretenders = -40
| ||||||||||||||||||||||||||||||||||||
opinion_to_perceived_members | int | Opinion modifier from a non-member toward someone who is perceived to be a member | opinion_to_perceived_members = -40
| ||||||||||||||||||||||||||||||||||||
opinion_per_rank_above | int | Opinion bonus characters in the society get for how much they're outranked by another member. For instance if the bonus is +5, someone at rank 1 will get a +15 bonus with someone at rank 4. | opinion_per_rank_above = +5
| ||||||||||||||||||||||||||||||||||||
society_rank_up_decision | decision | Decision that ranks up a member in the society | society_rank_up_decision = request_to_rank_up_within_society
| ||||||||||||||||||||||||||||||||||||
sound | sfx | Sound effect to play while the society is selected in the societies tab. The sound key is defined in interface/sound.sfx | sound = monastic_orders_interface
| ||||||||||||||||||||||||||||||||||||
society_ranks_gfx | gfx | society_ranks_gfx = generic_ranks
| |||||||||||||||||||||||||||||||||||||
non_interference | conditions | Non-interfering AI characters will not take any hostile action towards the character. Only characters within the society will be non-interfering. ROOT is the target of diplomatic actions. FROM is the character taking the action | |||||||||||||||||||||||||||||||||||||
non_interference_tooltip | localization | Localisation key to be shown under "influence", explaining what characters are non-interfering | |||||||||||||||||||||||||||||||||||||
active | conditions | Determine if the society is active. If not met, it will be impossible to see or join the society, and no members will be generated for it at game start, and all existing members will be booted out of it within a month. Note that events and the like that reference the society will continue to act as if the society existed normally. Note that the conditions for this trigger are not shown in the UI anywhere, so you may want a global event or similar if this is something that can happen *during* a campaign. ROOT is the society | |||||||||||||||||||||||||||||||||||||
indestructible | bool | Used to determine whether a society is "indestructible". Indestructible societies will use the startup_populate trigger to find an existing character to lead the society. It will choose the character in the world who would get the highest society membership score, with landed characters having their score reduced to 1/100th of what they'd otherwise get, since affecting a landed character is much more disruptive than affecting a courtier. If there's no eligible character, the on_society_failed_to_find_new_leader on-action will fire
|
indestructible = yes
| ||||||||||||||||||||||||||||||||||||
can_join_society | conditions | Determine which characters can join the society. The condition themselves are often externalized as a scripted trigger. | can_join_society = { hidden_trigger = { NAND = { ai = yes is_society_rank_full = { society = the_assassins rank = 1 } } } has_assassins_prerequisites = yes } | ||||||||||||||||||||||||||||||||||||
show_society | conditions | show_society = { religion = catholic } | |||||||||||||||||||||||||||||||||||||
potential | conditions | [Rules that must be true for a character to remain in the society]. This is normally a subset of the rules of can_join_society .
|
potential = { religion = catholic } | ||||||||||||||||||||||||||||||||||||
society_rank | clause | Definition of ranks
|
society_rank = { level = 1 limit = 100 startup_limit = 10 decisions = { prisoner_dark_sacrifice } } | ||||||||||||||||||||||||||||||||||||
plots | [Verification needed] | ||||||||||||||||||||||||||||||||||||||
ambitions | [Verification needed] | ||||||||||||||||||||||||||||||||||||||
monthly_currency_gain | Defines how much power the member gains every month. The "currency" varies depending on the society. Can also be set one-time via events via change_society_currency .
|
||||||||||||||||||||||||||||||||||||||
member_score_per_attribute | float | How much member score a character recieves for every point of society attribute | member_score_per_attribute = 3
| ||||||||||||||||||||||||||||||||||||
member_score_per_rank | float | How much member score a character recieves for every rank | member_score_per_rank = 100
| ||||||||||||||||||||||||||||||||||||
member_score | MTTH | Bonus member score based on triggers, ROOT is the member. | member_score = { value = 10 modifier = { factor = 2 trait = diligent } } | ||||||||||||||||||||||||||||||||||||
startup_populate | clause | Used at game start to find character to lead and join the society. |
Localization:
- <society_name>: name of the society
- <society_name>_desc: description of the society
- <society_name>_leader_desc: title of the leader of the society
- <society_name>_rank_<N>_male: rank <N> title for male members
- <society_name>_rank_<N>_female: rank <N> title for female members
- currency_name_<society_name>: name of the society's currency/power
Localization commands need to be updated as well: GetSocietyCurrency
, GetSocietyRank
, GetSocietyName
and GetSocietyNameCap
.
Quests[edit]
Quests are created dynamically via scripting. Quests holders must be member of a society and quest targets may be characters, titles or provinces (or none).
- To give a quest to the scoped character, without a target:
set_quest = <quest_id>
- To give a quest to the holder with scoped character as the target:
set_quest_target = { id = <quest_id> holder = ROOT }
This can also be used to set or update the quest target.
The result of a quest can be set to:
- success using
clr_quest = <quest_id>
- or failure using
clr_quest = { id = <quest_id> failure = yes }
Their reward has to be managed via event scripting as well, typically by rewarding the holder some more power within the society, via change_society_currency
command.
Localization:
- <quest_id>: name of the quest
- <quest_id>_fallback : name of the quest if no target is found. Useful if your loc depends on the target. Needed to ensure it shows up nicely in triggers (E.G., "Evoke the Sympathy of [FromFrom.GetTitledFirstName]" would fail in a trigger if you don't have a quest, so you add a fallback of "Evoke the Sympathy of a Ruler"). Adding "_fallback" will work for the other loc keys too, so can be used if you have different versions of the same quest where not all versions target something
- <quest_id>_desc : longer description for the quest. It can use $SOCIETY$ for the society (if any), $WHO$ for the character who is doing the quest and $TARGET$ for the target of the quest (if any);;;;;;;;;;;;x
- <quest_id>_tooltip: tooltip shown for the quest. It can use $SOCIETY$, $WHO$ and $TARGET$ for in the same way as quest_id_DESC;;;;;;;;;;;;x
GFX[edit]
Graphics for societies are by default stored under \gfx\interface\societies
.
Do not forget to add a reference to any added graphics in \interface
. See Interface modding for more.