You are viewing a potentially older version of this package.
View all versions.
EventChatNotifications
Posts a narrator-style line in the vanilla text chat when a player takes first place on a tracked tab-menu metric (best hole, longest chip-in, average finish time, item pickups, K/O ratio) or when a hole-event lands (hole in one, eagle, birdie, speedrun).
By Cray
| Date uploaded | 3 months ago |
| Version | 0.4.1 |
| Download link | Cray-EventChatNotifications-0.4.1.zip |
| Downloads | 207 |
| Dependency string | Cray-EventChatNotifications-0.4.1 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2305README
EventChatNotifications
Mirror-friendly mod that piggybacks on the vanilla InfoFeed event RPCs to post a
narrator-style line in the local text chat for notable in-match events. No custom Mirror
messages, no broadcasting from this mod — every modded client receives the vanilla event RPC
already and just renders an extra chat line locally. Vanilla peers in the lobby see no
difference.
Events covered in v0.1
- Hole in one, birdie, eagle, albatross, condor (per-stroke achievements)
- Chip in
- Speedrun ("that was fast")
- Knockouts: "X knocked out Y"
Known gaps in v0.1
- Stat-pass detections ("X passed Y on knockouts/putts/total score") aren't yet implemented — they require per-frame tracking of every player's current rank on each metric. Deferred to v0.2.
Build / deploy / release
dotnet build -c Release
pwsh tools/package.ps1
gh release create vX.Y.Z artifacts/Cray-EventChatNotifications-<ver>.zip --notes-file CHANGELOG.md
CHANGELOG
Changelog
v0.4.1
- Include the displaced leader in the announcement:
Alice took first on longest chip-in from Bob — 27m.First-time leaders (no prior holder) still read asAlice took first on longest chip-in — 27m..
v0.4.0
- Cut the noise. Only chat now when a player moves into first place on one of the
tab-menu leaderboard metrics the vanilla game already tracks:
bestHoleScore,longestChipIn,avgFinishTime,itemPickups, and K/O ratio (matchKnockouts / max(1, matchKnockedOut)). Stable tie-break byjoinIndexso a true tie doesn't ping-pong "Alice leads / Bob leads / Alice leads" across reconciles. Solo sessions stay quiet (skipped when fewer than two non-spectators are connected). - Removed v0.3.0's pairwise score / knockouts / strokes overtake firehose, the
per-knockout chat line, the per-shot chip-in line, and the perfect-drive
SwingNiceShotVFX hook. Hole-event notifications retained: hole-in-one / albatross / eagle / birdie / condor (viaInfoFeed.StrokesMessageData) and speedrun (viaSpeedrunMessageData) — the rest is treated as scoreboard-noise that already has a UI surface.
v0.3.0
- Add stat-pass notifications. Each modded client subscribes to
CourseManager.PlayerStatesChangedand tracks pairwise rising-edge transitions on three metrics — match score, knockouts, and strokes (a.k.a. putts). When player A goes from strictly worse than B to tied-or-better, the chat reads[Match] {A} passed {B} on {metric}.. Score and knockouts are higher-is-better; strokes are lower-is-better, so passing on putts means going from "more strokes than B" to "fewer or equal." - Initial-state seed is treated as neutral (no cascade of "X passed Y" on first tick).
v0.2.0
- Add coverage for perfect swings on the driving range (and anywhere outside hole completion):
hooked
VfxManager.PlayPooledVfxLocalOnlyInternal(SwingNiceShot)and post a[Match] {Player} hit a perfect drive!line, with the swinger resolved by closest-player proximity to the VFX origin. Multi-hit swings are debounced (0.5 s + 1 m) so each shot only posts once.
v0.1.0
- Initial release. Hooks
InfoFeedRPC handlers to mirror the per-stroke / chip-in / speedrun / knockout events into the local text chat as narrator lines. Stat-pass tracking deferred.