トリガ
これらはスクリプトがAlephOneが特定の時や出来事で呼ぶように定義できる関数である。以下は、HPを回復させるコード:
#sh()
Triggers = {}
function Triggers.idle()
for p in Players() do if p.life < 150 and not p.dead then p.life = p.life + 1 end end
end
}}
スクリプト開始時にTriggers = {}を呼び出す理由は、スクリプトの起動を早くするため。
:init(restoring_game)|レベルの最初。
:restoring_game|保存されたゲームから再開するときはtrue
:cleanup()|レベルの最後。
主にこれはゲーム後の虐殺レポートの前にネットゲームの点を変える最後のチャンスを意図している
:idle()|
ティック(1/30秒)ごとに、物理などの前
:postidle()|
ティックごとに、物理などの後で、描画の前
:start_refuel(type, player_index, side_index)|
プレーヤーが回復パネルを使い始める前
:end_refuel(type, player_index, side_index)|
プレーヤーが回復パネルを使い終わった後
:tag_switch(tag, player)|
プレーヤーがタグ・スイッチを使うとき
武器(拳骨など)でスイッチを操作したときは呼ばれない
:light_switch(light, player)|
プレーヤーがライト・スイッチを使うとき
武器(拳骨など)でスイッチを操作したときは呼ばれない
:platform_switch(platform, player)|
プレーヤーがプラットフォーム・スイッチを使うとき
武器(拳骨など)でスイッチを操作したときは呼ばれない
:terminal_enter(terminal_id, player)|
プレーヤーがターミナルを使い始めたとき
:terminal_exit(terminal_id, player)|
プレーヤーがターミナルを使い終えたとき
:pattern_buffer(buffer_id, player)|
プレーヤーがパターンバッファを使うとき
:got_item(type, player)|
プレーヤーがアイテムを拾ったとき
さらにスクリプトが.items.add()を使ってアイテムを得たときも
:light_activated(index)|
ライトがオンになったかオフになったとき
:platform_activated(index)|
プラットフォームが起動したか停止したとき
:player_revived(player)|
プレーヤーが生き返ったとき(ネットワークゲームでしか起こらない)
:player_killed(player, aggressor_player, action, projectile)|
プレーヤーが死んだとき
:aggressor_player|プレーヤーを殺したプレーヤー、自分もありうる(自殺)、プレーヤー以外の時は-1
:action|現時点はニューモニックがないため使用は困難
:projectile| 最後の一撃を加えたショット、ないときは-1
:player_damaged(victim_player_index, aggressor_player_index, aggressor_monster_index, damage_type, damage_amount, projectile)|
プレーヤーがダメージを受けた時で、適用可能なら死ぬ前。プレーヤーのスーツのエネルギーか酸素はこのトリガーが呼ばれたときには負でもよい。もしトリガがリターンしたときにまだ負の時は、0にセットされる。プレーヤーのスーツのエネルギーはこのトリガが返った後再評価されるため、スクリプトはプレーヤーの死を防ぐことができる。
:victim_player_index|犠牲者がプレーヤー以外からダメージを受けたときは-1
:aggressor_monster_index|犠牲者がプレーヤーでもモンスターでもないものからダメージを受けたときは-1
:damage_type|ダメージ型の一つ。例: _damage_fusion
:damage_amount|最近プレーヤーから減らされた量。もし_damage_oxygen_drainの時は、damage_amountはプレーヤーの酸素に対して評価される。さもなければスーツエネルギーに対して評価される,
:projectile|ダメージをもたらしたショット、ないときは-1
:monster_killed(monster, aggressor_player, projectile)|
モンスターが死んだとき
:aggressor_player|殺したプレーヤーのインデックス、プレーヤー以外に殺されたときは-1
:projectile|最後の一撃を加えたショット、ないときは-1
これはモンスターが致死のダメージを受けた後だが、モンスターリストから削除される前に呼ばれる。これをいつnew_monsterが作られたモンスターが死んだかを見つけるために使うことができるが、select_monsterによって発見されたモンスターはすでに致死ダメージを受けているかもしれないので、 select_monsterを使うときはそのような場合を検査する必要があるかもしれない。
:item_created(item_index)|
アイテムが作られてどこか地面に置かれてら(か浮いてる)とき
現在、初期配置はLuaが初期化される前に行われるため、初期配置に対してはトリガーしない。
:projectile_detonated(type, owner, polygon, x, y, z)|
ショットが命中し、効果ダメージをエリアに行った後