ImReave Twitch Integration
All players need this mod; only the streamer signs in to Twitch. Voice Balance, rewards, Push, Poltergeist, and the Banishment Cross.
By Ventloop
CHANGELOG
Changelog
0.10.12
- Make the Banishment ghost list keyboard-only: press the displayed letter to select, Enter to confirm, or Escape to cancel.
- Remove the window's mouse raycaster and keep the cursor locked and invisible for its entire lifetime, eliminating cursor flicker even when no ghost is available.
0.10.11
- Stop PEAK's native cursor manager from relocking and hiding the pointer every frame while the clickable Banishment ghost-selection window is open.
- Keep the cursor stable even when the live ghost list is empty, then return control to PEAK immediately after closing the window.
0.10.10
- Play PEAK's native right-hand reaching pose for 0.45 seconds whenever Teammate Push succeeds.
- Synchronize the push gesture to other players running the mod while keeping the animation independent from PEAK's real helping/grab behavior.
0.10.9
- Set the Banishment Cross to an approximately 0.5-percent roll in every luggage/chest item slot while retaining the one guaranteed beach spawn.
- Replace free-text ghost-name entry with a live list of eligible ghosts. Select by mouse or the displayed letter, then confirm with the button or Enter; Escape still cancels.
- Send the selected Photon actor ID to the host and keep host-authoritative holder, item, identity, death-state, and banishment validation.
- Reclassify Mandrake, Tick, and Scorpion as harmful Poltergeist choices after auditing their gameplay behavior; keep the safe Weird Shroom and guaranteed-positive red/yellow Shroomberries green.
- Increase ordinary-food frequency by reducing special green effects from 26 to 18 percent and special red effects from 30 to 22 percent, and reduce the combined rare-gear rate from one offer per five eligible ghost-hours to one per six.
- Remove the Snowball object and icon from Freezing Cloud. Cosmetic cloud-VFX failures can no longer prevent the actual synchronized status cloud from being created.
0.10.8
- Give the Banishment name prompt exclusive keyboard control while it is open: PEAK no longer samples character actions, and all sampled gameplay/UI flags are cleared before other systems can consume them.
- Block the missing emote, ping, spectate, sprint-toggle, push-to-talk, Teammate Push, and Developer Tools inputs so letters typed into a player name cannot trigger gameplay features.
- Keep only text entry, Backspace/Delete, Ctrl+V, Enter submission, and Escape cancellation active inside the prompt.
0.10.7
- Keep the Banishment name window open after unknown, ambiguous, living, already-banished, or otherwise rejected targets; preserve the entered text and show the host's specific response in the window. Only a successful exact ghost name or Escape now closes it.
- Keep the cursor locked and hidden while the keyboard-only Banishment prompt is open, preventing the game cursor manager and the mod from toggling it every frame at screen center.
- Exclude the non-food Banishment Cross from
ItemCooking.UpdateCookedBehavior, eliminating the repeated_Tintmaterial warning stacks that caused pickup/drop synchronization hitches.
0.10.6
- Fix the Banishment room-state reader confusing the beach run marker with a Boolean player-ban property, which previously produced a
FormatExceptionevery frame and caused pickup/drop hitches through heavy log writing. - Guard Poltergeist against Unity's destroyed local-character references during scene transitions, preventing a second per-frame
NullReferenceExceptionloop. - Poll shared Banishment, Poltergeist, and Teammate Push room settings four times per second instead of every rendered frame, and validate their network value types without exception-driven conversion.
- Throttle delayed bound-ghost portrait retries and their debug logging so missing player customization data cannot become another per-frame retry/log loop.
0.10.5
- Route main Enter, Numpad Enter, and newline text events through one guarded Banishment submission path.
- Make Backspace and Delete remove one typed character, including held-key repeat, with duplicate same-frame input protection.
- Keep player-name matching case-insensitive and add specific host responses for unknown, ambiguous, living, and already-banished players.
0.10.4
- Replace the Compass-derived proximity-dither material on every generated cross part with an opaque URP material, preventing the Banishment Cross from fading near the camera or while held.
- Capture text directly from Unity's active keyboard layout while the Banishment prompt is open, so dynamically created UI no longer depends on PEAK's EventSystem text routing.
- Add working Backspace and Ctrl+V handling while preserving Enter submission, Escape cancellation, the exact-name limit, and non-ASCII keyboard input.
0.10.3
- Move the held Banishment Cross farther forward and to the right, use PEAK's stable one-hand hold, and put every generated model part on the native item layer so it remains visible while standing still.
- Consume PEAK's mapped pause input as soon as the Banishment name prompt is open and guard the vanilla pause-menu opener, making Escape close the prompt without opening the pause menu.
- Rename the German action and prompt text to
Geist verbannen/GEIST VERBANNEN.
0.10.2
- Make a banished ghost completely invisible to every modded player while preserving each client's original renderer state for revival.
- Stop the banished player's local Photon Voice recorder and mute that actor's received voice on every modded client.
- Restore normal ghost visibility and microphone transmission automatically as soon as the host clears the banishment on revival.
- Keep the existing host-authoritative Poltergeist lock: open offers and stored effects are cleared, new offers are withheld, and forged selections remain rejected.
0.10.1
- Added a host-only
POLTERGEIST ZOMBIE TESTcontrol to the in-game Developer Tools tab. - Adjust the Zombie Ambush probability from 0 to 100 percent in 0.5-percent steps, or use the dedicated
SET 100%button. - At 100 percent, every newly generated red Poltergeist card is guaranteed to be Zombie Ambush; an already visible offer is intentionally left unchanged.
- Added
RESET TO AUTO, which restores the shipped interval-aware probability (2.5 percent per red card at the default three-minute interval, averaging about one offer per two eligible ghost-hours). - Persist an explicit override in the BepInEx configuration while keeping automatic probability as the default for new and existing installations.
0.10.0
- Added the reusable
BANISHMENT CROSS, a hand-sized crooked grave cross with a weathered PEAK-style silhouette, native inventory behavior, and a generated item icon. - Spawn exactly one guaranteed cross beside the beach starting positions for each new run; additional crosses can appear in every luggage/chest pool at native
Rareweight. - Use primary action while holding the cross to open a PEAK-font player-name prompt. Enter validates an exact dead-player name on the lobby host; Escape cancels without using the item.
- Synchronize banishment through the Photon room. A banished ghost immediately loses any open/stored Poltergeist result, receives no new choices, and cannot submit forged selections.
- Show the bound player's actual skin color, eye texture, mouth texture, and name in a visible ghost portrait at the cross's center for every modded player.
- Automatically release the ghost and reset the reusable cross as soon as that player is revived; leaving the lobby also cleans the state.
0.9.8
- Added the rare red Poltergeist choice
ZOMBIE AMBUSH, averaging roughly one offer per two hours at any configured interval. - Spawn PEAK's native networked Mushroom Zombie at a terrain-checked position beside the spectated living player, wake it after native initialization, and temporarily force that player as its first target.
- Show the 60-second lifetime on the choice card and saved slot, then make the zombie collapse through its native dead state and clean it up three seconds later.
- Zombie Ambush uses a native poisonous mushroom icon, can be saved in the Poltergeist slot, and is validated and spawned only by the lobby host.
0.9.7
- Added the super-rare green Poltergeist choice
RARE MIRACLE, averaging roughly one offer per twelve hours at any configured interval. - The selecting ghost is revived beside the living player being spectated through PEAK's original networked Scout Effigy revive routine and poof effect, without a post-revive curse.
- Rare Miracle uses the native Scout Effigy icon, can occupy the saved Poltergeist slot, and remains host-authoritatively validated.
0.9.6
- Rebuilt the Poltergeist choice overlay with PEAK's native TextMesh Pro font and HUD rendering instead of Unity's legacy IMGUI text.
- Reduced both choice cards to 85 percent of their previous maximum size and separated every text, icon, and action region to prevent overlap.
- Reworked the saved Poltergeist effect into a compact one-slot hotbar with a visible icon, item/effect name, color state, and the
1activation key. - Added a visible fallback icon for Cure-Some, whose PEAK item data does not expose its own UI icon.
0.9.5
- Fixed Twitch reward updates on PEAK's bundled runtime. Existing Cannon Launch rewards now receive the configured price, enabled state, and global cooldown.
- Fixed Twitch redemption fulfillment/refund updates and reward disabling during disconnect for the same runtime compatibility issue.
0.9.4
- Keep the current run active while the host's living F8 developer dummy exists, allowing the host to die, become a ghost, and test Poltergeist against the stationary dummy.
- Patch only PEAK's authoritative all-players-dead check; the dummy remains local, occupies no Photon lobby slot, and a dead or removed dummy no longer holds the run open.
- Explain the ghost-test behavior in the Developer Tools window and documentation.
0.9.3
- Added one host-authoritative stored Poltergeist slot for each eligible ghost.
- Hold either Ctrl key and press
NorMto save the corresponding offered result instead of deploying it immediately. - Added a compact bottom-centre PEAK-styled slot with the stored result's native icon, name, helpful/harmful color and
1binding. - Press
1to throw or cast the stored result at the currently spectated living player. A successful deployment consumes it; a failed deployment keeps it. - Saving a new result replaces the previously stored result, while using an ordinary offer leaves the stored slot untouched.
- Validate storing and delayed deployment on the lobby host so clients cannot invent unavailable effects locally.
0.9.2
- Changed the Poltergeist test default to three minutes (180 seconds) and added a one-time migration for existing configurations.
- Kept every offer open for exactly 45 seconds, then restarted the full configured interval after selection or expiry.
- Reworked both ghost cards to show an explicit throw/cast question above a native PEAK icon and the
NorMinput below it. - Expanded the weighted pools to all unique playable food and direct consumables found in the installed PEAK item database while excluding hidden duplicates, props, containers, cheats and quest objects.
- Added Healing, Warmth, Wakefulness, Poison, Drowsy, Freezing, Hunger, Heat and Spore clouds plus native Morale, Antidote and Cleansing bursts.
- Expanded the curated rare pool with Cure-Some, Energy Elixir, Bugle of Friendship, Faerie Lantern, Pandora's Lunchbox and Scout Effigy while keeping permanent amulets, warp tools and run-breaking mythical items out.
- Preserved the combined rare-result target of one offer per five continuously eligible ghost-hours; individual rare items share that total probability through a second weighted roll.
0.9.1
- Renamed the public mod, package, DLL, pause-menu entry, and integration window to
ImReave_Twitch_Integrationwhile preserving the existing plugin ID and saved configuration. - Replaced the package artwork with ImReave's supplied character image, resized without altering the artwork to Thunderstore's required 256x256 PNG format.
- Added a concise front-page notice that every participating player needs the mod while only the streamer signs in to Twitch.
- Summarized Voice Balance, Channel Point rewards, Teammate Push, and Poltergeist in the package description.
0.9.0
- Added the host-authoritative Poltergeist mechanic for dead players who are spectating a living teammate.
- Added a PEAK-styled two-card ghost overlay: a green helpful choice on
Nand a red harmful choice onM, including native item icons and the currently spectated target. - Added weighted helpful and harmful PEAK food pools; powerful food is less common without making items such as Fortified Milk vanishingly rare.
- Added independent Healing Cloud and Poison Cloud choices using PEAK's native healing/spore visuals plus synchronized stamina or poison effects.
- Added very rare Rope Spool, Rope Cannon, First Aid Kit, Autoparachute, Blowgun, and Cure-All offers. The combined rare-gear rate averages one offer per five hours for each continuously eligible ghost.
- Physically throw selected food and gear in an arc toward the currently spectated player.
- Added a host-only shared Poltergeist enable switch and 1-60 minute interval control to the integration window and synchronized both through the Photon room.
- Validate every ghost selection on the host and accept offer, result, and cloud events only from the current lobby host.
0.8.7
- Changed Cannon Launch to 3000 Channel Points with a five-minute global cooldown for fresh and existing installations.
- Added a 0-60 minute cooldown control and one combined
APPLY TWITCH SETTINGSaction to the in-game integration window. - Verify the reward settings returned by Twitch after every create or update before reporting synchronization success.
- Detect an existing same-title reward that this Client ID cannot manage and report an actionable conflict instead of showing unverified local settings.
- Serialize reward updates to prevent overlapping price and cooldown changes from racing each other.
- Route launches only from the exact reward ID verified as manageable by this integration.
0.8.6
- Restricted the developer push-test bot to Photon's current lobby host.
- Blocked the Developer Tools toggle, spawn button, remove button, and
F8spawn hotkey for non-host players. - Automatically remove the local dummy and its HUD if the local player loses the host role.
- Keep solo/offline testing available when no Photon room exists.
0.8.5
- Doubled the default Teammate Push force from 200 to 400 and migrate untouched existing defaults automatically.
- Added a 200-800 host-only force slider to the in-game integration window.
- Synchronize the host's selected force through the Photon room so every player running version 0.8.5 or newer uses the same value.
- Non-host players can see the shared force but cannot change it while connected to the room.
0.8.4
- Replaced the large Ventus Bot and
TWITCH INTEGRATIONlabel in the main menu with one compact 64-pixel Twitch logo button in the top-right corner. - Removed the separate main-menu caption and oversized click area while keeping the pause-menu entry unchanged.
0.8.3
- Added a second copy of PEAK's native stamina/debuff bar for the active developer push-test dummy.
- Added live dummy stamina and injury percentages plus a red
DAMAGE +N%indicator whenever injury increases. - Kept the developer dummy outside Teammate Push fall protection so it can be used to verify actual fall damage.
0.8.2
- Anchored the developer push-test dummy to the local character's live body position instead of the character root that can remain at the level spawn.
- The dummy now appears one metre in front of the player's current position, on the nearest valid ground and already within push range.
0.8.1
- Increased the default Teammate Push forward force from 80 to 200 after in-game dummy testing.
- Extended the brief knockdown from 0.85 to 1.1 seconds so the target travels instead of only tipping over.
- Existing untouched 80-force configurations migrate automatically; custom force values are preserved.
0.8.0
- Added separate
INTEGRATIONandDEVELOPER TOOLStabs to the in-game window. - Added an opt-in local push-test bot spawner, disabled by default and bound to
F8. - Added
SPAWN / REPLACE TEST BOTandREMOVE TEST BOTcontrols. - The test dummy uses PEAK's loaded bot Character/Ragdoll prefab while bot AI and input translation are disabled.
- Developer test bots are explicitly targetable by Teammate Push and are removed when the mod shuts down.
0.7.3
- Enforced 1.5 metres as the hard maximum Teammate Push targeting range.
- Existing configurations above 1.5 metres are migrated down automatically.
0.7.2
- Added eight seconds of fall-damage protection to the player affected by Teammate Push.
- The protection ends immediately after the first genuine landing so a later fall deals normal damage again.
- Reduced the default push targeting range from 3.25 metres to 1.5 metres and migrate the old default on existing installs.
- Added a configurable
FallProtectionSecondsvalue from 1 to 30 seconds.
0.7.1
- Added a
TWITCH INTEGRATIONbutton to PEAK's Escape pause menu. - The same integration window and live feature controls are now available during a run.
- Escape closes the integration overlay first without also dismissing the pause menu in the same frame.
0.7.0
- Added optional in-game Teammate Push, enabled or disabled from the integration window.
- Added a configurable
Uhotkey, 3.25-metre line-of-sight targeting, and a short input cooldown. - Added an approximately one-metre forward shove with a small lift and brief ragdoll fall.
- Reused PEAK's multiplayer character RPCs so the pushed target does not need the mod.
- Kept the feature entirely in-game with no Twitch chat commands or additional OAuth scope.
0.6.2
- Removed PEAK's long-lived zero-damage cap from Cannon Launch protection.
- Fall damage is now skipped only for the launch's first genuine landing and is restored immediately afterward.
- Prevented short, ineligible
Landcalls from clearing protection before the actual landing.
0.6.1
- Colored the Cannon Launch countdown green for 3, yellow for 2, and red for 1.
- Added a compact animated lower-left popup identifying the triggered Twitch reward.
- Changed the Cannon Launch reward cost to 1000 Channel Points.
- Added a one-time configuration migration so existing installations also receive the 1000-point cost and disabled cooldown.
0.6.0
- Added a targeted three-second 3-2-1 countdown before Cannon Launch.
- Styled the countdown with PEAK's active TextMeshPro font, bold outlined numbers, and a short pop animation above the screen center.
- Synchronized the countdown to the selected player's mod client through Photon events.
- Added a gentle 15% forward component in the selected player's facing direction while keeping the launch predominantly vertical.
- Revalidated the selected player after the countdown and refunds the redemption if they leave or become unavailable.
0.5.2
- Fixed Twitch reward updates and disconnect cleanup to use the required HTTP PATCH method.
- Kept the discovered reward session active when a settings synchronization fails, so redemptions still reach the game.
- Added exact-title fallback routing for Cannon Launch redemptions when Twitch reward synchronization is temporarily unavailable.
- Added HTTP status details to Twitch API errors for easier diagnosis.
- Moved the Ventus Bot and its Twitch Integration label to the top-right corner of the main menu.
0.5.1
- Increased the default one-step Cannon Launch force from 500 to 2000.
- Added an in-game launch-power slider with a range from 250 to 5000.
- Disabled the Twitch reward's global cooldown by default.
- Added a one-time migration so existing 0.5.0 configurations receive the stronger launch and disabled cooldown automatically.
0.5.0
- Added automatic creation and live synchronization of the
[PEAK] Cannon Launchreward. - Upgraded OAuth to
channel:manage:redemptions; existing users authorize once again with the same Client ID. - Added required viewer player-name input, exact case-insensitive lobby matching, and streamer targeting.
- Added multiplayer launch dispatch through PEAK's existing character RPCs.
- Added targeted fall-damage suppression until the launched player lands.
- Added automatic Twitch fulfillment on success and cancellation/refund for invalid targets.
- Added Cannon Launch enable, cost, sync, and status controls to the main-menu window.
- Replaced the translucent integration window with an opaque dark-green, high-contrast panel.
0.4.0
- Rebranded the project as PEAK Twitch Integration.
- Added an in-game Twitch connection window opened through the Ventus Bot.
- Added Twitch Device Code OAuth without storing a client secret.
- Added Windows-DPAPI-protected OAuth credential storage and automatic token refresh.
- Added a direct EventSub WebSocket connection for Channel Points redemptions.
- Added reconnect, deduplication, token validation, disconnect, and forget-account controls.
- Integrated PEAK Voice Balance as the first feature module with its master toggle and shared 0-200% level.
- The Twitch connection currently observes redemptions; no redemption launches a game action in this version.
0.3.0
- Added the Ventus Bot as a small bottom-center indicator on PEAK's main menu.
- Embedded the image in the plugin DLL so it cannot be lost during installation.
0.2.0
- Added a
VOICE BALANCErow to PEAK's player-volume menu. - Added an ON/OFF button for all incoming voice processing.
- Added a shared 0-200% output slider for every equalized player voice.
- Added explicit keyboard/controller navigation links for the new controls.
0.1.0
- Added per-player incoming RNNoise suppression.
- Added speech-aware automatic loudness leveling and a peak limiter.
- Added an option to ignore non-zero player volume sliders while preserving 0% as mute.
- Preserved PEAK's proximity and environmental voice processing.