AIスクリプトリファレンス

命令(建物系)

build <building>

■説明
この命令は指定された建物を建設する。
<building>には建物系列のワイルドカードパラメータを使用してよい。

■注釈
自軍の町の範囲内(sn-maximum-town-size)に指定した建物を建設する。町の範囲内のどこに建物が建設されるかはランダムである。ただし、畑は町の中心の周り、家は町の中心から4マス離れた場所周辺に建設される。sn-maximum-town-sizeを非常に小さい値にすると建設スペースが足りずに建物の建設が保留される。この場合、sn-maximum-town-sizeを大きな値に変更した瞬間に保留されていた建物の建設が行われる。建設の保留を回避するためには建物の数が増えるにしたがってsn-maximum-town-sizeを大きくしていく必要がある。

「can-build」条件を使用せず建設不可能な状態で「build」命令を実行した場合、その建物は建設されない。ただし、建設に失敗すると、それ以降その種類の建物が建設できなくなることがあるので「build」命令は常に「can-build」条件といっしょに使う必要がある。

(defrule
(resource-found wood)
(can-build lumber-camp)
=>
(build lumber-camp)
(disable-self)
)

build-forward <building>

■説明
この命令は敵の近くに指定された建物を建設する。
<building>には建物系列のワイルドカードパラメータを使用してよい。

■注釈
発見した敵の建物から約3〜10タイルくらいのところに建物を建設する。ただし、伐採所、採掘所、家などは敵陣近くに建設することはできない。敵の建物を1つも発見していない場合は、敵陣近くに建設できないので注意する必要がある。下記の例は探索済みの敵の建物が1つ以上ある場合、敵陣近くに射手育成所を建設するルールである。

(defrule
  (players-building-count any-enemy >=1)  
  (can-build archery-range)
=>
  (build-forward archery-range)
(disable-self) )

build-gate <perimeter>

■説明
この命令は指定した境界線の壁の一部として門を建設する。

■注釈
門は壁と同様に境界線1または境界線2の上にしか建設できない。また、建設できる門の数には制限がある。下記の例は境界線1の上に門を建設するルールである。

(defrule
  (can-build-gate 1)
=> (build-gate 1) (disable-self) )

build-wall <perimeter> <wall-type>

■説明
この命令は指定された境界線上に指定された壁の種類の壁を建設する。
<wall-type>には壁系列のワイルドカードパラメータを使用してよい。

■注釈
壁を建設するためには事前に「enable-wall-placement」命令を使用して(他の建物が建設できないように)壁領域を予約する必要がある。下記の例は境界線1に柵を建設する例である。

(defrule
(can-build-wall 1 palisade-wall)
=> (build-wall 1 palisade-wall)
)

enable-wall-placement <perimeter>

■説明
この命令は指定された境界線への壁の配置を可能にする。enable-wall-placementは、配置規則の残りに計画をさせ、すべての建築物を将来の壁ラインから最低1タイル離して配置させる。
壁の建設を計画しているなら、ゲーム開始時にどの境界線の壁を使おうとしているか明示的に定義する必要がある。これは1度の命令で初期設定で使うべきである。

■注釈
壁を建設する場合は必ずゲーム開始時に「enable-wall-placement」命令を実行する必要がある。この命令を実行すると予約された壁領域に建物が建設できなくなるので、一度も壁を建設しない場合は実行しない方がよい。下記の例は、ゲーム開始時に境界線1の壁領域を予約する例である。

(defrule
  (true)
=>
  (enable-wall-placement 1)
)

delete-building <building>

■説明
この命令はちょうど1つの指定された建物を破壊する。

■注釈
指定した種類の建物のうちどれが破壊されるかは不定である。下記の例はデスマッチ用AIで、木を売却して木が10000未満になったら建築スペース確保用に市場を破壊する例である。

(defrule
  (wood < 10000)
=> (delete-building market) (disable-self) )