Skip to content

Events

All events fire synchronously on the player's owner thread. Persistence may finish asynchronously after post events.

EventTimingCancellableMutable fieldCancellation/effect
PlayerExpGainEventBefore experience is writtenYesamountCancellation or amount <= 0 prevents the gain; replacement amount is quota-checked again.
PlayerPreLevelUpEventAfter non-mutating checks, immediately before level-up mutationYesNonePrevents the level-up mutation.
PlayerLevelUpEventAfter a successful level gainNoNoneReports old/new level and cause.
PlayerLevelChangeEventAfter a level-changing operation commitsNoNoneReports old/new level, operation type, and direction.
PlayerMaxLevelReachedEventWhen the maximum level is reachedNoNoneReports type, max level, and cause.

Post events are informational and cannot cancel persistence or revert the committed in-memory change. Asynchronous catalog loading itself does not publish these mutation events.