見出し画像

ゼロから始めるEU4Modding:第3回 ディシジョンを作ろう~オリジナルディシジョン作成~

前回のあらすじ:licalisationフォルダとファイルを見た

ディシジョンをつくろう

ここまでの知識でディシジョンが作れます。第0回で作成したModフォルダを使って早速作ってみましょう。私は00testという名前のModを作っていきます。

ディシジョンの内容


ダカット残高が1以上の場合可視化&選択可能にし、自国が所有する州のうち、開発度が3以上の州に反乱軍を湧かせると同時にすべての所有する州に基本税+5、基本生産+5、基本人的+5を追加する、一回限り選択可能なディシジョン
・ダカット残高が1以上の場合可視化、統治力が1以上の場合選択可能にし、統治力-1と引き換えに安定度+1を得る、何回でも選択可能なディシジョン
・ダカット残高が1以上の場合可視化&選択可能にし、2ダカットと引き換えに国教と不一致である州すべてを国教に改宗させる、何回でも選択可能なディシジョン
これら3つのディシジョンをを作っていきます。

1.Modフォルダ内に「decisions」「localisation」フォルダを作成する

2.decisionsフォルダの中に本体ファイルと被らなさそうな名前の.txtファイルを作成する

3.作成した.txtファイルをエディタで開き、記述していく

3.1 1つ目のディシジョン

まず、country_decisions = {}を書きます。
第1回で説明した通り、ディシジョンの内容はすべてこの中に書いていきます。

country_decisions = {
    
}

次に、被らなさそうなディシジョンタイトルを考え、country_decisions = {}の波括弧の中に書きます

country_decisions = {
    testdayo_decisions_01 = {
        
    }
}

次に、ディシジョンタイトルの波括弧内にpotential、allow、effect、ai_will_doを置きます

country_decisions = {
    testdayo_decisions_01 = {
        potential = {

        }
        allow = {

        }
        effect = {

        }
        ai_will_do = {
            
        }
    }
}

最初のディシジョンは、「ダカット残高が1以上の場合可視化&選択可能に」するので、potential、allow共にtreasury = 1に設定します

country_decisions = {
    testdayo_decisions_01 = {
        potential = {
            treasury = 1
        }
        allow = {
            treasury = 1
        }
        effect = {

        }
        ai_will_do = {

        }
    }
}

effectの範囲「自国所有の州のうち、開発度が3以上の州」を設定していきます。
手順としては、まずScope(範囲)を自国所有のすべての州に設定し、その中から条件に合うもの(=開発度3以上の州)をlimitでふるいをかけていきます。

country_decisions = {
    testdayo_decisions_01 = {
        potential = {
            treasury = 1
        }
        allow = {
            treasury = 1
        }
        effect = {
            every_owned_province = {
                limit = {
                    
                }
            }
        }
        ai_will_do = {

        }
    }
}

limitの内容は、州の開発度が3以上であることなので、triggersからdevelopment = を引っ張ってきます。

country_decisions = {
    testdayo_decisions_01 = {
        potential = {
            treasury = 1
        }
        allow = {
            treasury = 1
        }
        effect = {
            every_owned_province = {
                limit = {
                    development = 3
                }
            }
        }
        ai_will_do = {

        }
    }
}

「反乱軍を湧かせる」の挙動を設定します。
Effectsからspawn_rebelsを引っ張ってきましょう。反乱の種類は貴族反乱軍、規模の設定はとりあえず3にしておきます(単位が分からないので様子を見てみます)。

country_decisions = {
    testdayo_decisions_01 = {
        potential = {
            treasury = 1
        }
        allow = {
            treasury = 1
        }
        effect = {
            every_owned_province = {
                limit = {
                    development = 3
                }
                spawn_rebels = {
                type = noble_rebels
                size = 3
                }
            }
        }
        ai_will_do = {

        }
    }
}

「すべての州にdev+5ずつ」を設定していきます。Effectsからadd_base_xxx系を持ってきます。

country_decisions = {
    testdayo_decisions_01 = {
        potential = {
            treasury = 1
        }
        allow = {
            treasury = 1
        }
        effect = {
            every_owned_province = {
                limit = {
                    development = 10
                }
                spawn_rebels = {
                    type = noble_rebels
                    size = 1
                }
            }
            every_owned_province = {
                add_base_manpower = 5
                add_base_production = 5
                add_base_tax = 5
            }
        }
        ai_will_do = {
            factor = 0
        }
    } 
}

「一回限り選択可能」を設定していきます。この挙動は、effect内でフラグを立て、これが存在しない場合にのみpotentialで表示させるように記述することにより実現します。

まず、Effectsからset_country_flagを引っ張ってきて、適当な名前のフラグを立てます。
これは州に対する効果ではなく国家に対する効果なので、every_owned_province内には記述せず、effect内に記述します。

country_decisions = {
    testdayo_decisions_01 = {
        potential = {
            treasury = 1
        }
        allow = {
            treasury = 1
        }
        effect = {
            set_country_flag = yabai_rebels
            every_owned_province = {
                limit = {
                    development = 3
                }
                spawn_rebels = {
                type = noble_rebels
                size = 3
                }
            }
            every_owned_province = {
                add_base_manpower = 5
                add_base_production = 5
                add_base_tax = 5
            }
        }
        ai_will_do = {

        }
    }
}

これで設定したフラグ、"yabai_rebels"が存在しない場合に表示させるようにpotentialに記述します。
論理演算子NOTを使い、その中に「国家フラグ"yabai_rebels"を持っている」という条件を入れることによって、「国家フラグ"yabai_rebels"を持っていない」という条件を作ります。

country_decisions = {
    testdayo_decisions_01 = {
        potential = {
            treasury = 1
            NOT = { has_country_flag = yabai_rebels }
        }
        allow = {
            treasury = 1
        }
        effect = {
            set_country_flag = yabai_rebels
            every_owned_province = {
                limit = {
                    development = 3
                }
                spawn_rebels = {
                type = noble_rebels
                size = 3
                }
            }
            every_owned_province = {
                add_base_manpower = 5
                add_base_production = 5
                add_base_tax = 5
        }
        ai_will_do = {

        }
    }
}

最後にai_will_doを設定します。AIがこれを選ぶと全世界で一斉に反乱軍が発生し、大変重くなるのでfactor = 0に設定しておきます。

country_decisions = {
    testdayo_decisions_01 = {
        potential = {
            treasury = 1
            NOT = { has_country_flag = yabai_rebels }
        }
        allow = {
            treasury = 1
        }
        effect = {
            set_country_flag = yabai_rebels
            every_owned_province = {
                limit = {
                    development = 3
                }
                spawn_rebels = {
                type = noble_rebels
                size = 3
                }
            }
            every_owned_province = {
                add_base_manpower = 5
                add_base_production = 5
                add_base_tax = 5
        }
        ai_will_do = {
            factor = 0
        }
    }
}

これで1つ目のディシジョン作成が終わり一段落です。保存はこまめにしておきましょう。ついでに動作確認もしておきます。Localisationの対応はまだですが、動作に支障はありません。

反乱軍が湧き、開発度が上がった後はディシジョンがしっかり消えている

動作確認、成功です。

反省

動作確認してみたところ、反乱規模が大きすぎてただのクソディシジョンと化していたので、湧かせる州の開発度を3から10に変更した上で、氾濫規模をsize=1にしておきます。

country_decisions = {
    testdayo_decisions_01 = {
        potential = {
            treasury = 1
            NOT = { has_country_flag = yabai_rebels }
        }
        allow = {
            treasury = 1
        }
        effect = {
            set_country_flag = yabai_rebels
            every_owned_province = {
                limit = {
                    development = 10
                }
                spawn_rebels = {
                    type = noble_rebels
                    size = 1
                }
            }
        }
        ai_will_do = {
            factor = 0
        }
    }
}

3.2 2つ目のディシジョン

2つ目も1つ目と同じ要領で作っていきます。コードに乗せる部分が長くなるので、便宜上1つ目のディシジョンは記載しません。

とりあえずpotential、allow、effect、ai_will_doを作っておきます。

country_decisions = {
    testdayo_decisions_02 = {
        potential = {
            
        }
        allow = {
            
        }
        effect = {
            
        }
        ai_will_do = {
            
        }
    }
}

次に「ダカット残高が1以上の場合可視化、統治力が1以上の場合選択可能にし、統治力-1と引き換えに安定度+1を得る、何回でも選択可能なディシジョン」を落とし込みます。

country_decisions = {
    testdayo_decisions_02 = {
        potential = {
            treasury = 1
        }
        allow = {
            adm_power = 1
        }
        effect = {
            add_adm_power = -1
            add_stability = 1
        }
        ai_will_do = {
            
        }
    }
}

1つ目と比較してみると、何回でも選択可能になっているので、フラグが設定されていないことが分かると思います。

ai_will_doは、これをAIにやられると強すぎるのでfactor=0にしておきます。

country_decisions = {
    testdayo_decisions_02 = {
        potential = {
            treasury = 1
        }
        allow = {
            adm_power = 1
        }
        effect = {
            add_adm_power = -1
            add_stability = 1
        }
        ai_will_do = {
            factor = 0
        }
    }
}

これで2つ目は完成です。今回は1つ目に比べても簡単でしたね。
先ほど修正した1つ目のディシジョンと共に動作確認しておきましょう。

Perfect…(自画自賛)

3.3 3つ目のディシジョン

例の雛型を用意します。

country_decisions = {
    testdayo_decisions_03 = {
        potential = {
            
        }
        allow = {
            
        }
        effect = {
            
        }
        ai_will_do = {
            
        }
    }
}

「ダカット残高が1以上の場合可視化&選択可能にし、2ダカットと引き換えに」までを設定します。ついでにai_will_doもfactor=0にしておきましょう。3回目になると慣れますね。

country_decisions = {
    testdayo_decisions_03 = {
        potential = {
            treasury = 1
        }
        allow = {
            treasury = 1
        }
        effect = {
            add_treasury = -2
        }
        ai_will_do = {
            factor = 0
        }
    }
}

effectの対象に「国教と不一致である州すべて」を持ってきます。
これはScopesからevery_heretic_provinceを引っ張ればいいかと思いきや、"heretic"は「異端」であり異教が含まれません。
なので、1つ目のディシジョンと同じようにScopeですべての州を持ってきた後、limitの中でhas_owner_religion=noを使って異教異端の州をふるいにかけなければなりません。

country_decisions = {
    testdayo_decisions_03 = {
        potential = {
            treasury = 1
        }
        allow = {
            treasury = 1
        }
        effect = {
            add_treasury = -2
            every_owned_province = {
                limit = {
                    has_owner_religion = no
                }
                
            }
        }
        ai_will_do = {
            factor = 0
        }
    } 
}

「国教に改宗させる」を設定します。Effectsのchange_religionが使えそうです。
「国教」部分はTriggersのbase scopesから取ってきたownerを使って実現します。

country_decisions = {
    testdayo_decisions_03 = {
        potential = {
            treasury = 1
        }
        allow = {
            treasury = 1
        }
        effect = {
            add_treasury = -2
            every_owned_province = {
                limit = {
                    has_owner_religion = no
                }
                change_religion = owner
            }
        }
        ai_will_do = {
            factor = 0
        }
    } 
}

無事完成です。早速動作確認します。

正教会だった州が悉くスンナ派に改宗されているのが分かると思います。成功です。
これでディシジョンの機能がすべて完成しました。

4. Localisationファイルを作る

ディシジョンのローカライズはあまり手間のかかるものでもないので、さらっと終わらせましょう。

準備

右クリック→新規作成→テキストドキュメントで.txtを作ってから、拡張子を.ymlに変更します。

名前は"_l_english.yml"で終わらせることを忘れないこと

これをエディタで開いてみます。すると、UTF-8でエンコードする設定になっていることが分かると思います。Localisationファイルは必ずUTF-8 with BOMでエンコードされていなければならないので、これを変更します。

右下にエンコードの文字コードが書いてあるはず

VSCodeの場合、右下のUTF-8と表示されているところをクリックすると、ウィンドウ上部に「エンコード付きで保存」という選択肢が出てきます。

これを選択すると、エンコードする文字コードの種類がいろいろ出てきます。UTF-8 with BOMを選びましょう。

これでLocalisationファイル記述の準備ができました。

記述

まず、l_english:を最初に持ってきます。第2回でも言及しましたが、Localisationの内容はすべてこの中に書いていく必要があります。

l_english:

次に、ディシジョンタイトルを2つづつ持ってきます。この時、タイトルの後ろに"_title:0""_desc:0"を付けます。

l_english:
 testdayo_decisions_01_title:0
 testdayo_decisions_01_desc:0
 testdayo_decisions_02_title:0
 testdayo_decisions_02_desc:0
 testdayo_decisions_03_title:0
 testdayo_decisions_03_desc:0

この0の後に半角スペースを1つおき、その後に""を持ってきてその中に名称や説明文を記述します。説明文を記述したくない場合は、""の中に何も入れないで下さい。
(ちなみにこの際、日本語を入れようとするとすべて???と表示されてしまうので、英語で書いておきましょう。)

l_english:
 testdayo_decisions_01_title:0 "Develop and Rebels"
 testdayo_decisions_01_desc:0 ""
 testdayo_decisions_02_title:0 "Super Stability"
 testdayo_decisions_02_desc:0 "Stability cost modifier is no longer needed."
 testdayo_decisions_03_title:0 "Conversion"
 testdayo_decisions_03_desc:0 "Now people have an awareness of the true faith."

この場合、1つ目のディシジョンのみ説明文が表示されないことになります。
そして、これでlicalisationファイルの記述が終わりました。動作確認してみます。

ちゃんと反映されていますね。画像では伝わりませんが、1つ目のディシジョンの説明文はありません。
これでディシジョン編その1は終わりです。


今回はこれで終わりです。一通りディシジョンを作れるようになりましたね。今後はcommonフォルダを適当に見ていきながら進めていきます。

次回:まだ



この記事が気に入ったらサポートをしてみませんか?