4章 領主の時代の内政 〜序盤中盤の内政展開〜

1.領主の初期設定

領主の時代になったらすぐに、進化時に設定したゴール1の値を「1:進化中」から「0:進化中ではない」に変更する。また、進化中に木の収集を重視にしていた資源の収集割合も変更する。

以下のAIスクリプトは領主の時代にゴール1の値を設定し、資源収集割合を変更する例である。

;●領主の時代の初期設定
(defrule
  (current-age == feudal-age)                             ;領主の時代
=>
  (set-goal 1 0)                                          ;ゴール1に0を設定
  (set-strategic-number sn-wood-gatherer-percentage   60) ;木を収集する人の割合
  (set-strategic-number sn-food-gatherer-percentage   40) ;食料を収集する人の割合
  (set-strategic-number sn-gold-gatherer-percentage    0) ;金を収集する人の割合
  (set-strategic-number sn-stone-gatherer-percentage   0) ;石を収集する人の割合
  (chat-local-to-self "資源配分の変更(木:60 食:40 金: 0 石: 0)")
  (disable-self)
)

★ポイント
この例のAIでは、城主の時代、帝王の時代にも進化中判定にゴール1をつかうので、進化するときと進化し終わったときに設定を忘れないようにする必要がある。

2.射手育成所の建設

領主の時代なってすぐにやることは、射手育成所の建設と最も重要な研究項目である両刃斧の研究である。ちなみにAIは同じ種類の建物を2つ以上同時に建設できないため、1つめの射手育成所の建設完了後に2つめを建設することになる。

以下のAIスクリプトは領主の時代に射手育成所を2つ建設する例と両刃斧の研究の例である。

;●射手育成所の建設
(defrule
  (current-age == feudal-age)                             ;領主の時代
  (building-type-count-total archery-range < 2)           ;射手育成所が2未満
  (can-build archery-range)                               ;射手育成所が建設可能
=>
  (build archery-range)                                   ;射手育成所を建設する
  (chat-local-to-self "射手育成所を建設します。")
)
;●両刃斧の研究
(defrule
  (current-age == feudal-age)                             ;領主の時代
  (can-research ri-double-bit-axe)                        ;両刃斧が研究可能
=>
  (research ri-double-bit-axe)                            ;両刃斧の研究をする
  (chat-local-to-self "両刃斧の研究をします。")
)

3.町の人の生産

暗黒の時代は町の人を25人までと数を決めて生産したが、領主の時代以降は、次の時代に進化できる資源が貯まるまで生産しつづける。また町の人の上限が100人の条件も追加する。

以下のAIスクリプトは領主の時代に町の人を生産する例である。

;●領主の時代の町の人の生産
(defrule
  (current-age == feudal-age)                             ;領主の時代
  (not(can-research castle-age))                          ;城主の時代の研究が不可能
  (unit-type-count-total villager < 100)                  ;町の人が100人未満
  (can-train villager)                                    ;町の人が生産可能
=>
  (train villager)                                        ;町の人を生産する
  (chat-local-to-self "町の人を生産します。")
)

【条件】
(not(条件)) … カッコ内の条件を満たさないとき。

★ポイント
AOCのAIでは町の人を100人以上生産しても待機中の人になる(AOKでは50人)。

4.領主の畑の建設

畑は一度に複数枚張れないため、領主の時代では畑をコツコツと張り続ける必要がある。ただし、常に畑を張り続けていると木が貯まらずに射手育成所が2つ建設できないので、射手育成所が1つ以上で木が余っている場合、または射手育成所が2つ以上の場合に畑を建設する。

以下のAIスクリプトは領主の時代に畑を建設する例である。

;●畑の建設(射手育成所が1つの場合)
(defrule
  (current-age == feudal-age)                             ;領主の時代
  (building-type-count-total archery-range >= 1)          ;射手育成所が1以上
(wood-amount >= 235) ;木が235以上
(building-type-count-total farm < 15) ;畑が15枚未満
(can-build farm) ;畑が建設可能 => (build farm) ;畑を建設する (chat-local-to-self "畑を建設します。") ) ;●畑の建設(射手育成所が2つ以上の場合) (defrule (current-age == feudal-age) ;領主の時代 (building-type-count-total archery-range >= 2) ;射手育成所が2以上
(building-type-count-total farm < 35) ;畑が35枚未満 (idle-farm-count < 2) ;未使用の畑数2未満
(can-build farm) ;畑が建設可能 => (build farm) ;畑を建設する (chat-local-to-self "畑を建設します。") )

【条件】
(idle-farm-count 「演算子」 「値」) … 未使用の畑の枚数を判定。

★ポイント
射手育成所が2つある場合は、必要以上に畑を建設しないように、未使用の畑が2未満という条件を加えている。

5.鉄工所の建設

射手育成所が2つ建設できたら木が貯まり次第、研究と城主進化用に鉄工所を建設する。

;●鉄工所の建設
(defrule
  (current-age == feudal-age)                             ;領主の時代
  (building-type-count-total archery-range >= 2)          ;射手育成所が2以上
(building-type-count-total blacksmith == 0) ;鉄工所がない (can-build blacksmith) ;鉄工所が建設可能 => (build blacksmith) ;鉄工所を建設する (chat-local-to-self "鉄工所を建設します。") )

6.採掘所と資源調整

鉄工所を建設し、領主の時代中盤になったら進化のために資源配分を変更し金を掘り始める。また同時に採掘所の建設も行う。

;●採掘所の建設
(defrule
  (current-age == feudal-age)                             ;領主の時代
  (strategic-number sn-gold-gatherer-percentage >= 1)     ;金の割合が1%以上
(building-type-count-total mining-camp == 0) ;採掘所がない (can-build mining-camp) ;採掘所が建設可能 => (build mining-camp) ;採掘所を建設する (chat-local-to-self "採掘所を建設します。") ) ;●資源配分の変更 (defrule (current-age == feudal-age) ;領主の時代 (building-type-count-total blacksmith >= 1) ;鉄工所がある
(wood-amount >= 150) ;木が150以上 => (set-strategic-number sn-wood-gatherer-percentage 35) ;木を収集する人の割合 (set-strategic-number sn-food-gatherer-percentage 60) ;食料を収集する人の割合 (set-strategic-number sn-gold-gatherer-percentage 5) ;金を収集する人の割合 (set-strategic-number sn-stone-gatherer-percentage 0) ;石を収集する人の割合 (chat-local-to-self "資源配分の変更(木:35 食:60 金: 5 石: 0)") (disable-self) )

【条件】
(strategic-number 「戦略数値名」 「演算子」 「値」) … 戦略数値の値を判定する。

★ポイント
金を掘り始めるタイミングで採掘所を建設するため、採掘所建設の条件に金の収集割合が1以上を加えている。これで金を掘っていないのに、不要に採掘所を作ることを避けられる。

7.まとめ

4章までのAIをダウンロード(sample04.per)