You are viewing a potentially older version of this package. View all versions.
REPO_JP-EnemyOrbMerge-1.0.1 icon

EnemyOrbMerge

【Host Only MOD】When enemy orbs touch each other, their values combine into a single orb.敵のオーブ同士が接触時に価値が合算されて1つのオーブにまとまるMOD

By REPO_JP
Date uploaded a week ago
Version 1.0.1
Download link REPO_JP-EnemyOrbMerge-1.0.1.zip
Downloads 5145
Dependency string REPO_JP-EnemyOrbMerge-1.0.1

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100
TheRavenNest-UnlimitedOrbs-1.0.3 icon
TheRavenNest-UnlimitedOrbs

Removes the Monster Orb cap from 3 to the maximum int value, which removes the softlock the game has if you accidently destroy all the loot

Preferred version: 1.0.3

README

EnemyOrbMerge

This mod is a host-only mod that merges enemy drop orbs when they touch, keeps one orb alive, and transfers the combined value into the surviving orb with configurable value and merge-count limits.

Overview

Enemy drop orbs created from defeated enemies can combine with each other on contact. The default behavior is to keep the higher value orb and remove the lower value orb. If only one of the two orbs is currently being held by a player, the held orb is kept instead. If both are being held, the normal higher-value rule is used.

This mod is designed to run on the host only. The merge result, orb deletion, and value update are applied through host-side authoritative logic so participants can see the outcome without installing the mod.

Main behavior

  • Only enemy drop orbs are targeted
  • Normal valuables and unrelated objects are ignored
  • Touching enemy orbs can merge into one orb
  • The surviving orb receives the combined value
  • The removed orb is deleted over the network
  • The surviving orb receives vanilla-style invincibility again after a successful merge
  • Orb-to-orb breakage is suppressed so fast collisions do not destroy merge candidates before the merge check resolves

Priority rules

The surviving orb is selected with the following order.

  1. If only one orb is being held by a player, the held orb survives
  2. If both are being held, the higher value orb survives
  3. If neither is being held, the higher value orb survives
  4. If the values are equal, the lower PhotonView ID survives

Limit rules

Two independent limit systems are included.

Value cap

If MaxOrbValue is set to 0, value is unlimited. If it is set to 1 or higher, that number becomes the maximum allowed value for a merged orb.

A merge is rejected when either of the following is true.

  • One of the touching orbs is already at or above the configured cap
  • The merged result would exceed the configured cap

When this happens, the orbs do not merge. Instead, both orbs only receive invincibility again so they do not immediately break from the attempted impact. No merge-success effect is played in this case.

Merge-count cap

If MaxOrbMergeCount is set to 0, the merge count is unlimited. If it is set to 1 or higher, an orb lineage that has already reached that many successful merges can no longer merge again.

Merge count starts at 0 on a fresh orb. After a successful merge, the resulting orb stores max(left lineage, right lineage) + 1. This prevents bypassing the cap by forcing survival onto a lower-count orb.

When the merge-count cap blocks a merge, the behavior is the same as the value-cap rejection case. Both orbs only receive invincibility again, and no success effect is played.

Visual behavior

Merge success effect

A built-in network-visible impact effect can be played at the merge position. This is a success-only effect. If a merge is rejected by a cap, this effect is not played.

Invincibility electricity effect

A built-in electricity visual based on the game's death-pit save effect can be replayed while post-merge invincibility is active. This visual can be disabled independently.

Installation

  1. Install BepInEx 5 for REPO
  2. Place EnemyOrbMerge_release_v1_0_0.dll into the BepInEx/plugins folder
  3. Start the game once to generate the config file
  4. Edit the config file if needed
  5. Only the host needs to install this mod

Configuration

All configuration entries are listed below.

[General] MergeCheckInterval

  • Type: float
  • Default: 0.05
  • Minimum: 0.01
  • Maximum: 1.00

Controls how often the mod checks whether tracked enemy orbs are touching and should be merged. Smaller values react faster but perform more collision checks. Larger values reduce check frequency and may make merges feel slightly delayed.

Recommended usage:

  • Lower this when you want faster response during chaotic orb piles
  • Raise this slightly if you want fewer checks and do not mind a tiny delay

[General] MergeArmDelay

  • Type: float
  • Default: 0.20
  • Minimum: 0.00
  • Maximum: 10.00

Controls how long a newly spawned enemy orb must wait before it becomes eligible for merge checks. This helps avoid instant merges right at the spawn point the moment an enemy dies.

Recommended usage:

  • Lower this if you want very aggressive instant merging
  • Raise this if you want a more natural delay before fresh drops can combine

[General] ReMergeCooldown

  • Type: float
  • Default: 0.05
  • Minimum: 0.00
  • Maximum: 10.00

Controls how long a surviving orb must wait after a successful merge before it can merge again. This is mainly used to prevent unstable multi-merge behavior within the same moment.

Recommended usage:

  • Keep this low for chain-merging piles
  • Raise this if you want to slow down repeated rapid merges

[General] ContactSkin

  • Type: float
  • Default: 0.02
  • Minimum: 0.001
  • Maximum: 0.50

Adds extra tolerance to the orb touch check. A larger value makes near-contact more likely to count as contact. A smaller value makes the touch test stricter.

Recommended usage:

  • Increase this if some visibly touching orbs fail to merge
  • Decrease this if merges feel too generous at slight distance

[General] MaxOrbValue

  • Type: int
  • Default: 0
  • Minimum: 0
  • Maximum: 1000000

Sets the maximum allowed value for a merged orb.

Behavior:

  • 0 means unlimited
  • 1 or higher enables a hard cap
  • If a merge would violate the cap, the merge is cancelled
  • In that failure case, both orbs only receive invincibility again
  • No merge-success effect is played when blocked by this cap

Recommended usage:

  • Use 0 for unrestricted growth
  • Use a fixed number when you want orb value progression capped for balance or testing

[General] MaxOrbMergeCount

  • Type: int
  • Default: 0
  • Minimum: 0
  • Maximum: 1000

Sets the maximum number of successful merges allowed for each orb lineage.

Behavior:

  • 0 means unlimited
  • 1 or higher enables a lineage-based merge cap
  • A fresh orb starts at merge count 0
  • A successful result becomes max(lineage A, lineage B) + 1
  • If a merge would violate the cap, the merge is cancelled
  • In that failure case, both orbs only receive invincibility again
  • No merge-success effect is played when blocked by this cap

Recommended usage:

  • Use 0 when you only care about value growth
  • Use small values when you want to prevent endless orb compression chains

[Debug] DebugLog

  • Type: bool
  • Default: false

Enables extra debug logging in the BepInEx console and log output. This is useful when verifying why an orb did or did not merge.

Recommended usage:

  • Leave false for normal play
  • Set true only when you are testing behavior or troubleshooting

[Effect] PlayNetworkMergeEffect

  • Type: bool
  • Default: true

Controls whether a built-in network-visible impact effect is played at the merge position when a merge succeeds. This effect is intended to indicate successful merging. It is not played when a merge is rejected by a cap.

Recommended usage:

  • Keep true if you want a clear success cue visible to participants
  • Set false if you want cleaner visuals with no merge flash

[Effect] PlayInvincibilityElectricityEffect

  • Type: bool
  • Default: true

Controls whether the built-in electricity visual is replayed while post-merge invincibility is active. This uses the game's existing death-pit save style electricity effect.

Recommended usage:

  • Keep true if you want merged invincibility to be visually obvious
  • Set false if you want merged orbs to become invincible without extra visual noise

Notes

  • This mod targets enemy drop orbs only
  • Cap-blocked merge attempts do not count as successful merges
  • Cap-blocked merge attempts do not play success visuals
  • Successful merges reapply vanilla-style invincibility to the surviving orb
  • The host should configure the mod before serious multiplayer testing

Compatibility

This mod is intended for REPO with BepInEx 5. Because the merge decision is host-authoritative, it is best used as a host-side gameplay mod.

※Mod created by AI

EnemyOrbMerge

このMODは、敵ドロップオーブが接触した時に1つへ合体し、残ったオーブへ合計金額を引き継ぎつつ、金額上限とマージ回数上限を設定できるホスト専用MODです。

REPOが好きな日本人のための日本人のみのREPOのDiscordサーバーあります! 参加は以下のリンクから! https://discord.gg/h5ATY4m5bZ

概要

敵を倒した時に出るオーブ同士が接触すると、1つのオーブにまとまります。 通常時は金額が高い方のオーブが残り、低い方のオーブは消えます。 ただし、2つのうち片方だけをプレイヤーが持っている場合は、持っている方が優先して残ります。 両方持っている場合は通常どおり金額が高い方が残ります。

このMODはホスト専用です。 マージ結果、オーブ削除、金額更新はホスト主導で処理されるため、参加者はMOD未導入でも結果を見られます。

主な挙動

  • 対象は敵ドロップオーブのみ
  • 通常の貴重品や無関係なオブジェクトは対象外
  • 敵オーブ同士が触れると1つへマージ可能
  • 残るオーブに合計金額を反映
  • 消えるオーブはネットワーク経由で削除
  • 成功マージ後、残るオーブへバニラ相当の無敵時間を再付与
  • オーブ同士の接触破損を抑制し、勢いよくぶつかってもマージ候補が先に壊れにくいように調整

優先ルール

残るオーブは次の順で決まります。

  1. 片方だけプレイヤーが持っている場合は、持っている方が残る
  2. 両方持っている場合は、金額が高い方が残る
  3. どちらも持っていない場合も、金額が高い方が残る
  4. 金額が同じ場合は、PhotonView ID が小さい方が残る

上限ルール

このMODには2種類の上限があります。

金額上限

MaxOrbValue0 にすると無制限です。 1 以上にすると、その値がマージ後オーブの最大金額になります。

次のどちらかに当てはまるとマージは拒否されます。

  • 接触したどちらかのオーブが、すでに上限以上である
  • 今回マージした結果が上限を超える

この場合はマージされません。 代わりに両方のオーブへ無敵だけ再付与され、ぶつけた衝撃でそのまま壊れにくくなります。 この失敗時にはマージ成功演出は再生されません。

マージ回数上限

MaxOrbMergeCount0 にすると無制限です。 1 以上にすると、その回数に達したオーブ系統はそれ以上マージできなくなります。

マージ回数は新規オーブで 0 から始まります。 成功マージ後の結果オーブには max(左系統, 右系統) + 1 が保存されます。 これにより、持っている方を残すルールなどを使って低回数側へ逃がす抜け道を防いでいます。

マージ回数上限で拒否された場合も、挙動は金額上限と同じです。 両方に無敵だけ再付与され、成功演出は再生されません。

演出挙動

マージ成功エフェクト

マージ成功時だけ、マージ地点に既存のネットワーク可視エフェクトを再生できます。 これは成功時専用の演出です。 上限によってマージが拒否された場合は再生されません。

無敵ビリビリエフェクト

成功マージ後の無敵中に、ゲーム内の穴落下救済で使われる既存のビリビリ演出を再生できます。 この演出は個別にオフにできます。

導入方法

  1. REPO に BepInEx 5 を導入
  2. EnemyOrbMerge_release_v1_0_0.dllBepInEx/plugins に配置
  3. 1回ゲームを起動して Config を生成
  4. 必要に応じて Config を編集
  5. このMODはホストだけ導入すれば動作

設定項目

以下、全設定項目を記載します。

[General] MergeCheckInterval

  • 型: float
  • 初期値: 0.05
  • 最小値: 0.01
  • 最大値: 1.00

追跡中の敵オーブ同士が接触しているか、どれくらいの間隔でマージ判定するかを決めます。 小さい値ほど反応は早くなりますが、その分だけ判定回数は増えます。 大きい値ほど判定回数は減りますが、マージ反応は少し遅く感じやすくなります。

使い分けの目安:

  • オーブが大量に重なる場面でも素早く吸わせたいなら小さめ
  • 判定頻度を少し落としてもよいなら大きめ

[General] MergeArmDelay

  • 型: float
  • 初期値: 0.20
  • 最小値: 0.00
  • 最大値: 10.00

新しく生成された敵オーブが、マージ判定対象になるまでの待機時間です。 敵を倒した直後に、その場で即マージしすぎるのを抑えるための値です。

使い分けの目安:

  • 生成直後からすぐ吸わせたいなら小さめ
  • ドロップして少し落ち着いてからマージさせたいなら大きめ

[General] ReMergeCooldown

  • 型: float
  • 初期値: 0.05
  • 最小値: 0.00
  • 最大値: 10.00

一度マージに成功したオーブが、次のマージを再開できるまでの待機時間です。 同タイミングでの不安定な多重マージを抑える目的があります。

使い分けの目安:

  • 連鎖マージを気持ちよく発生させたいなら低め
  • 急速な連続マージを少し落ち着かせたいなら高め

[General] ContactSkin

  • 型: float
  • 初期値: 0.02
  • 最小値: 0.001
  • 最大値: 0.50

接触判定時の余裕距離です。 値を大きくすると、少し離れていても接触扱いになりやすくなります。 値を小さくすると、より厳密な接触が必要になります。

使い分けの目安:

  • 見た目では触れているのにマージしないなら大きめ
  • 少し離れていても吸われすぎるなら小さめ

[General] MaxOrbValue

  • 型: int
  • 初期値: 0
  • 最小値: 0
  • 最大値: 1000000

マージ後オーブの金額上限です。

挙動:

  • 0 は無制限
  • 1 以上で固定上限を有効化
  • 上限違反になるマージは中止
  • その場合は両オーブへ無敵だけ再付与
  • 上限で止まった時はマージ成功エフェクトを出さない

使い分けの目安:

  • 制限なく育てたいなら 0
  • バランス調整や検証で上限を決めたいなら固定値

[General] MaxOrbMergeCount

  • 型: int
  • 初期値: 0
  • 最小値: 0
  • 最大値: 1000

各オーブ系統が成功できるマージ回数の上限です。

挙動:

  • 0 は無制限
  • 1 以上で系統単位の回数上限を有効化
  • 新規オーブは 0回 から開始
  • 成功後は max(系統A, 系統B) + 1
  • 上限違反になるマージは中止
  • その場合は両オーブへ無敵だけ再付与
  • 上限で止まった時はマージ成功エフェクトを出さない

使い分けの目安:

  • 金額だけ管理したいなら 0
  • 無限圧縮を防ぎたいなら小さめの値

[Debug] DebugLog

  • 型: bool
  • 初期値: false

BepInExコンソールやログへのデバッグ出力を有効化します。 なぜマージしたか、なぜマージしなかったかを確認したい時に役立ちます。

使い分けの目安:

  • 通常プレイは false
  • 検証やトラブル調査時だけ true

[Effect] PlayNetworkMergeEffect

  • 型: bool
  • 初期値: true

成功マージ時にだけ、マージ位置で既存のネットワーク可視エフェクトを再生するかどうかを決めます。 これは成功したことを示す演出です。 上限で拒否された場合は再生されません。

使い分けの目安:

  • 参加者にも成功が分かりやすい方がよければ true
  • 演出を減らしてすっきりさせたいなら false

[Effect] PlayInvincibilityElectricityEffect

  • 型: bool
  • 初期値: true

成功マージ後の無敵中に、穴落下救済ベースの既存ビリビリ演出を再生するかどうかを決めます。

使い分けの目安:

  • 無敵状態を見た目で分かりやすくしたいなら true
  • 余計な演出を減らしたいなら false

注意点

  • 対象は敵ドロップオーブのみです
  • 上限で弾かれた試行は成功マージ回数に数えません
  • 上限で弾かれた時は成功演出を出しません
  • 成功マージ時のみ、残る側へバニラ相当の無敵を再付与します
  • マルチで使う前に、ホスト側で設定を固めておくのがおすすめです

互換性

このMODは REPO + BepInEx 5 向けです。 マージ判定はホスト主導なので、ホスト側ゲームプレイ改造MODとして使う想定です。

※AI生成MOD

CHANGELOG

Changelog

1.0.0

  • Initial release
  • Enemy death orbs merge when touching each other
  • Held orb is prioritized when only one orb is being held
  • Higher value orb is kept in normal merges
  • Value cap and merge-count cap added
  • Failed merges caused by caps grant invincibility only and do not play success effects
  • Merge success can play a network-visible effect
  • Merged orb can replay invincibility electricity visuals
  • Orb-to-orb breakage is prevented during contact checks