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

条件(資源・市場系)

wood-amount <rel-op> <value>

■説明
この条件はコンピュータプレイヤーの木の量をチェックする。

■注釈
AIスクリプトで使用頻度の高い条件である。下記の例は木が300以上になった場合、学問所を建設する例である。このように「can-build」条件だけでなく「wood-amount」も使うことで、資源に余裕があったら建設するというルールが作成できる。

(defrule
  (wood-amount >= 300)
  (building-type-count-total university == 0)
  (can-build university)
=>
  (build university)
)

food-amount <rel-op> <value>

■説明
この条件はコンピュータプレイヤーの食料の量をチェックする。

■注釈
使い方は「wood-amount」と同様。下記の例では食料が余ったら斥候系のユニットを生産するルールである。

(defrule
  (food-amount >= 1000)
  (can-train scout-cavalry-line)
=>
  (train scout-cavalry-line)
)

gold-amount <rel-op> <value>

■説明
この条件はコンピュータプレイヤーの金の量をチェックする。

■注釈
使い方は「wood-amount」と同様。下記の例では金が100未満になったら斥候系のユニットを生産するルールである。

(defrule
  (gold-amount < 100)
  (can-train scout-cavalry-line)
=>
  (train scout-cavalry-line)
)

stone-amount <rel-op> <value>

■説明
この条件はコンピュータプレイヤーの石の量をチェックする。

■注釈
使い方は「wood-amount」と同様。下記の例では石が250以上になったら塔を建設するルールである。

(defrule
  (stone-amount >= 250)
(can-build watch-tower-line)
=>
(build watch-tower-line) )

escrow-amount <resource-type> <rel-op> <value>

■説明
この条件はコンピュータプレイヤーの指定された資源の種類の備蓄資源の量をチェックする。

■注釈
備蓄資源の量を判定したい場合に使用する。「set-escrow-percentage」で0を設定している場合は、備蓄資源は常に0となる。

(defrule
  (escrow-amount wood >= 200)
=>
(chat-local-to-self "備蓄されている木が200になりました。") (disable-self) )

resource-found <resource-type>

■説明
この条件はコンピュータプレイヤーが指定された資源を発見したかチェックする。
この条件はゲームの最初に使用するべきである。一度ある資源の条件が真になったら、その資源については条件が真のままである。この文で、foodとは果実の木を指し、woodとは(立ち木ではなく)森の木を指す。

■注釈
ゲーム序盤、粉ひき所や伐採所の建設するときの判定に使用する条件。以下の例では、果実の木が発見されたら粉ひき所を建設する例である。「resource-found」条件を使用しないと果実の木が発見される前に建設されてしまう(つまり無意味な場所に建設される)ので注意。
<パラメータの説明>
(resource-found food) →果実の木が発見された場合、条件が満たされる。(羊、鹿など発見しても条件は満たされない)
(resource-found wood) →森が発見された場合、条件が満たされる。(立ち木を発見しても条件は満たされない)
(resource-found gold) →金が発見された場合、条件が満たされる。
(resource-found stone) →石が発見された場合、条件が満たされる。

(defrule
  (resource-found food)
  (unit-type-count-total mill == 0)
(can-build mill)
=>
(build mill) )

sheep-and-forage-too-far

■説明
この条件はコンピュータプレイヤーの格納場所(粉ひき所か町の中心)から8タイル以内に果実の木または羊があるかチェックする。

■注釈
暗黒の時代に苺と羊が近くにあるか判定するときに使用する。この条件を判定して畑の枚数を増加したり鹿狩りをさせるなどの使い方がある。

(defrule
(sheep-and-forage-too-far)
=> (chat-local-to-self "苺と羊を食べ終わりました。") (disable-self) )

dropsite-min-distance <resource-type> <rel-op> <value>

■説明
この条件はコンピュータプレイヤーの指定された資源種類へ歩く最小距離をチェックする。 長い歩き距離は新しい貯蔵庫の必要を暗に示している。
時代の進化に必要な最初の貯蔵庫の建設にこの条件を使用するのは薦められない。もし最初に資源が偶然町の中心に十分近かったら、最初の貯蔵庫の建設が遅れ、ゆっくりとした時代の進化となってしまうだろう。

■注釈
伐採所や採掘所からの資源までの最短距離を判定する。下記の例では木への距離が5タイル離れたら伐採所を追加する例である。

(defrule
(dropsite-min-distance wood >= 5)
(can-build lumber-camp)
=> (build lumber-camp) )

can-buy-commodity <commodity>

■説明
この条件はコンピュータプレイヤーが指定された資源ひと口(1ロット)を買うことができるかチェックする。
備蓄資源は資源量としてカウントしない。

■注釈
市場で100の資源を買えるかどうかの判定に使用する。下記の例は食料が100未満になったら食料を買う例である。

(defrule
  (food-amount < 100)
(can-buy-commodity food)
=>
(buy-commodity food) )

can-sell-commodity <commodity>

■説明
この条件はコンピュータプレイヤーが指定された資源ひと口(1ロット)を売ることができるかチェックする。
備蓄資源は資源量としてカウントしない。

■注釈
市場で100の資源を売れるかどうかの判定に使用する。下記の例は木が2000以上になったら売る例である。

(defrule
(wood-amount >= 2000)
(can-sell-commodity wood)
=>
(sell-commodity wood) )

commodity-buying-price <commodity> <rel-op> <value>

■説明
この条件は指定された資源の現在の買値をチェックする。

■注釈
主に資源の売却時に使用する。下記の例では食料の買値が150未満の場合、食料を買うルールである。

(defrule
(commodity-buying-price food < 150) (can-buy-commodity food)
=> (buy-commodity food) )

commodity-selling-price <commodity> <rel-op> <value>

■説明
この条件は指定された資源の現在の売値をチェックする。

■注釈
主に資源の購入時に使用する。下記の例では食料の買値が50以上の場合、木を売るルールである。

(defrule
(commodity-selling-price wood >= 50) (can-sell-commodity wood)
=> (sell-commodity wood) )

players-tribute <player-number> <resource-type> <rel-op> <value>

■説明
この条件はプレイヤーがゲーム中に与えられた貢物をチェックする。
指定された資源の種類の貢物のみチェックされる。
<player-number>に「any」または「every」ワイルドカードパラメータを使用してよい。

■注釈
もらった貢物のゲーム開始時から累計を判定する条件である。下記の例では敵から食料を200以上貢がれた場合、にその敵に対する外交姿勢を味方に変更するルールである。

(defrule
(players-tribute any-enemy food >= 200)
=> (set-stance this-any-enemy ally) )

players-tribute-memory <player-number> <resource-type> <rel-op> <value>

■説明
この条件はプレイヤーがプレイヤーの貢物メモリがクリアされてから後に与えられた貢物をチェックする。
指定された資源の種類の貢物メモリのみチェックされる。
<player-number>に「any」または「every」ワイルドカードパラメータを使用してよい。

■注釈
下記の例は味方から食料をもらうたびにthank youとチャットする例である。「clear-tribute-memory」命令で貢物メモリを0にクリアすることで、貢物をもらうたびにこのルールが実行される。「players-tribute」条件の場合、貢がれた量の累計なので2度目以降に貢物をもらったかどうか判定することができない。

(defrule
(players-tribute-memory any-ally food > 0)
=> (clear-tribute-memory this-any-ally food) (chat-to-allies "thank you") )