OnDamaged
このイベントに結びつけられたスクリプトは、オブジェクトがダメージを受けたときに発動する。
Trigger
クリーチャー、ドア、配置オブジェクトがヒットポイントを失ったとき
Function(s)
GetLastDamager() は、OBJECT_SELFに対して最後にダメージを与えた(つまりこのイベントを発動させた)オブジェクトを返す。
GetTotalDamageDealt() は、クリーチャーに与えられたダメージの量を返す(ドアや配置オブジェクトのOnDamagedイベントに入れて使っている場合は、0を返す)。
GetDamageDealtByType(int
nDamageType) は、特定の攻撃によって与えられたダメージの量を返す。
GetCurrentHitPoints(object
oObject = OBJECT_SELF) は、イベントを呼び出した主体の現在のヒットポイントを返すのに使うことができる。
GetMaxHitPoints(object oObject = OBJECT_SELF) は、最大ヒットポイントを返すのに使うことができる(なお、GetCurrentHitPoints(object
oObject = OBJECT_SELF) とともに使うことで、そのクリーチャーがどれくらいやばい状況なのかを取得することもできる)。
DetermineCombatRound(object,
int) は、標準的な戦闘アクションを決めるのに使うことができる。
Remarks
もしクリーチャーが、見ることのできない誰かによって傷つけられたなら、そのクリーチャーは攻撃者を捜そうと試みる。攻撃者を見つけることができれば、ターゲットの位置を決めて攻撃する。
Example
// クリーチャーのOnDamagedイベントに置く
// クリーチャーがヒットポイントの半分以上を失うと、// "CAVE_EXIT" というタグのウェイポイントへ退却し、そこで消える。will retreat to a waypoint tagged "CAVE_EXIT" and disappear
void main()
{
int nEvent = GetUserDefinedEventNumber();
if (nEvent = 1006) // OnDamaged event
{
int nMaxHP = GetMaxHitPoints(); // OBJECT_SELF(イベントの呼び出し主)がデフォルト
int nCurHP = GetCurrentHitPoints(); // OBJECT_SELF(イベントの呼び出し主)がデフォルト
// 最大値の半分より少ない場合
if (nCurHP < (nMaxHP / 2))
{
// そのクリーチャーがしていることをすべて止める
ClearAllActions();
// 悲鳴を上げる
ActionSpeakString("I'm being violated!");
// 一目散に逃げ出す
ActionMoveToObject(GetObjectByTag("CAVE_EXIT"), TRUE);
// 自身を破壊(出口で消えるように見せる)
ActionDoCommand(DestroyObject(OBJECT_SELF));
// 一切のAIコマンドを受け付けなくする(完全破壊!)
SetCommandable(FALSE);
}
}
}
See Also
JP team: weed