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

命令(設定系)

set-goal <goal-id> <value>

■説明
この命令は指定されたゴールに指定された値を設定する。

■注釈
ゴールとは任意の値を記憶させておく変数である。<goal-id>は1〜40まで設定可能。例えばゴール1にそのAIの戦術( ゴール1が2のときは散兵ラッシュ、3のときは弓ラッシュなど)を記憶させておくような使い方がある。下記の例は、敵の民兵系が5体以上いる場合、ゴール1に3を(弓ラッシュを)設定するルールである。

(defrule
  (not(goal 1 3))
(players-unit-type-count any-enemy militiaman-line >= 5)
=>
(set-goal 1 3) (chat-local-to-self "弓ラッシュに変更")
) (defrule (goal 1 2)
(can-train skirmisher-line)
=>
(train skirmisher-line)
) (defrule (goal 1 3)
(can-train archer-line)
=>
(train archer-line)
)

set-shared-goal <shared-goal-id> <value>

■説明
この命令は指定された共有ゴール(コンピュータプレイヤー間で共有されるゴール)に指定された値を設定する。
すべてのコンピュータプレイヤーが同じチームのときのみ使用される。

■注釈
設定値を同盟しているAIで共有するゴール。<goal-id>は1〜255まで設定可能。チーム戦でゴールの値を共有したい場合に使用する。下記の例は騎士が20以上の場合に攻撃をしかけて共有ゴール10に1を設定するルールである。味方のAIが共有ゴール10を参照して同時に攻撃を仕掛けるなどの使いかたがある。

(defrule
  (attack-soldier-count == 0)
(unit-type-count knight-line >= 20)
=>
(attack-now) (set-shared-goal 10 1) (chat-local-to-self "攻撃中")
)

set-doctrine <value>

■説明
この命令はdoctrine(方針)に指定された値を設定する。

■注釈
使い方はゴールと同じ。
※ES社の開発者によると、AOKのAIスクリプト仕様の作成当初、変数としての用法で「doctrine」があったが、後から同じ用途で使用できる「goal」が追加されたとのこと。

(defrule
  (not(doctrine 1 3))
(players-unit-type-count any-enemy militiaman-line >= 5)
=>
(set-doctrine 1 3) (chat-local-to-self "弓ラッシュに変更")
)

set-strategic-number <strategic-number> <value>

■説明
この命令は指定された戦略番号に指定された値を設定する。
戦略番号のページ参照。

■注釈
戦略番号とはAIの動作を決める設定値で100種類以上ある。下記の例は、ゲーム開始時に戦略番号「町の最大サイズ」に12を設定するルールである。主にゲーム開始時の初期設定や状況に応じて町の最大サイズを変えるときに使用される。

(defrule
(true)
=> (set-strategic-number sn-maximum-town-size 12)
)

set-difficulty-parameter <difficulty-parameter> <value>

■説明
この命令は指定された難易度パラメータに指定された値を設定する。

■注釈
戦略番号と同様の使い方で、<difficulty-parameter>にはability-to-dodge-missilesとability-to-maintain-distanceの2種類がある。下記の例は、難易度パラメータの射程ユニットの引き撃ちしない率に0を設定するルール(つまり必ず引き撃ちする)である。

(defrule
(true)
=> (set-difficulty-parameter ability-to-maintain-distance 0)
)

set-stance <player-number> <diplomatic-stance>

■説明
この命令は指定されたプレイヤーに対する外交姿勢を設定する。
<player-number>に「any」または「every」ワイルドカードパラメータを使用してよい。
また、<player-number>にルール変数を使用してもよい。

■注釈
外交姿勢が変更可能なゲームの時に使用する。下記の例は敵から金500を貢がれた場合にそのプレイヤーに対する外交姿勢を同盟に設定するルールである。

(defrule
  (players-tribute-memory any-enemy gold >= 500)
=> (clear-tribute-memory this-any-enemy gold)
(set-stance this-any-enemy ally) )

set-signal <signal-id>

■説明
この命令はトリガシステムによってチェックできる指定されたシグナルを設定する。

■注釈
シナリオとAIを連動させるために使用する命令である。シナリオに指定したシグナルを送る。下記の例はプレイヤー1から金1000を貢がれたらシグナル1を設定するルールである。

(defrule
  (players-tribute-memory 1 gold >= 1000)
=>
  (clear-tribute-memory this-any-enemy gold)
  (set-signal 1)
  (disable-self)
)

set-author-name <string>

■説明
ドキュメントに記載なし。

■注釈
AIの作者の名前を設定する命令。AIの動作やゲーム中の表示には全く影響がない。AIスクリプトに作者名をコメントとして記述することとの違いは、コンパイルされたAIデータに命令として作者名が残ることである。AIを使用したリプレイ内にコンパイルされたAIがデータとして残っている。

(defrule
  (true)
=> (set-author-name "bari") (disable-self) )

set-author-email <string>

■説明
ドキュメントに記載なし。

■注釈
AIの作者のEメールを設定する命令。AIの動作やゲーム中に表示には全く影響がない。AIスクリプトに作者Eメールをコメントとして記述することとの違いは、コンパイルされたAIデータに命令として作者Eメールが残ることである。AIを使用したリプレイ内にコンパイルされたAIがデータとして残っている。

(defrule
  (true)
=> (set-author-email "hoge@hoge") (disable-self) )

set-author-version <string>

■説明
ドキュメントに記載なし。

■注釈
AIのバージョンを設定する命令。AIの動作やゲーム中に表示には全く影響がない。AIスクリプトにバージョンをコメントとして記述することとの違いは、コンパイルされたAIデータに命令としてバージョンが残ることである。AIを使用したリプレイ内にコンパイルされたAIがデータとして残っている。

(defrule
  (true)
=> (set-author-version "Kosmos2.00") (disable-self) )