GrunDaddyCustoms-Repo_Contracts icon

Repo Contracts

Playtest build: team contract objectives for R.E.P.O. with ranked voting, queued goals, physical rewards, and multiplayer verification still requested.

CHANGELOG

Changelog

0.5.3

  • Updated Pressure Plate Extraction to bind to one seeded random extraction point instead of generic extraction completion.
  • Plate count now scales from current player count plus completed-level difficulty progress, capped for sanity.
  • The controlled extraction point blocks item turn-in while its plates are unsecured.
  • Items used as plate weights are protected from break/destroy damage while resting on a plate.
  • Added a world marker for the extraction point controlled by the pressure plates.
  • Updated the Thunderstore README with realistic playtest expectations, currently verified solo/local behavior, and multiplayer verification areas.
  • Publication note: this is a playtest build. The core contract loop is usable, but voting sync, pressure plates, reward visibility, and compatibility should still be verified with real multiplayer groups.

0.5.2

  • Implemented Pressure Plate Extraction as a playable puzzle contract.
  • Pressure plates spawn near the nearest extraction point when the contract activates.
  • Plates can be secured by players standing on them or by placing enough item weight on them, so solo players can complete the objective.
  • Multiple smaller items can combine to meet a plate's medium weight requirement.
  • Contract progress now tracks secured plates and fails only if extraction completes before all required plates are secured.
  • Added synchronized plate position data so clients can recreate the same plate layout from host state.

0.5.1

  • Added Blender-authored world assets for future/puzzle contracts:
    • Gallery Code safe, keypad, and clue card.
    • Simon Extraction four-button module.
    • Pressure Plate Extraction lit and unlit plates.
    • Holdout zone beacon.
    • Cursed Loot world marker.
    • Heavy Haul world marker.
  • Exported .blend source files and .fbx runtime/import files.
  • Copied Blender FBX outputs into the Unity project under Assets/RepoContracts/Models/Blender.
  • Added Unity model importer metadata for the new FBX assets.

0.5.0

  • Added a full packaged Repo Contracts asset folder with icons, markers, UI frames, banners, warning panels, concept art, and UI SFX.
  • Added runtime PNG loading for packaged assets.
  • Skinned the truck contract board cards with generated difficulty card frames.
  • Skinned the in-run contract HUD and notifications with generated UI panels and banners.
  • Added a finished Glass Cargo protected item sprite marker layered onto the existing pulsing target marker.
  • Added Unity-importable sprite textures and prefab stubs under Assets/RepoContracts.
  • Updated Thunderstore packaging to include the Repo Contracts asset folder beside the DLL.

0.4.3

  • Fixed stale vote carryover by tying player votes to a fresh board session each level.
  • Finished queues now retire at level transition so the next gameplay level asks for new votes.
  • Unfinished locked queues are preserved across level transitions instead of being failed automatically.
  • Glass Cargo can reselect a target if an unfinished queue carries into a new level and the old target no longer exists.

0.4.2

  • Removed stale TruckScreenText.NextLevel optional hook probing now that extraction completion is handled through verified RoundDirector hooks.
  • Cleaned startup hook-audit logging so missing TruckScreenText.NextLevel no longer appears as a Repo Contracts warning.

0.4.1

  • Aligned public defaults with the safe-contract design decisions.
  • Added Discipline.EnableDisciplineDebt as a future/off-by-default setting; failed contracts only miss their own rewards by default.
  • Changed public prototype contract rewards back to money-bag physical drops instead of shop, weapon, upgrade, or cosmetic rewards.
  • Deferred cash rewards that complete during the final extraction window so they can spawn at the next truck-board opportunity.
  • Updated documentation and roadmap around safe public contracts versus experimental/asset-heavy contracts.

0.4.0

  • Added the package icon to Thunderstore metadata.
  • Added a configurable discipline system. Failed and unfulfilled contracts now create discipline debt that withholds future contract rewards.
  • Added discipline debt to multiplayer contract sync and the in-run overlay.
  • Enabled additional fully hooked contracts: Debt Collector, No Deaths, No Damage, Limited Healing, and No Loud Tools.
  • Added projectile weapon use tracking through ItemGun.Shoot.
  • Updated the Thunderstore README and manifest description to explain voting, rewards, final-extraction-safe payouts, and discipline.

0.3.1

  • Added reward delivery context so contracts can detect when cash rewards would be wasted during or after final extraction.
  • Cash and money-bag rewards now convert to a non-cash substitute during the final extraction window, preferring shop-item rewards and then cosmetic tokens.
  • Non-cash rewards that fail to spawn during final extraction now prefer cosmetic-token fallback instead of useless late money bags.

0.3.0

  • Moved contract reward drops to the contract board/TV area so money bags are visible after completion.
  • Added first-pass reward spawning for random shop items, weapons, and upgrade items, with money-bag fallback if no safe item prefab is available.
  • Added direct cosmetic token rewards for survival contracts, with money-bag fallback if the cosmetic system is unavailable.
  • Clarified No One Left Bent: it now completes on the next successful extraction and fails if any player dies before that extraction completes.
  • Widened and word-wrapped the in-run contracts overlay so longer rules are readable.

0.2.9

  • Fixed Glass Cargo completion by hooking the exact valuable extraction step before the game destroys and removes the extracted object.
  • Normal extracted valuables now publish item extraction events from the extraction point's per-item haul processing.

0.2.8

  • Fixed Glass Cargo not completing when the marked item was included in the extraction haul but the normal item-extracted event did not resolve before the object was moved or destroyed.
  • Glass Cargo now completes directly from the captured extraction candidate list when the marked target is part of a successful extraction.

0.2.7

  • Simplified the Glass Cargo HUD tracker by removing turn/direction instructions.
  • Changed Glass Cargo failure so normal damage is allowed and only breaking/destroying the marked item fails the contract.

0.2.6

  • Fixed Glass Cargo falsely failing when the marked item is destroyed by the normal extraction sequence.
  • Glass Cargo now treats marked-item damage or destruction inside the extraction zone as extraction-safe.
  • Moved the Glass Cargo world beacon to the item renderer center instead of above the item.
  • Made the Glass Cargo beacon smaller and genuinely transparent.
  • Removed the world beacon once a player grabs the marked item while keeping the HUD tracker active.

0.2.5

  • Fixed contract board selection by using board-plane targeting instead of tiny trigger-collider hits.
  • Tightened card text sizing and line length so rows stay inside their colored bars.
  • Increased row height and spacing for cleaner, more readable contract cards.

0.2.4

  • Added Photon room-property sync for contract offers, selected queue, active contract, progress, status, and Glass Cargo target metadata.
  • Clients now rebuild their board and HUD from host-published contract state instead of relying on local-only TODO sync logs.
  • Improved contract board aiming by using wider card hitboxes and forgiving sphere-cast selection.
  • Cleaned up contract board visuals with clearer card spacing, borders, and shorter text lines.

0.2.3

  • Restored Glass Cargo as a random protected valuable so the team cannot choose an easy target.
  • Limited Glass Cargo target selection to eligible breakable valuables.
  • Reworked the Glass Cargo HUD tracker into a clearer target compass with item name, distance, turn direction, and above/below guidance.

0.2.2

  • Changed Glass Cargo target selection to mark the first eligible valuable a player grabs while the contract is active.
  • Updated Glass Cargo objective text so players know they create the target by grabbing loot.
  • This avoids selecting an unknown hidden item somewhere in the level.

0.2.1

  • Made Glass Cargo targets much easier to find with a larger pulsing world beacon.
  • Added a HUD tracker for Glass Cargo that points toward the marked item and shows distance, even when the item is off-screen or behind walls.
  • Added the marked target name to the contracts overlay.

0.2.0

  • Added verified gameplay hooks for enemy kills, player deaths, successful extractions, valuable damage, and valuable destruction.
  • Clean Sweep now progresses from successful extraction value instead of debug-only events.
  • Monster Hunter and Melee Clause now progress from actual enemy deaths.
  • No One Left Bent now fails on actual player death events, even if the player is revived later.
  • Glass Cargo now chooses a real valuable target, marks it in-world, completes when that item extracts, and fails if that item is damaged or destroyed.

0.1.8

  • Baked in the calibrated truck-window TV placement defaults.
  • Added controller support for contract selection: D-pad/left stick changes highlighted contract and face buttons assign vote ranks.

0.1.7

  • Added in-game TV placement calibration mode.
  • Press F9 while the board exists, then use numpad keys to move/rotate/scale the TV and save offsets.

0.1.6

  • Moved the default contract TV farther up and toward the right-side window wall.
  • Reworked the TV layout into compact colored contract rows by difficulty.
  • Added automatic host tally/queue lock when every player has voted for ranks 1, 2, and 3.

0.1.5

  • Moved the default TV placement toward the right-side truck window wall.
  • Reduced screen/text scale further so the contract list stays inside the TV panel.

0.1.4

  • Reworked the truck board into a smaller side-window TV-style screen.
  • Removed blocking colliders from the TV body and made contract card hitboxes trigger-only.
  • Tightened board text layout so it reads like a compact screen instead of oversized floating text.
  • Added board placement config offsets for easier truck-side tuning.

0.1.3

  • Added a physical truck contract board built from runtime primitives and world text.
  • Added local ranked voting controls: point at a contract card and press 1, 2, or 3.
  • Added host vote tally/queue lock control with configurable Controls.ContractBoardLockKey defaulting to L.
  • Added an in-run contracts overlay toggled by configurable Controls.ContractHudKey defaulting to C.

0.1.2

  • Quieted optional hook probing so missing methods no longer emit HarmonyX lookup warnings.
  • Added gameplay-level gating before contract offer generation.
  • Added Debug.AutoLockFirstOffersForDebug and disabled auto-locking by default.

0.1.1

  • Fixed optional Harmony hooks so missing R.E.P.O. methods are skipped with warnings instead of throwing during startup.

0.1.0

  • Added initial contract definitions and weighted rarity selection.
  • Added runtime tracking for active team contracts.
  • Added Harmony hooks for enemy hits, player damage, truck healing, and level completion.
  • Added host-side money-bag reward spawning.
  • Added design plan and Thunderstore metadata.