benilla is one repo: the working tree moves in, restructured

Until now this repo was an export of a private tree, pushed as squashed snapshots. From here on
it is the working tree itself, and the private repo is archived.

The root holds AGENTS.md and the Rust and GitHub files only. Everything an agent needs to orient
is in docs/: METHOD.md (the rules and how the project is built, 123 lines, project method only),
MAP.md (generated from the code at every land) and CONTRIBUTING.md (what gets in and how a
change is judged). One skill, `probe`, holds the procedure for running the client unattended
against the local server.

Brought over because the project needs it: reference/ (the 1.12 name catalogues 34 source
files read; the export failed its own tests without them), the gate chain and the pool
(scripts/), the hooks that enforce the install rule and the worktree rule, the full .gitignore,
the `cargo play` alias, and the original wording of eleven source files the export had reworded.

Left out: the decision records (archived with the private repo), the export tooling, the
operator's Discord and triage loop, the lab-laptop scripts and the instruments nothing
references, which live outside the repo now. What read the records is gone from the tooling:
no corpus lint, no records index, no `reserve` verb, no number-collision check.

Three hooks are gone: fmt-at-commit and the file-size nudge were redundant with the gates, and
the assets/ui guard is now a test (`assets_ui_does_not_grow`) that fails for everyone, not only
for a Claude Code session. The remaining pool hooks stand down on a machine without a pool.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Sam
2026-09-23 15:56:57 +07:00
co-authored by Claude Fable 5.1
parent ef0fcc327c
commit 64dc60f52f
99 changed files with 30532 additions and 81 deletions
+410
View File
@@ -0,0 +1,410 @@
# The 1.12.1 client's FrameScript events and the ARGUMENTS their producers push.
# GENERATED — scripts/gen-reference-events.py. Source: wow-5875-re's
# re/events/event-catalog.tsv + event-firesites.tsv. Decision 2140.
#
# arg_formats `|`-separated, one per distinct producer shape. `()` = zero Lua values.
# Directives: %s string, %d/%u number, %f number. An event with two
# producers of different shapes carries both, and which one a given
# transition takes is a question about the transition, not the name.
# conf exact = gate on it. advisory = a contributing site declares more
# varargs than it pushes. none = no producer family reaches it HERE,
# which is not a claim that it has none; never gate on it.
# producers signal (0x703e50, no varargs) | signal2 (0x703f50, format-driven) |
# unit-field-bridge (0x51bbb0/0x51bd50 -> 0x515e50, always %s) |
# token-fanout (0x515e50 with a literal id, also %s).
# 394 events, 278 with a known producer; 22 glue-space fire sites dropped.
name ids producers arg_formats conf note
ACTIONBAR_HIDEGRID 211 signal () exact
ACTIONBAR_PAGE_CHANGED 212 signal () exact
ACTIONBAR_SHOWGRID 210 signal () exact
ACTIONBAR_SLOT_CHANGED 213 signal2 %d exact
ACTIONBAR_UPDATE_COOLDOWN 216 signal () exact
ACTIONBAR_UPDATE_STATE 214 signal () exact
ACTIONBAR_UPDATE_USABLE 215 signal () exact
ADDON_ACTION_FORBIDDEN 432 signal2 %s exact
ADDON_LOADED 429 signal2 %s exact
AREA_SPIRIT_HEALER_IN_RANGE 527 signal () exact
AREA_SPIRIT_HEALER_OUT_OF_RANGE 528 signal () exact
AUCTION_BIDDER_LIST_UPDATE 426 signal () exact
AUCTION_HOUSE_CLOSED 422 signal () exact
AUCTION_HOUSE_SHOW 421 signal () exact
AUCTION_ITEM_LIST_UPDATE 424 signal () exact
AUCTION_OWNED_LIST_UPDATE 425 signal () exact
AUTOEQUIP_BIND_CONFIRM 289 signal2 %d exact
AUTOFOLLOW_BEGIN 367 signal2 %s exact
AUTOFOLLOW_END 368 signal () exact
BAG_CLOSED 329 signal2 %d exact
BAG_OPEN 327 signal2 %d exact
BAG_UPDATE 328 signal2 %d exact
BAG_UPDATE_COOLDOWN 330 signal () exact
BANKFRAME_CLOSED 349 signal () exact
BANKFRAME_OPENED 348 signal () exact
BATTLEFIELDS_CLOSED 418 signal () exact
BATTLEFIELDS_SHOW 417 signal () exact
BILLING_NAG_DIALOG 517 signal2 %d exact
BIND_ENCHANT 402 signal () exact
CANCEL_LOOT_ROLL 506 signal2 %d exact
CHARACTER_POINTS_CHANGED 264 signal2 %d%d exact
CHAT_MSG_ADDON 227 signal2 %s%s%s%s exact
CHAT_MSG_AFK 249 ? none
CHAT_MSG_BATTLEGROUND 546 ? none
CHAT_MSG_BATTLEGROUND_LEADER 547 ? none
CHAT_MSG_BG_SYSTEM_ALLIANCE 497 ? none
CHAT_MSG_BG_SYSTEM_HORDE 498 ? none
CHAT_MSG_BG_SYSTEM_NEUTRAL 496 ? none
CHAT_MSG_CHANNEL 243 ? none
CHAT_MSG_CHANNEL_JOIN 244 ? none
CHAT_MSG_CHANNEL_LEAVE 245 ? none
CHAT_MSG_CHANNEL_LIST 246 ? none
CHAT_MSG_CHANNEL_NOTICE 247 ? none
CHAT_MSG_CHANNEL_NOTICE_USER 248 ? none
CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_HITS 455 ? none
CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_MISSES 456 ? none
CHAT_MSG_COMBAT_CREATURE_VS_PARTY_HITS 453 ? none
CHAT_MSG_COMBAT_CREATURE_VS_PARTY_MISSES 454 ? none
CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS 451 ? none
CHAT_MSG_COMBAT_CREATURE_VS_SELF_MISSES 452 ? none
CHAT_MSG_COMBAT_FACTION_CHANGE 533 ? none
CHAT_MSG_COMBAT_FRIENDLYPLAYER_HITS 447 ? none
CHAT_MSG_COMBAT_FRIENDLYPLAYER_MISSES 448 ? none
CHAT_MSG_COMBAT_FRIENDLY_DEATH 457 ? none
CHAT_MSG_COMBAT_HONOR_GAIN 460 ? none
CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS 449 ? none
CHAT_MSG_COMBAT_HOSTILEPLAYER_MISSES 450 ? none
CHAT_MSG_COMBAT_HOSTILE_DEATH 458 ? none
CHAT_MSG_COMBAT_LOG 251 ? none
CHAT_MSG_COMBAT_MISC_INFO 358 ? none
CHAT_MSG_COMBAT_PARTY_HITS 445 ? none
CHAT_MSG_COMBAT_PARTY_MISSES 446 ? none
CHAT_MSG_COMBAT_PET_HITS 443 ? none
CHAT_MSG_COMBAT_PET_MISSES 444 ? none
CHAT_MSG_COMBAT_SELF_HITS 441 ? none
CHAT_MSG_COMBAT_SELF_MISSES 442 ? none
CHAT_MSG_COMBAT_XP_GAIN 459 ? none
CHAT_MSG_DND 250 ? none
CHAT_MSG_EMOTE 236 ? none
CHAT_MSG_FILTERED 544 ? none
CHAT_MSG_GUILD 231 ? none
CHAT_MSG_IGNORED 252 ? none
CHAT_MSG_LOOT 254 ? none
CHAT_MSG_MONEY 255 ? none
CHAT_MSG_MONSTER_EMOTE 242 ? none
CHAT_MSG_MONSTER_SAY 239 ? none
CHAT_MSG_MONSTER_WHISPER 241 ? none
CHAT_MSG_MONSTER_YELL 240 ? none
CHAT_MSG_OFFICER 232 ? none
CHAT_MSG_PARTY 229 ? none
CHAT_MSG_RAID 230 ? none
CHAT_MSG_RAID_BOSS_EMOTE 541 ? none
CHAT_MSG_RAID_LEADER 256 ? none
CHAT_MSG_RAID_WARNING 257 ? none
CHAT_MSG_SAY 228 ? none
CHAT_MSG_SKILL 253 ? none
CHAT_MSG_SPELL_AURA_GONE_OTHER 482 ? none
CHAT_MSG_SPELL_AURA_GONE_PARTY 481 ? none
CHAT_MSG_SPELL_AURA_GONE_SELF 480 ? none
CHAT_MSG_SPELL_BREAK_AURA 484 ? none
CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF 476 ? none
CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE 475 ? none
CHAT_MSG_SPELL_CREATURE_VS_PARTY_BUFF 474 ? none
CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE 473 ? none
CHAT_MSG_SPELL_CREATURE_VS_SELF_BUFF 472 ? none
CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE 471 ? none
CHAT_MSG_SPELL_DAMAGESHIELDS_ON_OTHERS 479 ? none
CHAT_MSG_SPELL_DAMAGESHIELDS_ON_SELF 478 ? none
CHAT_MSG_SPELL_FAILED_LOCALPLAYER 495 ? none
CHAT_MSG_SPELL_FRIENDLYPLAYER_BUFF 468 ? none
CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE 467 ? none
CHAT_MSG_SPELL_HOSTILEPLAYER_BUFF 470 ? none
CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE 469 ? none
CHAT_MSG_SPELL_ITEM_ENCHANTMENTS 483 ? none
CHAT_MSG_SPELL_PARTY_BUFF 466 ? none
CHAT_MSG_SPELL_PARTY_DAMAGE 465 ? none
CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS 494 ? none
CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE 493 ? none
CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS 490 ? none
CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE 489 ? none
CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_BUFFS 492 ? none
CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE 491 ? none
CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS 488 ? none
CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE 487 ? none
CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS 486 ? none
CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE 485 ? none
CHAT_MSG_SPELL_PET_BUFF 464 ? none
CHAT_MSG_SPELL_PET_DAMAGE 463 ? none
CHAT_MSG_SPELL_SELF_BUFF 462 ? none
CHAT_MSG_SPELL_SELF_DAMAGE 461 ? none
CHAT_MSG_SPELL_TRADESKILLS 477 ? none
CHAT_MSG_SYSTEM 238 ? none
CHAT_MSG_TEXT_EMOTE 237 ? none
CHAT_MSG_WHISPER 234 ? none
CHAT_MSG_WHISPER_INFORM 235 ? none
CHAT_MSG_YELL 233 ? none
CINEMATIC_START 370 signal () exact
CINEMATIC_STOP 371 signal () exact
CLOSE_INBOX_ITEM 515 signal2 %d exact
CLOSE_TABARD_FRAME 375 signal () exact
CLOSE_WORLD_MAP 373 signal () exact
COMBAT_TEXT_UPDATE 542 signal2 %s|%s%s|%s%s%s exact
CONFIRM_BINDER 513 signal2 %s exact
CONFIRM_LOOT_ROLL 507 signal2 %d%d exact
CONFIRM_PET_UNLEARN 529 signal2 %d exact
CONFIRM_SUMMON 516 signal () exact
CONFIRM_TALENT_WIPE 512 signal2 %d exact
CONFIRM_XP_LOSS 396 signal2 %d exact
CORPSE_IN_INSTANCE 398 ? none
CORPSE_IN_RANGE 397 ? none
CORPSE_OUT_OF_RANGE 399 signal () exact
CRAFT_CLOSE 361 signal () exact
CRAFT_SHOW 359 signal () exact
CRAFT_UPDATE 360 signal () exact
CURRENT_SPELL_CAST_CHANGED 261 signal () exact
CURSOR_UPDATE 292 signal () exact
CVAR_UPDATE 312 signal2 %s%s exact
DELETE_ITEM_CONFIRM 291 signal2 %s%d exact
DISPLAY_SIZE_CHANGED 511 signal () exact
DUEL_FINISHED 383 signal () exact
DUEL_INBOUNDS 382 signal () exact
DUEL_OUTOFBOUNDS 381 signal () exact
DUEL_REQUESTED 380 signal2 %s exact
EQUIP_BIND_CONFIRM 288 signal2 %d exact
EXECUTE_CHAT_LINE 392 signal2 %s exact
FRIENDLIST_UPDATE 351 signal () exact
GMSURVEY_DISPLAY 538 signal () exact
GM_PLAYER_INFO 409 ? none
GOSSIP_CLOSED 299 signal () exact
GOSSIP_ENTER_CODE 298 signal2 %d exact
GOSSIP_SHOW 297 signal () exact
GUILD_INVITE_CANCEL 283 signal () exact
GUILD_INVITE_REQUEST 282 signal2 %s%s exact
GUILD_MOTD 284 signal2 %s exact
GUILD_REGISTRAR_CLOSED 379 signal () exact
GUILD_REGISTRAR_SHOW 378 signal () exact
GUILD_ROSTER_UPDATE 408 signal|signal2 %d|() exact
IGNORELIST_UPDATE 352 signal () exact
IGR_BILLING_NAG_DIALOG 518 signal () exact
INSPECT_HONOR_UPDATE 525 signal () exact
INSTANCE_BOOT_START 508 signal () exact
INSTANCE_BOOT_STOP 509 signal () exact
ITEM_LOCK_CHANGED 188 signal () exact
ITEM_PUSH 266 signal2 %d%s exact
ITEM_TEXT_BEGIN 293 signal () exact
ITEM_TEXT_CLOSED 296 signal () exact
ITEM_TEXT_READY 295 signal () exact
ITEM_TEXT_TRANSLATION 294 signal2 %f exact
LANGUAGE_LIST_CHANGED 258 signal () exact
LEARNED_SPELL_IN_TAB 510 signal2 %d exact
LOCALPLAYER_PET_RENAMED 331 signal () exact
LOGOUT_CANCEL 278 signal () exact
LOOT_BIND_CONFIRM 287 signal2 %u exact
LOOT_CLOSED 269 signal () exact
LOOT_OPENED 267 signal () exact
LOOT_SLOT_CLEARED 268 signal2 %d exact
LOTTERY_ITEM_UPDATE 548 signal () exact
LOTTERY_SHOW 543 signal () exact
MACRO_ACTION_FORBIDDEN 431 signal () exact
MAIL_CLOSED 411 signal () exact
MAIL_FAILED 514 signal () exact
MAIL_INBOX_UPDATE 416 signal () exact
MAIL_SEND_INFO_UPDATE 414 signal () exact
MAIL_SEND_SUCCESS 415 signal () exact
MAIL_SHOW 410 signal () exact
MEETINGSTONE_CHANGED 519 signal () exact
MEMORY_EXHAUSTED 433 signal2 %d exact
MEMORY_RECOVERED 434 signal () exact
MERCHANT_CLOSED 318 signal () exact
MERCHANT_SHOW 316 signal () exact
MERCHANT_UPDATE 317 signal () exact
MINIGAME_UPDATE 535 signal () exact
MINIMAP_PING 357 signal2 %s%f%f exact
MINIMAP_UPDATE_ZOOM 207 signal () exact
MINIMAP_ZONE_CHANGED 206 signal () exact
MIRROR_TIMER_PAUSE 363 signal2 %s%d exact
MIRROR_TIMER_START 362 signal2 %s%d%d%d%d%s exact
MIRROR_TIMER_STOP 364 signal2 %s exact
NEW_AUCTION_UPDATE 423 signal () exact
OPEN_MASTER_LOOT_LIST 503 signal () exact
OPEN_TABARD_FRAME 374 signal () exact
PARTY_INVITE_CANCEL 281 signal () exact
PARTY_INVITE_REQUEST 280 signal2 %s exact
PARTY_LEADER_CHANGED 219 signal () exact
PARTY_LOOT_METHOD_CHANGED 222 signal () exact
PARTY_MEMBERS_CHANGED 218 signal () exact
PARTY_MEMBER_DISABLE 221 signal2 %d exact
PARTY_MEMBER_ENABLE 220 signal2 %d exact
PETITION_CLOSED 391 signal () exact
PETITION_SHOW 390 signal () exact
PET_ATTACK_START 334 ? none
PET_ATTACK_STOP 335 signal () exact
PET_BAR_HIDEGRID 356 signal () exact
PET_BAR_SHOWGRID 355 signal () exact
PET_BAR_UPDATE 353 signal () exact
PET_BAR_UPDATE_COOLDOWN 354 signal () exact
PET_DISMISS_START 385 signal2 %d exact
PET_STABLE_CLOSED 440 signal () exact
PET_STABLE_SHOW 437 signal () exact
PET_STABLE_UPDATE 438 signal () exact
PET_STABLE_UPDATE_PAPERDOLL 439 signal () exact
PET_UI_CLOSE 428 signal () exact
PET_UI_UPDATE 427 signal () exact
PLAYERBANKBAGSLOTS_CHANGED 350 signal () exact
PLAYERBANKSLOTS_CHANGED 347 signal|signal2 %s|() exact
PLAYER_ALIVE 274 signal () exact
PLAYER_AURAS_CHANGED 192 signal () exact
PLAYER_CAMPING 276 ? none
PLAYER_COMBO_POINTS 202 signal () exact
PLAYER_CONTROL_GAINED 197 signal () exact
PLAYER_CONTROL_LOST 196 signal () exact
PLAYER_DAMAGE_DONE_MODS 201 ? none
PLAYER_DEAD 275 signal () exact
PLAYER_ENTERING_WORLD 272 signal () exact
PLAYER_ENTER_COMBAT 193 signal () exact
PLAYER_FARSIGHT_FOCUS_CHANGED 198 signal () exact
PLAYER_FLAGS_CHANGED 407 token-fanout %s exact
PLAYER_GUILD_UPDATE 345 signal|token-fanout %s|() exact
PLAYER_LEAVE_COMBAT 194 signal () exact
PLAYER_LEAVING_WORLD 273 signal () exact
PLAYER_LEVEL_UP 199 signal2 %d%d%d%d%d%d%d%d%d exact
PLAYER_LOGIN 270 signal () exact
PLAYER_LOGOUT 271 signal () exact
PLAYER_MONEY 200 signal () exact
PLAYER_PVP_KILLS_CHANGED 523 ? none
PLAYER_PVP_RANK_CHANGED 524 ? none
PLAYER_QUITING 277 ? none
PLAYER_REGEN_DISABLED 190 ? none
PLAYER_REGEN_ENABLED 191 signal () exact
PLAYER_SKINNED 520 signal2 %d exact
PLAYER_TARGET_CHANGED 195 signal () exact
PLAYER_TRADE_MONEY 326 signal () exact
PLAYER_UNGHOST 401 signal () exact
PLAYER_UPDATE_RESTING 405 signal () exact
PLAYER_XP_UPDATE 189 ? none
PLAYTIME_CHANGED 530 signal () exact
QUEST_ACCEPT_CONFIRM 346 signal2 %s%s exact
QUEST_COMPLETE 303 signal () exact
QUEST_DETAIL 301 ? none
QUEST_FINISHED 304 signal () exact
QUEST_GREETING 300 signal () exact
QUEST_ITEM_UPDATE 305 signal () exact
QUEST_LOG_UPDATE 308 signal () exact
QUEST_PROGRESS 302 signal () exact
QUEST_WATCH_UPDATE 545 signal2 %d exact
RAID_ROSTER_UPDATE 499 signal () exact
RAID_TARGET_UPDATE 537 signal () exact
READY_CHECK 536 signal () exact
REPLACE_ENCHANT 403 signal2 %s%s exact
RESURRECT_REQUEST 279 signal2 %s exact
SCREENSHOT_FAILED 209 signal () exact
SCREENSHOT_SUCCEEDED 208 ? none
SEND_MAIL_COD_CHANGED 413 signal () exact
SEND_MAIL_MONEY_CHANGED 412 signal () exact
SHOW_COMPARE_TOOLTIP 377 ? none
SKILL_LINES_CHANGED 265 signal () exact
SPELLCAST_CHANNEL_START 342 signal2 %d%s exact
SPELLCAST_CHANNEL_STOP 344 signal () exact
SPELLCAST_CHANNEL_UPDATE 343 signal2 %d exact
SPELLCAST_DELAYED 341 signal2 %d exact
SPELLCAST_FAILED 339 ? none
SPELLCAST_INTERRUPTED 340 signal () exact
SPELLCAST_START 337 signal2 %s%d exact
SPELLCAST_STOP 338 signal () exact
SPELLS_CHANGED 260 signal () exact
SPELL_UPDATE_COOLDOWN 262 signal () exact
SPELL_UPDATE_USABLE 263 signal () exact
START_AUTOREPEAT_SPELL 435 signal () exact
START_LOOT_ROLL 505 signal2 %d%d exact
START_MINIGAME 534 signal () exact
STOP_AUTOREPEAT_SPELL 436 signal () exact
SYSMSG 223 ? none
TABARD_CANSAVE_CHANGED 376 signal () exact
TABARD_SAVE_PENDING 521 signal () exact
TAXIMAP_CLOSED 307 signal () exact
TAXIMAP_OPENED 306 signal () exact
TIME_PLAYED_MSG 259 signal2 %d%d exact
TRADE_ACCEPT_UPDATE 322 signal2 %d%d exact
TRADE_CLOSED 320 signal () exact
TRADE_MONEY_CHANGED 325 signal () exact
TRADE_PLAYER_ITEM_CHANGED 324 signal2 %d exact
TRADE_REPLACE_ENCHANT 404 signal2 %s%s%d advisory 0x496230 declares more varargs than it pushes — do not copy
TRADE_REQUEST 285 ? none
TRADE_REQUEST_CANCEL 286 signal () exact
TRADE_SHOW 319 signal () exact
TRADE_SKILL_CLOSE 315 signal () exact
TRADE_SKILL_SHOW 313 signal () exact
TRADE_SKILL_UPDATE 314 signal () exact
TRADE_TARGET_ITEM_CHANGED 323 signal2 %d exact
TRADE_UPDATE 321 signal () exact
TRAINER_CLOSED 311 signal () exact
TRAINER_SHOW 309 signal () exact
TRAINER_UPDATE 310 signal () exact
TUTORIAL_TRIGGER 384 signal2 %d exact
UI_ERROR_MESSAGE 224 ? none
UI_INFO_MESSAGE 225 ? none
UNIT_ATTACK 332 signal2 %s exact
UNIT_ATTACK_POWER 159|160|161 unit-field-bridge %s exact
UNIT_ATTACK_SPEED 120|121 unit-field-bridge %s exact
UNIT_AURA 41|107 token-fanout|unit-field-bridge %s exact
UNIT_CLASSIFICATION_CHANGED 187 token-fanout %s exact
UNIT_COMBAT 182 signal2 %s%s%s%d%d exact
UNIT_DAMAGE 128|129|130|131 unit-field-bridge %s exact
UNIT_DEFENSE 333 signal2 %s exact
UNIT_DISPLAYPOWER 30 token-fanout|unit-field-bridge %s exact
UNIT_DYNAMIC_FLAGS 137 unit-field-bridge %s exact
UNIT_ENERGY 20 unit-field-bridge %s exact
UNIT_FACTION 29 token-fanout|unit-field-bridge %s exact
UNIT_FLAGS 40 unit-field-bridge %s exact
UNIT_FOCUS 19 unit-field-bridge %s exact
UNIT_HAPPINESS 21 signal2|unit-field-bridge %s exact
UNIT_HEALTH 16 signal|token-fanout|unit-field-bridge %s|() exact
UNIT_INVENTORY_CHANGED 186 signal2|token-fanout %s exact
UNIT_LEVEL 28 signal2|token-fanout|unit-field-bridge %s exact
UNIT_LOYALTY 132 unit-field-bridge %s exact
UNIT_MANA 17|167|174 signal|unit-field-bridge %s|() exact
UNIT_MAXENERGY 26 unit-field-bridge %s exact
UNIT_MAXFOCUS 25 signal2|unit-field-bridge %d%d%d%d%d%d%d%d%d%d|%s exact
UNIT_MAXHAPPINESS 27 unit-field-bridge %s exact
UNIT_MAXHEALTH 22 token-fanout|unit-field-bridge %s exact
UNIT_MAXMANA 23 signal2|unit-field-bridge %s exact
UNIT_MAXRAGE 24 unit-field-bridge %s exact
UNIT_MODEL_CHANGED 185 token-fanout %s exact
UNIT_NAME_UPDATE 183 token-fanout %s exact
UNIT_PET 0|2 signal|signal2|unit-field-bridge %s|() exact
UNIT_PET_EXPERIENCE 135|136 unit-field-bridge %s exact
UNIT_PET_TRAINING_POINTS 143 unit-field-bridge %s exact
UNIT_PORTRAIT_UPDATE 184 token-fanout %s exact
UNIT_QUEST_LOG_CHANGED 522 token-fanout %s exact
UNIT_RAGE 18 signal2|unit-field-bridge %d%d|%s exact
UNIT_RANGEDDAMAGE 122|165|166 unit-field-bridge %s exact
UNIT_RANGED_ATTACK_POWER 162|163|164 signal2|unit-field-bridge %s exact
UNIT_RESISTANCES 149|150|151|152|153|154|155 unit-field-bridge %s exact
UNIT_STATS 144|145|146|147|148 unit-field-bridge %s exact
UPDATE_BATTLEFIELD_SCORE 420 signal () exact
UPDATE_BATTLEFIELD_STATUS 419 signal () exact
UPDATE_BINDINGS 386 signal () exact
UPDATE_BONUS_ACTIONBAR 217 signal () exact
UPDATE_CHAT_COLOR 226 signal2 %s%f%f%f exact
UPDATE_CHAT_WINDOWS 395 signal () exact
UPDATE_EXHAUSTION 406 signal () exact
UPDATE_FACTION 372 signal () exact
UPDATE_GM_STATUS 400 signal2 %d exact
UPDATE_INSTANCE_INFO 539 signal () exact
UPDATE_INVENTORY_ALERTS 501 signal () exact
UPDATE_LFG 389 ? none
UPDATE_LFG_LIST 532 signal () exact
UPDATE_LFG_TYPES 531 signal () exact
UPDATE_MACROS 393 signal () exact
UPDATE_MASTER_LOOT_LIST 504 signal () exact
UPDATE_MOUSEOVER_UNIT 336 signal () exact
UPDATE_PENDING_MAIL 500 signal () exact
UPDATE_SHAPESHIFT_FORMS 387 signal () exact
UPDATE_TICKET 394 signal2 %d%s|%d%s%f%f%f%d%d advisory 0x5e4527 declares more varargs than it pushes — do not copy; 0x5e7960 declares more varargs than it pushes — do not copy
UPDATE_TRADESKILL_RECAST 502 signal () exact
UPDATE_WORLD_STATES 526 signal () exact
USE_BIND_CONFIRM 290 signal () exact
VARIABLES_LOADED 430 signal () exact
WHO_LIST_UPDATE 388 signal () exact
WORLD_MAP_NAME_UPDATE 366 signal () exact
WORLD_MAP_UPDATE 365 signal () exact
ZONE_CHANGED 203 ? none
ZONE_CHANGED_INDOORS 204 ? none
ZONE_CHANGED_NEW_AREA 205 signal () exact
1 # The 1.12.1 client's FrameScript events and the ARGUMENTS their producers push.
2 # GENERATED — scripts/gen-reference-events.py. Source: wow-5875-re's
3 # re/events/event-catalog.tsv + event-firesites.tsv. Decision 2140.
4 #
5 # arg_formats `|`-separated, one per distinct producer shape. `()` = zero Lua values.
6 # Directives: %s string, %d/%u number, %f number. An event with two
7 # producers of different shapes carries both, and which one a given
8 # transition takes is a question about the transition, not the name.
9 # conf exact = gate on it. advisory = a contributing site declares more
10 # varargs than it pushes. none = no producer family reaches it HERE,
11 # which is not a claim that it has none; never gate on it.
12 # producers signal (0x703e50, no varargs) | signal2 (0x703f50, format-driven) |
13 # unit-field-bridge (0x51bbb0/0x51bd50 -> 0x515e50, always %s) |
14 # token-fanout (0x515e50 with a literal id, also %s).
15 # 394 events, 278 with a known producer; 22 glue-space fire sites dropped.
16 name ids producers arg_formats conf note
17 ACTIONBAR_HIDEGRID 211 signal () exact
18 ACTIONBAR_PAGE_CHANGED 212 signal () exact
19 ACTIONBAR_SHOWGRID 210 signal () exact
20 ACTIONBAR_SLOT_CHANGED 213 signal2 %d exact
21 ACTIONBAR_UPDATE_COOLDOWN 216 signal () exact
22 ACTIONBAR_UPDATE_STATE 214 signal () exact
23 ACTIONBAR_UPDATE_USABLE 215 signal () exact
24 ADDON_ACTION_FORBIDDEN 432 signal2 %s exact
25 ADDON_LOADED 429 signal2 %s exact
26 AREA_SPIRIT_HEALER_IN_RANGE 527 signal () exact
27 AREA_SPIRIT_HEALER_OUT_OF_RANGE 528 signal () exact
28 AUCTION_BIDDER_LIST_UPDATE 426 signal () exact
29 AUCTION_HOUSE_CLOSED 422 signal () exact
30 AUCTION_HOUSE_SHOW 421 signal () exact
31 AUCTION_ITEM_LIST_UPDATE 424 signal () exact
32 AUCTION_OWNED_LIST_UPDATE 425 signal () exact
33 AUTOEQUIP_BIND_CONFIRM 289 signal2 %d exact
34 AUTOFOLLOW_BEGIN 367 signal2 %s exact
35 AUTOFOLLOW_END 368 signal () exact
36 BAG_CLOSED 329 signal2 %d exact
37 BAG_OPEN 327 signal2 %d exact
38 BAG_UPDATE 328 signal2 %d exact
39 BAG_UPDATE_COOLDOWN 330 signal () exact
40 BANKFRAME_CLOSED 349 signal () exact
41 BANKFRAME_OPENED 348 signal () exact
42 BATTLEFIELDS_CLOSED 418 signal () exact
43 BATTLEFIELDS_SHOW 417 signal () exact
44 BILLING_NAG_DIALOG 517 signal2 %d exact
45 BIND_ENCHANT 402 signal () exact
46 CANCEL_LOOT_ROLL 506 signal2 %d exact
47 CHARACTER_POINTS_CHANGED 264 signal2 %d%d exact
48 CHAT_MSG_ADDON 227 signal2 %s%s%s%s exact
49 CHAT_MSG_AFK 249 ? none
50 CHAT_MSG_BATTLEGROUND 546 ? none
51 CHAT_MSG_BATTLEGROUND_LEADER 547 ? none
52 CHAT_MSG_BG_SYSTEM_ALLIANCE 497 ? none
53 CHAT_MSG_BG_SYSTEM_HORDE 498 ? none
54 CHAT_MSG_BG_SYSTEM_NEUTRAL 496 ? none
55 CHAT_MSG_CHANNEL 243 ? none
56 CHAT_MSG_CHANNEL_JOIN 244 ? none
57 CHAT_MSG_CHANNEL_LEAVE 245 ? none
58 CHAT_MSG_CHANNEL_LIST 246 ? none
59 CHAT_MSG_CHANNEL_NOTICE 247 ? none
60 CHAT_MSG_CHANNEL_NOTICE_USER 248 ? none
61 CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_HITS 455 ? none
62 CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_MISSES 456 ? none
63 CHAT_MSG_COMBAT_CREATURE_VS_PARTY_HITS 453 ? none
64 CHAT_MSG_COMBAT_CREATURE_VS_PARTY_MISSES 454 ? none
65 CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS 451 ? none
66 CHAT_MSG_COMBAT_CREATURE_VS_SELF_MISSES 452 ? none
67 CHAT_MSG_COMBAT_FACTION_CHANGE 533 ? none
68 CHAT_MSG_COMBAT_FRIENDLYPLAYER_HITS 447 ? none
69 CHAT_MSG_COMBAT_FRIENDLYPLAYER_MISSES 448 ? none
70 CHAT_MSG_COMBAT_FRIENDLY_DEATH 457 ? none
71 CHAT_MSG_COMBAT_HONOR_GAIN 460 ? none
72 CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS 449 ? none
73 CHAT_MSG_COMBAT_HOSTILEPLAYER_MISSES 450 ? none
74 CHAT_MSG_COMBAT_HOSTILE_DEATH 458 ? none
75 CHAT_MSG_COMBAT_LOG 251 ? none
76 CHAT_MSG_COMBAT_MISC_INFO 358 ? none
77 CHAT_MSG_COMBAT_PARTY_HITS 445 ? none
78 CHAT_MSG_COMBAT_PARTY_MISSES 446 ? none
79 CHAT_MSG_COMBAT_PET_HITS 443 ? none
80 CHAT_MSG_COMBAT_PET_MISSES 444 ? none
81 CHAT_MSG_COMBAT_SELF_HITS 441 ? none
82 CHAT_MSG_COMBAT_SELF_MISSES 442 ? none
83 CHAT_MSG_COMBAT_XP_GAIN 459 ? none
84 CHAT_MSG_DND 250 ? none
85 CHAT_MSG_EMOTE 236 ? none
86 CHAT_MSG_FILTERED 544 ? none
87 CHAT_MSG_GUILD 231 ? none
88 CHAT_MSG_IGNORED 252 ? none
89 CHAT_MSG_LOOT 254 ? none
90 CHAT_MSG_MONEY 255 ? none
91 CHAT_MSG_MONSTER_EMOTE 242 ? none
92 CHAT_MSG_MONSTER_SAY 239 ? none
93 CHAT_MSG_MONSTER_WHISPER 241 ? none
94 CHAT_MSG_MONSTER_YELL 240 ? none
95 CHAT_MSG_OFFICER 232 ? none
96 CHAT_MSG_PARTY 229 ? none
97 CHAT_MSG_RAID 230 ? none
98 CHAT_MSG_RAID_BOSS_EMOTE 541 ? none
99 CHAT_MSG_RAID_LEADER 256 ? none
100 CHAT_MSG_RAID_WARNING 257 ? none
101 CHAT_MSG_SAY 228 ? none
102 CHAT_MSG_SKILL 253 ? none
103 CHAT_MSG_SPELL_AURA_GONE_OTHER 482 ? none
104 CHAT_MSG_SPELL_AURA_GONE_PARTY 481 ? none
105 CHAT_MSG_SPELL_AURA_GONE_SELF 480 ? none
106 CHAT_MSG_SPELL_BREAK_AURA 484 ? none
107 CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF 476 ? none
108 CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE 475 ? none
109 CHAT_MSG_SPELL_CREATURE_VS_PARTY_BUFF 474 ? none
110 CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE 473 ? none
111 CHAT_MSG_SPELL_CREATURE_VS_SELF_BUFF 472 ? none
112 CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE 471 ? none
113 CHAT_MSG_SPELL_DAMAGESHIELDS_ON_OTHERS 479 ? none
114 CHAT_MSG_SPELL_DAMAGESHIELDS_ON_SELF 478 ? none
115 CHAT_MSG_SPELL_FAILED_LOCALPLAYER 495 ? none
116 CHAT_MSG_SPELL_FRIENDLYPLAYER_BUFF 468 ? none
117 CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE 467 ? none
118 CHAT_MSG_SPELL_HOSTILEPLAYER_BUFF 470 ? none
119 CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE 469 ? none
120 CHAT_MSG_SPELL_ITEM_ENCHANTMENTS 483 ? none
121 CHAT_MSG_SPELL_PARTY_BUFF 466 ? none
122 CHAT_MSG_SPELL_PARTY_DAMAGE 465 ? none
123 CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS 494 ? none
124 CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE 493 ? none
125 CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS 490 ? none
126 CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE 489 ? none
127 CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_BUFFS 492 ? none
128 CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE 491 ? none
129 CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS 488 ? none
130 CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE 487 ? none
131 CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS 486 ? none
132 CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE 485 ? none
133 CHAT_MSG_SPELL_PET_BUFF 464 ? none
134 CHAT_MSG_SPELL_PET_DAMAGE 463 ? none
135 CHAT_MSG_SPELL_SELF_BUFF 462 ? none
136 CHAT_MSG_SPELL_SELF_DAMAGE 461 ? none
137 CHAT_MSG_SPELL_TRADESKILLS 477 ? none
138 CHAT_MSG_SYSTEM 238 ? none
139 CHAT_MSG_TEXT_EMOTE 237 ? none
140 CHAT_MSG_WHISPER 234 ? none
141 CHAT_MSG_WHISPER_INFORM 235 ? none
142 CHAT_MSG_YELL 233 ? none
143 CINEMATIC_START 370 signal () exact
144 CINEMATIC_STOP 371 signal () exact
145 CLOSE_INBOX_ITEM 515 signal2 %d exact
146 CLOSE_TABARD_FRAME 375 signal () exact
147 CLOSE_WORLD_MAP 373 signal () exact
148 COMBAT_TEXT_UPDATE 542 signal2 %s|%s%s|%s%s%s exact
149 CONFIRM_BINDER 513 signal2 %s exact
150 CONFIRM_LOOT_ROLL 507 signal2 %d%d exact
151 CONFIRM_PET_UNLEARN 529 signal2 %d exact
152 CONFIRM_SUMMON 516 signal () exact
153 CONFIRM_TALENT_WIPE 512 signal2 %d exact
154 CONFIRM_XP_LOSS 396 signal2 %d exact
155 CORPSE_IN_INSTANCE 398 ? none
156 CORPSE_IN_RANGE 397 ? none
157 CORPSE_OUT_OF_RANGE 399 signal () exact
158 CRAFT_CLOSE 361 signal () exact
159 CRAFT_SHOW 359 signal () exact
160 CRAFT_UPDATE 360 signal () exact
161 CURRENT_SPELL_CAST_CHANGED 261 signal () exact
162 CURSOR_UPDATE 292 signal () exact
163 CVAR_UPDATE 312 signal2 %s%s exact
164 DELETE_ITEM_CONFIRM 291 signal2 %s%d exact
165 DISPLAY_SIZE_CHANGED 511 signal () exact
166 DUEL_FINISHED 383 signal () exact
167 DUEL_INBOUNDS 382 signal () exact
168 DUEL_OUTOFBOUNDS 381 signal () exact
169 DUEL_REQUESTED 380 signal2 %s exact
170 EQUIP_BIND_CONFIRM 288 signal2 %d exact
171 EXECUTE_CHAT_LINE 392 signal2 %s exact
172 FRIENDLIST_UPDATE 351 signal () exact
173 GMSURVEY_DISPLAY 538 signal () exact
174 GM_PLAYER_INFO 409 ? none
175 GOSSIP_CLOSED 299 signal () exact
176 GOSSIP_ENTER_CODE 298 signal2 %d exact
177 GOSSIP_SHOW 297 signal () exact
178 GUILD_INVITE_CANCEL 283 signal () exact
179 GUILD_INVITE_REQUEST 282 signal2 %s%s exact
180 GUILD_MOTD 284 signal2 %s exact
181 GUILD_REGISTRAR_CLOSED 379 signal () exact
182 GUILD_REGISTRAR_SHOW 378 signal () exact
183 GUILD_ROSTER_UPDATE 408 signal|signal2 %d|() exact
184 IGNORELIST_UPDATE 352 signal () exact
185 IGR_BILLING_NAG_DIALOG 518 signal () exact
186 INSPECT_HONOR_UPDATE 525 signal () exact
187 INSTANCE_BOOT_START 508 signal () exact
188 INSTANCE_BOOT_STOP 509 signal () exact
189 ITEM_LOCK_CHANGED 188 signal () exact
190 ITEM_PUSH 266 signal2 %d%s exact
191 ITEM_TEXT_BEGIN 293 signal () exact
192 ITEM_TEXT_CLOSED 296 signal () exact
193 ITEM_TEXT_READY 295 signal () exact
194 ITEM_TEXT_TRANSLATION 294 signal2 %f exact
195 LANGUAGE_LIST_CHANGED 258 signal () exact
196 LEARNED_SPELL_IN_TAB 510 signal2 %d exact
197 LOCALPLAYER_PET_RENAMED 331 signal () exact
198 LOGOUT_CANCEL 278 signal () exact
199 LOOT_BIND_CONFIRM 287 signal2 %u exact
200 LOOT_CLOSED 269 signal () exact
201 LOOT_OPENED 267 signal () exact
202 LOOT_SLOT_CLEARED 268 signal2 %d exact
203 LOTTERY_ITEM_UPDATE 548 signal () exact
204 LOTTERY_SHOW 543 signal () exact
205 MACRO_ACTION_FORBIDDEN 431 signal () exact
206 MAIL_CLOSED 411 signal () exact
207 MAIL_FAILED 514 signal () exact
208 MAIL_INBOX_UPDATE 416 signal () exact
209 MAIL_SEND_INFO_UPDATE 414 signal () exact
210 MAIL_SEND_SUCCESS 415 signal () exact
211 MAIL_SHOW 410 signal () exact
212 MEETINGSTONE_CHANGED 519 signal () exact
213 MEMORY_EXHAUSTED 433 signal2 %d exact
214 MEMORY_RECOVERED 434 signal () exact
215 MERCHANT_CLOSED 318 signal () exact
216 MERCHANT_SHOW 316 signal () exact
217 MERCHANT_UPDATE 317 signal () exact
218 MINIGAME_UPDATE 535 signal () exact
219 MINIMAP_PING 357 signal2 %s%f%f exact
220 MINIMAP_UPDATE_ZOOM 207 signal () exact
221 MINIMAP_ZONE_CHANGED 206 signal () exact
222 MIRROR_TIMER_PAUSE 363 signal2 %s%d exact
223 MIRROR_TIMER_START 362 signal2 %s%d%d%d%d%s exact
224 MIRROR_TIMER_STOP 364 signal2 %s exact
225 NEW_AUCTION_UPDATE 423 signal () exact
226 OPEN_MASTER_LOOT_LIST 503 signal () exact
227 OPEN_TABARD_FRAME 374 signal () exact
228 PARTY_INVITE_CANCEL 281 signal () exact
229 PARTY_INVITE_REQUEST 280 signal2 %s exact
230 PARTY_LEADER_CHANGED 219 signal () exact
231 PARTY_LOOT_METHOD_CHANGED 222 signal () exact
232 PARTY_MEMBERS_CHANGED 218 signal () exact
233 PARTY_MEMBER_DISABLE 221 signal2 %d exact
234 PARTY_MEMBER_ENABLE 220 signal2 %d exact
235 PETITION_CLOSED 391 signal () exact
236 PETITION_SHOW 390 signal () exact
237 PET_ATTACK_START 334 ? none
238 PET_ATTACK_STOP 335 signal () exact
239 PET_BAR_HIDEGRID 356 signal () exact
240 PET_BAR_SHOWGRID 355 signal () exact
241 PET_BAR_UPDATE 353 signal () exact
242 PET_BAR_UPDATE_COOLDOWN 354 signal () exact
243 PET_DISMISS_START 385 signal2 %d exact
244 PET_STABLE_CLOSED 440 signal () exact
245 PET_STABLE_SHOW 437 signal () exact
246 PET_STABLE_UPDATE 438 signal () exact
247 PET_STABLE_UPDATE_PAPERDOLL 439 signal () exact
248 PET_UI_CLOSE 428 signal () exact
249 PET_UI_UPDATE 427 signal () exact
250 PLAYERBANKBAGSLOTS_CHANGED 350 signal () exact
251 PLAYERBANKSLOTS_CHANGED 347 signal|signal2 %s|() exact
252 PLAYER_ALIVE 274 signal () exact
253 PLAYER_AURAS_CHANGED 192 signal () exact
254 PLAYER_CAMPING 276 ? none
255 PLAYER_COMBO_POINTS 202 signal () exact
256 PLAYER_CONTROL_GAINED 197 signal () exact
257 PLAYER_CONTROL_LOST 196 signal () exact
258 PLAYER_DAMAGE_DONE_MODS 201 ? none
259 PLAYER_DEAD 275 signal () exact
260 PLAYER_ENTERING_WORLD 272 signal () exact
261 PLAYER_ENTER_COMBAT 193 signal () exact
262 PLAYER_FARSIGHT_FOCUS_CHANGED 198 signal () exact
263 PLAYER_FLAGS_CHANGED 407 token-fanout %s exact
264 PLAYER_GUILD_UPDATE 345 signal|token-fanout %s|() exact
265 PLAYER_LEAVE_COMBAT 194 signal () exact
266 PLAYER_LEAVING_WORLD 273 signal () exact
267 PLAYER_LEVEL_UP 199 signal2 %d%d%d%d%d%d%d%d%d exact
268 PLAYER_LOGIN 270 signal () exact
269 PLAYER_LOGOUT 271 signal () exact
270 PLAYER_MONEY 200 signal () exact
271 PLAYER_PVP_KILLS_CHANGED 523 ? none
272 PLAYER_PVP_RANK_CHANGED 524 ? none
273 PLAYER_QUITING 277 ? none
274 PLAYER_REGEN_DISABLED 190 ? none
275 PLAYER_REGEN_ENABLED 191 signal () exact
276 PLAYER_SKINNED 520 signal2 %d exact
277 PLAYER_TARGET_CHANGED 195 signal () exact
278 PLAYER_TRADE_MONEY 326 signal () exact
279 PLAYER_UNGHOST 401 signal () exact
280 PLAYER_UPDATE_RESTING 405 signal () exact
281 PLAYER_XP_UPDATE 189 ? none
282 PLAYTIME_CHANGED 530 signal () exact
283 QUEST_ACCEPT_CONFIRM 346 signal2 %s%s exact
284 QUEST_COMPLETE 303 signal () exact
285 QUEST_DETAIL 301 ? none
286 QUEST_FINISHED 304 signal () exact
287 QUEST_GREETING 300 signal () exact
288 QUEST_ITEM_UPDATE 305 signal () exact
289 QUEST_LOG_UPDATE 308 signal () exact
290 QUEST_PROGRESS 302 signal () exact
291 QUEST_WATCH_UPDATE 545 signal2 %d exact
292 RAID_ROSTER_UPDATE 499 signal () exact
293 RAID_TARGET_UPDATE 537 signal () exact
294 READY_CHECK 536 signal () exact
295 REPLACE_ENCHANT 403 signal2 %s%s exact
296 RESURRECT_REQUEST 279 signal2 %s exact
297 SCREENSHOT_FAILED 209 signal () exact
298 SCREENSHOT_SUCCEEDED 208 ? none
299 SEND_MAIL_COD_CHANGED 413 signal () exact
300 SEND_MAIL_MONEY_CHANGED 412 signal () exact
301 SHOW_COMPARE_TOOLTIP 377 ? none
302 SKILL_LINES_CHANGED 265 signal () exact
303 SPELLCAST_CHANNEL_START 342 signal2 %d%s exact
304 SPELLCAST_CHANNEL_STOP 344 signal () exact
305 SPELLCAST_CHANNEL_UPDATE 343 signal2 %d exact
306 SPELLCAST_DELAYED 341 signal2 %d exact
307 SPELLCAST_FAILED 339 ? none
308 SPELLCAST_INTERRUPTED 340 signal () exact
309 SPELLCAST_START 337 signal2 %s%d exact
310 SPELLCAST_STOP 338 signal () exact
311 SPELLS_CHANGED 260 signal () exact
312 SPELL_UPDATE_COOLDOWN 262 signal () exact
313 SPELL_UPDATE_USABLE 263 signal () exact
314 START_AUTOREPEAT_SPELL 435 signal () exact
315 START_LOOT_ROLL 505 signal2 %d%d exact
316 START_MINIGAME 534 signal () exact
317 STOP_AUTOREPEAT_SPELL 436 signal () exact
318 SYSMSG 223 ? none
319 TABARD_CANSAVE_CHANGED 376 signal () exact
320 TABARD_SAVE_PENDING 521 signal () exact
321 TAXIMAP_CLOSED 307 signal () exact
322 TAXIMAP_OPENED 306 signal () exact
323 TIME_PLAYED_MSG 259 signal2 %d%d exact
324 TRADE_ACCEPT_UPDATE 322 signal2 %d%d exact
325 TRADE_CLOSED 320 signal () exact
326 TRADE_MONEY_CHANGED 325 signal () exact
327 TRADE_PLAYER_ITEM_CHANGED 324 signal2 %d exact
328 TRADE_REPLACE_ENCHANT 404 signal2 %s%s%d advisory 0x496230 declares more varargs than it pushes — do not copy
329 TRADE_REQUEST 285 ? none
330 TRADE_REQUEST_CANCEL 286 signal () exact
331 TRADE_SHOW 319 signal () exact
332 TRADE_SKILL_CLOSE 315 signal () exact
333 TRADE_SKILL_SHOW 313 signal () exact
334 TRADE_SKILL_UPDATE 314 signal () exact
335 TRADE_TARGET_ITEM_CHANGED 323 signal2 %d exact
336 TRADE_UPDATE 321 signal () exact
337 TRAINER_CLOSED 311 signal () exact
338 TRAINER_SHOW 309 signal () exact
339 TRAINER_UPDATE 310 signal () exact
340 TUTORIAL_TRIGGER 384 signal2 %d exact
341 UI_ERROR_MESSAGE 224 ? none
342 UI_INFO_MESSAGE 225 ? none
343 UNIT_ATTACK 332 signal2 %s exact
344 UNIT_ATTACK_POWER 159|160|161 unit-field-bridge %s exact
345 UNIT_ATTACK_SPEED 120|121 unit-field-bridge %s exact
346 UNIT_AURA 41|107 token-fanout|unit-field-bridge %s exact
347 UNIT_CLASSIFICATION_CHANGED 187 token-fanout %s exact
348 UNIT_COMBAT 182 signal2 %s%s%s%d%d exact
349 UNIT_DAMAGE 128|129|130|131 unit-field-bridge %s exact
350 UNIT_DEFENSE 333 signal2 %s exact
351 UNIT_DISPLAYPOWER 30 token-fanout|unit-field-bridge %s exact
352 UNIT_DYNAMIC_FLAGS 137 unit-field-bridge %s exact
353 UNIT_ENERGY 20 unit-field-bridge %s exact
354 UNIT_FACTION 29 token-fanout|unit-field-bridge %s exact
355 UNIT_FLAGS 40 unit-field-bridge %s exact
356 UNIT_FOCUS 19 unit-field-bridge %s exact
357 UNIT_HAPPINESS 21 signal2|unit-field-bridge %s exact
358 UNIT_HEALTH 16 signal|token-fanout|unit-field-bridge %s|() exact
359 UNIT_INVENTORY_CHANGED 186 signal2|token-fanout %s exact
360 UNIT_LEVEL 28 signal2|token-fanout|unit-field-bridge %s exact
361 UNIT_LOYALTY 132 unit-field-bridge %s exact
362 UNIT_MANA 17|167|174 signal|unit-field-bridge %s|() exact
363 UNIT_MAXENERGY 26 unit-field-bridge %s exact
364 UNIT_MAXFOCUS 25 signal2|unit-field-bridge %d%d%d%d%d%d%d%d%d%d|%s exact
365 UNIT_MAXHAPPINESS 27 unit-field-bridge %s exact
366 UNIT_MAXHEALTH 22 token-fanout|unit-field-bridge %s exact
367 UNIT_MAXMANA 23 signal2|unit-field-bridge %s exact
368 UNIT_MAXRAGE 24 unit-field-bridge %s exact
369 UNIT_MODEL_CHANGED 185 token-fanout %s exact
370 UNIT_NAME_UPDATE 183 token-fanout %s exact
371 UNIT_PET 0|2 signal|signal2|unit-field-bridge %s|() exact
372 UNIT_PET_EXPERIENCE 135|136 unit-field-bridge %s exact
373 UNIT_PET_TRAINING_POINTS 143 unit-field-bridge %s exact
374 UNIT_PORTRAIT_UPDATE 184 token-fanout %s exact
375 UNIT_QUEST_LOG_CHANGED 522 token-fanout %s exact
376 UNIT_RAGE 18 signal2|unit-field-bridge %d%d|%s exact
377 UNIT_RANGEDDAMAGE 122|165|166 unit-field-bridge %s exact
378 UNIT_RANGED_ATTACK_POWER 162|163|164 signal2|unit-field-bridge %s exact
379 UNIT_RESISTANCES 149|150|151|152|153|154|155 unit-field-bridge %s exact
380 UNIT_STATS 144|145|146|147|148 unit-field-bridge %s exact
381 UPDATE_BATTLEFIELD_SCORE 420 signal () exact
382 UPDATE_BATTLEFIELD_STATUS 419 signal () exact
383 UPDATE_BINDINGS 386 signal () exact
384 UPDATE_BONUS_ACTIONBAR 217 signal () exact
385 UPDATE_CHAT_COLOR 226 signal2 %s%f%f%f exact
386 UPDATE_CHAT_WINDOWS 395 signal () exact
387 UPDATE_EXHAUSTION 406 signal () exact
388 UPDATE_FACTION 372 signal () exact
389 UPDATE_GM_STATUS 400 signal2 %d exact
390 UPDATE_INSTANCE_INFO 539 signal () exact
391 UPDATE_INVENTORY_ALERTS 501 signal () exact
392 UPDATE_LFG 389 ? none
393 UPDATE_LFG_LIST 532 signal () exact
394 UPDATE_LFG_TYPES 531 signal () exact
395 UPDATE_MACROS 393 signal () exact
396 UPDATE_MASTER_LOOT_LIST 504 signal () exact
397 UPDATE_MOUSEOVER_UNIT 336 signal () exact
398 UPDATE_PENDING_MAIL 500 signal () exact
399 UPDATE_SHAPESHIFT_FORMS 387 signal () exact
400 UPDATE_TICKET 394 signal2 %d%s|%d%s%f%f%f%d%d advisory 0x5e4527 declares more varargs than it pushes — do not copy; 0x5e7960 declares more varargs than it pushes — do not copy
401 UPDATE_TRADESKILL_RECAST 502 signal () exact
402 UPDATE_WORLD_STATES 526 signal () exact
403 USE_BIND_CONFIRM 290 signal () exact
404 VARIABLES_LOADED 430 signal () exact
405 WHO_LIST_UPDATE 388 signal () exact
406 WORLD_MAP_NAME_UPDATE 366 signal () exact
407 WORLD_MAP_UPDATE 365 signal () exact
408 ZONE_CHANGED 203 ? none
409 ZONE_CHANGED_INDOORS 204 ? none
410 ZONE_CHANGED_NEW_AREA 205 signal () exact
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+58
View File
@@ -0,0 +1,58 @@
# The 1.12.1 client's FrameScript events fired FROM INSIDE A LUA VERB, keyed by the verb.
# GENERATED — scripts/gen-reference-verb-events.py. Source: wow-5875-re's
# re/audit/binding-shapes.tsv + re/events/event-firesites.tsv + re/names/out/names-5875.tsv
# + system/ui/scratch/disasm-full.txt.
#
# shape body = a fire site inside the verb's own extent.
# helper = a fire site inside a function that ONLY registered verbs call
# (at most 8 of them); `via` is that helper. A helper with any
# non-verb caller is a state event's producer and is NOT here.
# sites the fire sites themselves, for the grep into wow-re.
# A floor, not a census: no row is not a claim of no fire (see the generator's header).
# Sites are attributed against the ledgers' verified function extents; a site past its
# candidate's extent is left out rather than mis-filed (decision 2257).
# 43 pairs over 41 verbs and 27 events; 2 site(s) past a verified extent.
verb event shape via sites
AddSkillUp SKILL_LINES_CHANGED helper 0x4d32d0 0x4d346f
CancelSkillUps SKILL_LINES_CHANGED body - 0x4d3e3a
ChangeActionBarPage ACTIONBAR_PAGE_CHANGED body - 0x4e7655
ChangeChatColor UPDATE_CHAT_COLOR body - 0x4a098b
CheckInbox MAIL_INBOX_UPDATE body - 0x4aeaf8
ClickAuctionSellItemButton NEW_AUCTION_UPDATE body - 0x4ce576
ClickSendMailItemButton MAIL_SEND_INFO_UPDATE body - 0x4ae0de
ClickTargetTradeButton TRADE_REPLACE_ENCHANT helper 0x496170 0x496230
CloseCraft CRAFT_CLOSE helper 0x4f5fe0 0x4f5fef
CloseTrade PLAYER_TRADE_MONEY body - 0x4bfdce
CloseTradeSkill TRADE_SKILL_CLOSE helper 0x4fc870 0x4fc884
CollapseCraftSkillLine CRAFT_UPDATE helper 0x4f6be0 0x4f6bf0
CollapseQuestHeader QUEST_LOG_UPDATE helper 0x4ded30 0x4ded98|0x4dedba|0x4dedd6
CollapseTradeSkillSubClass TRADE_SKILL_UPDATE helper 0x4fd750 0x4fd765
CollapseTrainerSkillLine TRAINER_UPDATE helper 0x4d8cd0 0x4d8ce0
ConfirmLootRoll CANCEL_LOOT_ROLL helper 0x61bdf0 0x61bf2a
ConfirmLootRoll CONFIRM_LOOT_ROLL helper 0x61bdf0 0x61be8b
DoTradeSkill UPDATE_TRADESKILL_RECAST helper 0x4fd770 0x4fd781
DropCursorMoney PLAYER_MONEY helper 0x494cc0 0x494d10
ExpandCraftSkillLine CRAFT_UPDATE helper 0x4f6be0 0x4f6bf0
ExpandQuestHeader QUEST_LOG_UPDATE helper 0x4ded30 0x4ded98|0x4dedba|0x4dedd6
ExpandTradeSkillSubClass TRADE_SKILL_UPDATE helper 0x4fd750 0x4fd765
ExpandTrainerSkillLine TRAINER_UPDATE helper 0x4d8cd0 0x4d8ce0
PetDismiss PET_DISMISS_START helper 0x4bd6e0 0x4bd722
PickupPlayerMoney PLAYER_MONEY helper 0x494cc0 0x494d10
PickupTradeMoney PLAYER_MONEY helper 0x494cc0 0x494d10
RemoveSkillUp SKILL_LINES_CHANGED helper 0x4d3480 0x4d3598
RollOnLoot CANCEL_LOOT_ROLL helper 0x61bdf0 0x61bf2a
RollOnLoot CONFIRM_LOOT_ROLL helper 0x61bdf0 0x61be8b
SelectGossipOption GOSSIP_ENTER_CODE helper 0x4e2320 0x4e237e
SendMail MAIL_SEND_INFO_UPDATE body - 0x4ae98d
SetBinding UPDATE_BINDINGS body - 0x4b805b
SetCVar CVAR_UPDATE body - 0x488cd5
SetGuildRecruitmentMode UPDATE_CHAT_WINDOWS body - 0x4a00a9
SetSendMailCOD SEND_MAIL_COD_CHANGED helper 0x4adc70 0x4adc88
SetSendMailMoney SEND_MAIL_MONEY_CHANGED helper 0x4adbe0 0x4adc44
SetTradeSkillInvSlotFilter TRADE_SKILL_UPDATE helper 0x4fd730 0x4fd745
SetTradeSkillSubClassFilter TRADE_SKILL_UPDATE helper 0x4fd710 0x4fd725
SetTrainerServiceTypeFilter TRAINER_UPDATE helper 0x4d8c90 0x4d8ca0
SetTrainerSkillLineFilter TRAINER_UPDATE helper 0x4d8cb0 0x4d8cc0
SortWho WHO_LIST_UPDATE body - 0x5ad9f2
TogglePetAutocast PET_BAR_UPDATE helper 0x4bcbb0 0x4bcc81
ToggleSpellAutocast PET_BAR_UPDATE helper 0x4bccb0 0x4bcdcb
1 # The 1.12.1 client's FrameScript events fired FROM INSIDE A LUA VERB, keyed by the verb.
2 # GENERATED — scripts/gen-reference-verb-events.py. Source: wow-5875-re's
3 # re/audit/binding-shapes.tsv + re/events/event-firesites.tsv + re/names/out/names-5875.tsv
4 # + system/ui/scratch/disasm-full.txt.
5 #
6 # shape body = a fire site inside the verb's own extent.
7 # helper = a fire site inside a function that ONLY registered verbs call
8 # (at most 8 of them); `via` is that helper. A helper with any
9 # non-verb caller is a state event's producer and is NOT here.
10 # sites the fire sites themselves, for the grep into wow-re.
11 # A floor, not a census: no row is not a claim of no fire (see the generator's header).
12 # Sites are attributed against the ledgers' verified function extents; a site past its
13 # candidate's extent is left out rather than mis-filed (decision 2257).
14 # 43 pairs over 41 verbs and 27 events; 2 site(s) past a verified extent.
15 verb event shape via sites
16 AddSkillUp SKILL_LINES_CHANGED helper 0x4d32d0 0x4d346f
17 CancelSkillUps SKILL_LINES_CHANGED body - 0x4d3e3a
18 ChangeActionBarPage ACTIONBAR_PAGE_CHANGED body - 0x4e7655
19 ChangeChatColor UPDATE_CHAT_COLOR body - 0x4a098b
20 CheckInbox MAIL_INBOX_UPDATE body - 0x4aeaf8
21 ClickAuctionSellItemButton NEW_AUCTION_UPDATE body - 0x4ce576
22 ClickSendMailItemButton MAIL_SEND_INFO_UPDATE body - 0x4ae0de
23 ClickTargetTradeButton TRADE_REPLACE_ENCHANT helper 0x496170 0x496230
24 CloseCraft CRAFT_CLOSE helper 0x4f5fe0 0x4f5fef
25 CloseTrade PLAYER_TRADE_MONEY body - 0x4bfdce
26 CloseTradeSkill TRADE_SKILL_CLOSE helper 0x4fc870 0x4fc884
27 CollapseCraftSkillLine CRAFT_UPDATE helper 0x4f6be0 0x4f6bf0
28 CollapseQuestHeader QUEST_LOG_UPDATE helper 0x4ded30 0x4ded98|0x4dedba|0x4dedd6
29 CollapseTradeSkillSubClass TRADE_SKILL_UPDATE helper 0x4fd750 0x4fd765
30 CollapseTrainerSkillLine TRAINER_UPDATE helper 0x4d8cd0 0x4d8ce0
31 ConfirmLootRoll CANCEL_LOOT_ROLL helper 0x61bdf0 0x61bf2a
32 ConfirmLootRoll CONFIRM_LOOT_ROLL helper 0x61bdf0 0x61be8b
33 DoTradeSkill UPDATE_TRADESKILL_RECAST helper 0x4fd770 0x4fd781
34 DropCursorMoney PLAYER_MONEY helper 0x494cc0 0x494d10
35 ExpandCraftSkillLine CRAFT_UPDATE helper 0x4f6be0 0x4f6bf0
36 ExpandQuestHeader QUEST_LOG_UPDATE helper 0x4ded30 0x4ded98|0x4dedba|0x4dedd6
37 ExpandTradeSkillSubClass TRADE_SKILL_UPDATE helper 0x4fd750 0x4fd765
38 ExpandTrainerSkillLine TRAINER_UPDATE helper 0x4d8cd0 0x4d8ce0
39 PetDismiss PET_DISMISS_START helper 0x4bd6e0 0x4bd722
40 PickupPlayerMoney PLAYER_MONEY helper 0x494cc0 0x494d10
41 PickupTradeMoney PLAYER_MONEY helper 0x494cc0 0x494d10
42 RemoveSkillUp SKILL_LINES_CHANGED helper 0x4d3480 0x4d3598
43 RollOnLoot CANCEL_LOOT_ROLL helper 0x61bdf0 0x61bf2a
44 RollOnLoot CONFIRM_LOOT_ROLL helper 0x61bdf0 0x61be8b
45 SelectGossipOption GOSSIP_ENTER_CODE helper 0x4e2320 0x4e237e
46 SendMail MAIL_SEND_INFO_UPDATE body - 0x4ae98d
47 SetBinding UPDATE_BINDINGS body - 0x4b805b
48 SetCVar CVAR_UPDATE body - 0x488cd5
49 SetGuildRecruitmentMode UPDATE_CHAT_WINDOWS body - 0x4a00a9
50 SetSendMailCOD SEND_MAIL_COD_CHANGED helper 0x4adc70 0x4adc88
51 SetSendMailMoney SEND_MAIL_MONEY_CHANGED helper 0x4adbe0 0x4adc44
52 SetTradeSkillInvSlotFilter TRADE_SKILL_UPDATE helper 0x4fd730 0x4fd745
53 SetTradeSkillSubClassFilter TRADE_SKILL_UPDATE helper 0x4fd710 0x4fd725
54 SetTrainerServiceTypeFilter TRAINER_UPDATE helper 0x4d8c90 0x4d8ca0
55 SetTrainerSkillLineFilter TRAINER_UPDATE helper 0x4d8cb0 0x4d8cc0
56 SortWho WHO_LIST_UPDATE body - 0x5ad9f2
57 TogglePetAutocast PET_BAR_UPDATE helper 0x4bcbb0 0x4bcc81
58 ToggleSpellAutocast PET_BAR_UPDATE helper 0x4bccb0 0x4bcdcb
+87
View File
@@ -0,0 +1,87 @@
# `reference/` — verified facts about the 1.12.1 client, vendored
Generated artifacts describing **the reference client**, committed so benilla can measure itself
against them on any day without a re-derivation. Not documentation, not state: data, with a
generator beside it in `scripts/`.
Nothing here is Blizzard content. A catalogue of *names* is not the thing named — the same reason
`decisions/` may quote a byte address and `MAP.md` may name a file.
## `1.12-globals.tsv`
The 1.12.1 client's entire global namespace — 21,555 names, `name<TAB>type<TAB>origin`.
**Where it comes from.** wow-5875-re ships an addon (`W5875Capture`) that dumps the in-world `_G`
of the *running* reference client, and its output is committed there as a fixture. This is the
authoritative answer to "what can an addon see in 1.12", and it is strictly better evidence than
the binary's registration table would be: it is the actual runtime table, so it carries
FrameXML-defined globals as well as engine ones — which is exactly the surface an addon sees, and
therefore exactly the surface an addon-compatibility target needs (decision 1189).
**Plus what a capture structurally cannot see** (decision 1200). The twelve `Blizzard_*` addons are
**LoadOnDemand**: unless the player had opened the talent window, the trainer, the auction house and
the rest before the dump, none of their globals is in it — so the capture alone reported
`TalentFrame`, `MacroFrame`, `TradeSkillFrame`, `CraftFrame`, `TrainerFrame` and `InspectFrame` as
absent from 1.12 while listing their `*_LoadUI` stubs. The table is therefore the capture **union**
every global the shipped-UI corpus *defines*, and those 1,986 extra rows carry type **`lod`** so
the two halves stay distinguishable. The question this artifact answers is "is this a 1.12 name?",
not "was this name live at one moment in one session".
**The `origin` column** answers a second question the capture alone cannot — *whose job is it to
provide this?* — by attributing every name to its definition site in a complete 1.12 shipped-UI
corpus:
| origin | count | meaning |
|---|---|---|
| `engine` | 1,104 | the C client provides it. **benilla implements these in Rust.** |
| `framexml` | 20,427 | the shipped UI defines it. **benilla transcribes these into `assets/ui/`.** |
| `lua` | 24 | Lua 5.0's own runtime. mlua gives us these. |
Of the `framexml` rows, **1,986 carry type `lod`**: defined by the shipped UI but absent from the
capture, which is what a LoadOnDemand addon looks like from a live dump (decision 1200).
The `framexml` bulk is UI objects — `ContainerFrame1Item16IconTexture` and its 11,000 siblings —
which materialize from whatever XML we ship and are nobody's to implement. The number that
matters for the API surface is the function split: **1,100 engine functions, 1,075 FrameXML
functions.** This is the `tContains` distinction (1187 got it right for one name) applied
wholesale: a name defined in shipped Lua is FrameXML's, and hardcoding it in Rust is a category
error even when it works.
**Regenerating** — `scripts/gen-reference-globals.py`, whose header carries the full method and
the traps. It needs the director's 1.12 install and the sibling RE repo, so it is a manual
regeneration like `genmap.sh`, not something CI can run. The artifact is stable: it describes a
client that shipped in 2006.
**Reading it** — `scripts/api-coverage.sh` is the instrument. It asks a real `UiScript::new()`
what benilla exposes and reports `have / missing / beyond-1.12`, always with 1178's split.
`crates/benilla-ui/src/script/tests/reference_surface.rs` is the gate: it fails if benilla grows a
global that 1.12 does not have and nobody wrote down why.
## `1.12-shapes.tsv` and `1.12-events.tsv`
wow-5875-re's binding-shape table (what each Lua verb takes and returns; decision 1842, gated by
`ui_script/shape_gate.rs`) and the event table with the arguments each producer pushes
(decision 2140, `scripts/gen-reference-events.py`, gated by `ui_script/event_shape_gate.rs`).
Each file's header carries its column contract.
## `1.12-verb-events.tsv`
Every event the reference fires **from inside a Lua verb**, keyed by the verb — the verb's own
body, or a helper that only registered verbs call (`0x4d8c90` is the trainer's). The third
question on the event seam: the two tables above say what an event carries and whether something
fires it; this one says *who*. A stock file that calls a verb for its side effect of an event
repaints nothing when the verb fires nothing, which is how the trainer filter regressed twelve
days after its window went stock (decision 2244), and the class every migrated window shares.
**Regenerating** — `scripts/gen-reference-verb-events.py`, whose header carries the rule, the
two families it drops (glue-space verbs, the unit-field bridge) and why getters are excluded (a
getter's fire is a cache-miss re-query, a state event benilla's feeds fire off the packet). A fire
site is attributed to a function against wow-re's verified extents (the ledgers' `size=`) plus the
disassembly's padding boundaries, and a site past its candidate's extent is left out rather than
mis-filed (decision 2257: four of the first table's rows were callbacks reached by pointer, or a
site past an extent). It reads the sibling RE repo's disassembly, so it is manual, like the others.
**Reading it** — `crates/benilla-app/src/ui_script/verb_event_gate.rs` is the gate: for every
pair whose verb benilla registers, the module that registers the verb fires the event, or the
pair is declared there — `ELSEWHERE` (a feed fires it on the state the verb changes, and the
named file is checked to) or `GAP` (nothing does, with the reason). Decision 2251.