fix: skip playerbots so bot re-rolls do not spam the server
Some checks failed
core-build / build (pull_request) Has been cancelled

PlayerbotFactory calls Player::GiveLevel() in six places while randomising a
bot, and GiveLevel fires OnPlayerLevelChanged exactly as a real ding does. On
a Playerbots realm that means every bot re-roll past level 10/20/.../80 sends
a server-wide broadcast plus a raid warning and hands the bot gold and two
reward items. Turning off CongratsPerLevel.Enable does not help: the
reward-level announcements sit outside that gate.

Adds Congrats.SkipBots (default 1). The bot test is guarded by
#ifdef MOD_PLAYERBOTS, which the core defines for every module when
mod-playerbots is present, so a core built without it is unaffected.

Also adds the missing `override` on OnPlayerLogin. The signature already
matched the base, so behaviour is unchanged -- it just stops a future
signature change from silently detaching the hook.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019vTNrJGsprcjdjjjDJD5ZM
This commit is contained in:
Claude 2026-09-03 17:21:11 +00:00
parent fed4752e0c
commit 0ad5f1d345
No known key found for this signature in database
2 changed files with 37 additions and 1 deletions

View file

@ -19,3 +19,12 @@ Congrats.Announce = 1
# ID Acore String Message
Congrats.Acore.String.ID = 60000
# Ignore Playerbots entirely? (1: true | 0: false)
#
# PlayerbotFactory calls Player::GiveLevel() whenever it randomises a bot, which fires
# the same level-changed hook a real ding does. With this off, every bot re-roll past a
# reward level broadcasts to the whole server and hands the bot gold and items.
# Has no effect on a core built without mod-playerbots.
Congrats.SkipBots = 1