0ab3a3b5b5
The update-object handler now runs 1.12.1's two passes: - It writes every block of a packet first, then runs the field watches at the packet's end against each object's last write. A packet with two values blocks for one object fires once. - A re-create notifies every field. - An object that leaves range is released with its fields and reactivated without its create hook, not destroyed. - A first create runs no watch, so the flag tutorials fire only on a change, from their watchers. The guild tag rides the same core: - `TABARD_CANSAVE_CHANGED` comes only from RefreshGuildTag. - A `GetGuildInfo` miss waits and signals `PLAYER_GUILD_UPDATE`. - A new `PLAYER_GUILD_TIMESTAMP` re-asks the guild. Tests pin each pass, the released table and the guild waiters. Fixes #1391 Fixes #1392 Fixes #1499 Fixes #1418 Fixes #1420 Fixes #1416 Fixes #1417 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>