Script Example 1
Example 1 | Example 2 | Example 3 | Example 4 |

1. Rescue Hostage 1 | 一人目の人質を救出。今回は接触するとコンプリートとします。
2. Rescue Hostage 2 | 二人目を救出。
3. Escort Hostage To Extraction Zone | 二人をExtraction Zoneへ連れて行く
4. Keep Hostages Alive | 二人のうちどちらかでも死亡したら終了

事前設定
・この例では、HostageActorOnで人質にします。人質が武装してるのもおかしいので、二人のKitを<NoWeapon.kit>にしておきます。
・Objective設定で、上記のようなObjectiveを作成しておきます。
・Script:Tagsで以下の様な名前のタグを作成しておきます。その都度必要になったら作っていってもかまいません。
Timer : Objective1 Complete Timer
Timer : Objective2 Complete Timer
Timer : Objective3 Complete Timer
Timer : Objective4 Complete Timer
Timer : Objective4 Failed Timer
Timer : Mission Failed Timer
Timer : Mission Complete Timer
Flag : Objective1 Flag
Flag : Objective2 Flag
Flag : Hostage1 Flag
Flag : Hostage2 Flag

・人質に設定

Trigger | Startup
Responce | HostageActorOn <Hostage 1>
HostageActorOn <Hostage 2>
ミッション開始時点から、<Hostage 1>及び<Hostage 2>を人質として設定。

・Hostage 1が死亡したら終了

Trigger | DeathActor <Hostage 1>
Responce | TimerSet <Objective4 Failed Timer> <2>second
TimerSet <Mission Failed Timer> <4>second
Hostage 1が死亡したら、2秒後<Objective4 Failed Timer>をセット、4秒後<Mission Failed Timer>をセットします。秒数は何でもいいんですが、同じにすると後でこれらを作動させるときに画面表示の点で問題が起きます。

・Hostage 2が死亡したら終了

Trigger | DeathActor <Hostage 2>
Responce | TimerSet <Objective4 Failed Timer> <2>second
TimerSet <Mission Failed Timer> <4>second
Hostage 1の時と同じです。

・Objective4 Failed Timer作動

Trigger | TimerExpired <Objective4 Failed Timer>
Responce | ObjectiveFailed <Objective 4>
タイマーをセットしても、それによってどういう事になるのか設定しないと何にも起きないので、設定します。 Objective 4を失敗させます。

・Mission Failed Timer作動

Trigger | TimerExpired <Mission Failed Timer>
Responce | DeclareMissionFailed <Mission Failed>
<Mission Failed>と画面に表示させ、ミッションを失敗して終了します。

・Objective1 CompleteTimer作動

Trigger | TimerExpired <Objective1 Complete Timer>
Responce | ObjectiveComplete <Objective 1>
ついでにComplete Timerも設定しておきます。2〜4も同様に設定します。

・Mission Complete Timer作動

Trigger | TimerExpired <Mission Complete Timer>
Responce | DeclareMissionComplete <Mission Complete>
<Mission Complete>と表示させて終了します。

・Flag セット

Trigger | Startup
Responce | FlagSet <Objective1 Flag> <False>
FlagSet <Objective2 Flag> <False>
FlagSet <Hostage1 Flag> <False>
FlagSet <Hostage2 Flag> <False>
これは最初の人質の所でやってもかまいません。 各フラッグをFalseで設定しておいて、Objectiveを達成した時にTrueにします。

・Hostage1 Rescue

Trigger | EscortInitiated <Hostage 1>
Responce | TimerSet <Objective1 Complete Timer> <2>second
FlagSet <Objective1 Flag> <True>
Hostage 1と接触してエスコートし始めると、<Objicetive1 Complete Timer>をセットして、<Objective1 Flag>をTrueにします。

・Hostage2 Rescue

Trigger | EscortInitiated <Hostage 2>
Responce | TimerSet <Objective2 Complete Timer> <2>second
FlagSet <Objective2 Flag> <True>
Hostage 1と同様。

・Hostage1 Extraction Zoneへ

Trigger | ProximityActor <Hostage 1> <Extraction Zone> <10>meter
Responce | HostageActorOff <Hostage 1>
FlagSet <Hostage1 Flag> <True>
Hostage 1がExtraction Zoneに入ると(Scriptにも書きましたが、Zoneに指定した場合距離は無視)人質役を終了させ、FlagをTrueにします。

・Hostage2 Extraction Zoneへ

Trigger | ProximityActor <Hostage 2> <Extraction Zone> <10>meter
Responce | HostageActorOff <Hostage 2>
FlagSet <Hostage2 Flag> <True>
Hostage 1と同様にします。

・Mission Complete

Trigger | TimeElapsed <2>second
Responce | BlockPreserve
ContinueIf (GetFlagState) <Objective1 Flag>
ContinueIf (GetFlagState) <Objective2 Flag>
ContinueIf (GetFlagState) <Hostage1 Flag>
ContinueIf (GetFlagState) <Hostage2 Flag>
TimerSet <Objective3 Complete Timer> <0>second
TimerSet <Objective4 Complete Timer> <2>second
TimerSet <Mission Complete Timer> <4>second
BlockRemove
まず、TimeElapsedとBlockPreserveの組み合わせで、このBlockがミッション開始時点から2秒ごとに起こるようにします。 次にContinueIfで、それぞれのFlagがTrueになっているかのチェックを行います。なっていれば次に進み、なっていなければ停止して2秒後を待ちます。 人質が2人ともExtraction Zoneに到達して全てのFlagがTrueになっていれば、順番にTimerをセットします。 すぐにミッションが終了するので、要らない気もしますが、一応BlockRemoveで2秒チェックを止めておきます。

・敵全滅

Trigger | RoutCompany <Enemies>
Responce | TimerSet <Objective1 Complete Timer> <1>second
TimerSet <Objective2 Complete Timer> <2>second
TimerSet <Objective3 Complete Timer> <3>second
TimerSet <Objective4 Complete Timer> <4>second
TimerSet <Mission Complete Timer> <5>second
このBlockは無くてもミッション成立には影響しませんが、普通は設定します。 敵を全滅させると、全てのObjectiveを達成してミッションを終了します。 この例ではしていませんが、敵全滅用メッセージを表示させるTimerを作ったほうがいいかもしれません。(製作者の好みにもよりますが)