イベントの作り方

**①NFのcompletion\_reward**

**②ディシジョンのremove\_effectとcomplete\_effect**

**③イベントのoption(選択肢)**

**④on\_actionのeffect**

などでコマンドイベントを記述することで発生させることができます。このほかにも特定の条件になった際に自動で発生させることもできますが、少し動作が不安定であるだけでなく、on\_actionで指定した方が動作が軽くなるのでお勧めしません。

#### **イベントコマンド**

イベントコマンドの基本的な記述は以下の通りです。

```
country\_event = {
    id = my\_event.1
    days = 10
    random = 10
}

```

・idはイベントのIDを指します。ここで指定されたIDのイベントが発生します。

・daysはこのコマンドが発動してから何日後にイベントが発生するかを示しています。

　数値は1～∞の整数値を入力してください。

　コマンド発動直後にイベントを発生させたい場合は記述する必要はありません。

・randomはdaysで指定した日数からイベントの発生する日数の振れ幅を指定します。

　数値は1～∞の整数値を入力してください。daysを記述しない場合、またはランダムに

　発生させる必要のない場合は記述する必要はありません。

**イベントの記述**

イベントIDについて

・イベントのIDは基本的に「XXX.数字」の形で記述します。しかし、XXXの部分をランダムに変えてしまうと、イベントは発生しません。このXXXの部分の記述はバニラのものをそのまま使用するか、あらかじめ使いたい単語を指定しておく必要があります。この指定は、イベントファイルの先頭に記述しておくのが最も確実です。理由としては、Hoi4の起動時コンピュータは人間と同じく構文を上から順に読み込んで行くため、先に指定しておかなければ、イベントの構文が先に読み込まれ、無効なイベントとして認識されてしまうためです。この部分を指定する文章は次のようになります。

**add\_namespace = XXX**

この記述ではXXXが指定されたため、「XXX.01」や「XXX.20\_generic」といったイベントIDを作れるようになります。

#### **イベント本体の記述①**

イベントの最も基本的な構文は以下の通りです。

```
country\_event = {
	id = japan.001
	title = japan.001.t
	desc = japan.001.d
	picture = GFX\_Japan\_onakasuita\_01
	is\_triggered\_only = yes
	option = {
　　	name = japan.001.a
		add\_ideas = JAP\_idea\_onakasuita
	}
}

```
**・id**

イベントのIDを指定します。このIDの｛｝中の記述がこのIDのイベントについての物であることを示します。

**・title**

イベントの題名を指定します。＝の先に書いた文をローカライゼーションで記述することで、イベントにタイトルが表示されるようになります。基本的に「イベントのID.t」または「イベントのID.title」と記述するとわかりやすくなるためお勧めです。

**・desc**

イベントの説明を指定します。titleと同じ要領で記述します。基本的に「イベントのID.d」または「イベントのID.desc」と記述するとわかりやすくなるためお勧めです。

**・picture**

イベントに付ける写真を指定します。ここに書かれる記述はinterfaceに指定した画像のIDである必要があります。画像は209×176前後のdds形式の物である必要があります。

**・is\_triggered\_only**

このイベントがNFやディシジョン、on\_actionといったイベントコマンド以外では発生しないのか否かについての記述です。yesと記述した場合、自然発生せず、先述したイベントコマンドでのみ発生するようになります。noの場合は自然発生は可能になりますが、動作が不安定であるなどの問題があるため、お勧めしません。基本的にはyesと記述してください。

**・option**

イベントの選択肢についての記述です。この記述の｛｝内に選択肢に関する情報を記述します。

**・name**

選択肢の名前です。＝の先に書いた文をローカライゼーションで記述することで、選択肢の記述が表示されるようになります。基本的に「イベントのID.a」といった風に記述するとわかりやすくなるためお勧めです。選択肢が複数ある場合はa.b,c…といった風にアルファベットの並び順に書くとわかりやすくなります。

**・add\_ideas＝ JAP\_idea\_onakasuita**

このようにコマンドを記述し、選択肢の効果を作ることができます。上記の物は例のため単純なコマンドですが、もっと複雑なコマンドやフロー制御なども記述可能です。

#### **イベント本体の記述②(option)**

ここでは選択肢(option)についてより発展的な記述を紹介します。

```
option = {
    name = japan.001.a#選択肢のID
    ai\_chance = {#AIが選択する度合いの設定
        factor = 10
        modifier = {
            factor = 90
            is\_in\_faction\_with = JAP
        }
    }
    trigger = {#この選択肢が表示される条件
        has\_government = fascism
    }
    #効果(effect)
    add\_ideas = JAP\_idea\_onakasuita
}

```
**・option**

省略。2ページ参照。

**・name**

省略。2ページ参照。

**・ai\_chance**

AIが操作する国でこのイベントが発生した場合にAIがこの選択肢を選択する要因を記述します。この記述がない場合はAI国家にはこのイベントはなんの効果も与えられません。

**・factor**

AIがこの選択肢を選択する要因値を設定します。要因値は、選択肢が複数ある場合、他の選択肢よりも数値が大きければ大きいほどAIが選択する確率が高くなります。

例えば、選択肢A(factor = 10)と選択肢B(factor = 20)がある場合、AIが選択肢Aを選ぶ確率は33.3％、選択肢Bを選ぶ確率は66.6％となります。そのため、AIに必ず特定の選択肢を選ばせたい場合、そのほかの選択肢の要因値は０にする必要があります。

**・modifer**

AIに特定の条件下では通常と異なる場合の要因値を持たせる際に記述する部分です。この記述の｛｝内に書かれたfactorの数値が同格のトリガー構文の条件を満たした場合の要因値となります。例えば、上記の例ではイベントが起きた国が日本と同じ陣営にいる場合にはこの選択肢の要因値が10から90倍に変更されます。この記述内のトリガー構文はより複雑なスコープを用いたものでも可能です。また、Aの条件時の要因値は30、Bの条件時の要因値は80、それ以外は10、といったように複数の条件を設けることも可能です。

**・trigger**

この選択肢が表示される条件を｛｝内にトリガー構文を用いて記述します。上記の例ではイベントが発生した国家のイデオロギーがファシズムの場合にのみ表示されます。これを利用することで、特定の条件下でのみ選択可能な選択肢を複数記述できるため、量を短縮できます。

**・add\_ideas = JAP\_idea\_onakasuita**

このイベントを選択した際の効果。2ページ参照。

#### **イベント本体の記述③(ローカライゼーション関係)**

ここでは、イベントに記述するローカライゼーション関係の記述について紹介します。

イベント本体の記述①で記述したようにイベントの説明は「desc = XXX.d」のように記述します。しかし、同じイベントであっても条件によっては異なる説明を記述したい場合は代わりに次のような記述をします。

**desc = {**

**text = japan.001.japan**

**trigger = {**

 **tag = JAP**

**}**

**}**

**desc = {**

 **text = japan.001.usa**

**trigger = {**

 **tag = USA**

**}**

**}**

**desc = {**

**text = japan.001.other**

**trigger = {**

 **NOT = {**

 **tag = JAP**

 **tag = USA**

 **}**

**}**

**}**

この場合はイベントの発生国が日本の場合は「japan.001.japan」を、

アメリカの場合は「japan.001.usa」を、それ以外の国家の場合は「japan.001.other」の

説明が表示されるようになります。titleも同じように記述できます。(要確認)nameはできません。

これらの条件付けにはトリガー構文を使用します。

#### **イベント本体の記述④(注意点)**

・②や③で用いたようなトリガーを用いた記述をする際は、どの条件にも一致しない、またはdescやtitleの場合には2つ以上の条件に合致してしまうことの内容に注意する必要があります。どの条件にも一致しない場合、選択肢が１つも表示されなくなったり、タイトルが表示されないなどの不具合を引き起こします。また、2以上の条件に合致する場合は、片方のみしか表示されない場合や、文字が重なって表示される場合があります。そのため、トリガー構文を用いる場合には条件の構文の内容によく注意する必要があります。

・イベントの選択肢は5つ以上同時に表示させるとイベントの枠組みから外れてしまい、不格好になります。同時に5つ以上出ることのないように数や条件に注意する必要があります。どうして5つ以上の選択肢が必要な場合は、イベントを分岐させることで選択肢を分散できます。

・イベントのIDの先頭文字列をバニラの物と同一にする場合は、IDが重複していないかどうか確認する必要があります。逆に、わざと重複させてバニラのイベントの効果を消したい場合は対象のイベントを記述しているファイルと同じ名前のファイルに記述するか、そのファイル名よりもアルファベットの順番の遅いものにしなければいけません。

#### **ローカライゼーションの記述**

イベントのローカライゼーションは、基本的には他のローカライゼーションと同じです。

しかし、イベントの文章は不確定な物になる可能性が高く、固有名詞をそのまま書くと、時として違和感のあるイベントになる可能性があります。例えば、国家タグJAPの国家について、そのまま「大日本帝国」と記述していた場合、ゲーム中に民主化してしまうと、民主主義の「日本」という国について述べているはずが、その世界では存在しなくなったはずの「大日本帝国」という異なる国号が表示されてしまいます。この問題を解決するためには、ネームスペースをローカライゼーションに組み込むことが必要です。上記の例であると、[JAP.GetName]と表記することで解決できます。