PerfectExtractionBonus
PerfectExtractionBonus is a host-only mod for R.E.P.O.
If every valuable that existed at the start of the level is successfully extracted before the level is cleared, the run receives a money bonus based on the current currency amount.
This mod does not require every valuable to stay undamaged.
A valuable still counts as completed even if its value dropped due to damage, as long as that same original object is eventually extracted.
Only valuables that existed at the beginning of the level are tracked.
Valuables created later during the level are ignored for the perfect extraction condition.
Features
- Host-only behavior
- Grants a bonus based on current run currency after a perfect extraction clear
- Supports streak bonus scaling for consecutive perfect extractions
- Tracks only the valuables that existed at level start
- Accepts damaged valuables as valid as long as they are extracted
- Ignores valuables that appear after the initial snapshot
- Prevents duplicate level-result processing
- Optional bonus UI
- Optional debug logging
How it works
The mod waits until level generation is complete, then takes a snapshot of all valuables that currently exist in the level.
Each of those valuables is tracked by object identity.
When a valuable is successfully destroyed by extraction processing, that original object is marked as delivered.
At level completion, the mod checks whether every valuable from the initial snapshot was delivered.
If yes:
- bonus is granted
- streak increases by 1
If no:
- no bonus is granted
- streak can be reset depending on config
Important behavior
This mod checks the valuables that existed at the start of the level, not every valuable that may ever exist later.
A valuable is considered valid even if:
- it was damaged
- its price was reduced
- it was partially broken in value terms
It only needs to be successfully extracted as the same tracked object.
A valuable does not count if:
- it was part of the initial set but never extracted
- it disappeared by some other method without going through extraction tracking
- it was replaced by some other object later
Host only
Only the host needs to install this mod.
The host performs the tracking and currency bonus logic.
Clients do not need the mod for the effect to work.
Bonus calculation
Base formula:
bonus = current currency × bonus percent
The default behavior is:
- first perfect extraction clear: 10%
- second consecutive perfect extraction clear: 15%
- third consecutive perfect extraction clear: 20%
This happens because streak bonus is enabled by default.
Configuration
ModEnabled
- Description: Enables or disables the mod
- Default: true
- Minimum: false
- Maximum: true
BaseBonusPercent
- Description: Base bonus percent for a perfect extraction clear
- Default: 10
- Minimum: 0
- Maximum: 1000
EnableStreakBonus
- Description: Enables extra bonus percent for consecutive perfect extractions
- Default: true
- Minimum: false
- Maximum: true
StreakAddPercent
- Description: Additional percent added for each consecutive perfect clear after the first
- Default: 5
- Minimum: 0
- Maximum: 1000
MaxBonusPercent
- Description: Maximum total bonus percent
- Default: 50
- Minimum: 0
- Maximum: 1000
ResetStreakOnNonPerfectClear
- Description: Resets streak when the level is cleared without a perfect extraction
- Default: true
- Minimum: false
- Maximum: true
ResetStreakOnLevelFail
- Description: Resets streak when the level fails
- Default: true
- Minimum: false
- Maximum: true
ShowBonusUI
- Description: Shows a bonus UI popup when the reward is granted
- Default: true
- Minimum: false
- Maximum: true
InitialSnapshotDelaySeconds
- Description: Delay after level generation before locking the initial valuable snapshot
- Default: 0.75
- Minimum: 0
- Maximum: 10
LogEnabled
- Description: Enables detailed debug logging
- Default: false
- Minimum: false
- Maximum: true
Technical notes
This mod tracks the initial valuables by object identity, using PhotonView IDs when available and falling back to Unity instance IDs otherwise.
Extraction completion is tracked by patching extraction destruction methods and recording which tracked valuables were actually consumed by extraction.
Level completion is processed only once per level to avoid duplicate streak resets or duplicate bonus grants.
Compatibility notes
This mod should work well with mods that:
- change valuable value
- damage valuables
- modify extraction rewards separately
Potential incompatibility can happen with mods that:
- replace valuables with entirely new objects after level start
- remove initial valuables without normal extraction processing
- heavily rewrite extraction internals
Japanese
PerfectExtractionBonus
PerfectExtractionBonus は R.E.P.O. 向けのホストオンリーMODです
レベル開始時点で存在していた全ての貴重品を納品してからクリアした場合、現在の所持金に対して割合ボーナスを付与します
このMODは貴重品が無傷であることまでは要求しません
傷が付いて価値が下がっていても、その同じ元の個体が最終的に納品されれば達成扱いです
追跡対象はレベル開始時点で存在していた貴重品だけです
レベル途中で新たに出現した貴重品は、完全納品条件には含みません
機能
- ホストオンリー動作
- 完全納品クリア時に現在所持金ベースのボーナス付与
- 連続完全納品によるボーナス上昇対応
- レベル開始時点の貴重品だけを追跡
- 傷付きで価値が下がった貴重品でも納品できれば達成扱い
- 初期スナップショット後に出た貴重品は無視
- レベル結果処理の多重実行防止
- 任意のボーナスUI表示
- 任意の詳細ログ出力
仕組み
レベル生成完了後、少し待ってから、その時点で存在する全ての貴重品を初期スナップショットとして確定します
その後は、その初期個体だけをオブジェクト単位で追跡します
納品処理で実際に消費されたとき、その元の個体を納品済みとして記録します
レベルクリア時に、初期スナップショット内の全貴重品が納品済みかどうかを判定します
達成時
未達成時
- ボーナスなし
- Config に応じて連続回数リセット
重要な仕様
このMODが見ているのは、レベル開始時点に存在していた貴重品です
その後に追加で出現した貴重品は対象外です
以下でも達成扱いです
- 傷が付いている
- 価格が下がっている
- 価値が減っている
必要なのは、最初に存在していた同じ個体が最終的に納品されることです
以下は未達成扱いです
- 初期対象だったが最後まで納品されなかった
- 納品ではない別処理で消えた
- 後から別オブジェクトに置き換わった
ホストオンリー
このMODはホストだけ導入すれば動作します
追跡処理と所持金ボーナス処理はホスト側で行われます
参加者側は未導入でも効果自体は動作します
ボーナス計算
基本式
bonus = current currency × bonus percent
デフォルト設定では
- 1回目の完全納品クリア: 10%
- 2回連続の完全納品クリア: 15%
- 3回連続の完全納品クリア: 20%
となります
これは連続ボーナスがデフォルトで有効だからです
設定項目
ModEnabled
- 設定内容: MOD自体の有効無効
- 初期値: true
- 設定可能最小値: false
- 設定可能最大値: true
BaseBonusPercent
- 設定内容: 完全納品クリア時の基本ボーナス率
- 初期値: 10
- 設定可能最小値: 0
- 設定可能最大値: 1000
EnableStreakBonus
- 設定内容: 連続完全納品時の追加ボーナス率の有効無効
- 初期値: true
- 設定可能最小値: false
- 設定可能最大値: true
StreakAddPercent
- 設定内容: 2連続目以降に1回ごと加算するボーナス率
- 初期値: 5
- 設定可能最小値: 0
- 設定可能最大値: 1000
MaxBonusPercent
- 設定内容: 合計ボーナス率の上限
- 初期値: 50
- 設定可能最小値: 0
- 設定可能最大値: 1000
ResetStreakOnNonPerfectClear
- 設定内容: 通常クリアだが完全納品でない場合に連続回数をリセットするか
- 初期値: true
- 設定可能最小値: false
- 設定可能最大値: true
ResetStreakOnLevelFail
- 設定内容: レベル失敗時に連続回数をリセットするか
- 初期値: true
- 設定可能最小値: false
- 設定可能最大値: true
ShowBonusUI
- 設定内容: ボーナス付与時にUI表示を行うか
- 初期値: true
- 設定可能最小値: false
- 設定可能最大値: true
InitialSnapshotDelaySeconds
- 設定内容: レベル生成後に初期貴重品スナップショットを確定するまでの待機秒数
- 初期値: 0.75
- 設定可能最小値: 0
- 設定可能最大値: 10
LogEnabled
- 設定内容: 詳細デバッグログの出力有無
- 初期値: false
- 設定可能最小値: false
- 設定可能最大値: true
技術メモ
このMODは、初期貴重品をオブジェクト単位で追跡します
PhotonView ID が使える場合はそれを優先し、使えない場合は Unity の Instance ID を使います
納品達成は、納品処理で実際に消費された貴重品だけを extraction patch から記録して判定しています
レベル結果処理は1レベル1回だけ通すようにしており、二重ボーナスや二重リセットを防いでいます
互換性メモ
以下のようなMODとは相性が良いです
- 貴重品の価値変更
- 貴重品へのダメージ追加
- 納品報酬変更
以下のようなMODとは競合可能性があります
- レベル開始後に初期貴重品を別オブジェクトへ差し替える
- 通常の納品処理を通さずに初期貴重品を削除する
- 納品内部処理を大きく作り変える