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
* feat. Move awards to database and enable races/classes
* feat. Allow multiple records in the table
* feat. Check that the values in the register are greater than zero