Events are the meat of every well-rounded mod; smaller and larger bits of story that can happen to a player during the campaign.
位置
事件属于位于root Mod folder正下方的Events
目录中的.txt文件。每个文件可以容纳任意多个事件。events
目录也可以有包含自己事件文件的子文件夹(如果愿意的话)。
Structure
The overall structure is similar to that of a CK2 event, with some tweaks to the syntax and a whole lot of extra features, many of them optional. The barest possible event is laid out here, and each element is described individually in a later section.
example.1 = { desc = example.1.desc option = { name = example.1.a } }
There you go! Add this to your mod, trigger it from the in-game console using "event triggers [example.1]", and you have got yourself a working event! Everything else is optional, but necessary to really flesh out the events.
ID and namespace
Namespaces can be any alphanumeric string (without the '.' character), and are used as prefix in the form <namespace>.<id>
. The ID uniquely identifies your event.
If an event file uses a namespace, it has to be declared at the beginning of the file with namespace = <namespace>
. This has to be done for every file the namespace is used in.
Flags
These are top-level variables that determine your event's kind and appearance. They have a limited set of values.
Flag | Meaning | Possible values |
---|---|---|
type | The kind of event. It determines what sort of scope the root is. |
|
hidden | Set this to true, and the event will not be shown at all; it will happen in the background. Useful for doing maintenance events that are not immediately relevant to the player. | true, false |
人物肖像
在《十字军之王3》中,人物肖像是3D的,而且还有动画啦!肖像由不同的肖像位置列表和动画列表决定。
人物肖像定位
Portrait Position | Description |
---|---|
left_portrait | 在事件框的左侧显示肖像。 |
right_portrait | 在事件框的右侧显示肖像。 |
lower_left_portrait | 在事件框的左下方显示肖像。 |
lower_center_portrait | 在事件框的正下方显示肖像。 |
lower_right_portrait | 在事件框的右下方显示肖像。 |
这是一个同时使用所有人物肖像位置的示例,附效果截图:
example_event.1001 = { left_portrait = { character = ROOT # Whoever this is scoped to will show up in this event window position, exhibiting the chosen animation. animation = fear # Take note that characters with SOME genetic traits (for example, gigantism, dwarfism) that change their character models have different animations, and if you assign one of THOSE animations to a character that does not have that model, crashes may occur. } right_portrait = { character = ROOT animation = scheme } lower_left_portrait = { character = ROOT } lower_center_portrait = { character = ROOT } lower_right_portrait = { character = ROOT } }
肖像可以使用以下参数:
参数 | 描述 | 示例 |
---|---|---|
character | 展示哪个角色的肖像 | character = scope:event_target
|
animation | 角色将显示哪种动画 | animation = anger
|
triggered_animation | 如果符合条件,人物将显示这种动画。如果不符合,将显示以animation = 语句设置的动画。 |
triggered_animation = { trigger = {} animation = fear } |
triggered_outfit | 设置事件中使用的服装 | triggered_outfit = { trigger = {} outfit_tags = no_clothes (also accepts multiple tags, in the format outfit_tags = { tag1 tag2 } remove_default_outfit = yes/no } |
hide_info | 避免显示人物的任何信息 (提示文字, 盾徽, clicks等). 只会显示人物肖像 | hide_info = yes/no
|
Animations
Animation | |||
---|---|---|---|
admiration | anger | beg | boredom |
disapproval | disbelief | disgust | dismissal |
ecstasy | fear | flirtation | flirtation_left |
grief | happiness | idle | love |
newborn | pain | paranoia | personality_bold |
personality_callous | personality_compassionate | personality_content | personality_coward |
personality_cynical | personality_dishonorable | personality_forgiving | personality_greedy |
personality_honorable | personality_irrational | personality_rational | personality_vengeful |
personality_zealous | prison_dungeon | rage | sadness |
schadenfreude | scheme | severelyinjured | severelywounded |
shame | shock | sick | stress |
war_attacker | war_defender | war_over_win | worry |
Themes
Theme | |||
---|---|---|---|
abduct_scheme | alliance | bastardy | battle |
befriend_scheme | claim_throne_scheme | corruption | crown |
culture_change | death | default | diplomacy |
diplomacy_family_focus | diplomacy_foreign_affairs_focus | diplomacy_majesty_focus | dread |
dungeon | dynasty | education | fabricate_hook_scheme |
faith | family | feast_activity | friend_relation |
friendly | generic_intrigue_scheme | healthcare | hunt_activity |
hunting | intrigue | intrigue_intimidation_focus | intrigue_skulduggery_focus |
intrigue_temptation_focus | learning | learning_medicine_focus | learning_scholarship_focus |
learning_theology_focus | love | lover_relation | marriage |
martial | martial_authority_focus | martial_chivalry_focus | martial_strategy_focus |
medicine | mental_break | mental_health | murder_scheme |
party | pet | physical_health | pilgrimage_activity |
pregnancy | prison | realm | recovery |
rival_relation | romance_scheme | secret | seduce_scheme |
seduction | skull | stewardship | stewardship_domain_focus |
stewardship_duty_focus | stewardship_wealth_focus | sway_scheme | unfriendly |
vassal | war | witchcraft |
Individidual elements of the theme can be overridden using override_background
, override_icon
, override_sound
, and override_environment
.
Backgrounds
Background | |||
---|---|---|---|
alley_day | alley_night | armory | army_camp |
battlefield | bedchamber | burning_building | corridor_day |
corridor_night | council_chamber | courtyard | docks |
dungeon | farmland | feast | gallows |
garden | market | market_east | market_india |
market_tribal | market_west | physicians_study | sitting_room |
study | tavern | temple | temple_church |
temple_generic | temple_mosque | temple_scope | terrain |
terrain_activity | terrain_scope | throne_room | throne_room_east |
throne_room_india | throne_room_mediterranean | throne_room_scope | throne_room_tribal |
throne_room_west | wilderness | wilderness_desert | wilderness_forest |
wilderness_forest_pine | wilderness_mountains | wilderness_scope | wilderness_steppe |
Environments
When you've selected a background, the appropriate environment is automatically selected. Only overwrite it when necessary.
Environment | ||
---|---|---|
environment_body | environment_council | environment_cw_east_main |
environment_cw_east_spouse | environment_cw_east_throneroom_main | environment_cw_east_throneroom_spouse |
environment_cw_india_main | environment_cw_india_spouse | environment_cw_india_throneroom_main |
environment_cw_india_throneroom_spouse | environment_cw_mediterranean_main | environment_cw_mediterranean_spouse |
environment_cw_mediterranean_throneroom_main | environment_cw_mediterranean_throneroom_spouse | environment_cw_tavern |
environment_cw_tavern_spouse | environment_cw_tribal_main | environment_cw_tribal_spouse |
environment_cw_west | environment_cw_west_spouse | environment_event_alley |
environment_event_alley_day | environment_event_armory | environment_event_battlefield |
environment_event_bedchamber | environment_event_church | environment_event_corridor_day |
environment_event_courtyard | environment_event_desert | environment_event_docks |
environment_event_dungeon | environment_event_farms | environment_event_feast |
environment_event_forest | environment_event_forest_pine | environment_event_gallows |
environment_event_garden | environment_event_genericcamp | environment_event_market_east |
environment_event_market_tribal | environment_event_market_west | environment_event_mosque |
environment_event_mountains | environment_event_sittingroom | environment_event_standard |
environment_event_steppe | environment_event_study | environment_event_study_physician |
environment_event_tavern | environment_event_temple | environment_event_throne_room_west |
environment_frontend_east_heir | environment_frontend_east_main | environment_frontend_east_secondary |
environment_frontend_india_heir | environment_frontend_india_main | environment_frontend_india_secondary |
environment_frontend_mediterranean_heir | environment_frontend_mediterranean_main | environment_frontend_mediterranean_secondary |
environment_frontend_tribal_heir | environment_frontend_tribal_main | environment_frontend_tribal_secondary |
environment_frontend_west_heir | environment_frontend_west_main | environment_frontend_west_secondary |
environment_head | environment_hud | environment_portrait_editor |
environment_shoulders | environment_standard | environment_torso |
environment_war_overview |
Trigger
This is an additional requirement for an event to work.
on_trigger_fail
Runs when the trigger fails.
Description
Explain how a description can be composed of multiple strings; with stuff like first_valid, and all the alternatives.
Immediate
This is a block of effect script: it will be ran immediately as your event is triggered, before the title, description, portraits, are even evaluated let alone rendered. This block is useful for setting variables and saving scopes to use in your text or for portraits; or for functional effects that you want to happen without the player having any control over it.
"has happened" tooltip.
Options
Options within events are able to be pressed by the user. Each event may have any number of options, including none at all (a common example includes hidden events). Each option in defined in the main event block, like so:
example.1 = { [...] option = { # option info } [...] }
The table below describes available keys within the option
block:
Key | Required | Description | Example |
---|---|---|---|
name | Yes | Points to a localization key for the event option button text. | name=example.1.a |
(effects) | No | Any effects that the option may have can be written directly in the option block.
|
play_music_cue = mx_cue_banquet |
trigger | No | Defines a trigger that has to be fulfilled for the option to be valid and thus available to the user. Not to be confused with the main event trigger. |
trigger = { has_trait = shy } |
show_as_unavailable | No | If the option is invalid, but this trigger is, the option will be shown, but disabled. This behavior is also influenced by the EVENT_OPTIONS_SHOWN_HIDE_UNAVAILABLE define. |
show_as_unavailable = { short_term_gold < medium_gold_value } |
trait | No | If the player has the given trait, show it on the left side of the option. Hovering over it will say the option is available because of the trait. This is only providing flavor, and does not actually affect the functionality of the option. |
trait = honest
|
skill | No | Show the chosen skill on the left side of the option. Hovering over it will say the option is available because of your high skill. This is only providing flavor, and does not actually affect the functionality of the option. |
skill = prowess
|
add_internal_flag | No | Can take the values "special" or "dangerous". The key "special" highlights the option as yellow, "dangerous" highlights the option as red. This is only providing flavor, and does not actually affect the functionality of the option. |
add_internal_flag = special
|
highlight_portrait | No | Highlights the event portrait of this character while this option is hovered. This is in addition to the automatic highlighting when hovering an event option that has an effect that affects portrait characters. | highlight_portrait = scope:custom |
After
This is a block of effect script that runs after the event has ran its course and an option has been chosen. Won't do anything if the event has no options (for hidden events, for example).
Widgets
What types of widgets are there, with screenshots for each of what they look like.
On_actions
On_actions are divided into two main types:
- Those that are called from code.
- Those that are called from script.
On_actions from code
Name | Description | From code | Expected scope | Other |
---|---|---|---|---|
on_prestige_level_loss | Yes | None | ||
on_rank_down | Yes | None | ||
on_weight_changed | Yes | Character | ||
on_faith_monthly | Yes | Faith | ||
on_knight_combat_pulse | Yes | Character | ||
on_war_invalidated | Yes | None | ||
on_war_transferred | Yes | Character | ||
on_divorce | Yes | None | ||
on_leave_court | Yes | Character | ||
on_guest_ready_to_move_to_pool | Yes | Character | ||
on_guest_arrived_from_pool | Yes | Character | ||
on_siege_completion | Yes | Character | ||
on_war_won_attacker | Yes | Casus belli | ||
on_alliance_added | Yes | None | ||
on_pregnancy_mother | Yes | Character | ||
on_raid_action_start | Yes | None | ||
on_county_faith_change | Yes | Landed Title | ||
on_title_gain_usurpation | Yes | None | ||
on_release_from_prison | Yes | Character | ||
random_yearly_playable_pulse | Yes | Character | ||
on_raid_action_completion | Yes | Army | ||
on_death | Yes | Character | ||
on_birth_father | Yes | None | ||
on_betrothal_broken | Yes | None | ||
on_war_white_peace | Yes | None | ||
three_year_playable_pulse | Yes | Character | ||
on_defeat_raid_army | Yes | Army | ||
on_army_enter_province | Yes | Character | ||
on_join_court | Yes | Character | ||
on_fired_from_council | Yes | Character | ||
on_raid_loot_delivered | Yes | Army | ||
on_pregnancy_ended_mother | Yes | None | ||
on_title_lost | Yes | None | ||
on_title_gain | Yes | Character | ||
on_character_culture_change | Yes | Character | ||
on_birth_child | Yes | Character | ||
on_holy_order_hired | Yes | None | ||
on_great_holy_war_invalidation | Yes | Great Holy War | ||
on_combat_end_loser | Yes | Combat Side | ||
on_concubinage | Yes | None | ||
on_commander_combat_pulse | Yes | Character | ||
random_yearly_everyone_pulse | Yes | Character | ||
five_year_everyone_pulse | Yes | Character | ||
on_perks_refunded | Yes | None | ||
quarterly_playable_pulse | Yes | None | ||
on_prestige_level_gain | Yes | None | ||
on_faith_created | Yes | Character | ||
on_holy_order_new_lease | Yes | None | ||
on_title_gain_inheritance | Yes | None | ||
on_game_start | Yes | None | ||
on_character_faith_change | Yes | Character | ||
on_combat_end_winner | Yes | Combat Side | ||
on_courtier_decided_to_move_to_pool | Yes | Character | ||
on_culture_era_changed | Yes | None | ||
on_birthday | Yes | Character | ||
on_faith_conversion | Yes | Character | ||
on_raid_action_weekly | Yes | None | ||
on_explicit_claim_gain | Yes | Character | ||
on_courtier_ready_to_move_to_pool | Yes | Character | ||
on_potential_great_holy_war_invalidation | Yes | Great Holy War | ||
on_holy_order_destroyed | Yes | None | ||
on_war_won_defender | Yes | Casus belli | ||
yearly_global_pulse | Yes | None | ||
on_great_holy_war_countdown_end | Yes | GreaT Holy War | ||
yearly_playable_pulse | Yes | Character | ||
three_year_pool_pulse | Yes | Character | ||
on_pregnancy_father | Yes | None | ||
on_piety_level_loss | Yes | None | ||
on_piety_level_gain | Yes | None | ||
on_siege_looting | Yes | None | ||
on_title_destroyed | Yes | None | ||
on_army_monthly | Yes | None | ||
on_game_start_after_lobby | Yes | None | ||
on_imprison | Yes | Character | ||
on_birth_mother | Yes | Character | ||
on_dynasty_created | Yes | None | ||
on_alliance_removed | Yes | None | ||
on_county_occupied | Yes | None | ||
on_rank_up | Yes | None | ||
on_vassal_become_powerful | Yes | None | ||
on_join_war_as_secondary | Yes | Character | ||
on_explicit_claim_lost | Yes | Character | ||
on_alliance_broken | Yes | None | ||
on_natural_death_second_chance | Yes | None | ||
on_leave_council | Yes | Character | ||
on_county_culture_change | Yes | None | ||
on_war_started | Yes | None | ||
on_marriage | Yes | Character | ||
on_great_holy_war_participant_replaced | Yes | Character | ||
five_year_playable_pulse | Yes | Character | ||
on_birth_real_father | Yes | None | ||
on_game_start_with_tutorial | Yes | None |
On_actions from script
Strategy
Triggering the event
Should probably become its own page.
Techniques and design patterns
Pinging events, message events.
Other fancy ideas.
文档 | Effects • 触发器 • 修正 • 作用域 • 变量 • 数据类型 • 本地化 • 可定制的本地化 |
脚本 | AI • 剧本 • 角色 • 效果指令 • 内阁 • 文化 • 决议 • 宗族 • 事件 • 政体 • 历史 • 地产 • 生活方式 • 军队 • 宗教 • Story cycles • 头衔 • 特质 |
地图 | 地图 • 地形 |
图形 | 3D模型 • Exporters • 界面 • Coat of arms • Graphical assets • Fonts • Particles • Shaders • Unit models |
音频 | Music • Sound |
其他 | 控制台指令 • 校验码 • 模组结构 • Troubleshooting |