差分

ナビゲーションに移動 検索に移動
イベント mod 日本語化(kagi)
{{version|Timeless}}
{{Expand‎}}

※2025/10/6、英wikiよりkagi翻訳を通しました。機械翻訳なので一部不自然な日本語があるかもしれません。ぜひ編集してくれるとありがたいです。

イベントは、あらゆる完成度の高いMODの核となる要素です。キャンペーン中にプレイヤーに起こりうる大小さまざまな物語の断片です。

'''チェックリスト。''' イベントには次が必須です:

* <code>your_mod\events\</code> フォルダーに置くこと
* 拡張子が .txt であること
* 先頭行に <code>namespace = my_events</code> のように名前空間を定義すること
* 名前空間 + 番号を名前として使うこと(例: <code>my_events.1 = {...</code>)
* [[Event modding#On Actions (on action)|on_action]] など、何らかのスクリプトから発火させること

それ以外では、旧作のように自動で発火しません。発火させる別の方法としては、決断(decisions)、キャラクター間インタラクション、ストーリーサイクルなどがあります。

== スクリプト作成ツール ==
モッダーがイベントをより簡単にスクリプト化できるよう支援する各種ツールがあります。

=== Visual Studio Code ===
[https://code.visualstudio.com/ Visual Studio Code] は、ParadoxScript を構文強調表示する各種拡張機能があるため、モッダーにとって最有力の選択肢と考えられています。

'''推奨拡張機能:'''
* [https://marketplace.visualstudio.com/items?itemName=tboby.cwtools-vscode CWTools - Paradox Language Services(Thomas Boby 作)]
* [https://marketplace.visualstudio.com/items?itemName=tboby.paradox-syntax Paradox Syntax Highlighting(Thomas Boby 作)]
{| class="mw-collapsible mw-collapsed wikitable"
! Visual Studio Code 用スニペット&nbsp;
|-
| VSCode のスニペットは、複雑なスクリプト効果、条件文、さらにはイベント全体など、繰り返しのコードパターンを簡単に入力できるテンプレートです。<br>CK3 のスクリプトコンポーネントをテンプレート化するためのカスタムスニペットは簡単に作成できます。以下にバニラのサンプルセットを載せます。これを拡張し、あなたのMODのニーズに合わせたセットを作ることを推奨します。<br><br>詳しく読む: [https://marketplace.visualstudio.com/items?itemName=tboby.cwtools-vscode Snippets in Visual Studio Code - Microsoft Corporation]
|-
| <syntaxhighlight lang="json">
/////////////////////////////////////////////////////////////////////////////////////////////////////
// Crusader Kings 3 - Snippets for Visual Studio Code. //
// //
// How to use in four easy steps: //
// 1. Install [CWTools - Paradox Language Services] by Thomas Boby //
// 2. Install [Paradox Syntax Highlighting] by Thomas Boby //
// 3. Copy this file to ..AppData\Roaming\Code\User\snippets //
// 4. That's it! Now just start typing the prefix of a snippet and press tab to insert it! //
/////////////////////////////////////////////////////////////////////////////////////////////////////
// Learn more: https://code.visualstudio.com/docs/editor/userdefinedsnippets //
// Use https://vscodesnippetgenerator.azurewebsites.net/, other tools convert tabs into spaces!! //
/////////////////////////////////////////////////////////////////////////////////////////////////////

{
"Legacy Duel": {
"prefix": ["duel", "legacy duel"],
"body": [
"duel = {",
"\tskill = learning",
"\tvalue = average_skill_rating",
"",
"\t10 = { # Failure",
"\t\t#desc = martial_authority_4001.fail.tt",
"\t\tcompare_modifier = {",
"\t\t\tvalue = scope:duel_value",
"\t\t\tmultiplier = -1.5",
"\t\t\tmin = -5",
"\t\t}",
"",
"\t\tsend_interface_toast = {",
"\t\t\ttype = event_toast_effect_bad",
"\t\t\ttitle = death_bleeder",
"\t\t\tleft_icon = root",
"\t\t\t",
"\t\t\tadd_prestige = minor_prestige_loss",
"\t\t}",
"\t}",
"\t10 = { # Success",
"\t\t#desc = bp1_yearly.1031.c_killed_all.tt",
"\t\tcompare_modifier = {",
"\t\t\tvalue = scope:duel_value",
"\t\t\tmultiplier = 1.5",
"\t\t}",
"",
"\t\tsend_interface_toast = {",
"\t\t\ttype = event_toast_effect_good",
"\t\t\ttitle = tribal.1101.a_success",
"\t\t\tleft_icon = root",
"\t\t\t",
"\t\t\tadd_prestige = medium_prestige_gain",
"\t\t}",
"\t}",
"}"
],
"description": "A legacy duel powered by a random list."
},

"Combat Duel": {
"prefix": ["duel", "combat duel", "fight"],
"body": [
"configure_start_single_combat_effect = {",
"\tSC_INITIATOR = scope:actor ",
"\tSC_ATTACKER = scope:actor",
"\tSC_DEFENDER = scope:recipient",
"\tFATALITY = default",
"\tFIXED = no",
"\tLOCALE = terrain_scope",
"\tOUTPUT_EVENT = single_combat.1006",
"\tINVALIDATION_EVENT = single_combat.1006",
"}"
],
"description": "A combat duel using the new duelling system."
},

"Hidden Event": {
"prefix": ["event", "hidden event"],
"body": [
"yournamespace.0000 = {",
"\thidden = yes",
"",
"\timmediate = {",
"\t\t",
"\t}",
"}"
],
"description": "A hidden event, does not render UI or present any options. Utilized for the automation of certain tasks, such as sieges or timed outcomes."
},

"Simple Event": {
"prefix": ["event", "simple event"],
"body": [
"yournamespace.0000 = {",
"\ttype = character_event",
"\ttitle = stewardship_domain_special.1424.a",
"\tdesc = stewardship_domain_special.1424.a",
"",
"\ttheme = mental_break",
"\tleft_portrait = root",
"",
"\ttrigger = {",
"\t\t",
"\t}",
"",
"\timmediate = {",
"\t\t",
"\t}",
"",
"\toption = {",
"\t\tname = stewardship_domain_special.1424.a",
"\t}",
"}"
],
"description": "A simple event template containing all of the basics."
},

"Advanced Event": {
"prefix": ["event", "advanced event"],
"body": [
"yournamespace.0000 = {",
"\ttype = character_event",
"\ttitle = stewardship_domain_special.1424.a",
"\tdesc = stewardship_domain_special.1424.a",
"",
"\ttheme = mental_break",
"\toverride_background = { reference = throne_room }",
"\tleft_portrait = {",
"\t\tcharacter = root",
"\t\tanimation = idle",
"\t}",
"\tright_portrait = {",
"\t\tcharacter = root",
"\t\tanimation = idle",
"\t}",
"",
"\tcooldown = { years = 5 }",
"",
"\ttrigger = {",
"",
"\t}",
"",
"\timmediate = {",
"",
"\t}",
"",
"\toption = {",
"\t\tname = stewardship_domain_special.1424.a",
"",
"\t\ttrigger = {",
"",
"\t\t}",
"",
"\t\tai_chance = {",
"\t\t\tbase = 50",
"\t\t\tmodifier = {",
"\t\t\t\tadd = 25",
"\t\t\t\talways = yes",
"\t\t\t}",
"",
"\t\t\tai_value_modifier = {",
"\t\t\t\tai_boldness = 0.5",
"\t\t\t\tai_compassion = 0.5",
"\t\t\t\tai_greed = 0.5",
"\t\t\t\tai_energy = 0.5",
"\t\t\t\tai_honor = 0.5",
"\t\t\t\tai_rationality = 0.5",
"\t\t\t\tai_sociability = 0.5",
"\t\t\t\tai_vengefulness = 0.5",
"\t\t\t\tai_zeal = 0.5",
"\t\t\t}",
"\t\t}",
"\t}",
"}"
],
"description": "An advanced event template containing everything a content designer could desire."
},

"Generate Character": {
"prefix": ["create character", "character", "generate character"],
"body": [
"create_character = {",
"\tage = { 20 32 }",
"\tlocation = root.capital_province",
"\tgender_female_chance = root_faith_dominant_gender_female_chance",
"\tculture = root.culture",
"\tfaith = root.faith",
"\trandom_traits = yes",
"\ttrait = blind",
"\tmartial = { 3 10 }",
"",
"\tdynasty = none",
"\tafter_creation = { ",
"\t\tadd_gold = { minor_gold_value medium_gold_value }",
"\t\tadd_prestige = { minor_prestige_gain medium_prestige_gain }",
"\t\tadd_piety = { minor_piety_gain medium_piety_gain }",
"\t}",
"",
"\tsave_scope_as = generated_actor",
"}"
],
"description": "Runtime character generation for event usage."
},

"Random Chance": {
"prefix": ["random"],
"body": [
"random = {",
"\tchance = 25",
"\tadd_trait = Typhus",
"}"
],
"description": "A random chance for something to happen. Can use weights."
},

"Random List": {
"prefix": ["list", "random list"],
"body": [
"random_list = {",
"\t50 = { add_gold = 25 }",
"\t50 = { add_gold = 500 }",
"}"
],
"description": "A list of possibilities. One will always be picked, can use weights and triggers."
},

"Banner Notification": {
"prefix": ["notification", "toast", "interface", "banner notification", "send_interface_toast"],
"body": [
"send_interface_toast = {",
"\ttype = event_toast_effect_bad",
"\ttitle = stress_threshold_prison.1041.t",
"\tleft_icon = ROOT",
"",
"\tadd_stewardship_lifestyle_xp = minor_lifestyle_experience",
"\tadd_piety = -15",
"}"
],
"description": "An interface element displayed at the top of the screen."
},

"Message Notification": {
"prefix": ["notification", "message", "interface", "message notification", "send_interface_message"],
"body": [
"send_interface_message = {",
"\ttype = event_stewardship_neutral",
"\ttitle = hold_court.6180.t",
"\tleft_icon = scope:client",
"\tright_icon = ROOT",
"",
"\tadd_gold = 50",
"}"
],
"description": "An interface element displayed in the corner of the screen."
},

"Triggered Animation": {
"prefix": ["triggered animation", "animation"],
"body": [
"triggered_animation = {",
"\ttrigger = { always = yes }",
"\tanimation = beg",
"}"
],
"description": "Allows you to make conditional animations, works as a first_valid."
},

"Desc Jenga": {
"prefix": ["Desc Jenga"],
"body": [
"desc = { # Desc Jenga!",
"\ttriggered_desc = {",
"\t\ttrigger = { always = yes }",
"\t\tdesc = {",
"\t\t\tdesc = stress_threshold.3201.depressed.gain",
"\t\t\tdesc = {",
"\t\t\t\tfirst_valid = {",
"\t\t\t\t\ttriggered_desc = {",
"\t\t\t\t\t\ttrigger = { always = yes }",
"\t\t\t\t\t\tdesc = stress_threshold.3201.depressed.effect",
"\t\t\t\t\t}",
"\t\t\t\t\ttriggered_desc = {",
"\t\t\t\t\t\ttrigger = { always = no }",
"\t\t\t\t\t\tdesc = stress_threshold_prison.1041.flagellant",
"\t\t\t\t\t}",
"\t\t\t\t\tdesc = court_maintenance.0010.b.paranoid",
"\t\t\t\t}",
"\t\t\t}",
"\t\t}",
"\t}",
"}"
],
"description": "Prints every desc command for use in scripted loc."
},

"Script Header List": {
"prefix": ["script header list", "header", "index"],
"body": [
"### EVENT LIST ####################################################################",
"## XXXX - XXXX\tEvent Name Here by Author Name Here",
"## XXXX - XXXX\tEvent Name Here by Author Name Here",
"## XXXX - XXXX\tEvent Name Here by Author Name Here",
"## XXXX - XXXX\tEvent Name Here by Author Name Here",
"## XXXX - XXXX\tEvent Name Here by Author Name Here",
"## XXXX - XXXX\tEvent Name Here by Author Name Here",
"## XXXX - XXXX\tEvent Name Here by Author Name Here",
"###################################################################################"
],
"description": "A list containing all events on a script file, useful for organization."
},

"Event Header": {
"prefix": ["event header", "header"],
"body": [
"###################################",
"# Your event title here",
"# By Your name here",
"###################################"
],
"description": "A header comment for scripts, containing name and author."
},

"Decision": {
"prefix": ["decision"],
"body": [
"the_name_of_your_decision = {",
"\tpicture = \"gfx/interface/illustrations/decisions/decision_destiny_goal.dds\"",
"\tdesc = secure_iberian_foothold_decision_desc",
"\tsort_order = 100",
"\tmajor = no",
"",
"\tis_shown = {",
"",
"\t}",
"",
"\tis_valid = {",
"\t\t",
"\t}",
"",
"\teffect = {",
"\t\t",
"\t}",
"",
"\tcost = {",
"",
"\t}",
"",
"\tai_check_interval = 32",
"\tai_potential = {}",
"\tai_will_do = {",
"\t\tbase = 100",
"\t}",
"}"
],
"description": "Simple decision template."
},

"Interaction": {
"prefix": ["interaction"],
"body": [
"your_interaction_name_here_interaction = {",
"\ticon = debug_bad",
"\tcategory = interaction_category_diplomacy",
"\tcommon_interaction = yes",
"",
"\tinterface_priority = 200",
"\tdesc = steward_task.1101.notification",
"\t",
"\tai_targets = {",
"",
"\t}",
"\tai_target_quick_trigger = {",
"\t\tadult = yes",
"\t}",
"\tai_frequency = 24",
"\t",
"\tcooldown_against_recipient = { years = 3 } # Very optional",
"",
"\tis_shown = {",
"",
"\t}",
"",
"\tis_valid_showing_failures_only = {",
"",
"\t}",
"\t",
"\tai_min_reply_days = 1",
"\tai_max_reply_days = 5",
"\tai_accept = {",
"\t\tbase = 0",
"\t}",
"\t",
"\tauto_accept = {",
"\t\tcustom_description = {",
"\t\t\ttext = \"spending_hook\"",
"\t\t\tsubject = scope:actor",
"\t\t\tobject = scope:recipient",
"\t\t\tscope:hook = yes",
"\t\t}",
"\t}",
"\t",
"\tsend_options_exclusive = no",
"\tsend_option = {",
"\t\tis_shown = {",
"\t\t\tNOT = { scope:actor = scope:recipient }",
"\t\t}",
"\t\tis_valid = {",
"\t\t\tscope:actor = {",
"\t\t\t\thas_usable_hook = scope:recipient",
"\t\t\t}",
"\t\t}",
"\t\tflag = hook",
"\t\tlocalization = GENERIC_SPEND_A_HOOK",
"\t}",
"\tshould_use_extra_icon = {",
"\t\tscope:actor = { has_usable_hook = scope:recipient }",
"\t}",
"\textra_icon = \"gfx/interface/icons/character_interactions/hook_icon.dds\"",
"\t",
"\ton_accept = {",
"",
"\t}",
"",
"\ton_decline = {",
"",
"\t}",
"\t",
"\tai_potential = {",
"",
"\t}",
"",
"\tai_will_do = {",
"\t\tbase = 0",
"\t}",
"}"
],
"description": "Simple interaction template."
},

"AI Weights": {
"prefix": ["ai weights", "weights"],
"body": [
"ai_value_modifier = {",
"\tai_boldness = 0.5",
"\tai_compassion = 0.5",
"\tai_greed = 0.5",
"\tai_energy = 0.5",
"\tai_honor = 0.5",
"\tai_rationality = 0.5",
"\tai_sociability = 0.5",
"\tai_vengefulness = 0.5",
"\tai_zeal = 0.5",
"}"
],
"description": "Component with all AI weights for event options."
},

"Valid Combatant Trigger": {
"prefix": ["valid combatant trigger"],
"body": ["can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = liege }"],
"description": "Trigger component used to check if a character can be an active combatant."
},

"Letter Event": {
"prefix": ["letter event", "event"],
"body": [
"yournamespace.0000 = {",
"\ttype = letter_event",
"\tsender = root",
"\topening = court_amenities_interactions.0001.a",
"\tdesc = yearly.1040.a",
"",
"\timmediate = {",
"",
"\t}",
"",
"\toption = {",
"\t\tname = trait_specific.8501.d",
"\t}",
"}"
],
"description": "Creates a barebones letter event, for usage when two characters interact."
},

"Struggle Event": {
"prefix": ["struggle event"],
"body": [
"DLC_struggle.0000 = {",
"\ttype = fullscreen_event",
"\ttitle = bp1_yearly.5722.t",
"\tdesc = bp1_yearly.5719.a",
"\ttheme = realm",
"\toverride_background = { reference = fp2_fullscreen_intro }",
"\toverride_sound = { reference = \"event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate\" }",
"",
"\twidgets = {",
"\t\twidget = {",
"\t\t\tgui = \"event_window_widget_struggle_info\"",
"\t\t\tcontainer = \"dynamic_content_widget\"",
"\t\t\tcontroller = struggle_info",
"\t\t\tsetup_scope = { struggle:YOUR_STRUGGLE_HERE = { save_scope_as = struggle } }",
"\t\t}",
"\t}",
"",
"\timmediate = {",
"",
"\t}",
"",
"\toption = {",
"\t\tname = dynn_Hardegg",
"\t\tclicksound = \"event:/DLC/FP2/SFX/UI/fp2_struggle_start_select\"",
"\t}",
"}"
],
"description": "Full-screen event used for struggles (intros, endings, etc)."
},

"Stress Impact": {
"prefix": "stress impact",
"body": [
"stress_impact = {",
"\twrathful = major_stress_impact_gain",
"\tcompassionate = medium_stress_impact_gain",
"\tlifestyle_gardener = minor_stress_impact_loss",
"}"
],
"description": "stress impact with examples, good for options."
},

"Add Opinion": {
"prefix": ["add opinion", "opinion modifier"],
"body": [
"add_opinion = {",
"\ttarget = scope:count_reinhard_von_lohengramm",
"\tmodifier = rebellious_vassal_opinion",
"\topinion = 25",
"\tyears = 10",
"}"
],
"description": "pre-filled opinion effect for affecting the opinion of the scope character towards the scoped character."
}
}

</syntaxhighlight>
|}

=== Sublime Text ===
[https://www.sublimetext.com/ Sublime Text] は、多くのユーザーに人気のある選択肢で、ローカライズファイルの扱いに優れています。これはフリーソフトです。

=== Notepad++ ===
[https://notepad-plus-plus.org/ Notepad++] は、通常のメモ帳でスクリプトを書くより直接的なアップグレードで、上の2つが難しく感じられるなら、まずはこちらから始められます。

== 位置 ==
イベントは、[[Mod structure#Mod folder|MOD のルートフォルダー]]直下の <code>events</code> ディレクトリ内にある .txt ファイルに置きます。1つのファイルに好きなだけイベントを入れられます。必要であれば、<code>events</code> ディレクトリにサブフォルダーを作り、それぞれの中にイベントファイルを置くこともできます。

== 構造 ==

全体の構造は[[CKII:Event_modding|CK2のイベント]]に似ていますが、構文にいくつかの調整が入り、多くの追加機能があります(その多くは任意)。最小限のイベントを以下に示し、各要素の説明は後述のセクションで個別に行います。<syntaxhighlight lang="coffeescript">
namespace = example
example.1 = {
desc = example.1.desc

option = {
name = example.1.a
}
}
</syntaxhighlight>はい、これでOKです!これをあなたのMODに追加し、ゲーム内コンソールで「event example.1」を使って発火させれば、動作するイベントの完成です!それ以外はすべて任意ですが、イベントをしっかり作り込むには必要になります。これが最低限の形です。

以下は、基本だけを含む、より作り込まれたイベントの例です。<syntaxhighlight lang="coffeescript">
## これは基本的なイベントです。他のイベントのベースとして使ってください。ただし、まずは注釈の氾濫を消したくなるでしょう。
superexample.1337 = { # こうしたコメント(これ!)でイベント名を書いておくと、IDを知らなくても他のスクリプターが見つけやすくなります。
type = character_event
title = "王にふさわしいモッディング例" # プロTIP: 文字列を使っておいて、後でローカライズ参照に置き換えることもできます
desc = birth.1003.b # Sublimeユーザー向け: 「ファイル内検索」がローカライズの探索に非常に便利です

theme = mental_break
left_portrait = root

option = { # オプションが何を言い/何をするか(例:「いや、異端者よお前を断罪する!」や「子供に決闘を挑む」)をコメントで書くのは、イベントタイトル同様に良い慣行です。
name = stewardship_domain_special.1424.a
}
}
</syntaxhighlight>

=== ID と namespace ===
Namespace は任意の英数字('.'は不可)で、<code><namespace>.<id></code>という形で接頭辞として使われます。IDはイベントを一意に識別します。

イベントファイルで namespace を使う場合、ファイルの先頭で <code>namespace = <namespace></code> と宣言する必要があります。これは、その namespace を使うすべてのファイルで行わなければなりません。

=== フラグ ===
これはイベントの種類や見た目を決めるトップレベルの変数です。取り得る値は限られています。

{| class="wikitable"
|-
! フラグ !! 意味 !! 取り得る値
|-
| type
|| イベントの種類。root がどのスコープになるかを決定します。
||
* character_event
* letter_event
* duel_event
* none(イベントが root スコープを全く使わない場合)
* empty(キャラクター不在のイベントを発火させるのに必要。注: これは type = empty と書くことを意味します)
|-
| hidden || これをtrueにすると、イベントはまったく表示されません。バックグラウンドで実行されます。プレイヤーに直接関係しないメンテナンス用イベントに便利です。
|| true, false
|}

== ポートレート ==
Crusader Kings III ではポートレートが3Dになり、アニメーションも可能になりました!以下に、さまざまなポートレートの配置位置と、そのアニメーション一覧を示します。

=== ポートレートの配置位置 ===

[[File:Example event.png|thumb|left|Portrait Positions]]

{| class="wikitable"
|-
! 配置位置 !! 説明
|-
| left_portrait || イベントシーンの左側に表示。
|-
| right_portrait || イベントシーンの右側に表示。
|-
| lower_left_portrait || イベントシーン左下に表示。
|-
| lower_center_portrait || イベントシーン中央下に表示。
|-
| lower_right_portrait || イベントシーン右下に表示。
|}

以下は、すべての配置位置を同時に使った例とスクリーンショットです。<syntaxhighlight lang="coffeescript" line="1">
example_event.1001 = {
left_portrait = {
character = ROOT # この位置には、ここでスコープされたキャラクターが指定のアニメーションで表示されます。
animation = fear # 一部の遺伝形質(巨人症や小人症など)でモデルが変わるキャラクターは、別のアニメーションセットを持っています。それら専用のアニメーションを通常モデルのキャラクターに割り当てると、クラッシュの原因になることがあります。
}
right_portrait = {
character = ROOT
animation = scheme
}
lower_left_portrait = {
character = ROOT
}
lower_center_portrait = {
character = ROOT
}
lower_right_portrait = {
character = ROOT
}
}
</syntaxhighlight>ポートレートは以下のパラメータを取ります:
{| class="wikitable"
|-
! パラメータ !! 説明 !! 例
|-
| character|| 表示するキャラクター。 || <code>character = scope:event_target</code>
|-
| animation|| 再生するアニメーション。 || <code>animation = anger</code>
|-
| triggered_animation|| トリガーを満たした場合に特定のアニメーションを再生。満たさない場合は <code>animation = </code> で指定したものにフォールバック。 || <pre>triggered_animation = {
trigger = {}
animation = fear
}</pre>
|-
| triggered_outfit|| このイベント用の装束を設定。[https://ck3.paradoxwikis.com/Characters_modding#Outfit_Tags (outfit_tags の追加情報)] || <pre>triggered_outfit = {
trigger = {}
outfit_tags = no_clothes (複数タグにも対応、形式は outfit_tags = { tag1 tag2 } )
remove_default_outfit = yes/no
}</pre>
|-
| hide_info|| キャラクター情報(ツールチップ、紋章、クリック等)を非表示にし、ポートレートのみ表示。 || <code>hide_info = yes/no</code>
|}

=== アニメーション ===
{|class="wikitable"
|-
!colspan="6"|イベント対応アニメーションID
|-
| idle
| chancellor
| steward
| marshal
| spymaster
| chaplain
|-
| anger
| rage
| disapproval
| disbelief
| disgust
| fear
|-
| sadness
| shame
| shock
| worry
| boredom
| grief
|-
| paranoia
| dismissal
| flirtation
| flirtation_left
| love
| schadenfreude
|-
| stress
| happiness
| ecstasy
| admiration
| lunatic
| scheme
|-
| beg
| pain
| poison
| aggressive_axe
| aggressive_mace
| aggressive_sword
|-
| aggressive_dagger
| aggressive_spear
| aggressive_hammer
| celebrate_axe
| celebrate_mace
| celebrate_sword
|-
| celebrate_dagger
| celebrate_spear
| celebrate_hammer
| loss_1
| chess_certain_win
| chess_cocky
|-
| laugh
| lantern
| eyeroll
| eavesdrop
| assassin
| toast
|-
| toast_goblet
| drink
| drink_goblet
| newborn
| sick
| severelywounded
|-
| prisonhouse
| prisondungeon
| war_attacker
| war_defender
| war_over_tie
| war_over_win
|-
| war_over_loss
| pregnant
| personality_honorable
| personality_dishonorable
| personality_bold
| personality_coward
|-
| personality_greedy
| personality_content
| personality_vengeful
| personality_forgiving
| personality_rational
| personality_irrational
|-
| personality_compassionate
| personality_callous
| personality_zealous
| personality_cynical
| frontend_center_idle
| frontend_left_idle
|-
| frontend_right_idle
| throne_room_chancellor
| throne_room_kneel_1
| throne_room_kneel_2
| throne_room_curtsey_1
| throne_room_messenger_1
|-
| throne_room_messenger_2
| throne_room_messenger_3
| throne_room_conversation_1
| throne_room_conversation_2
| throne_room_conversation_3
| throne_room_conversation_4
|-
| throne_room_cheer_1
| throne_room_cheer_2
| throne_room_applaud_1
| throne_room_bow_1
| throne_room_bow_2
| throne_room_bow_3
|-
| throne_room_one_handed_passive_1
| throne_room_one_handed_passive_2
| throne_room_two_handed_passive_1
| throne_room_writer
| test_case_1
| holding_staff
|-
|marshal_random_weapon
|crying
|delirium
|disappointed
|eccentric
|manic
|-
|marshal_axe
|interested
|interested_left
|stunned
|wailing
|wedding_happy_cry
|-
|marshal_dagger
|peekaboo
|child_hobby_horse
|clutching_toy
|clutching_ball
|clutching_doll
|-
|marshal_mace
|go_to_your_room
|cough
|shiver
|sick_stomach
|loss_1
|-
|marshal_shield
|page_flipping
|writing
|reading
|stressed_teacher
|happy_teacher
|-
|thinking
|emotion_thinking_scepter
|wedding_drunk
|acknowledging
|betting
|bribing
|-
|chess_certain_win
|chess_cocky
|dancing
|dancing_plague
|debating
|hero_flex
|-
|obsequious_bow
|physician
|prayer
|scepter
|stayback
|storyteller
|-
|survey
|aggressive_axe
|aggressive_mace
|aggressive_sword
|aggressive_dagger
|aggressive_spear
|-
|aggressive_hammer
|aggressive_unarmed
|celebrate_axe
|celebrate_mace
|celebrate_sword
|celebrate_dagger
|-
|celebrate_spear
|celebrate_hammer
|sword_coup_degrace
|wrestling_victory
|sword_yield_start
|wrestling_yield_start
|-
|wooden_sword_yield_start
|throne_room_wooden_sword
|celebrate_wooden_sword
|aggressive_wooden_sword
|marshal_wooden_sword
|wooden_sword_coup_degrace
|-
|random_weapon_coup_degrace
|random_weapon_aggressive
|random_weapon_celebrate
|random_weapon_yield
|inspect_weapon
|menacing
|-
|threatening
|throne_room_ruler
|throne_room_ruler_2
|throne_room_ruler_3
|throne_room_two_handed_passive_shield
|crossbow
|-
|bow_idle
|hunting_shortbow_rest_arrow_default
|hunting_shortbow_rest_bluntarrow_default
|hunting_shortbow_aim_arrow_default
|hunting_shortbow_aim_bluntarrow_default
|hunting_longbow_rest_arrow_default
|-
|hunting_longbow_rest_bluntarrow_default
|hunting_longbow_aim_arrow_default
|hunting_longbow_aim_bluntarrow_default
|hunting_horn
|hunting_carcass_start
|hunting_knife_start
|-
|hunting_falcon
|jockey_lance_tilted
|jockey_lance_couched_gallop
|jockey_gallop
|jockey_idle
|jockey_victory
|-
|jockey_loss
|jockey_walk
|jockey_wave
|chariot_neutral
|chariot_happy
|chariot_shocked
|-
|chariot_w_horses_neutral
|chariot_w_horses_happy
|chariot_w_horses_shocked
|wedding_groom_right
|wedding_bride_left
|wedding_priest
|-
|reception_groom_left
|reception_bride_right
|wedding_objection_start
|instrument_active
|instrument_idle
|shawm_active
|-
|shawm_idle
|qanun_active
|qanun_idle
|lute_active
|lute_idle
|chifonie_active
|-
|chifonie_idle
|alto_flute_active
|alto_flute_idle
|incapable
|dead
|survey_staff
|}

== テーマ ==
テーマは、背景・ポートレート用のライティング環境・効果音の組み合わせです。common/event_themes/ に定義します。

{| class="wikitable"
|-
!colspan="4"|テーマ
|-
| 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
|}

テーマの各要素は、<code>override_background</code>、<code>override_icon</code>、<code>override_sound</code>、<code>override_environment</code> で個別に上書きできます。

==== 背景 ====
{| class="wikitable"
!colspan="4"|背景
|-
| 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
|}

=== 環境 ===
背景を選ぶと、適切な環境が自動で選択されます。必要な場合のみ上書きしてください。
{| class="wikitable"
!colspan="3"| 環境
|-
| 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
|
|}

== トリガー ==
これは、イベントを機能させるための追加要件です。<syntaxhighlight lang="coffee">
trigger = { # これは、このイベントを有効化するために必要な条件の集合(イベント本体の巨大なIF文)です
culture = {
has_innovation = innovation_guilds # 文化研究でギルドを解放しているかをチェック
}
}
</syntaxhighlight>

特定の要件を、独自のトリガーの背後にロックすることもできます。<syntaxhighlight enclose="none" lang="coffee">trigger_if</syntaxhighlight> を使います。<br><syntaxhighlight enclose="none" lang="coffee">trigger_if</syntaxhighlight> の中にある要件は、<syntaxhighlight enclose="none" lang="coffee">limit</syntaxhighlight> ブロックの内容が真の場合にのみチェックされます。オプションとして、<syntaxhighlight enclose="none" lang="coffee">trigger_if</syntaxhighlight> が失敗したときに代替の要件をチェックするため、後ろに <syntaxhighlight enclose="none" lang="coffee">trigger_else</syntaxhighlight> を追加できます。
<syntaxhighlight lang="coffee">
trigger = {
any_held_county = { # 鍛冶屋を所有しているかをチェックします
any_county_province = {
has_building_or_higher = blacksmiths_01
}
}

trigger_if = { # もしキャラクターが強欲なら、500ゴールド所持の要件を追加
limit = { has_trait = greedy }
gold > 500
}
trigger_else = { # それ以外の場合、少なくとも敬虔さ50とゴールド10が必要
piety > 50
gold > 10
}
}
</syntaxhighlight>


=== on_trigger_fail ===
トリガーが失敗したときに実行されます。

== 説明 ==
first_valid などを使って、説明文を複数の文字列で構成できる方法を説明します。代替案も含めます。

== Immediate ==
これは効果スクリプトのブロックです。イベントがトリガーされた直後、タイトルや説明、ポートレートが評価・描画される前に「即座に」実行されます。テキストやポートレートで使用するための変数設定やスコープの保存、またはプレイヤーが介入できない機能的効果を起こしたいときに便利です。

「発生済み」のツールチップ。<syntaxhighlight lang="coffee">
immediate = { # イベントが画面に出たときに起こる処理。どの選択肢を選んでも実行されます。
add_gold = 50 # プレイヤーに50ゴールドを追加
}
</syntaxhighlight>

== オプション ==
イベント内のオプションは、ユーザーが押せるボタンです。各イベントは、ゼロ個(非表示イベントなどで一般的)を含め、任意の数のオプションを持てます。各オプションはメインのイベントブロック内で以下のように定義します。<syntaxhighlight lang="coffee">
example.1 = {

# [...]

option = {
# オプション情報
}

# [...]

}

</syntaxhighlight>より複雑な例:<syntaxhighlight lang="coffee">
option = { # オプションのタイトル
name = stewardship_domain_special.1424.a
trigger_event = { # 別のイベントを発生させます
id = yearly.1012 # イベントIDは上部にあるもの(stewardship_domain.6017 など、存在していれば有効)
days = { 7 14 } # 2つの値の間でランダム(両端を含むかは不明)。= {X Y} を取るものは = X でも動作
}

hidden_effect = { # オプションのツールチップに表示されない処理
scope:county = { # "county" というスコープに保存された場所を取得
add_county_modifier = { # 修正(ボーナスやペナルティ)を追加
modifier = governance_land_cleared_for_settlement_modifier # https://ck3.paradoxwikis.com/Modifier_list 適切な種類のものを使用(この場合は country)
days = 3650 # 持続期間。days = {X Y} も使用可
}
}
}

ai_chance = {
base = 50 # 他の選択肢よりこれを選ぶ確率(0〜100である必要はない)
modifier = { # さまざまな条件で値を変更。ここではAIキャラの特性
add = 15
has_trait = sadistic # 特性一覧は ..\game\common\traits\00_traits.txt
}
modifier = {
add = -40 # 減らす場合は負の数を加算(5 + -10 = -5)
has_trait = compassionate
}
}
}
</syntaxhighlight>以下の表は <code>option</code> ブロック内で使用できるキーを説明します。

{| class="wikitable"
! Key
! Required
! Description
! Example

|-
| name
| Yes
| イベントのオプションボタンのテキストに対応するローカライズキーを指します。
| name=example.1.a

|-
| (effects)
| No
| オプションが持つ任意の [[effect]] は <code>option</code> ブロック内に直接記述できます。
| play_music_cue = mx_cue_banquet

|-
| trigger
| No
| ユーザーに有効として表示されるために満たす必要がある [[trigger]] を定義します。[[#Trigger|メインイベントトリガー]] と混同しないでください。
|
<pre>
trigger = {
has_trait = shy
}
</pre>

|-
| show_as_unavailable
| No
| オプションが無効でも、このトリガーが真なら表示はするが押せない状態にします。この挙動は EVENT_OPTIONS_SHOWN_HIDE_UNAVAILABLE の定義にも影響されます。
|
<pre>
show_as_unavailable = {
short_term_gold < medium_gold_value
}
</pre>

|-
| trait
| No
| プレイヤーが指定の特性を持つ場合、オプションの左側に表示します。ホバーすると、その特性によりオプションが有効になっている旨を示します。演出のみで、機能には影響しません。
|
trait = honest


|-
| skill
| No
| 指定したスキルを左側に表示します。ホバーすると、高いスキルにより有効である旨を示します。演出のみで、機能には影響しません。
|
skill = prowess


|-
| add_internal_flag
| No
| 値は "special" または "dangerous" を取ります。"special" はオプションを黄色で強調、"dangerous" は赤で強調します。演出のみで、機能には影響しません。
|
add_internal_flag = special


|-
| highlight_portrait
| No
| このオプションをホバーしている間、このキャラクターのイベントポートレートをハイライトします。これは、ポートレートに影響を与える効果を持つオプションをホバーした際の自動ハイライトに加えて行われます。
| highlight_portrait = scope:custom
|-
| fallback
| No
| yes の場合、他のオプションがトリガーを満たさないなら、このオプションは自分のトリガーを満たさなくても表示されます。<code>trigger = { always = no }</code> と組み合わせることで、最後の手段としてのみ表示されるオプションを作れます。
| fallback = yes
|-
| exclusive
| No
| exclusive = yes のオプションがトリガーを満たす場合、そのオプションのみが表示されます。複数が該当するなら、それらのみが表示されます。
| exclusive = yes
|-
| flavor
| No
| オプションのツールチップに表示されるフレーバーテキスト。locキーまたは first_valid などを使った動的説明にできます。
| flavor = my_events.1001.a.flavor
|}

== After ==
これは、イベントが進行してオプションが選ばれた後に実行される効果スクリプトのブロックです。Immediate ブロックと全く同じ要領で動作します。イベントにオプションがない場合(非表示イベントなど)には何もしません。<br>
最も一般的には、後片付けのために使われ、意図せず残りがちな変数、キャラクター、その他のデータを削除します。

例として、イベント <syntaxhighlight enclose="none" lang="coffee">fp2_struggle.2009</syntaxhighlight>「神話の盗賊を捕まえろ」では、イベント終了時にイベント生成キャラクターを削除すべきかを判断するため、ブール値として保存スコープの有無をチェックする目的で <syntaxhighlight enclose="none" lang="coffee">after</syntaxhighlight> ブロックが使われています。
<syntaxhighlight lang="coffee">
after = {
if = {
limit = { NOT = { exists = scope:fp2_2009_thief_permanence_scope } } # ブールとして機能。存在すれば真
scope:fp2_2009_garduna_young_thief = { silent_disappearance_effect = yes } # 若い盗賊を抹消(削除)。将来のイベントで不要なため
}
}
</syntaxhighlight>

== ウィジェット ==
どんな種類のウィジェットがあるかを、各種のスクリーンショット付きで紹介します。

== On Actions (on_action) ==
On Action は、ゲームコードで特定のアクション(子の誕生、土地の相続、フックの使用など)が呼び出されるたびに実行されるスクリプトです。<br>これにより、該当する On Action が呼ばれたタイミングで、モッダーは独自のスクリプトを割り込ませて実行できます。

定義は '''common/on_action''' にあります。

'''重要:''' パスを二重に確認してください。単数の '''on_action''' であり、on_actions ではありません。ここはよくあるミスです。

例(子どもが生まれたときにカスタムイベントをトリガーする):<syntaxhighlight lang="c">
on_birth_child = {
events = {
my_event.1
}
}
</syntaxhighlight>詳細はそのフォルダの .info ファイルを参照してください。on_actions.log には on_action の完全なリストがあります。

一部の on_action はゲームコードから直接呼ばれ、その他はスクリプト(他の on_action、イベント、ディシジョン等)から呼ばれます。

例えば、<code>on_birthday</code> は毎年の誕生日にコードから発火し、<code>on_birthday_adulthood</code> を発火しようとしますが、こちらには <code>is_adult = yes</code> のトリガーがあるため、キャラクターが成人のときのみ発火します。

このようなカスタム on_action は、イベントや効果をまとめるのに有用です。新しいカスタム on_action は作成できますが、コードの on_action を新規作成することはできません。

=== よくある例 ===

* <code>on_birth_child</code> - 子が生まれたとき
* <code>on_16th_birthday</code> - 子が成人になったとき
* <code>random_yearly_playable_pulse</code> - 年に一度、ランダムな日付で、プレイ可能(伯以上)な全キャラクターに。希少イベント向け
* <code>quarterly_playable_pulse</code> - 同様のキャラクターに3カ月ごとのより頻繁なパルス
* <code>on_game_start</code> - ゲーム開始時。プレイヤーがキャラを選ぶ前なので <code>every_player</code> は機能しません
* <code>on_game_start_after_lobby</code> - プレイヤーがキャラを選択して確定した後。ここでプレイヤーキャラに影響を与えられます
* <code>on_death</code> - キャラクターが死亡する直前。変数を第一後継者に移すのに有用

注意:毎月の on_action はありません。これはパフォーマンス向上のためです。

どうしても毎月のパルスが必要なら、quarterly_playable_pulse を使い、増加する遅延で3回 on_action をトリガーしてください。<syntaxhighlight lang="c">
on_actions = {
my_on_action
delay = { months = 1 }
my_on_action
delay = { months = 2 }
my_on_action
}
</syntaxhighlight>あるいは、on_action 自身に毎月の遅延で自分を呼ばせても構いません。

=== 追記(アペンド) ===
多くの場合、on_action を上書きせずに何かを追加したいものです。これをアペンドと呼びます。

'''重要:''' effect と trigger は直接アペンドできません。アペンドできるのは events と他の on_action のみです。

互換性を確保し、バニラの effect を上書きしないようにするには、次の手順を行ってください。

# 新しい txt ファイルを作成します。
# 独自の on_action を作り、既存の on_action に追加します:
<syntaxhighlight lang="coffee">
on_birth_child = {
on_actions = {
my_on_action # on_birth_child にアペンドされたカスタム on_action
}
}
my_on_action = {
trigger = { ... } # この on_action にのみ使われるトリガー
effect = { ... } # すべての効果は安全にアペンドされる
}
</syntaxhighlight>以下の例はバニラの effect と trigger(および他のMODが追加したもの)を上書きしてしまいます。<syntaxhighlight lang="coffee">
on_birth_child = {
trigger = { ... }
effect = {... } # effect と trigger は上書きされ、アペンドされない
}
</syntaxhighlight>on_action は、イベントや他の効果から次のように呼ぶこともできます:

<code>trigger_event = { on_action = my_on_action }</code>

=== スコープ ===
各 on_action でどのスコープが利用可能かを必ず確認してください。

各 on_action のファイルの先頭には、スコープを説明するコメントがあります。

例えば、<code>on_game_start</code> には root スコープがありません。これは一度、グローバルに発火します。つまり <code>every_ruler</code> のようなグローバル効果を使う必要があります。

一方で、<code>yearly_playable_pulse</code> はすべてのプレイ可能キャラクターに対して発火し、キャラクターが root スコープになります。したがって add_gold のようなキャラクター効果を直接使えます。

'''重要''': <code>yearly_playable_pulse</code> や類似の on_action で <code>every_living_character</code> を使わないでください。

その on_action 自体がすでに全キャラクターに対して発火します。そこでさらに全キャラを反復すると、およそ 20000<sup>2</sup> の処理になり、大きなラグと効果の重複を引き起こします。

=== プロパティ ===
この表は ''/common/on_action/on_actions.info'' ファイルの内容を用いています。
{| class="wikitable"
|+
!Name
!Description
!Expected type
!Example
|-
|trigger
|on_action はトリガーを持てます。on_action が発火しても、そのトリガーが偽なら何も起こりません
|boolean
|<syntaxhighlight lang="text">
trigger = {
trigger_conditions = yes
}
</syntaxhighlight>
|-
|weight_multiplier
|random_on_actions リストで候補になっている場合、この on_action の重みを操作します
|integer
|<syntaxhighlight lang="text">
weight_multiplier = {
base = 1
modifier = {
add = 1
trigger_conditions = yes
}
}
</syntaxhighlight>
|-
|events
|"events" ブロックに列挙されたイベントは、トリガーが真である限り必ず発火します
|
|<syntaxhighlight>
events = {
event_id_1
delay = { days = 365 } # 遅延を設定すると、それ以降に列挙されたイベントは、その遅延経過後にのみ発火します。注意:パフォーマンス上、遅延の開始時と完了時の両方でイベントが有効である場合にのみ成功します。events と on_actions の両方で遅延をサポートします。
event_id_2
delay = { months = { 6 12 } } # 新しい遅延を設定すると、以前の遅延は上書きされます。遅延はランダム範囲をサポート
event_id_3
}
</syntaxhighlight>
|-
|random_events
|発火するイベントが1つ選ばれます
|
|<syntaxhighlight>
random_events = { # 発火するイベントが1つ選ばれる

chance_to_happen = 25 # 対象イベント群を評価するかを決める確率

chance_of_no_event = { # スクリプト値としてフォーマット可能(条件付きエントリ可)。パフォーマンス上の理由から chance_to_happen が真のときのみ評価
value = 0
if = {
limit = { trigger_conditions = yes }
add = 10
}
}

100 = event_id_1 # 数値は特定イベントの選択重み。イベント側の weight_multiplier によって係数化(未定義なら 1)
200 = event_id_2
100 = 0 # "0" エントリを入れると、他に有効なイベントがあっても発火しない可能性を作れる。レアイベントが常に発火しないようにするのに有用
}
</syntaxhighlight>
|-
|first_valid
|トリガーが真になる最初のイベントを選びます
|List<event>
|<syntaxhighlight>
first_valid = { # トリガーが真になる最初のイベントを選ぶ
event_id_1
event_id_2
fallback_event_without_trigger
}
</syntaxhighlight>
|-
|on_actions
|on_action は他の on_action を発火できます。イベントと同じルールに従います
|List<on_action>
|<syntaxhighlight>
on_actions = { # on_action は他の on_action を発火でき、イベントと同じルールで動作
on_action_1
on_action_2
on_action_3
}
</syntaxhighlight>
|-
|random_on_actions
|events と同様です。on_action も weight_multiplier によって係数化され、デフォルトは 1 です
|
|<syntaxhighlight>
random_on_actions = {
100 = on_action_1
200 = on_action_2
100 = 0
}
</syntaxhighlight>
|-
|first_valid_on_action
|
|List<on_action>
|<syntaxhighlight>
first_valid_on_action = {
on_action_1
on_action_2
}
</syntaxhighlight>
|-
|effect
|on_action は効果を実行できます。発火元のスクリプトチェーン/コード機能と同じデフォルトまたは保存済みスコープにアクセスできます。なお、ここでの実行は on_action が発火するイベントより「前」ではなく「同時」です。ここで走る効果は、on_action が発火するイベントとは別のチェーンを作るため、たとえばここで値を操作しても、同時に発火したイベントでそれを確実に参照することはできません。ここで設定したスコープやローカル変数は、on_action が発火するいかなるイベントにも引き継がれません。
|
|<syntaxhighlight>
effect = {
effects = yes
}

</syntaxhighlight>
|-
|fallback
|on_action はフォールバック on_action を定義できます。イベント/on_action が1つも実行されなかった場合、代わりにフォールバックが呼ばれます。無限フォールバックループを作らないでください。ゲームの進行が止まる恐れがあります!
|on_action
|<syntaxhighlight>
fallback = another_on_action
</syntaxhighlight>
|}

=== コード由来の On_actions ===
{| class="wikitable sortable" width="100%"
! width="15%" | 名前
! width="15%" | 説明
! width="25%" | コード由来
! width="20%" | 期待されるスコープ
! width="20%" | その他
|-
|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
|
|}

== 戦略 ==
=== イベントの発火 ===
{{Expand‎}}イベントは自動では発火しません。スクリプト内で、例えば次のものによって発火させる必要があります。

* [[Event modding#On Actions (on action)|on_actions]]
* [[Story cycles modding|ストーリーサイクル]]
* [[Decisions modding|決断]]
* キャラクターインタラクション

など。

=== テクニックとデザインパターン ===
{{Expand‎}}情報をそのまま入力すると、バニラの on_actions を上書きしてしまいます。以下の例は、独自のイベントを追加する方法の一例です。<syntaxhighlight lang="coffee">
five_year_playable_pulse = {
on_actions = { my_five_year_playable_pulse }
}
my_five_year_playable_pulse = {
random_events = {
# あなたのイベント変更名はここに。
}
}

</syntaxhighlight>イベントのピン留め、メッセージイベント。

その他のアイデア。

{{Modding navbox}}
[[Category:Modding]]
98

回編集

案内メニュー