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:
@@ -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
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
@@ -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.
|
||||
Reference in New Issue
Block a user