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
| Date uploaded | 2 months ago |
| Version | 0.10.12 |
| Download link | Ventloop-ImReave_Twitch_Integration-0.10.12.zip |
| Downloads | 101 |
| Dependency string | Ventloop-ImReave_Twitch_Integration-0.10.12 |
This mod requires the following mods to function
BepInEx-BepInExPack_PEAK
BepInEx pack for PEAK. Preconfigured and ready to use.
Preferred version: 5.4.75301README
ImReave_Twitch_Integration
The streamer and all participating players need this mod. Only the streamer needs to sign in to Twitch.
Includes Voice Balance, Channel Point rewards, Teammate Push, and the Poltergeist feature. It runs entirely inside PEAK without a chat bot, companion app, or the external Stream Hub.
Current features
- Click the small Twitch logo at the top-right of PEAK's main menu to open the integration window.
- Link the broadcaster account with Twitch's Device Code OAuth flow.
- Connect directly to Twitch EventSub and receive custom Channel Points redemption events while PEAK is running.
- Store OAuth credentials encrypted for the current Windows account and refresh them automatically.
- Enable or disable feature modules from the integration window.
- Use PEAK Voice Balance as the first module, including RNNoise, per-player automatic loudness leveling, a peak limiter, and one shared 0-200% output level.
- Automatically create and manage a
[PEAK] Cannon Launchreward with mandatory player-name input. - Launch the exact matching player, including the streamer, and refund invalid or unavailable targets.
- Optionally look at a nearby teammate and press U to shove them about one metre and knock them over.
- Let ghosts use Poltergeist to choose a helpful green effect with N or a harmful red effect with M for the living player they are spectating.
- Let ghosts hold Ctrl while pressing N or M to save one offered result and deploy it later with
1. - Find the reusable Banishment Cross at the beach or rarely in luggage and bind a named dead player's ghost until revival.
- Enable the local Developer Tools test-bot spawner for repeatable shove testing without another player.
The main-menu integration window now uses an opaque dark-green background and high-contrast text.
Installation
- Install
BepInEx-BepInExPack_PEAKthrough Thunderstore or r2modman. - Remove the older standalone
PeakVoiceBalancemod if it is installed. Running both would process voices twice. - Disable or remove an older package named
PeakTwitchIntegration; the renamed package otherwise exists beside it instead of replacing it. - Import
ImReave_Twitch_Integration-0.10.12.zipas a local mod and start PEAK through Modded. - Click the small Twitch logo in PEAK's main menu.
For a manual install, copy plugins/ImReave_Twitch_Integration.dll and plugins/librnnoise-0.dll into BepInEx/plugins/ImReave_Twitch_Integration/.
Linking Twitch
Twitch requires every application to have its own public Client ID. No client secret is needed or accepted by this mod.
- Register a Twitch application in the Twitch Developer Console and configure it as a public client for Device Code authentication.
- Copy its Client ID into the field in PEAK's Twitch Integration window.
- Select CONNECT.
- Open the activation page shown by the mod, enter the displayed code, and approve
channel:manage:redemptions. - PEAK reconnects the saved account automatically on later starts.
Version 0.10.12 needs the manage permission to create the Cannon Launch reward and to refund failed launches. Poltergeist, Banishment, Teammate Push and Developer Tools do not read Twitch chat and add no OAuth permission. If version 0.4.0 or older was already linked, Twitch asks for one new authorization; the Client ID does not change.
The OAuth token and rotating refresh token are protected with Windows DPAPI for the currently signed-in Windows user. FORGET SAVED ACCOUNT removes the stored authorization. Twitch is connected only while PEAK is open.
Menu access
- In the main menu, click the small Twitch logo in the top-right corner.
- During a run, press Escape and choose
IMREAVE_TWITCH_INTEGRATIONin PEAK's pause menu. - Both entries open the same live settings. Escape closes the integration window first and leaves the pause menu open.
Voice Balance behavior
- Every incoming remote voice has independent RNNoise and loudness state.
- Speech is moved toward a target of -18 dBFS within configured gain limits.
- Loud transients are limited before PEAK plays them.
- By default, non-zero individual player sliders are treated as 100%; 0% remains mute.
- PEAK's distance, obstruction, muffling, reverb, cinematics, and global voice volume remain intact.
- The existing
VOICE BALANCErow in PEAK's player-volume menu remains available.
Only the listener needs Voice Balance. It never changes or transmits the listener's own microphone audio.
Cannon Launch behavior
- On connection, the mod creates or updates
[PEAK] Cannon Launchon the linked broadcaster channel. - The default cost is 3000 Channel Points and the default global cooldown is five minutes. Both settings can be changed in the integration window; cooldown choices range from off to 60 minutes.
APPLY TWITCH SETTINGSupdates both values.SYNC / VERIFYsends the saved values again and reports the price and cooldown Twitch actually returned.- A same-title reward created manually or with a different Client ID cannot be changed through Twitch's API. The integration reports that conflict instead of displaying unverified local values or accepting its redemptions.
- Launch power defaults to 2000 and can be adjusted from 250 to 5000 in the in-game window.
- The selected player sees a large game-styled countdown: green 3, yellow 2, then red 1.
- A compact lower-left popup identifies the triggered Twitch reward during the countdown and launch.
- Launches remain mostly vertical but include a gentle forward component in the selected player's facing direction.
- Viewer input is matched case-insensitively against exact PEAK/Photon player names. A leading
@is accepted. - Unknown, missing, ambiguous, dead, or unavailable targets cancel the redemption and refund the points.
- The launch itself uses PEAK's existing multiplayer RPC, so it reaches the selected player without teleporting them into a physical cannon.
- Fall damage is suppressed only for the launch's first genuine landing. Any later fall uses PEAK's normal damage rules immediately. For a remote player's countdown and no-fall-damage guarantee, that player must also have this mod installed; the launch itself still reaches vanilla clients.
- Disabling the module disables the reward. A normal disconnect or game shutdown also attempts to disable it; after a crash, Twitch may leave it enabled until the next connection.
Teammate Push behavior
- Enable or disable
TEAMMATE PUSHin the in-game Twitch Integration window. - Look directly at a living teammate within the hard maximum of 1.5 metres and press
U. - The default forward force is now 400, twice the previous default.
- The lobby host can adjust the shared force from 200 to 800 in the integration window. The value is synchronized through the Photon room to every player using version 0.8.5 or newer.
- Non-host players see the active value but cannot change it while they are in the room.
- The target is knocked over for about 1.1 seconds and pushed backward in the local player's viewing direction.
- Every successful push plays PEAK's native right-hand reaching pose for 0.45 seconds. The visual is synchronized to other modded players without activating the real helping/grab mechanic.
- The pushed player receives up to eight seconds of fall-damage protection. It ends immediately on the first genuine landing, so a later fall uses PEAK's normal damage again.
- The key, range, preferred host force, upward lift, and protection duration can also be adjusted in the generated BepInEx configuration.
- The target does not need the mod for the shove itself because it uses PEAK's existing multiplayer RPC. The target does need the mod for fall-damage protection.
- Teammate Push is entirely in-game; there are no Twitch chat commands or additional Twitch scopes.
Poltergeist behavior
- The lobby host enables or disables
POLTERGEISTand chooses a shared interval from 1 to 60 minutes in the integration window. The test default is three minutes (180 seconds). Existing configurations migrate to that value once; other players see the lobby value but cannot change it. - After a player dies, that ghost waits one full interval. A PEAK-styled green card then appears on the left and a red card on the right for exactly 45 seconds; an unused offer expires and the next full interval begins.
- Each card asks whether the ghost wants to throw or cast the pictured result, using a real PEAK item icon. Press
Nfor the green helpful choice orMfor the red harmful choice; the key is shown beneath the icon. - Hold either Ctrl key while pressing
NorMto save that offered result instead of using it immediately. A single PEAK-styled ghost slot appears at the bottom of the screen with its icon, name and[1]binding. - Press
1later to throw or cast the stored result around the living player currently being spectated. Saving a new result replaces the old one, and a successful use empties the slot. Failed uses keep the stored result. - The food pools contain all unique usable PEAK foods and direct consumables found in the installed game data, split and weighted by their gameplay outcome. Ordinary helpful food now dominates the green card; Mandrake, Tick and Scorpion are classified as harmful, while the safe Weird Shroom and the guaranteed-positive red/yellow Shroomberries stay green. Hidden duplicates, prop/vanilla variants,
UNUSEDentries, containers and cheat or quest objects are deliberately excluded. - Helpful actions also include Healing Cloud, Morale Boost, Warmth Cloud, Wakefulness Cloud, Antidote Burst and Cleansing Burst. Harmful actions include Poison Cloud, Drowsy Cloud, Freezing Cloud, Hunger Curse, Heat Wave and Spore Cloud. Persistent clouds last eight seconds in a five-metre radius and use PEAK's native visual effects where available.
- A separate rare red
ZOMBIE AMBUSHchoice spawns and wakes PEAK's native networked Mushroom Zombie beside the living player being spectated. The card and saved slot show its 60-second lifetime; afterward it enters PEAK's native dead state, collapses, and is cleaned up after a short visible death. At the three-minute test interval it has a 2.5 percent chance per offer, averaging roughly one appearance every two hours. - Curated rare helpful gear includes Rope Spool, Rope Cannon, First Aid Kit, Autoparachute, Blowgun, Cure-Some, Cure-All, Energy Elixir, Bugle of Friendship, Faerie Lantern, Pandora's Lunchbox and Scout Effigy. Permanent amulets, quest objects, warp/cheat tools and intentionally run-breaking mythical objects remain excluded.
- The combined rare-gear chance averages one offer per six hours for each ghost who remains continuously eligible. That rate applies to any rare result in total, not to every individual item; the specific item is selected afterward from a weighted pool.
- A separate super-rare green
RARE MIRACLEchoice revives the selecting ghost beside the living player currently being spectated. It uses PEAK's Scout Effigy icon and original networked revive routine, and averages about one offer per twelve hours when offers are resolved promptly. - Food and equipment are physically thrown in an arc toward the living player currently being spectated. Clouds and bursts are cast around that player.
- Offers, stored slots and selections are created and validated by the lobby host. Every player needs version 0.9.8 or newer for Zombie Ambush; the super-rare revive choice requires version 0.9.7 or newer.
Banishment Cross
- Exactly one cross is spawned by the lobby host beside the beach starting positions for every new run. It is fixed safely on the ground until picked up.
- Additional crosses have an approximately 0.5-percent chance in each item slot of every luggage/chest loot pool.
- Pick it up, hold it, and use the primary action. The window lists every currently available ghost. Press the displayed letter to select one, then press Enter to banish; Escape cancels. Mouse input and the cursor remain disabled throughout this window.
- The host validates the holder, item, selected player identity, and dead state. The bound ghost immediately loses open and stored Poltergeist actions and receives no new offers until revival.
- A bound ghost is invisible and cannot transmit voice. Every modded client also mutes that actor's incoming voice as a second enforcement layer.
- The cross's center displays a ghost portrait made from the bound player's real PEAK skin color, eyes, mouth, and player name, synchronized for all players using the mod.
- The item remains reusable. Reviving the bound player automatically breaks the banishment; if that player dies again later, Poltergeist works normally.
- Full Banishment enforcement is a modded multiplayer feature. Every participant should use version 0.10.12 or newer so the selection window, cursor ownership, room synchronization, cross rendering, voice suppression, and Poltergeist lock stay consistent.
Developer Tools
- Open the
DEVELOPER TOOLStab in the main-menu or Escape-menu integration window. - The lobby host can override the red-card Zombie Ambush chance from 0 to 100 percent.
SET 100%guarantees it on every newly generated red card;RESET TO AUTOrestores the interval-aware default (2.5 percent at the three-minute interval). Existing visible cards are not replaced. - Inside a multiplayer room, only Photon's lobby host can enable or use the test-bot spawner. Non-host controls and the
F8hotkey are blocked. - If the local player loses the host role, any existing local test bot and its HUD are removed immediately.
- Enable
PUSH TEST BOT, then pressF8during a playable level or useSPAWN / REPLACE TEST BOT. - One stationary local test dummy is spawned in front of the player; spawning again replaces it.
- While that dummy is alive, the host suppresses PEAK's all-players-dead game-over check. Spawn it before dying to remain in the run as a ghost and test Poltergeist against it.
- A second copy of PEAK's own stamina bar appears above the normal player bar and follows the dummy's stamina and all standard debuff segments.
- Its label shows stamina and injury numerically. New injury damage flashes red as
DAMAGE +N%, making fall-damage tests unambiguous. - Walk within 1.5 metres, look directly at the dummy, and press the configured Teammate Push key (
Uby default). - The developer dummy intentionally receives no Teammate Push fall protection, while real pushed players keep the configured protection.
REMOVE TEST BOTcleans it up. Developer test bots are also removed when the mod shuts down.- The dummy is a local PEAK Character/Ragdoll test object, not a real Photon account. It does not occupy a lobby slot and other players do not see it; only the host's authoritative game-over check treats the living dummy as the final survivor.
Configuration and compatibility
The generated configuration file is:
BepInEx/config/com.local.peaktwitchintegration.cfg
Built against PEAK Steam build 24961053 and BepInEx-BepInExPack_PEAK-5.4.75301.
License
The mod source is released under the MIT License. The included RNNoise binary is redistributed under the BSD 3-Clause license; see THIRD-PARTY-LICENSES.md.
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.