マッピング:ウェーブ

nmsマップは、マップ名(ファイル名)が「nms_」で始まっていなければならない。

ポイントエンティティoverlord_wave_controllerを1個作成する。
これはマップ内の何処に置いても問題無い。
Initial Spawn Count ウェーブ1のゾンビスポーン数
Zombie Increment ウェーブ毎のゾンビ増加数
Resupply Freq. 物資投下の頻度(ウェーブ)
NG Freq. (未実装)
Ending Wave このウェーブ終了でマップクリア
カスタムクリアシナリオを使う場合は後述
First Runner Wave Runner初登場ウェーブ
First Child Wave Kid初登場ウェーブ
Custom Win Scenario NoならばEnding Wave終了でクリア
カスタムクリアシナリオを使う場合はYesにする
例:
Initial Spawn Count50,Zombie Increment10の場合、
ウェーブ15のゾンビスポーン数は (50) + ((15 - 1) * 10 ) = 190 となる。
注意
Resupply Freq.2以上でなければならない。2に設定すると毎ウェーブ物資が来るようになる。3だと2ウェーブ毎、4だと3ウェーブ毎といった風になっている?(未検証)
First Child WaveFirst Runner Wave以上の数値を設定しなければならない?(未検証)

特定のウェーブ開始時に出力を発生させるには

ポイントエンティティmath_counterを出力を発生させたいウェーブの個数だけ作成する。
そしてKeyvaluesを以下のように設定する。
Start Disabled No
Initial Value 0
Minimum Legal Value 0
Maximum Legal Value 開始時に出力を発生させたいウェーブ
そしてこのmath_counterに、overlord_wave_controllerから以下のような出力を送るように設定する。
My output OnNewWave
Via this input Add
With a parameter override 1
こうすることにより、各ウェーブ(ウェーブ1を含む)の開始時にカウンターが1ずつ加算されていくようになる。
あとは言うまでも無く、math_counterMy outputOnHitMaxの出力をさせればいいだけ。

カスタムクリアシナリオを使う場合

まず上記のCustom Win ScenarioYesにする。
overload_wave_controllerEnding Waveのウェーブ終了時にOnCustomWinBeginの出力を
送るようになる?(未検証)ので、この出力でシナリオを開始させる。
注意
OnCustomWinBeginの出力が発生するのは最終ウェーブ終了時で、次ウェーブは開始しないのでカスタムシナリオの間ゾンビがほぼいないことになる。ゾンビがいる状態でカスタムクリアシナリオを行わせたい場合は、「特定のウェーブ開始時に出力を発生させるには」の方法を使用すること。
現在のバージョンではOnCustomWinBeginだけで大丈夫な気がする。未検証。
最後にシナリオ終了時に、overlord_wave_controllerに対して以下の出力を送るようにする。
シナリオ成功=クリアの時 InputCustomWinComplete
シナリオ失敗=ゲームオーバーの時 InputCustomWinFailed

脱出地点型のクリアシナリオを使う場合

カスタムクリアシナリオとして、通常nmoマップで使用するnmrih_extract_point(範囲内に入ったプレイヤーはクリア)を使用することもできる。
これについては マッピング:オブジェクティブ を参照。
まずnmrih_extract_pointに対して、脱出を有効化するタイミングでStartの出力を送る。
するとnmo同様にnmrih_extract_previewHold Timeの間プレイヤーの視界をジャックする。
しかしこのままでは全員が脱出してもクリアにならず、またExtraction Lengthが過ぎても(時間切れになっても)ゲームオーバーにならない。
これをしっかり機能させるには、nmrih_extract_pointからoverlord_wave_controllerに対して、以下のように出力を送る。
クリア ゲームオーバー
My output OnAllPlayersExtracted OnExtractionExpired
Via this input InputCustomWinComplete InputCustomWinFailed
もちろん、InputCustomWinFailedは制限時間ではなく、別の方法で(別のエンティティから)送っても良い。
その場合はExtraction Length0にする?(未検証)のを忘れないこと。(0でダメだった場合は逆に大きな値にしてみてください)

ちなみにOnExtractionExpired:InputCustomWinFailedの出力にDelayを設定すると、
その秒数は「ゲームオーバーは確定したが脱出はできない」という時間になる。
最後にヘリが飛んでいくような凝ったギミックを作るときは、このDelayを設定して、脱出し損ねたプレイヤーに悲壮感を味わわせてやろう。
最終更新:2013年11月07日 07:37