ここではディシジョンの作り方について説明していきます。
ディシジョンの基本的な構造は以下の通りです。
country_decisions = { #各ディシジョンファイルはcountry_decisionsの括弧の中に内包する必要があります。 decision_text = { # ディシジョンのタイトル potential = { # ディシジョンがゲーム中のディシジョンタブに表示される条件 } allow = { # ディシジョンを実行する条件 } effect = { # ディシジョンの効果 } ai_will_do = { # AIの実行可能性 factor = 1 } } }
実際のディシジョンファイルを見ると各項目が複雑に見えますが、大本の枠組みは一緒です。
以下では、「ウルバン砲の導入」を題材に、実際にディシジョンを作っていきます。
タイトルはintroduce_the_dardanelles_gun(ウルバン砲の英語名)にします。他のディシジョンと同じタイトルになっていないかどうか、確認しましょう。
country_decisions = { introduce_the_dardanelles_gun = {
前述のようにポテンシャルは、「ディシジョンがゲームに登場する条件」です。
ウルバン砲ディシジョンがゲームに現れる条件として、ここでは以下のものを設定しました。
1.対象国はオスマン朝
2.時代は1444年以降だが、大砲ユニットが製造できるようになる技術7以前
3.君主の軍事能力が高い
4.コンスタンティノープルがビザンツ領
5.国庫にある程度の資金がある
1については、国家タグを使います。これは、tag = (三文字の国家タグ)で指定できます。
オスマン朝のタグはTURですので、以下のようになります。
tag = TUR
2については、年代の設定と技術の設定で対応します。
ディシジョンをある年以降に発生させるようにするにはis_year = (指定年)を使います。
また、技術についてはadm_tech = (技術レベル)のような形です。
is_year = 1444 NOT = { mil_tech = 7 }
ここでNOT構文を使っているのは、技術レベルが7未満であることを条件にしているためです。
NOT構文が括弧で閉じることを忘れないようにしましょう。
3については、君主の能力を、ADM、DIP、MILの各分野と数値の組み合わせで設定できます。
MIL = 3
これにより、「君主の軍事能力が3以上の場合」にディシジョンがリストに出現します。
4については、「コンスタンティノープルをオスマン朝が支配していないこと」を条件にします。
あるプロヴィンスを支配しているかどうかの判定は、owns = (プロヴィンス番号)で行います。プロヴィンス番号についてはhistory/provincesフォルダで確認可能です。
今回の例では「支配していないこと」ですので、NOT構文を使うことを忘れずに。
NOT = { owns = 151 } # Constantinople
5については、「年間収入の2割が国庫にあること」を条件にします。
この判定はyears_of_income = (小数点第一位以下)で行います。等号右側部分が1の場合は年間収入の100%、0.5の場合は50%という具合です。
years_of_income = 0.2
ポテンシャル部分の設定は基本的に以上ですが、このままですと、上記の5条件を満たしている場合、このディシジョンが何度も表示されることになってしまいます。
今回の例ではそれは都合が悪いので、再発しないようにしてやりましょう。
ポテンシャルで「フラグが立っていないこと」を条件にし、ディシジョンの効果部分でそのフラグを立ててやれば、このディシジョンは一回限定になります。
その際、フラグ(flag)を使う場合と国家用の変数(country modifier)を使う場合の2種類が考えられます。
フラグや変数の可否はhas_flag = (フラグ名)やhas_country_modifier = (変数名)でチェックします。
フラグはゲーム上で確認できないのに対し、国家用の変数はタブで見ることができるので、状況に応じて使い分けるといいでしょう。
今回はフラグを使うことにします。
NOT = { has_country_flag = the_dardanelles_gun_introduced }
以上のポテンシャル部分のコードは、このようになります。
potential = { tag = TUR is_year = 1444 NOT = { mil_tech = 7 } MIL = 3 NOT = { owns = 151 } # Constantinople years_of_income = 0.2 NOT = { has_country_flag = the_dardanelles_gun_introduced } }
極端な話、実行条件はポテンシャルと全く同じでも構いません。
しかし、ポテンシャルとは違い、実行に必要な条件はゲーム中に表示されるので、ポテンシャルと実行の条件に上手く差をつけることで、プレイヤーに対し短中期目標を与えることができます。
また、この「可視化される」という特徴を利用して、テストプレイの時にはポテンシャル部分のコードを実行条件の所に便宜上移してやり、自分が設定した条件がゲームにきちんと反映されているかどうかをチェックすることもできます。
今回の例では、実行条件の部分はシンプルに、「君主の軍事能力が5以上」にしておきます。
allow = { MIL = 5 }
今回の例では、ディシジョンの効果を以下のものに設定します。
1.ウルバン砲導入のための出費
2.Military Powerの追加
3.オスマン朝の首都にArtilaryを2ユニット追加
4.先に設定したフラグ"the_dardanelles_gun_introduced"を設定
1については、add_years_of_income = xによる国庫の増減で対応します。xの部分に負の数字を入れることも可能です。
add_years_of_income = -0.1
これにより、年間収入の1割の額が減少します。
2については、add_mil_powerで対応します。軍事力だけでなく、統治力や外交力についても同様です。
add_mil_power = 100
3については、少々まわりくどい方法ですが「支配する州の中から首都に該当する州のみに、最初期の砲兵ユニットを追加する」という手段にします。
この前半部分については、効果の対象をランダムで選ばれた自国領にするrandom_owned_provinceと、そのランダムの範囲を首都のみに限定する(実質ランダム性を排除する)ためのlimit構文を使います。
また、追加するユニットは、(ユニット名) = (対象となる州)で設定できます。
random_owned_province = { limit = { is_capital = yes } large_cast_bronze_mortar = THIS large_cast_bronze_mortar = THIS }
最後に4のフラグを立ててやれば、ディシジョンの効果部分は完成です。
effect = { set_country_flag = urban_canon_introduced add_years_of_income = -0.1 add_mil_power = 100 random_owned_province = { limit = { is_capital = yes } large_cast_bronze_mortar = THIS large_cast_bronze_mortar = THIS } }
以下執筆中。