Grey Hack
Install with App

Details

Latest version
1.0.0
Last Updated
First Uploaded
Downloads
8
Likes
0
Size
19KB
Dependants

Categories

REPO Powers v1.0.0

A BepInEx mod for R.E.P.O. adding an in-game powers menu: fly, noclip, teleport, telekinesis, puppeting other players, spawning items/valuables/enemies, and healing/reviving/teleporting other players. All keybinds are rebindable from the in-game menu (default: F4 to open it).

Built against BepInExPack 5.4.2305 and REPOLib 4.2.0.

Installation (Thunderstore Mod Manager)

  1. Open Thunderstore Mod Manager and select your R.E.P.O. profile (the one that already has BepInExPack 5.4.2305 and REPOLib 4.2.0 installed).
  2. Click Install from file... / drag-and-drop and select this REPOPowers-1.0.0.zip, or manually:
    • Click the profile folder icon to open it in your file explorer.
    • Extract REPOPowers.dll into BepInEx\plugins\REPOPowers\REPOPowers.dll (create the REPOPowers folder if it doesn't exist).
  3. Launch the game through Thunderstore Mod Manager (the "Start modded" button).
  4. In-game, press F4 to open the REPO Powers menu.

You do not need to install anything into the raw game folder, and the original Assembly-CSharp.dll / REPOLib.dll are never modified - REPO Powers is a standalone plugin DLL that hooks in via BepInEx/Harmony at runtime.

Default Keybinds (all rebindable in the menu)

Power Default Key
Open/close menu F4
Fly F5
Noclip F6
Self Teleport (to crosshair) F7
Telekinesis (extended grab) F8
Heal Target F9
Revive Target F10
Teleport Target To Crosshair F11
Puppet Target (hold) F12
Spawn Item Alt+F1
Spawn Valuable Alt+F2
Spawn Enemy Alt+F3

To rebind: open the menu, click the key label next to any power, then press the new key you want. Bindings are saved to your BepInEx config file automatically (BepInEx/config/yourname.repopowers.cfg) and persist across restarts.

For Heal / Revive / Teleport Target / Puppet Target, use the "Target Player" selector at the top of the menu (< / > buttons) to pick who the power applies to before pressing its key.

For Spawn Item / Spawn Valuable / Spawn Enemy, use the < / > selector next to each of those rows in the menu to choose what will be spawned, then press that power's key to spawn it a couple of meters in front of you.

What actually works for host vs. non-host, and why

This section is here because the request behind this mod was explicit: don't claim something works over the network if the game's own architecture doesn't allow it. Every power below was checked against the actual decompiled game and REPOLib code before being implemented — this isn't a guess.

REPO's player movement is client-authoritative. Each player's own game client is the only one that ever simulates that player's physics/position; everyone else just receives the replicated result. This one fact drives almost every decision below.

Power Host Client How / why
Fly ✅ ✅ Moves only your own, locally-owned avatar. Replicates for free exactly like normal movement.
Noclip ✅ ✅ Same as Fly, plus disabling your own colliders (a purely local Unity property).
Self Teleport ✅ ✅ Moves only your own avatar.
Telekinesis ✅ ✅ Extends the range/strength of your own existing grab-beam (PhysGrabber), reusing the game's already-networked grab/hold/throw logic end-to-end.
Heal Target ✅ ✅ Calls PlayerHealth.HealOther(...), the game's own public method for networking a heal to another player - not something we added.
Revive Target ✅ ✅ Calls PlayerAvatar.Revive(...), the game's own public method, confirmed by disassembly to trigger its internal networked RPC regardless of who calls it.
Spawn Item / Valuable ✅ ✅ (expected) Uses REPOLib's Items.SpawnItem / Valuables.SpawnValuable. Photon PUN2 (REPO's networking library) does not restrict object instantiation to the host, so this should work identically for any client.
Spawn Enemy ✅ (recommended) ⚠️ Untested Spawns the enemy's prefab directly via PhotonNetwork.Instantiate, since REPO's normal enemy spawning goes through the AI director's pooled spawn-point system, which REPOLib doesn't expose a runtime hook for. This should work for non-host too (PUN2 doesn't block it), but the spawned enemy won't be tracked by the director's difficulty/quota bookkeeping, and we haven't been able to verify director-side edge cases without a live multiplayer test. Test host-side first.
Teleport Target To Crosshair ✅ ✅ Not a game feature - the game has no way to force another client's position. This power uses REPO Powers' own small networking component (PowerRelay), sent as a normal Photon RPC to every client; only the target's own client (photonView.IsMine) actually applies it to their own avatar. This is the correct way to do this in a client-authoritative game, not a workaround. Requirement: the target player must also have REPO Powers installed, since only our component understands this RPC.
Puppet Target ✅ ✅ Same PowerRelay mechanism as above, but continuous: while held, your WASD is sent every frame to the target's own client, which moves its own avatar directly (kinematic + direct position set) rather than going through the tumble/ragdoll system - so the target is never ragdolled. Same requirement: target needs REPO Powers installed.

In short: every power in this mod works for non-host players. The two "control another player" powers (Teleport Target, Puppet Target) additionally require that player to also be running REPO Powers, because there's no way to move someone else's character without their own client cooperating - that's a property of how REPO's netcode works, not a limitation of this mod.

Extending it (architecture notes for future powers)

Every power implements the REPOPowers.Core.IPower interface (most inherit PowerBase, which handles keybind config + toggle/one-shot polling for you). To add a new power:

  1. Create a class in Powers/ inheriting PowerBase.
  2. Override Id, DisplayName, Description, Scope, DefaultKeybind(), and either OnPressed() (one-shot) or OnActivate/OnDeactivate/ OnActiveTick() (toggle/hold).
  3. Register an instance of it in Plugin.Awake()'s call to manager.RegisterAll(...).

That's it - the menu, keybind config, and rebinding UI all pick it up automatically with no other changes needed.

Uninstalling

Delete the REPOPowers folder from BepInEx\plugins\ in your profile, or use Thunderstore Mod Manager's uninstall option for this mod.

Support / issues

This is a from-scratch build reviewed against the actual game/REPOLib bytecode current as of BepInExPack 5.4.2305 / REPOLib 4.2.0. If a future game or REPOLib update changes any of the APIs referenced above (most likely: PlayerHealth, PlayerAvatar, PhysGrabber, or REPOLib's Items/ Valuables/Enemies modules), the affected power(s) may need small updates.

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.