5章 領主の時代の軍事 〜軍の生産と攻撃〜

1.散兵の生産

領主の時代になったら槍散兵で攻めるので、散兵を連続生産する。ルールの書き方は基本的に町の人の生産と同じである。

以下のAIスクリプトは領主の時代に散兵を30ユニットまで生産する例である。

;●領主の時代の散兵生産
(defrule
  (current-age == feudal-age)                             ;領主の時代
  (unit-type-count-total skirmisher-line < 30)            ;散兵30未満
  (can-train skirmisher-line)
=>
  (train skirmisher-line)                                 ;散兵の作成
)

★ポイント
can-train条件で生産可能であることが判定できるので、射手育成所が1つ以上や生産用資源が十分あるのような条件を別途設定する必要はない。

2.槍兵の生産

槍兵の生産も散兵同様に作成する。ただし散兵5に対して槍兵1くらいの割合で生産をしたいので工夫をする。

;●領主の時代の槍兵生産
(defrule
  (current-age == feudal-age)                             ;領主の時代
  (unit-type-count-total spearman-line < 1)               ;槍兵1未満
  (can-train spearman-line)
=>
  (train spearman-line)                                   ;槍兵の作成
)
(defrule (current-age == feudal-age) ;領主の時代 (unit-type-count-total skirmisher-line >= 6) ;散兵6以上 (unit-type-count-total spearman-line < 2) ;槍兵2未満 (can-train spearman-line) => (train spearman-line) ;槍兵の作成 )
(defrule (current-age == feudal-age) ;領主の時代 (unit-type-count-total skirmisher-line >= 11) ;散兵11以上 (unit-type-count-total spearman-line < 3) ;槍兵3未満 (can-train spearman-line) => (train spearman-line) ;槍兵の作成 )
(defrule (current-age == feudal-age) ;領主の時代 (unit-type-count-total skirmisher-line >= 16) ;散兵16以上 (unit-type-count-total spearman-line < 4) ;槍兵4未満 (can-train spearman-line) => (train spearman-line) ;槍兵の作成 )

★ポイント
1つのルールで槍兵4未満の場合に生産するとすると連続で4体生産してしまうので、散兵の数を判定して徐々に槍兵を生産するようにする。

3.攻撃

兵を生産し、ある程度数が貯ったら攻撃を行う。

以下のAIスクリプトは軍隊が30ユニット以上になったら攻撃する例である。

;●攻撃
(defrule
  (current-age == feudal-age)                             ;領主の時代
  (soldier-count >= 30)                                   ;自軍30以上
=>
  (set-strategic-number sn-percent-attack-soldiers 100)   ;100%攻撃
  (attack-now)                                            ;攻撃する。
  (chat-local-to-self "攻撃しろ")
)

【条件】
(soldier-count 「演算子」 「値」) … 軍隊の数を判定する。町の人は含まない人数が計算される。

【命令】
(attack-now) … 守備軍の設定された割合のユニットが攻撃に行く。

★ポイント
攻撃はタイマーなどを使用して定期的に実行した方がより良い。

4.矢羽根の研究

散兵がある程度生産できたら、矢羽根を研究する。

以下のAIスクリプトはが散兵が15以上になったら矢羽根を研究する例である。

;●畑の建設(射手育成所が1つの場合)
(defrule
  (current-age == feudal-age)                             ;領主の時代
  (unit-type-count-total skirmisher-line >= 15)           ;散兵15以上
(can-research ri-fletching) ;矢羽根が研究可能 => (research ri-fletching) ;矢羽根を研究する (chat-local-to-self "矢羽根を研究します。") )

5.まとめ

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