イベント Mod

提供:ck3wiki
2025年10月6日 (月) 06:07時点におけるゆいかせ (トーク | 投稿記録)による版 (イベント mod 日本語化(kagi))
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動


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

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

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

  • your_mod\events\ フォルダーに置くこと
  • 拡張子が .txt であること
  • 先頭行に namespace = my_events のように名前空間を定義すること
  • 名前空間 + 番号を名前として使うこと(例: my_events.1 = {...
  • on_action など、何らかのスクリプトから発火させること

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

スクリプト作成ツール[編集 | ソースを編集]

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

Visual Studio Code[編集 | ソースを編集]

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

推奨拡張機能:

Visual Studio Code 用スニペット 
VSCode のスニペットは、複雑なスクリプト効果、条件文、さらにはイベント全体など、繰り返しのコードパターンを簡単に入力できるテンプレートです。
CK3 のスクリプトコンポーネントをテンプレート化するためのカスタムスニペットは簡単に作成できます。以下にバニラのサンプルセットを載せます。これを拡張し、あなたのMODのニーズに合わせたセットを作ることを推奨します。

詳しく読む: 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[編集 | ソースを編集]

Sublime Text は、多くのユーザーに人気のある選択肢で、ローカライズファイルの扱いに優れています。これはフリーソフトです。

Notepad++[編集 | ソースを編集]

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

位置[編集 | ソースを編集]

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

構造[編集 | ソースを編集]

全体の構造は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">

    1. これは基本的なイベントです。他のイベントのベースとして使ってください。ただし、まずは注釈の氾濫を消したくなるでしょう。

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

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

フラグ[編集 | ソースを編集]

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

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

ポートレート[編集 | ソースを編集]

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

ポートレートの配置位置[編集 | ソースを編集]

Portrait Positions
配置位置 説明
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>ポートレートは以下のパラメータを取ります:

パラメータ 説明
character 表示するキャラクター。 character = scope:event_target
animation 再生するアニメーション。 animation = anger
triggered_animation トリガーを満たした場合に特定のアニメーションを再生。満たさない場合は animation = で指定したものにフォールバック。
triggered_animation = {
	trigger = {}
	animation = fear
}
triggered_outfit このイベント用の装束を設定。(outfit_tags の追加情報)
triggered_outfit = {
	trigger = {}
	outfit_tags = no_clothes (複数タグにも対応、形式は outfit_tags = { tag1 tag2 } )
	remove_default_outfit = yes/no
}
hide_info キャラクター情報(ツールチップ、紋章、クリック等)を非表示にし、ポートレートのみ表示。 hide_info = yes/no

アニメーション[編集 | ソースを編集]

イベント対応アニメーション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/ に定義します。

テーマ
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

テーマの各要素は、override_backgroundoverride_iconoverride_soundoverride_environment で個別に上書きできます。

背景[編集 | ソースを編集]

背景
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

環境[編集 | ソースを編集]

背景を選ぶと、適切な環境が自動で選択されます。必要な場合のみ上書きしてください。

環境
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> を使います。
<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>以下の表は option ブロック内で使用できるキーを説明します。

Key Required Description Example
name Yes イベントのオプションボタンのテキストに対応するローカライズキーを指します。 name=example.1.a
(effects) No オプションが持つ任意の effectoption ブロック内に直接記述できます。 play_music_cue = mx_cue_banquet
trigger No ユーザーに有効として表示されるために満たす必要がある trigger を定義します。メインイベントトリガー と混同しないでください。
trigger = {
	has_trait = shy
}
show_as_unavailable No オプションが無効でも、このトリガーが真なら表示はするが押せない状態にします。この挙動は EVENT_OPTIONS_SHOWN_HIDE_UNAVAILABLE の定義にも影響されます。
show_as_unavailable = {
	short_term_gold < medium_gold_value
}
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 の場合、他のオプションがトリガーを満たさないなら、このオプションは自分のトリガーを満たさなくても表示されます。trigger = { always = no } と組み合わせることで、最後の手段としてのみ表示されるオプションを作れます。 fallback = yes
exclusive No exclusive = yes のオプションがトリガーを満たす場合、そのオプションのみが表示されます。複数が該当するなら、それらのみが表示されます。 exclusive = yes
flavor No オプションのツールチップに表示されるフレーバーテキスト。locキーまたは first_valid などを使った動的説明にできます。 flavor = my_events.1001.a.flavor

After[編集 | ソースを編集]

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

例として、イベント <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 は、ゲームコードで特定のアクション(子の誕生、土地の相続、フックの使用など)が呼び出されるたびに実行されるスクリプトです。
これにより、該当する 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、イベント、ディシジョン等)から呼ばれます。

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

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

よくある例[編集 | ソースを編集]

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

注意:毎月の 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 を上書きしないようにするには、次の手順を行ってください。

  1. 新しい txt ファイルを作成します。
  2. 独自の 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 は、イベントや他の効果から次のように呼ぶこともできます:

trigger_event = { on_action = my_on_action }

スコープ[編集 | ソースを編集]

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

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

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

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

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

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

プロパティ[編集 | ソースを編集]

この表は /common/on_action/on_actions.info ファイルの内容を用いています。

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[編集 | ソースを編集]

名前 説明 コード由来 期待されるスコープ その他
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 を上書きしてしまいます。以下の例は、独自のイベントを追加する方法の一例です。<syntaxhighlight lang="coffee"> five_year_playable_pulse = { on_actions = { my_five_year_playable_pulse } } my_five_year_playable_pulse = { random_events = {

  1. あなたのイベント変更名はここに。

} }

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

その他のアイデア。

ドキュメンテーション スクリプトスコープ効果トリガー変数補正リスト
スクリプト AIブックマークキャラクターコマンド評議会文化ディシジョン王朝イベント政府歴史領地ライフスタイル連隊宗教スクリプト値ストーリーサイクル闘争称号特性
インターフェース インターフェースデータ型ローカライズカスタムローカライズフレーバー化
マップ マップ地形
グラフィック 3Dモデルエクスポーター紋章グラフィックアセットフォントパーティクルシェーダーユニットモデル
オーディオ 音楽サウンド
その他 コンソールコマンドチェックサムModの構造Mod制作ツールトラブルシューティング