Commit graph

7 commits

Author SHA1 Message Date
Troll (Hermes Agent)
24b0815fc6 fix: herb/ore categorization via static ID lookup table
SplitByCategory() guessed herb/ore from display-name keywords written
for the original 5-entry Northrend pool. Outland/Classic ore uses
'Deposit' not 'Vein', and most herb names match no keyword, so both
buckets came back empty for almost every v2 zone and the code silently
fell back to the unsplit pool (confirmed live in Hellfire Peninsula).

Replace the keyword guess with a static ID->category lookup table built
from the DB-verified entry IDs in docs/zone-specific-resources-spec.md.
The old keyword check is retained only as a fallback for entries not in
the table.
2026-09-08 23:04:04 +00:00
Claude
3e84c7bb90 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.
2026-09-04 20:22:31 +00:00
Claude
2857b0580e
feat: hold the scheduler on an empty server instead of polling into an ambush
Every failed scheduled start overwrote the rolled Min/MaxInterval with a
hard-coded 5 minutes and never restored it, so on a server that sits empty
the scheduler degenerated into a permanent 5-minute poll. The moment the
first player logged in, an event fired within one retry window and anchored
on their exact position, with a server-wide announcement -- login ambush
rather than a scheduled world event. It also wrote a retry line to
gold-rush.log every 5 minutes forever (Debug defaults to 1).

StartEvent now counts eligible anchors when the schedule expires, holds
without consuming the interval while below MinPlayersOnline, and inserts
GraceMinutes once the world repopulates. The count runs only on schedule
expiry, never per world tick.

New config: GoldRush.RetryMinutes (5), GoldRush.GraceMinutes (15),
GoldRush.MinPlayersOnline (1). GraceMinutes = 0 rolls a fresh interval
instead. GM-forced starts pass scheduled=false and bypass both gates.

Verified with clang -fsyntax-only against the live build's compile flags.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019vTNrJGsprcjdjjjDJD5ZM
2026-09-03 16:58:04 +00:00
Claude
6244e2bc65
fix: correct bot routing, node lifetime, reload cleanup and spawn placement
Four defects found reviewing this against AzerothCore efe123fab and
mod-playerbots 8d9f6aa6 (both 2026-08-14).

1. Bot routing did nothing. Engine::ChangeStrategy switches on name[0] and
   only handles '+', '-', '~' and '?'; a bare "new rpg" fell through every
   case. Bots still drifted toward the hotspot, but only because
   rpgInfo.ChangeToGoGrind() works and AiFactory already grants the strategy
   when AiPlayerbot.EnableNewRpgStrategy is on. Now sends "+new rpg", and
   only to BOT_STATE_NON_COMBAT -- the combat engine never carries it.

2. Node lifetime was off by 1000x. The respawnTime argument to
   Map::SummonGameObject lands in GameObject::SetRespawnTime(int32), which is
   seconds. Passing DurationMs made a 20-minute event's nodes live ~13.9 days,
   so they only ever vanished via the explicit despawn at event end.

3. LoadConfig cleared _spawnedNodes and _active without despawning, so a
   `.reload config` mid-event orphaned every node permanently (compounded by
   defect 2). It now tears the running event down first.

4. Spawns reused the anchor's exact Z for every scattered X/Y with no ground
   probe and no LOS check, leaving nodes floating or buried on the hilly zones
   in the default pool. Placement now probes ground height, rejects drift
   beyond 20y, requires LOS from the anchor, and retries up to 8 times.

Verified with a clang -fsyntax-only pass using the live build's own compile
flags plus the mod-playerbots include tree.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019vTNrJGsprcjdjjjDJD5ZM
2026-09-03 16:49:09 +00:00
Scarecr0w12
ebef50d438 docs: add compatibility notes for playerbots setups 2026-04-01 13:51:38 -04:00
Scarecr0w12
060b77c48c docs: clarify mod-playerbots dependency 2026-04-01 13:47:04 -04:00
Scarecr0w12
83559df790 chore: initial standalone module import 2026-04-01 13:13:26 -04:00