fix: stale ZonePool default + add missing CHANGELOG entries

The hardcoded fallback default for GoldRush.ZonePool still used the
old ZoneName|AreaLabel format after the parser switched to
ZoneName|NodeEntries|BonusEntries. Not a crash risk (BuildNodeEntries
safely no-ops on non-numeric input) but stale and misleading. Cleared
to an empty default -- the real default lives in gold_rush.conf.dist.

Also added CHANGELOG entries for both this PR's zone-specific
resources feature and the earlier null-session broadcast crash fix
(PR #3), neither of which had been logged despite being merged.
This commit is contained in:
Claude 2026-09-04 20:22:31 +00:00
parent 7c192f98a5
commit 3e84c7bb90
2 changed files with 31 additions and 1 deletions

View file

@ -4,7 +4,27 @@ All notable changes to `mod-gold-rush` will be documented in this file.
## [Unreleased — hallsworth fork]
### Added
- Per-zone resource nodes. `GoldRush.ZonePool` entries can now carry their own
node and bonus pools (`ZoneName|NodeEntries|BonusEntries`) instead of every
hotspot drawing from one global list -- an event in Un'Goro spawns Un'Goro-
appropriate herbs/ore, Sholazar spawns Northrend resources, etc. `gold_rush.conf.dist`
ships with all ~57 valid WotLK 3.3.5a open-world zones pre-populated (see
`docs/zone-specific-resources-spec.md` for how each zone's resource list was
derived and verified). New `GoldRush.BonusChancePercent` (default 15) config
controls how often a spawn pulls from a zone's rarer bonus pool instead of its
normal one. A zone left without node/bonus data still falls back to the
global `GoldRush.NodeEntries` pool exactly as before.
### Fixed
- Event start/end announcements no longer crash the server. `StartEvent()` and
`EndEvent()` both used `ChatHandler(nullptr).SendWorldText(...)` to broadcast
server-wide -- `ChatHandler::SendWorldText` assumes a real session and calls
`GetSession()->SendPacket()` unconditionally, so a null session was an
immediate null-pointer crash. Confirmed via a symbolized backtrace against a
captured coredump on the live server (two crashes within ~24h). Replaced with
`sWorldSessionMgr->SendServerMessage(SERVER_MSG_STRING, text)`, the session-free
broadcast path the built-in `.announce` GM command uses.
- Bot routing is no longer a silent no-op. `Engine::ChangeStrategy` dispatches on the
first character of the strategy name and ignores anything without a `+`/`-`/`~`/`?`
prefix, so the bare `"new rpg"` calls did nothing. Now sends `"+new rpg"`, and only