UL-TaxmansCurseHauntedLoot icon

TaxmansCurseHauntedLoot

Host-only cursed loot chaos for R.E.P.O. Touch haunted valuables, reveal one curse per level, and let vanilla clients see announcements through TTS/text and the truck screen.

By UL
Last updated a day ago
Total downloads 53
Total rating 0 
Categories Mods Server-side AI Generated
Dependency string UL-TaxmansCurseHauntedLoot-0.2.9
Dependants 0 other packages depend on this package

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

README

Taxman's Curse: Haunted Loot

Author: UL
Version: 0.2.9
Install type: Host-only / server-side
Vanilla clients: Supported

Host-only cursed loot chaos for R.E.P.O. Touch haunted valuables, reveal one curse per level, and let the Taxman announce it through vanilla systems.

What It Does

The host rolls a curse lazily when real loot is touched during a level. With the default CursesPerLevel=1, one curse reveal can happen per gameplay session. Additional touches in the same level reuse the same session instead of rolling more curses.

The mod currently focuses on touch-based curses for stability. It does not add new monsters, models, sounds, custom HUDs, or client-required assets.

Host-Only Compatibility

Only the host needs the mod installed. Vanilla clients can join.

Curse effects use existing R.E.P.O. systems where possible, such as normal grab sync, vanilla enemy attention, targeted vanilla TTS/text, and truck screen messages. The mod is designed for public host-only play and keeps risky lifecycle hooks out of the public build.

Announcements

Announcements use vanilla TTS/text behavior, not a custom HUD.

In v0.2.9 the host targets each player's own PlayerAvatar.ChatMessageSendRPC where possible, so the curse reveal can appear through the game's normal TTS/text path. R.E.P.O. does not expose a separate always-visible synced global chat-feed or system-message channel, so TTS/text still follows vanilla behavior.

The truck screen is the clearest shared visual announcement. Reveal messages include the curse name plus a short rule:

TAXMAN'S CURSE:
Player cursed: Curse Name
Short rule

Bottom objective HUD messages are not used by default because that UI path is local-only and not safe to present as a host-only public announcement.

Curse Types

  • Mimic Valuable: Looks like normal loot, but touching it triggers danger.
  • Loot Bait: Every few valuable touches by the cursed player attracts danger.
  • Reverse Luck: Valuable touches can help the team, do nothing, or attract danger.
  • Last-Touch Curse: The last player to touch haunted loot becomes cursed.
  • Glass Touch: Loot touched by the cursed player becomes haunted and unsafe.
  • Golden Trap: Tempting treasure can trigger a dangerous trap.

Config Options

The public config intentionally exposes only simple options.

[General]

  • Enabled
  • HostOnly
  • DebugLogging

[Curse]

  • CursesPerLevel
  • IncludeHost
  • AvoidSamePlayerTwice
  • CurseIntensity

[TTS]

  • EnableTTS
  • TTSMode
  • TTSCooldownSeconds

[CurseTypes]

  • EnableMimicValuable
  • EnableLootBait
  • EnableReverseLuck
  • EnableLastTouchCurse
  • EnableGlassTouch
  • EnableGoldenTrap

Public-Safe Design

v0.2.9 applies only one gameplay hook: PhysGrabObject.GrabStartedRPC.

It does not patch RunManager.GameDirectorStart, RunManager.ChangeLevel, drop, break, extraction, or level-end methods. It does not use Harmony.PatchAll.

The curse director is created lazily by a valid valuable touch in an active run and resets lazily when a valid touch reports a new gameplay session key. The session key is level-only:

room=<room>|scene=<scene>|round=<roundId>|levelGen=<levelGenId>

Player view IDs, toucher IDs, and cursed-player IDs are intentionally excluded so different players touching loot in the same level reuse the same curse session.

Installation

Install with a Thunderstore-compatible mod manager, or manually place the package contents into your R.E.P.O. BepInEx profile so TaxmansCurseHauntedLoot.dll is loaded as a BepInEx plugin.

The package depends on BepInEx-BepInExPack.

Version Notes

v0.2.9 is the stable public baseline. It includes the fixed one-curse-per-level session logic, simplified public config, TTS settings, centralized truck retry, and truck screen reveal messages with short curse rules.

Known Limitations

  • The mod is host-only, but always-visible global HUD/feed announcements would require client-side code.
  • TTS/text uses vanilla behavior and is not a custom global HUD popup.
  • Truck screen messages can still be delayed or overwritten by vanilla truck typing; the retry queue improves reliability without interrupting vanilla typing.
  • Bottom objective HUD is disabled by default because it is local-only.
  • Butterfingers, Greed Tax, Protect The Cursed, and Sacrifice Curse are not enabled in v0.2.9 because they require drop, break, extraction, death, level-end, or objective tracking hooks.
  • Bonus rewards are conservative and may fall back to log-only if valuable value fields are unavailable.