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.
84 lines
4.5 KiB
Markdown
84 lines
4.5 KiB
Markdown
# Changelog
|
|
|
|
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
|
|
to the non-combat engine, which is the only engine `AiFactory` ever adds it to.
|
|
- Temporary node lifetime is no longer 1000x too long. The `respawnTime` argument to
|
|
`Map::SummonGameObject` reaches `GameObject::SetRespawnTime(int32)`, which is in
|
|
seconds; the module was passing milliseconds, turning a 20-minute event into a
|
|
~14-day one. Nodes never expired on their own.
|
|
- A config reload during a live event no longer orphans its gameobjects. `LoadConfig`
|
|
cleared the tracked node list without despawning, leaving nodes in the world with
|
|
nothing left to remove them.
|
|
- Nodes are placed on real ground. Spawns previously reused the anchor's exact Z for
|
|
every scattered X/Y, so on sloped terrain they floated or sank. Placement now probes
|
|
ground height, rejects cliffs and lower floors, requires line of sight to the anchor,
|
|
and retries a few times before giving up on a node.
|
|
|
|
### Added
|
|
- `GoldRush.RetryMinutes` (default 5), `GoldRush.GraceMinutes` (default 15) and
|
|
`GoldRush.MinPlayersOnline` (default 1).
|
|
|
|
### Changed
|
|
- The scheduler no longer collapses to a fixed retry poll on an empty server. Previously
|
|
every failed attempt overwrote the rolled Min/MaxInterval with a hard-coded 5 minutes
|
|
and stayed there, so the first player to log in got an event announced on top of them
|
|
within one retry window. It now holds while the world is below `MinPlayersOnline`, and
|
|
waits `GraceMinutes` once the world repopulates before running. GM-forced starts
|
|
(`.goldrush start` / `teststart`) bypass both checks.
|
|
- Node scatter uses a square-root radius so points spread evenly across the disc
|
|
instead of bunching near the anchor.
|
|
- `DespawnHotspotNodes` resolves the map once instead of per node, and warns if the
|
|
map cannot be resolved.
|
|
- Dropped the redundant `SetRespawnTime` / `SetSpawnedByDefault` calls after
|
|
`Map::SummonGameObject`, which already does both.
|
|
|
|
## [Unreleased]
|
|
|
|
### Added
|
|
- Standalone repository documentation in `README.md`.
|
|
- Initial `CHANGELOG.md` for tracking module releases.
|
|
- Clear documentation that `mod-playerbots` is a required dependency.
|
|
- Added a compatibility section describing the AzerothCore + Playerbots
|
|
expectations for this module.
|
|
|
|
### Changed
|
|
- Loosened Gold Rush hotspot selection so events can fall back to eligible
|
|
live-player zones when configured hotspots are unavailable.
|
|
- Improved GM messaging for zone eligibility failures.
|
|
- Allowed zone-based fallback when an exact configured sub-area anchor is not
|
|
available.
|
|
|
|
### Fixed
|
|
- Fixed `GoldRush.NodeEntries` parsing so configured node IDs are actually
|
|
loaded from `gold_rush.conf`.
|
|
- Fixed startup behavior where Gold Rush could appear to have no valid node
|
|
entries even when configuration values were present.
|
|
- Fixed `teststart` and scheduler flows that were overly strict about allowed
|
|
zones.
|