樽の中身や配置アイテムなどは、ゲーム内で一定の日数が経過すると再生成されます。これをリスポーンと言います。
リスポーンのおかげで、散らかしてしまった物が整頓されたり、樽に入れておいたアイテムが無くなったり、配膳を整えた食事が飛び散ったりするわけです。
今回は、その設定を Creation Kit (CK) で行うときに関連する項目をまとめてみました。
1. ベースオブジェクトに設定があるもの
1-1. ベースオブジェクトの設定項目
リスポーン設定があることでお馴染みの Container から見ていきます。これには宝箱や樽などの収納家具が含まれます。Container の場合、ベースオブジェクトそのものに設定箇所があります。
例として、プレイヤー用の宝箱を見てみましょう。
Object Window から WorldObjects > Container を開き、「PlayerHouseChest」を表示します。
「Respawns」という項目のチェックを外すと、リスポーンしない収納になります。チェックを外した収納は中身がリセットされませんので、アイテム保管用として使うことができます。
チェックを入れると、リスポーン期間が経過した後に中身がリセットされます。初期設定のアイテム以外は消失してしまいます。
Container と同様、ベースオブジェクトにリスポーン設定を持つものに Actor (NPC) があります。
「Respawn」にチェックを入れるとリスポーンします。Actor の場合は、所持品がリセットされると同時に、死んでいたら生き返ります。
「Unique」にチェックがついたユニークなNPCは、死んだら生き返らないよう、通常はリスポーン設定が外されています。そのままでは死体として残り続けてしまうため、スクリプトで死体を消す処理が行われています。
1-2. ベースオブジェクトを配置した場合の引き継ぎ
Container や Actor を Render Window へ配置した場合、リスポーン設定はそのまま引き継がれます。配置したオブジェクトの Reference を開いても設定箇所はグレーアウトされており、変更することができません。
2. ObjectReference (配置オブジェクト) に設定があるもの
2-1. 配置オブジェクトの Reference
ベースオブジェクトにリスポーン設定を持たないものもあります。かごや本などの Items、罠やレバーなどの Activator、そして扉である Door がそれにあたります。
これらのリスポーン設定は、配置したオブジェクトの Reference を開いて行います。「Respawns」にチェックを入れるとリスポーンするようになります。
2-2. リスポーンで戻るもの
ObjectReference に設定を持つものは、リスポーンするとその Reference の値にしたがって元に戻ります。
アイテムの場合は位置が戻り、もし取得済みなら再出現します。内部的には、元々あった古いアイテムがリスポーンのタイミングで削除され、新しいアイテムが再生成されるようです。
罠やレバーも元の状態に戻ります。作動させたベアトラップは、リスポーンすると再び開きます。ダンジョンにある鍵のかかった扉は再ロックされます。
3. Cell (セル) 全体のリセット設定
3-1. セルのリセットについて
個々のオブジェクトだけでなく、セル全体にもリスポーンに関わる設定があります。「リスポーン」という単語は再生成を意味するので、主に個々のオブジェクトに対して使います。セルの場合は「リセット」と呼びます。
セルのリセットが起こると、配置された ObjectReference がリスポーンします。このとき、リスポーンしないように設定したものは再生成されません。リスポーンする設定のものだけ、上述した内容にしたがって元に戻ります。
また、アイテムや敵NPCの中には、レベルドリストで管理されているものがあります。これは、プレイヤーレベルによってその種類や装備品が動的に決められるものです。セルを初めて訪れたときにレベルが記録され、リセットするときにはそのレベルが参照されてリスポーンします。
記録されたレベルは更新されないため、後から高レベルで訪れた時にも弱いままのアイテムや敵が出ることになります。現在は、このレベル固定を解除する次のようなMODが公開されています。
Encounter Zones Unlocked – Dungeons don’t stop leveling after the first visit (SKSE)
3-2. Encounter Zone
セルのリセット設定は、Encounter Zone というもので決められています。
例として、ブリーズホームの設定を見てみましょう。Cell View から WhiterunBreezehome を探し、右クリックして「Edit」を選択します。
Cell ウィンドウが開き、セルの設定が表示されます。Interior Data タブの中に Encounter Zone の設定項目があります。
Encounter Zone は、Object Window の WorldData > Encounter Zone で決められています。ブリーズホームに設定されている「NoResetZone」を開くと、「Never Resets」にチェックが入っています。
このチェックが入った Encounter Zone をセルに設定すれば、そこに配置されたオブジェクトはリスポーンしなくなります。ただし、後述のリスポーン期間が経過すると、位置だけは元に戻ります。
例えば、ブリーズホームに置かれた皿をインベントリに取得した場合は再出現しませんが、単に散らかしただけの場合は一定期間後に位置が戻ります。
4. リスポーン期間の設定
4-1. 通常のセル
リスポーン期間は GameSetting で決められています。対象のセルに最後に訪れてからの経過時間で指定します。
通常のセルは「iHoursToRespawnCell」の値である240時間、つまり10日間でリスポーンします。
4-2. クリア済みのセル
クリア済みのセルは「iHoursToRespawnCellCleared」の値である720時間、つまり30日間でリスポーンします。
「クリア済み」というフラグは、そのセルが含まれる Location に付きます。Location は、Object Window の WorldData > Location にあります。Actors タブの Location ref type に「Boss」が設定された Actor を全員倒すと、クリア済みのフラグが立ちます。
5. 強制的なリセット方法
5-1. コンソールコマンド
ゲームプレイ中に強制的にリセットしたいときは、以下のようなコンソールコマンドが使えます。
ターゲットコマンド
- ResetInventory … インベントリをリセットする。
- Disable / Enable … 非表示 / 表示を行う。AIやインベントリがリセットされる。
- Resurrect [#] … 蘇生させる。[#] に1を指定すると、インベントリアイテムを保持したまま蘇生させる。
- AddToFaction [FactionID] [#] … ファクションに加入させる。[#] はランク値 (1-4)。
NPCをリセットしたいときは、生きていれば「Disable」した後に「Enable」、死んでいたら「Resurrect」の後に「AddToFaction」を行うと良いと思います。
非ターゲットコマンド
- ResetInterior [CellID] … セルをリセットする。対象のセルを出てからコマンドを入力し、入り直すとリセットされる。
CellID は、Crosshair Ref Info を使うと簡単に調べられます。
5-2. スクリプト
スクリプトでも強制的なリセットをかけることができます。
- ObjectReference.Reset(ObjectReference akTarget = None) … インベントリを含めリセットする。対象が Actor であれば蘇生させるが、ファクションは元に戻らない。akTarget の場所にリセットされる。
- Actor.AddToFaction(Faction akFaction) … Actor をファクションに加入させる。
- Cell.Reset() … セルをリセットする。プレイヤーがセルに入り直すとリセットされるが、Game.RequestAutoSave() を呼んでオートセーブさせれば、その場でリセットすることもできる。
これまでに私が確認できているリスポーン設定は以上になります。
自動的に部屋が整理されるとは、なんとも便利な世界ですね。