How much of the WoW client wowlua test emulates (spec
§17.8): which API functions
have behaviour, which only have the stand-in generated from Blizzard's
documentation, how the engine's answers compare with the real client's, and what
is still missing. cargo xtask coverage-report writes this page from the
engine's own tables and the recorded fixtures; cargo xtask check fails when it
is out of date.
Summary
Every recording comes from the camelot flavor (WoW Forever 1.60.1 (70450)), the client the engine is built against: its numbers below are measured against what that client answered. The other flavors have their API documentation, the same engine modules and the generated stand-ins, but no recording of their own: what their clients answer differently is unverified.
- API functions: 5,037 of the 5,111 documented camelot functions have behaviour (98.6%): 978 modelled, 367 answered from recordings, 3,692 by a documentation-based fill-in. Of all 7,175 C functions the client has, documented or not, 7,070 have behaviour.
- Widget methods: 1,325 of the 1,477 documented methods have behaviour (89.7%).
- Full probe: 33,075 of the client's 33,727 answers given as the client gave them (98.1%).
- Scenario replays: 22,097 of 22,154 recorded lines replayed as the client logged them (99.7%); 25 of 29 scenarios line for line.
- Unverified rules: 1,076 comments in the engine mark a rule unverified.
| Flavor | Documented functions | With behaviour | Recorded answers | Widget methods | With behaviour | Recordings |
|---|---|---|---|---|---|---|
| standard | 4,871 | 4,428 (90.9%) | 0 | 1,438 | 1,285 (89.4%) | none |
| camelot | 5,111 | 5,037 (98.6%) | 367 | 1,477 | 1,325 (89.7%) | all |
| mists | 3,221 | 2,819 (87.5%) | 0 | 1,360 | 1,214 (89.3%) | none |
| cata | 1,927 | 1,623 (84.2%) | 0 | 1,008 | 888 (88.1%) | none |
| wrath | 3,227 | 2,826 (87.6%) | 0 | 1,360 | 1,214 (89.3%) | none |
| tbc | 3,220 | 2,822 (87.6%) | 0 | 1,360 | 1,214 (89.3%) | none |
| vanilla | 3,220 | 2,822 (87.6%) | 0 | 1,360 | 1,214 (89.3%) | none |
API behaviour
Each function's answer comes from one place, the first of these that has one (as the engine installs them):
- Model: an engine module models the system or applies a probed rule (the world's units, auras, bags, quests, the clock...), or the VM's runtime defines the function.
- Recorded: the client's recorded answers (
data/camelot-answers.txt, the load-time answers, the talent trees), looked up by the call. - Fill-in: a fill-in module's answer, worked out from Blizzard's
documentation and UI code and the function's name (unverified), or the answer
the full probe got with nothing there (
blanks). - Generated: only the stand-in generated from the documentation: an addon's
call fails with "
<name>is not mocked", Blizzard's code gets the documented types' empty values.
camelot, by namespace (the documented functions and the client's undocumented ones together):
| Namespace | Functions | Model | Recorded | Fill-in | Generated |
|---|---|---|---|---|---|
(globals) |
2,102 | 701 | 106 | 1,230 | 65 |
C_AccountInfo |
3 | 0 | 0 | 3 | 0 |
C_AccountServices |
10 | 0 | 4 | 6 | 0 |
C_AccountStore |
11 | 0 | 0 | 11 | 0 |
C_AchievementInfo |
6 | 0 | 2 | 4 | 0 |
C_AchievementTelemetry |
3 | 0 | 0 | 3 | 0 |
C_ActionBar |
72 | 22 | 11 | 39 | 0 |
C_AddOnProfiler |
10 | 1 | 0 | 9 | 0 |
C_AddOns |
29 | 23 | 0 | 6 | 0 |
C_AdventureJournal |
8 | 0 | 1 | 7 | 0 |
C_AdventureMap |
13 | 0 | 0 | 13 | 0 |
C_AlliedRaces |
2 | 0 | 0 | 2 | 0 |
C_AnimaDiversion |
7 | 0 | 0 | 7 | 0 |
C_ArdenwealdGardening |
2 | 0 | 0 | 2 | 0 |
C_AreaPoiInfo |
8 | 2 | 3 | 3 | 0 |
C_ArrowCalloutManager |
2 | 0 | 0 | 2 | 0 |
C_ArtifactUI |
62 | 0 | 2 | 60 | 0 |
C_AssistedCombat |
4 | 0 | 2 | 2 | 0 |
C_AuctionHouse |
86 | 49 | 4 | 33 | 0 |
C_AuraContainerUtil |
10 | 10 | 0 | 0 | 0 |
C_AutoComplete |
4 | 0 | 0 | 4 | 0 |
C_AutoLoot |
1 | 0 | 0 | 1 | 0 |
C_AzeriteEmpoweredItem |
18 | 1 | 0 | 17 | 0 |
C_AzeriteEssence |
21 | 0 | 0 | 21 | 0 |
C_AzeriteItem |
10 | 0 | 2 | 8 | 0 |
C_Bank |
26 | 15 | 2 | 9 | 0 |
C_BarberShop |
29 | 0 | 0 | 29 | 0 |
C_BarberShopInternal |
1 | 0 | 0 | 0 | 1 |
C_BattleNet |
35 | 0 | 2 | 33 | 0 |
C_BehavioralMessaging |
1 | 0 | 0 | 1 | 0 |
C_BlackMarket |
8 | 0 | 0 | 8 | 0 |
C_BlizzCon2026 |
4 | 0 | 0 | 4 | 0 |
C_Browser |
1 | 0 | 0 | 1 | 0 |
C_CVar |
12 | 8 | 1 | 3 | 0 |
C_Calendar |
90 | 6 | 1 | 83 | 0 |
C_CampaignInfo |
10 | 0 | 0 | 10 | 0 |
C_CatalogShop |
38 | 0 | 3 | 35 | 0 |
C_ChallengeMode |
29 | 1 | 1 | 27 | 0 |
C_CharacterServices |
23 | 0 | 0 | 23 | 0 |
C_CharacterServicesPublic |
1 | 0 | 0 | 1 | 0 |
C_ChatBubbles |
1 | 0 | 0 | 1 | 0 |
C_ChatInfo |
45 | 11 | 2 | 32 | 0 |
C_ChromieTime |
4 | 0 | 0 | 4 | 0 |
C_CinematicList |
1 | 0 | 0 | 0 | 1 |
C_ClassColor |
1 | 0 | 1 | 0 | 0 |
C_ClassTalents |
31 | 1 | 15 | 15 | 0 |
C_ClassTrial |
2 | 0 | 0 | 2 | 0 |
C_ClickBindings |
9 | 2 | 3 | 4 | 0 |
C_ClientScene |
1 | 0 | 1 | 0 | 0 |
C_Club |
84 | 9 | 2 | 73 | 0 |
C_ClubFinder |
55 | 0 | 6 | 49 | 0 |
C_ColorOverrides |
6 | 1 | 1 | 4 | 0 |
C_ColorUtil |
7 | 2 | 0 | 5 | 0 |
C_CombatAudioAlert |
16 | 0 | 6 | 10 | 0 |
C_CombatLog |
11 | 1 | 0 | 10 | 0 |
C_CombatLogInternal |
1 | 0 | 0 | 0 | 1 |
C_CombatText |
3 | 0 | 0 | 3 | 0 |
C_Commentator |
144 | 63 | 1 | 80 | 0 |
C_ConfigurationWarnings |
4 | 0 | 0 | 0 | 4 |
C_ConsoleScriptCollection |
4 | 0 | 0 | 4 | 0 |
C_Container |
47 | 17 | 3 | 27 | 0 |
C_ContentTracking |
18 | 2 | 3 | 13 | 0 |
C_ContributionCollector |
18 | 1 | 0 | 17 | 0 |
C_CooldownViewer |
7 | 3 | 0 | 4 | 0 |
C_CovenantCallings |
2 | 0 | 0 | 2 | 0 |
C_CovenantPreview |
2 | 0 | 0 | 2 | 0 |
C_CovenantSanctumUI |
16 | 0 | 0 | 16 | 0 |
C_Covenants |
3 | 0 | 0 | 3 | 0 |
C_CraftingOrders |
36 | 0 | 1 | 35 | 0 |
C_CreatureInfo |
8 | 1 | 0 | 7 | 0 |
C_CurrencyInfo |
43 | 4 | 1 | 38 | 0 |
C_Cursor |
1 | 0 | 0 | 1 | 0 |
C_CurveUtil |
5 | 4 | 0 | 1 | 0 |
C_DamageMeter |
8 | 7 | 0 | 1 | 0 |
C_DateAndTime |
11 | 1 | 1 | 9 | 0 |
C_DeathInfo |
5 | 1 | 2 | 2 | 0 |
C_DeathRecap |
4 | 0 | 0 | 4 | 0 |
C_Debug |
8 | 0 | 0 | 8 | 0 |
C_DelvesUI |
40 | 0 | 4 | 36 | 0 |
C_Discord |
21 | 0 | 4 | 17 | 0 |
C_DurationUtil |
3 | 3 | 0 | 0 | 0 |
C_DyeColor |
8 | 0 | 0 | 8 | 0 |
C_EditMode |
12 | 3 | 2 | 7 | 0 |
C_EncodingUtil |
10 | 0 | 0 | 10 | 0 |
C_EncounterEvents |
8 | 0 | 0 | 8 | 0 |
C_EncounterJournal |
22 | 0 | 1 | 21 | 0 |
C_EncounterTimeline |
34 | 12 | 0 | 22 | 0 |
C_EncounterWarnings |
10 | 0 | 0 | 10 | 0 |
C_EndOfMatchUI |
1 | 0 | 0 | 1 | 0 |
C_EquipmentSet |
23 | 9 | 0 | 14 | 0 |
C_EventScheduler |
11 | 0 | 2 | 9 | 0 |
C_EventToastManager |
3 | 0 | 0 | 3 | 0 |
C_EventUtils |
2 | 1 | 0 | 1 | 0 |
C_ExpansionTrial |
2 | 0 | 0 | 2 | 0 |
C_ExternalEventURL |
4 | 0 | 2 | 2 | 0 |
C_Flyout |
6 | 0 | 0 | 6 | 0 |
C_FogOfWar |
2 | 1 | 0 | 1 | 0 |
C_FrameManager |
1 | 0 | 1 | 0 | 0 |
C_FriendList |
32 | 1 | 1 | 30 | 0 |
C_FunctionContainers |
1 | 1 | 0 | 0 | 0 |
C_GamePad |
25 | 0 | 1 | 24 | 0 |
C_GameRules |
29 | 0 | 10 | 19 | 0 |
C_GamepadTargeting |
3 | 0 | 0 | 3 | 0 |
C_GamepadUI |
5 | 0 | 2 | 3 | 0 |
C_Garrison |
227 | 2 | 0 | 225 | 0 |
C_GenericWidgetDisplay |
2 | 0 | 0 | 2 | 0 |
C_Glue |
2 | 1 | 0 | 1 | 0 |
C_GossipInfo |
20 | 11 | 0 | 9 | 0 |
C_GuildBank |
1 | 0 | 1 | 0 | 0 |
C_GuildInfo |
39 | 23 | 0 | 16 | 0 |
C_Heirloom |
24 | 0 | 2 | 22 | 0 |
C_HeirloomInfo |
8 | 0 | 2 | 6 | 0 |
C_HouseEditor |
10 | 1 | 0 | 9 | 0 |
C_HouseExterior |
23 | 0 | 0 | 23 | 0 |
C_Housing |
63 | 1 | 4 | 57 | 1 |
C_HousingBasicMode |
22 | 0 | 0 | 21 | 1 |
C_HousingBlueprint |
19 | 0 | 0 | 19 | 0 |
C_HousingCatalog |
35 | 1 | 0 | 26 | 8 |
C_HousingCleanupMode |
3 | 0 | 0 | 3 | 0 |
C_HousingCustomizeMode |
32 | 0 | 0 | 32 | 0 |
C_HousingDecor |
38 | 0 | 0 | 36 | 2 |
C_HousingExpertMode |
18 | 0 | 0 | 18 | 0 |
C_HousingInspectMode |
5 | 0 | 0 | 5 | 0 |
C_HousingLayout |
41 | 0 | 0 | 39 | 2 |
C_HousingNeighborhood |
30 | 0 | 0 | 30 | 0 |
C_ImmersiveInteraction |
1 | 0 | 0 | 1 | 0 |
C_IncomingSummon |
2 | 1 | 0 | 1 | 0 |
C_InputInterfaceStyle |
1 | 1 | 0 | 0 | 0 |
C_InstanceEncounter |
4 | 1 | 0 | 3 | 0 |
C_InstanceLeaver |
1 | 0 | 0 | 1 | 0 |
C_InterfaceFileManifest |
1 | 0 | 0 | 1 | 0 |
C_Intl |
27 | 1 | 0 | 26 | 0 |
C_InvasionInfo |
4 | 1 | 0 | 3 | 0 |
C_IslandsQueue |
6 | 0 | 0 | 6 | 0 |
C_Item |
121 | 31 | 1 | 89 | 0 |
C_ItemInteraction |
10 | 0 | 0 | 10 | 0 |
C_ItemSocketInfo |
16 | 1 | 0 | 15 | 0 |
C_ItemUpgrade |
16 | 0 | 0 | 16 | 0 |
C_KeyBindings |
11 | 1 | 3 | 7 | 0 |
C_LFGInfo |
23 | 2 | 2 | 19 | 0 |
C_LFGList |
88 | 31 | 2 | 55 | 0 |
C_LFGListRoles |
3 | 3 | 0 | 0 | 0 |
C_LegendaryCrafting |
20 | 0 | 0 | 20 | 0 |
C_LevelLink |
2 | 1 | 1 | 0 | 0 |
C_LevelSquish |
2 | 0 | 0 | 2 | 0 |
C_LimitedInput |
1 | 0 | 0 | 1 | 0 |
C_LiveEvent |
2 | 0 | 0 | 0 | 2 |
C_LobbyMatchmakerInfo |
8 | 0 | 1 | 7 | 0 |
C_Log |
4 | 1 | 0 | 3 | 0 |
C_Loot |
2 | 0 | 0 | 2 | 0 |
C_LootFrame |
1 | 0 | 0 | 1 | 0 |
C_LootHistory |
5 | 0 | 0 | 5 | 0 |
C_LootJournal |
2 | 0 | 0 | 2 | 0 |
C_LoreText |
1 | 0 | 0 | 1 | 0 |
C_LossOfControl |
5 | 0 | 1 | 4 | 0 |
C_MacOptions |
10 | 0 | 0 | 10 | 0 |
C_Macro |
4 | 0 | 0 | 3 | 1 |
C_Mail |
5 | 4 | 0 | 1 | 0 |
C_MajorFactions |
14 | 1 | 4 | 9 | 0 |
C_Map |
40 | 8 | 18 | 14 | 0 |
C_MapExplorationInfo |
2 | 0 | 1 | 1 | 0 |
C_MerchantFrame |
7 | 6 | 0 | 1 | 0 |
C_Minimap |
23 | 0 | 1 | 22 | 0 |
C_ModelInfo |
8 | 0 | 0 | 8 | 0 |
C_ModifiedInstance |
1 | 0 | 0 | 1 | 0 |
C_MountJournal |
50 | 1 | 7 | 42 | 0 |
C_MythicPlus |
21 | 0 | 1 | 20 | 0 |
C_NamePlate |
4 | 3 | 0 | 1 | 0 |
C_NamePlateManager |
4 | 0 | 1 | 3 | 0 |
C_NameUtil |
1 | 0 | 0 | 1 | 0 |
C_Navigation |
7 | 1 | 1 | 5 | 0 |
C_NeighborhoodInitiative |
20 | 0 | 1 | 19 | 0 |
C_NewItems |
3 | 2 | 0 | 1 | 0 |
C_PaperDollInfo |
21 | 2 | 3 | 16 | 0 |
C_PartyInfo |
55 | 7 | 4 | 44 | 0 |
C_PartyPose |
4 | 0 | 0 | 4 | 0 |
C_PerksActivities |
10 | 0 | 1 | 9 | 0 |
C_PerksProgram |
24 | 0 | 0 | 24 | 0 |
C_PetBattles |
56 | 3 | 8 | 45 | 0 |
C_PetInfo |
13 | 2 | 0 | 11 | 0 |
C_PetJournal |
80 | 2 | 3 | 75 | 0 |
C_PhotoSharing |
11 | 0 | 1 | 10 | 0 |
C_Ping |
6 | 0 | 2 | 4 | 0 |
C_PlayerChoice |
7 | 0 | 3 | 4 | 0 |
C_PlayerInfo |
40 | 1 | 4 | 35 | 0 |
C_PlayerInteractionManager |
8 | 1 | 0 | 7 | 0 |
C_PlayerMentorship |
5 | 0 | 0 | 5 | 0 |
C_ProfSpecs |
27 | 3 | 2 | 22 | 0 |
C_PrototypeDialog |
2 | 0 | 0 | 2 | 0 |
C_PvP |
113 | 3 | 8 | 102 | 0 |
C_QuestHub |
2 | 0 | 0 | 2 | 0 |
C_QuestInfoSystem |
9 | 1 | 0 | 8 | 0 |
C_QuestItemUse |
1 | 0 | 0 | 1 | 0 |
C_QuestLine |
7 | 2 | 0 | 5 | 0 |
C_QuestLog |
93 | 25 | 6 | 62 | 0 |
C_QuestOffer |
4 | 0 | 0 | 4 | 0 |
C_QuestSession |
14 | 0 | 3 | 11 | 0 |
C_RaidLocks |
4 | 0 | 0 | 4 | 0 |
C_RecentAllies |
15 | 0 | 3 | 12 | 0 |
C_RecruitAFriend |
16 | 0 | 5 | 11 | 0 |
C_Reincarnation |
4 | 0 | 0 | 4 | 0 |
C_RemixArtifactUI |
8 | 0 | 0 | 8 | 0 |
C_ReportSystem |
12 | 0 | 0 | 12 | 0 |
C_Reputation |
27 | 7 | 0 | 20 | 0 |
C_ResearchInfo |
1 | 1 | 0 | 0 | 0 |
C_RestrictedActions |
3 | 3 | 0 | 0 | 0 |
C_Roleset |
3 | 0 | 0 | 3 | 0 |
C_Scenario |
9 | 1 | 3 | 5 | 0 |
C_ScenarioInfo |
10 | 0 | 1 | 9 | 0 |
C_ScrappingMachineUI |
11 | 0 | 0 | 11 | 0 |
C_ScriptedAnimations |
1 | 0 | 1 | 0 | 0 |
C_SeasonInfo |
3 | 0 | 0 | 3 | 0 |
C_Secrets |
27 | 15 | 0 | 12 | 0 |
C_SecureTransfer |
14 | 0 | 0 | 0 | 14 |
C_SettingsUtil |
2 | 1 | 0 | 1 | 0 |
C_SharedCharacterServices |
10 | 0 | 0 | 10 | 0 |
C_SkillInfo |
8 | 3 | 0 | 5 | 0 |
C_SocialQueue |
10 | 0 | 3 | 7 | 0 |
C_SocialRestrictions |
12 | 0 | 5 | 7 | 0 |
C_SocialUI |
1 | 0 | 1 | 0 | 0 |
C_Soulbinds |
39 | 1 | 0 | 38 | 0 |
C_Sound |
6 | 1 | 0 | 5 | 0 |
C_SpecializationInfo |
31 | 9 | 9 | 13 | 0 |
C_SpectatingUI |
6 | 0 | 1 | 5 | 0 |
C_Spell |
71 | 22 | 7 | 42 | 0 |
C_SpellActivationOverlay |
1 | 1 | 0 | 0 | 0 |
C_SpellBook |
51 | 22 | 0 | 28 | 1 |
C_SpellDiminish |
4 | 3 | 0 | 1 | 0 |
C_SplashScreen |
5 | 0 | 1 | 4 | 0 |
C_StableInfo |
17 | 0 | 3 | 14 | 0 |
C_StorePublic |
3 | 0 | 1 | 2 | 0 |
C_StringUtil |
15 | 15 | 0 | 0 | 0 |
C_SummonInfo |
7 | 0 | 1 | 6 | 0 |
C_SuperTrack |
21 | 0 | 0 | 21 | 0 |
C_SwingTimer |
2 | 0 | 0 | 2 | 0 |
C_System |
1 | 0 | 0 | 1 | 0 |
C_SystemVisibilityManager |
1 | 0 | 0 | 1 | 0 |
C_TTSSettings |
19 | 0 | 4 | 15 | 0 |
C_TalkingHead |
6 | 0 | 0 | 6 | 0 |
C_TaskQuest |
12 | 1 | 1 | 10 | 0 |
C_TaxiMap |
3 | 2 | 1 | 0 | 0 |
C_Texture |
11 | 2 | 0 | 9 | 0 |
C_Timer |
4 | 4 | 0 | 0 | 0 |
C_TimerunningUI |
1 | 0 | 0 | 1 | 0 |
C_TooltipComparison |
3 | 0 | 0 | 3 | 0 |
C_TooltipInfo |
82 | 13 | 0 | 69 | 0 |
C_ToyBox |
26 | 1 | 3 | 22 | 0 |
C_ToyBoxInfo |
6 | 0 | 1 | 5 | 0 |
C_TradeInfo |
4 | 0 | 0 | 4 | 0 |
C_TradeSkillUI |
146 | 70 | 0 | 76 | 0 |
C_Trainer |
3 | 0 | 0 | 3 | 0 |
C_Traits |
53 | 11 | 23 | 19 | 0 |
C_Transmog |
7 | 1 | 0 | 6 | 0 |
C_TransmogCollection |
84 | 4 | 13 | 67 | 0 |
C_TransmogOutfitInfo |
69 | 3 | 4 | 62 | 0 |
C_TransmogSets |
42 | 0 | 1 | 41 | 0 |
C_Trophy |
9 | 0 | 0 | 9 | 0 |
C_Tutorial |
4 | 0 | 0 | 4 | 0 |
C_UI |
7 | 1 | 2 | 4 | 0 |
C_UIColor |
1 | 0 | 1 | 0 | 0 |
C_UIFileAsset |
3 | 1 | 0 | 2 | 0 |
C_UIWidgetManager |
42 | 0 | 6 | 36 | 0 |
C_UnitAuras |
39 | 9 | 1 | 29 | 0 |
C_UserFeedback |
2 | 0 | 0 | 2 | 0 |
C_VideoOptions |
11 | 0 | 10 | 1 | 0 |
C_VignetteInfo |
6 | 1 | 0 | 5 | 0 |
C_VoiceChat |
82 | 1 | 9 | 72 | 0 |
C_WarbandScene |
7 | 0 | 0 | 7 | 0 |
C_Weather |
1 | 0 | 0 | 1 | 0 |
C_WeeklyRewards |
21 | 0 | 0 | 21 | 0 |
C_Widget |
3 | 3 | 0 | 0 | 0 |
C_WoWLabsMatchmaking |
25 | 0 | 0 | 25 | 0 |
C_WorldLootObject |
8 | 0 | 0 | 8 | 0 |
C_WorldSafeLocsUIInternal |
1 | 0 | 0 | 0 | 1 |
C_WowLabsDataManager |
7 | 0 | 0 | 7 | 0 |
C_WowSurvey |
2 | 0 | 0 | 2 | 0 |
C_WowTokenPublic |
11 | 1 | 2 | 8 | 0 |
C_WowTokenUI |
2 | 0 | 0 | 2 | 0 |
C_XMLUtil |
2 | 1 | 0 | 1 | 0 |
C_ZoneAbility |
2 | 0 | 1 | 1 | 0 |
Kiosk |
16 | 1 | 0 | 15 | 0 |
bit |
8 | 8 | 0 | 0 | 0 |
coroutine |
6 | 6 | 0 | 0 | 0 |
math |
38 | 38 | 0 | 0 | 0 |
string |
23 | 23 | 0 | 0 | 0 |
table |
23 | 23 | 0 | 0 | 0 |
| All | 7,175 | 1,529 | 457 | 5,084 | 105 |
By where the function is listed:
| List | Functions | Model | Recorded | Fill-in | Generated |
|---|---|---|---|---|---|
| Blizzard's API documentation | 5,111 | 978 | 367 | 3,692 | 74 |
the client's other C functions (/stdtest inventory) |
2,064 | 551 | 90 | 1,392 | 31 |
| the engine's own, in neither list | 5 | 5 | 0 | 0 | 0 |
Of the engine's own, Blizzard's UI code defines these in the client (Lua
functions in the client's inventory, its deprecation files' wrappers of the C_
functions); the engine's natives stand in for them until that code loads:
GetActionText, GetActionTexture, HasAction, IsAttackAction,
IsUsableAction.
The modules that answer, by how many functions and methods:
| Module | Kind | Functions and methods |
|---|---|---|
extras |
fill-in | 1,497 |
widgets |
model | 651 |
globalsinfo |
fill-in | 555 |
content |
fill-in | 522 |
collections |
fill-in | 402 |
social |
fill-in | 388 |
recorded |
recorded | 340 |
questinfo |
fill-in | 315 |
leftovers2 |
fill-in | 314 |
systeminfo |
fill-in | 314 |
iteminfo |
fill-in | 228 |
methods3 |
fill-in | 212 |
vm |
model | 198 |
spellinfo |
fill-in | 196 |
unitinfo |
fill-in | 174 |
blanks |
fill-in | 154 |
stats |
model | 135 |
methods2 |
fill-in | 133 |
objects2 |
model | 111 |
units |
model | 95 |
extras |
model | 78 |
guild |
model | 78 |
tradeskill |
model | 71 |
curves |
model | 70 |
facts |
recorded | 70 |
queries |
model | 63 |
formatters |
model | 62 |
facts |
model | 57 |
auction |
model | 52 |
protection |
model | 51 |
traits |
recorded | 47 |
quests |
model | 41 |
bindings |
model | 40 |
framescript |
model | 37 |
gamedata |
model | 36 |
character |
model | 34 |
lfg |
model | 31 |
misc |
model | 31 |
mail |
model | 30 |
maps |
model | 28 |
actions |
model | 27 |
healcalc |
model | 26 |
actions2 |
fill-in | 25 |
bars |
model | 25 |
measures |
model | 25 |
merchant |
model | 24 |
trainer |
model | 22 |
taxi |
model | 19 |
input |
model | 18 |
pets |
model | 18 |
party |
model | 17 |
clock |
model | 16 |
cursor |
model | 15 |
animations |
model | 14 |
bank |
model | 14 |
traits |
model | 13 |
widgetdata |
recorded | 13 |
tooltip |
model | 12 |
death |
model | 11 |
channels |
model | 10 |
buttons |
model | 9 |
equipsets |
model | 9 |
gossip |
model | 9 |
itemlocation |
model | 9 |
loot |
model | 9 |
auras |
model | 8 |
damagemeter |
model | 7 |
macros |
model | 7 |
chat |
model | 6 |
inspect |
model | 5 |
achievements |
model | 3 |
conditionals |
model | 3 |
editmode |
model | 3 |
encounters |
model | 3 |
casting |
model | 2 |
ui |
model | 2 |
inventory |
model | 1 |
Widget methods by the documentation's class (a setter without behaviour stores
its arguments for the getter, which counts as a model; a getter answers a fresh
widget's recorded value where /stdtest engine recorded one):
| Class | Methods | Model | Recorded | Fill-in | Generated |
|---|---|---|---|---|---|
AbbreviateConfig |
2 | 2 | 0 | 0 | 0 |
AbbreviatedNumberFormatter |
6 | 6 | 0 | 0 | 0 |
Alpha |
4 | 2 | 0 | 2 | 0 |
AnimRadialProgress |
4 | 2 | 0 | 2 | 0 |
AnimatableObject |
3 | 2 | 0 | 0 | 1 |
Animation |
36 | 23 | 0 | 9 | 4 |
AnimationGroup |
28 | 22 | 0 | 5 | 1 |
Blob |
14 | 10 | 0 | 1 | 3 |
Browser |
12 | 2 | 0 | 0 | 10 |
Button |
42 | 31 | 0 | 6 | 5 |
CharacterModelBase |
24 | 12 | 0 | 4 | 8 |
Checkbox |
6 | 5 | 0 | 1 | 0 |
CinematicModel |
18 | 11 | 0 | 0 | 7 |
ColorCurveObject |
11 | 11 | 0 | 0 | 0 |
ColorSelect |
19 | 12 | 0 | 6 | 1 |
ControlPoint |
5 | 3 | 0 | 2 | 0 |
Cooldown |
46 | 26 | 0 | 18 | 2 |
CurveObject |
10 | 10 | 0 | 0 | 0 |
CurveObjectBase |
3 | 3 | 0 | 0 | 0 |
DressUpModel |
20 | 9 | 0 | 8 | 3 |
DurationClockObject |
1 | 1 | 0 | 0 | 0 |
DurationManualClock |
4 | 4 | 0 | 0 | 0 |
DurationObject |
31 | 31 | 0 | 0 | 0 |
DurationTextBindingObject |
30 | 30 | 0 | 0 | 0 |
EditBox |
79 | 51 | 0 | 21 | 7 |
FlipBook |
10 | 5 | 0 | 5 | 0 |
FogOfWarFrame |
12 | 6 | 0 | 6 | 0 |
Font |
24 | 13 | 0 | 10 | 1 |
FontString |
57 | 32 | 0 | 23 | 2 |
Frame |
126 | 79 | 13 | 19 | 15 |
FrameScriptObject |
21 | 8 | 0 | 10 | 3 |
HousingCatalogSearcher |
46 | 46 | 0 | 0 | 0 |
HousingFixturePointFrame |
5 | 3 | 0 | 0 | 2 |
HousingLayoutPinFrame |
17 | 8 | 0 | 0 | 9 |
Line |
9 | 5 | 0 | 4 | 0 |
LocaleContext |
22 | 22 | 0 | 0 | 0 |
MapScene |
5 | 2 | 0 | 3 | 0 |
MessageFrame |
33 | 19 | 0 | 14 | 0 |
Minimap |
31 | 27 | 0 | 1 | 3 |
Model |
65 | 32 | 0 | 28 | 5 |
ModelFFX |
4 | 0 | 0 | 0 | 4 |
ModelSceneFrame |
47 | 24 | 0 | 21 | 2 |
ModelSceneFrameActor |
31 | 13 | 0 | 12 | 6 |
ModelSceneFrameActorBase |
50 | 30 | 0 | 17 | 3 |
Movie |
4 | 1 | 0 | 0 | 3 |
NamePlate |
6 | 3 | 0 | 2 | 1 |
NumericFormatter |
1 | 1 | 0 | 0 | 0 |
NumericRuleFormatter |
5 | 5 | 0 | 0 | 0 |
Object |
5 | 3 | 0 | 1 | 1 |
OffScreenFrame |
8 | 2 | 0 | 5 | 1 |
Path |
5 | 1 | 0 | 4 | 0 |
QuestPOI |
3 | 0 | 0 | 0 | 3 |
Region |
16 | 15 | 0 | 0 | 1 |
Rotation |
6 | 1 | 0 | 5 | 0 |
Scale |
8 | 5 | 0 | 3 | 0 |
ScenarioPOI |
2 | 0 | 0 | 0 | 2 |
ScriptRegion |
55 | 41 | 0 | 8 | 6 |
ScriptRegionResizing |
13 | 10 | 0 | 0 | 3 |
ScrollFrame |
9 | 7 | 0 | 1 | 1 |
SecondsFormatter |
35 | 35 | 0 | 0 | 0 |
SimpleCheckout |
8 | 2 | 0 | 0 | 6 |
SimpleHTML |
23 | 5 | 0 | 18 | 0 |
Slider |
19 | 19 | 0 | 0 | 0 |
StatusBar |
28 | 25 | 0 | 3 | 0 |
TabardModel |
6 | 0 | 0 | 6 | 0 |
TabardModelBase |
7 | 1 | 0 | 1 | 5 |
Texture |
4 | 4 | 0 | 0 | 0 |
TextureBase |
52 | 31 | 0 | 18 | 3 |
TextureCoordTranslation |
2 | 1 | 0 | 1 | 0 |
TimedSignalMap |
8 | 8 | 0 | 0 | 0 |
Tooltip |
9 | 3 | 0 | 5 | 1 |
Translation |
2 | 1 | 0 | 1 | 0 |
UnitHealPredictionCalculator |
35 | 35 | 0 | 0 | 0 |
UnitPositionFrame |
12 | 4 | 0 | 3 | 5 |
VectorGraphics |
4 | 1 | 0 | 0 | 3 |
VertexColor |
4 | 2 | 0 | 2 | 0 |
| All | 1,477 | 967 | 13 | 345 | 152 |
Verification against the client
The engine runs StdTest's probes with the recorded character's world and
compares its answers with the client's
(crates/wowlua-cli/tests/engine_probe.rs). Each comparison has a ratchet, the
matched count it may not fall below; the numbers here are those ratchets. The
comparisons load Blizzard's UI code (cargo xtask types fetch), so they run
locally and CI skips them.
| Comparison | Matched | Of | Ratio |
|---|---|---|---|
Full probe (/stdtest engine fullprobe: every C function with many arguments) |
33,075 | 33,727 | 98.1% |
Answers battery (/stdtest engine answers: the calls Blizzard's UI makes) |
6,127 | 6,201 | 98.8% |
Method probe (a fresh widget's recorded getters, until /stdtest engine methodprobe is ingested) |
757 | 765 | 99.0% |
Maps (/stdtest engine maps: each map's data) |
3,028 | 3,028 | 100.0% |
| Damage meter (its events in the recorded fights) | 557 | 561 | 99.3% |
Besides these, the probe battery (/stdtest engine), the input, mouse and key
replays and the answers battery's 79 checks (but those known to vary between the
client's sessions) must match exactly, and the taint experiments (/stdtest taint) are reproduced in full (crates/wowlua-engine/tests/taint.rs).
Scenario replays
Each recorded scenario (/stdtest engine scenario) played in the engine from
the character's world as the recording began; its lines are the events and
answers StdTest's recorder logged, without the world's noise.
| Scenario | Matched | Of | Ratio |
|---|---|---|---|
| actionbar | 140 | 140 | 100.0% |
| auction | 382 | 382 | 100.0% |
| auradeath | 1,284 | 1,284 | 100.0% |
| bags | 1,253 | 1,253 | 100.0% |
| bank | 555 | 555 | 100.0% |
| combat | 778 | 778 | 100.0% |
| death | 1,647 | 1,648 | 99.9% |
| equip | 205 | 205 | 100.0% |
| flight | 277 | 277 | 100.0% |
| gossip2 | 167 | 167 | 100.0% |
| group | 262 | 262 | 100.0% |
| hearth | 1,612 | 1,613 | 99.9% |
| inspect | 286 | 286 | 100.0% |
| items | 357 | 357 | 100.0% |
| legacy | 123 | 123 | 100.0% |
| lfg | 100 | 100 | 100.0% |
| macro | 54 | 54 | 100.0% |
| 376 | 376 | 100.0% | |
| mail2 | 219 | 219 | 100.0% |
| mapnav | 149 | 149 | 100.0% |
| profession | 2,338 | 2,340 | 99.9% |
| quest | 5,746 | 5,799 | 99.1% |
| questlog | 424 | 424 | 100.0% |
| repair | 364 | 364 | 100.0% |
| talents | 875 | 875 | 100.0% |
| taxi | 1,237 | 1,237 | 100.0% |
| tracking | 139 | 139 | 100.0% |
| trainer | 176 | 176 | 100.0% |
| vendor | 572 | 572 | 100.0% |
| All | 22,097 | 22,154 | 99.7% |
Recorded without a replay yet: trade.
The full probe by namespace
The full probe's answers by the namespace of the function asked (a setting's
read-back counts for its setter), from the test's misses
(crates/wowlua-cli/tests/fullprobe-misses.txt):
| Namespace | Answers | Matched | Ratio |
|---|---|---|---|
(globals) |
9,705 | 9,591 | 98.8% |
C_AccountInfo |
18 | 18 | 100.0% |
C_AccountServices |
57 | 57 | 100.0% |
C_AccountStore |
61 | 61 | 100.0% |
C_AchievementInfo |
29 | 29 | 100.0% |
C_ActionBar |
718 | 712 | 99.2% |
C_AddOnProfiler |
78 | 29 | 37.2% |
C_AddOns |
180 | 170 | 94.4% |
C_AdventureJournal |
40 | 40 | 100.0% |
C_AdventureMap |
66 | 66 | 100.0% |
C_AlliedRaces |
16 | 13 | 81.2% |
C_AnimaDiversion |
4 | 4 | 100.0% |
C_ArdenwealdGardening |
2 | 2 | 100.0% |
C_AreaPoiInfo |
103 | 101 | 98.1% |
C_ArtifactUI |
334 | 333 | 99.7% |
C_AssistedCombat |
5 | 5 | 100.0% |
C_AuctionHouse |
199 | 192 | 96.5% |
C_AutoComplete |
25 | 25 | 100.0% |
C_AzeriteEmpoweredItem |
221 | 221 | 100.0% |
C_AzeriteEssence |
102 | 102 | 100.0% |
C_AzeriteItem |
37 | 37 | 100.0% |
C_Bank |
31 | 31 | 100.0% |
C_BarberShop |
11 | 10 | 90.9% |
C_BattleNet |
94 | 73 | 77.7% |
C_BlackMarket |
49 | 49 | 100.0% |
C_BlizzCon2026 |
3 | 3 | 100.0% |
C_CVar |
160 | 159 | 99.4% |
C_Calendar |
264 | 248 | 93.9% |
C_CampaignInfo |
61 | 60 | 98.4% |
C_CatalogShop |
174 | 174 | 100.0% |
C_ChallengeMode |
72 | 72 | 100.0% |
C_CharacterServices |
112 | 112 | 100.0% |
C_CharacterServicesPublic |
8 | 8 | 100.0% |
C_ChatBubbles |
4 | 4 | 100.0% |
C_ChatInfo |
175 | 173 | 98.9% |
C_ChromieTime |
8 | 8 | 100.0% |
C_ClassColor |
8 | 8 | 100.0% |
C_ClassTalents |
78 | 78 | 100.0% |
C_ClassTrial |
16 | 16 | 100.0% |
C_ClickBindings |
38 | 38 | 100.0% |
C_ClientScene |
7 | 7 | 100.0% |
C_Club |
333 | 333 | 100.0% |
C_ClubFinder |
100 | 100 | 100.0% |
C_ColorOverrides |
38 | 38 | 100.0% |
C_ColorUtil |
76 | 76 | 100.0% |
C_CombatAudioAlert |
78 | 74 | 94.9% |
C_CombatLog |
51 | 51 | 100.0% |
C_CombatText |
2 | 2 | 100.0% |
C_Commentator |
701 | 701 | 100.0% |
C_ConsoleScriptCollection |
25 | 25 | 100.0% |
C_Container |
735 | 734 | 99.9% |
C_ContentTracking |
331 | 328 | 99.1% |
C_ContributionCollector |
140 | 140 | 100.0% |
C_CooldownViewer |
53 | 52 | 98.1% |
C_CovenantCallings |
2 | 2 | 100.0% |
C_CovenantPreview |
7 | 7 | 100.0% |
C_CovenantSanctumUI |
48 | 48 | 100.0% |
C_Covenants |
9 | 9 | 100.0% |
C_CraftingOrders |
91 | 90 | 98.9% |
C_CreatureInfo |
46 | 46 | 100.0% |
C_CurrencyInfo |
356 | 355 | 99.7% |
C_Cursor |
1 | 1 | 100.0% |
C_CurveUtil |
51 | 51 | 100.0% |
C_DamageMeter |
117 | 117 | 100.0% |
C_DateAndTime |
21 | 13 | 61.9% |
C_DeathInfo |
28 | 28 | 100.0% |
C_DeathRecap |
32 | 32 | 100.0% |
C_Debug |
26 | 26 | 100.0% |
C_DelvesUI |
242 | 242 | 100.0% |
C_Discord |
2 | 2 | 100.0% |
C_DyeColor |
57 | 57 | 100.0% |
C_EditMode |
9 | 8 | 88.9% |
C_EncodingUtil |
62 | 62 | 100.0% |
C_EncounterEvents |
73 | 73 | 100.0% |
C_EncounterJournal |
135 | 135 | 100.0% |
C_EncounterTimeline |
146 | 145 | 99.3% |
C_EncounterWarnings |
25 | 21 | 84.0% |
C_EndOfMatchUI |
1 | 1 | 100.0% |
C_EquipmentSet |
56 | 56 | 100.0% |
C_EventScheduler |
21 | 19 | 90.5% |
C_EventToastManager |
9 | 9 | 100.0% |
C_EventUtils |
12 | 12 | 100.0% |
C_ExternalEventURL |
3 | 3 | 100.0% |
C_Flyout |
90 | 87 | 96.7% |
C_FogOfWar |
16 | 16 | 100.0% |
C_FrameManager |
6 | 6 | 100.0% |
C_FriendList |
62 | 62 | 100.0% |
C_GamePad |
34 | 29 | 85.3% |
C_GameRules |
97 | 95 | 97.9% |
C_GamepadUI |
17 | 17 | 100.0% |
C_Garrison |
798 | 798 | 100.0% |
C_Glue |
2 | 2 | 100.0% |
C_GossipInfo |
77 | 77 | 100.0% |
C_GuildBank |
1 | 1 | 100.0% |
C_GuildInfo |
70 | 70 | 100.0% |
C_Heirloom |
165 | 165 | 100.0% |
C_HeirloomInfo |
10 | 10 | 100.0% |
C_HouseEditor |
9 | 8 | 88.9% |
C_HouseExterior |
18 | 18 | 100.0% |
C_Housing |
2 | 2 | 100.0% |
C_ImmersiveInteraction |
1 | 1 | 100.0% |
C_IncomingSummon |
8 | 8 | 100.0% |
C_InputInterfaceStyle |
1 | 1 | 100.0% |
C_InstanceEncounter |
4 | 4 | 100.0% |
C_InstanceLeaver |
1 | 1 | 100.0% |
C_InterfaceFileManifest |
1 | 1 | 100.0% |
C_Intl |
334 | 333 | 99.7% |
C_InvasionInfo |
24 | 24 | 100.0% |
C_IslandsQueue |
3 | 3 | 100.0% |
C_Item |
1,034 | 1,028 | 99.4% |
C_ItemInteraction |
8 | 8 | 100.0% |
C_ItemSocketInfo |
49 | 49 | 100.0% |
C_KeyBindings |
64 | 64 | 100.0% |
C_LFGInfo |
34 | 34 | 100.0% |
C_LFGList |
101 | 101 | 100.0% |
C_LevelLink |
6 | 6 | 100.0% |
C_Loot |
3 | 3 | 100.0% |
C_LootHistory |
27 | 27 | 100.0% |
C_LootJournal |
33 | 2 | 6.1% |
C_LossOfControl |
51 | 51 | 100.0% |
C_Macro |
10 | 10 | 100.0% |
C_Mail |
10 | 10 | 100.0% |
C_Map |
400 | 387 | 96.8% |
C_MapExplorationInfo |
20 | 20 | 100.0% |
C_MerchantFrame |
24 | 24 | 100.0% |
C_Minimap |
102 | 102 | 100.0% |
C_ModelInfo |
28 | 22 | 78.6% |
C_ModifiedInstance |
9 | 9 | 100.0% |
C_MountJournal |
193 | 192 | 99.5% |
C_NamePlate |
23 | 23 | 100.0% |
C_NamePlateManager |
14 | 14 | 100.0% |
C_Navigation |
14 | 11 | 78.6% |
C_NewItems |
37 | 37 | 100.0% |
C_PaperDollInfo |
127 | 126 | 99.2% |
C_PartyInfo |
106 | 103 | 97.2% |
C_PartyPose |
25 | 25 | 100.0% |
C_PerksActivities |
19 | 19 | 100.0% |
C_PetBattles |
385 | 385 | 100.0% |
C_PetInfo |
38 | 36 | 94.7% |
C_PetJournal |
467 | 465 | 99.6% |
C_PhotoSharing |
5 | 5 | 100.0% |
C_Ping |
17 | 17 | 100.0% |
C_PlayerChoice |
4 | 4 | 100.0% |
C_PlayerInfo |
126 | 126 | 100.0% |
C_PlayerInteractionManager |
121 | 121 | 100.0% |
C_PlayerMentorship |
8 | 8 | 100.0% |
C_PvP |
345 | 329 | 95.4% |
C_QuestHub |
68 | 68 | 100.0% |
C_QuestInfoSystem |
155 | 155 | 100.0% |
C_QuestItemUse |
15 | 15 | 100.0% |
C_QuestLine |
94 | 94 | 100.0% |
C_QuestLog |
729 | 707 | 97.0% |
C_QuestOffer |
23 | 23 | 100.0% |
C_QuestSession |
9 | 9 | 100.0% |
C_RaidLocks |
63 | 63 | 100.0% |
C_RecentAllies |
46 | 45 | 97.8% |
C_RecruitAFriend |
33 | 29 | 87.9% |
C_Reincarnation |
16 | 16 | 100.0% |
C_ReportSystem |
104 | 104 | 100.0% |
C_Reputation |
81 | 74 | 91.4% |
C_ResearchInfo |
9 | 9 | 100.0% |
C_RestrictedActions |
20 | 20 | 100.0% |
C_Roleset |
2 | 2 | 100.0% |
C_Scenario |
65 | 65 | 100.0% |
C_ScenarioInfo |
84 | 84 | 100.0% |
C_ScriptedAnimations |
1 | 1 | 100.0% |
C_SeasonInfo |
3 | 3 | 100.0% |
C_Secrets |
476 | 476 | 100.0% |
C_SharedCharacterServices |
6 | 4 | 66.7% |
C_SkillInfo |
10 | 9 | 90.0% |
C_SocialQueue |
37 | 34 | 91.9% |
C_SocialRestrictions |
8 | 8 | 100.0% |
C_SocialUI |
1 | 1 | 100.0% |
C_Sound |
8 | 8 | 100.0% |
C_SpecializationInfo |
144 | 143 | 99.3% |
C_SpectatingUI |
3 | 3 | 100.0% |
C_Spell |
525 | 520 | 99.0% |
C_SpellActivationOverlay |
6 | 6 | 100.0% |
C_SpellBook |
852 | 851 | 99.9% |
C_SpellDiminish |
39 | 39 | 100.0% |
C_SplashScreen |
3 | 3 | 100.0% |
C_StableInfo |
30 | 29 | 96.7% |
C_StorePublic |
8 | 8 | 100.0% |
C_StringUtil |
62 | 62 | 100.0% |
C_SummonInfo |
5 | 5 | 100.0% |
C_SuperTrack |
25 | 16 | 64.0% |
C_SwingTimer |
7 | 7 | 100.0% |
C_System |
1 | 0 | 0.0% |
C_SystemVisibilityManager |
5 | 5 | 100.0% |
C_TTSSettings |
46 | 38 | 82.6% |
C_TalkingHead |
32 | 32 | 100.0% |
C_TaskQuest |
129 | 129 | 100.0% |
C_TaxiMap |
27 | 25 | 92.6% |
C_Texture |
58 | 52 | 89.7% |
C_TimerunningUI |
1 | 1 | 100.0% |
C_TooltipComparison |
21 | 21 | 100.0% |
C_TooltipInfo |
1,268 | 1,178 | 92.9% |
C_ToyBox |
151 | 151 | 100.0% |
C_ToyBoxInfo |
18 | 18 | 100.0% |
C_TradeInfo |
1 | 1 | 100.0% |
C_TradeSkillUI |
1,110 | 1,108 | 99.8% |
C_Trainer |
2 | 2 | 100.0% |
C_Traits |
382 | 379 | 99.2% |
C_Transmog |
34 | 34 | 100.0% |
C_TransmogCollection |
776 | 752 | 96.9% |
C_TransmogOutfitInfo |
465 | 464 | 99.8% |
C_TransmogSets |
171 | 171 | 100.0% |
C_Trophy |
24 | 24 | 100.0% |
C_Tutorial |
1 | 1 | 100.0% |
C_UI |
6 | 5 | 83.3% |
C_UIColor |
1 | 0 | 0.0% |
C_UIFileAsset |
18 | 17 | 94.4% |
C_UIWidgetManager |
242 | 242 | 100.0% |
C_UnitAuras |
563 | 475 | 84.4% |
C_VideoOptions |
28 | 23 | 82.1% |
C_VignetteInfo |
54 | 54 | 100.0% |
C_VoiceChat |
224 | 221 | 98.7% |
C_WarbandScene |
22 | 21 | 95.5% |
C_Weather |
1 | 1 | 100.0% |
C_Widget |
24 | 24 | 100.0% |
C_WorldLootObject |
92 | 92 | 100.0% |
C_WowLabsDataManager |
24 | 24 | 100.0% |
C_WowTokenPublic |
56 | 56 | 100.0% |
C_WowTokenUI |
1 | 1 | 100.0% |
C_XMLUtil |
7 | 6 | 85.7% |
C_ZoneAbility |
8 | 8 | 100.0% |
Kiosk |
96 | 96 | 100.0% |
Unverified rules
The engine's code marks 1,076 rules unverified: each rests on Blizzard's documentation or UI code, warcraft.wiki.gg, elune or the function's name, not on a probe of the client. An in-game probe confirms or corrects each (probes). Each line is the marking comment's first sentence, in the file's order; the file is cited without a line number so the page changes only when a rule is added, removed or reworded.
achievements (1)
- achievements.rs: Unverified: which achievements a search finds (the categories' of
GetCategoryList(), by name, case aside; every one...
actions (10)
- actions.rs: The action bars: the action in each slot (a world profile's
actions, recorded by/stdtest snapshot; `mock.setActi... - actions.rs: The last action slot the bars answer for: past it, as for slot 0 and below, the slot functions answer nothing (the fu...
- actions.rs:
C_ActionBar.FindSpellActionButtons(spellID [, setToSearch]): the slots holding the spell, in order, or nothing; `En... - actions.rs:
UseAction(slot, unit, button, isKeyPress)(an action button's click, Blizzard'sSecureActionButton_OnClick): a sp... - actions.rs:
C_ActionBar.GetSpell(slot): a spell action's spell; 0 for another slot (documented never nil; unverified: a macro's... - actions.rs: A weapon's strike (trait
weapon): unusable with no main hand, or while the inventory loads (recorded: Holy Strike t... - actions.rs: A spell on the player or a group member in reach only (trait
partyOrSelf; probed: Blessing of Protection usable tar... - actions.rs:
IsCurrentAction,IsAutoRepeatAction,IsEquippedAction,UsesActionText: false for a slot (none running; unveri... - actions.rs:
IsAutoCastPetAction,IsEnabledAutoCastPetAction,IsEquippedGearOutfitAction: false for any slot, 0 and past the... - actions.rs:
IsAttackAction(slot): whether the slot holds Auto Attack (spell 6603; unverified for a filled slot: the recording's...
actions2 (10)
- actions2.rs: Most of these were not recorded: each says where its rule comes from, and is unverified unless it names its recording...
- actions2.rs: The cursor's item put into
bag's first free slot, through the cursor's own move (cursor::pickup_item_at: a bag it... - actions2.rs:
AutoEquipCursorItem(): the cursor's bag item to the gear slot its kind goes to, as a drag onto the gear (`inventory... - actions2.rs: The server gave the money: as an item taken (
mail.rs'staken: an auction's letter emptied closed, the inbox's upd... - actions2.rs:
ClearSendMail(): the letter being written emptied: its attachments back in their bag slots unlocked (asCloseMail... - actions2.rs: The quest log's headers collapsed or expanded: the header at
index(0: every header, as Blizzard's classic quest lo... - actions2.rs:
SetRaidSubgroup(index, subgroup): the member into a subgroup (1 to 8) that is not full (five), told as the raid's o... - actions2.rs:
SwapRaidSubgroup(index1, index2): two members of different subgroups trade places (GROUP_ROSTER_UPDATE; unverified). - actions2.rs:
ClearInspectPlayer(): the inspected player forgotten (its talent config,C_Traits.GetConfigInfo(-1), no longer an... - actions2.rs:
Dismount(): the engine's only mount is a flight's, which no one gets off.
animations (1)
- animations.rs: Unverified: the timing within a frame (groups advance after the frame's
OnUpdates), thatFinishrunsOnFinished...
api (1)
- api.rs: A nameplate (the client makes them in code,
NAME_PLATE_CREATED): a frame with the hit-test methods (unverified: no...
args (23)
- args.rs: The check depends on the argument's documented type, as the client's C bindings differ: integers check their range, t...
- args.rs: A font object, or the name of one (
"GameFontNormal"; names unverified,'x'refused as recorded). - args.rs: An inventory slot: -1, 2147483647 and "x" refused, 0 to 1.5 taken (
C_PaperDollInfo.GetTemporaryEnchantmentInfo, the... - args.rs: An artifact tier, read as an enumeration's value: "x" taken as 0, -1 and 2147483647 refused (`C_ArtifactUI.GetCostFor...
- args.rs: A calendar event's ID: -1 refused with the usage alone, "x" taken as 0, 2147483647 taken (`C_Calendar.GetEventIndexIn...
- args.rs: A garrison follower's ID: "" and "x" refused with the usage alone (
C_Garrison.GetFollowerAutoCombatSpells, the full... - args.rs: A name plate's unit: a string, but neither a group member's ("party1": "Raid/Party unit tokens are not allowed...
- args.rs: The client's own structures the probe met: an empty table refused for a comparison item and a transmog location (`C_T...
- args.rs: An item's location: an empty one refused (
ItemLocation: CreateEmpty()by all 54 functions the full probe gave it, e... - args.rs: A script object the client gives Lua as a userdata (
LuaCurveObjectBase: the classCurveObjectBase): `UnitHealthPe... - args.rs: Unverified: an alias's family (string literals are strings); a type neither documented nor an alias takes anything un...
- args.rs: Arguments the client takes more loosely than its documentation says, as Blizzard's code passes them at every login wi...
- args.rs: A texture alone (gamepad action bars; an edge's: Ellesmere UI's cooldowns, which the client runs without an error; a...
- args.rs: A channel's name for the sound's sub type (
PlaySound(kit, "Master"): Ellesmere UI's unlock sound, error-free in the... - args.rs: A locale's name: "Invalid locale name 'x'." for "x", "player", -1, 0, 1 and 2 (`C_StringUtil.GetDefaultAbbreviationBr...
- args.rs: Documented functions' own checks after the bindings': the C code's error, without a position, and for an addon's call...
- args.rs: A talent's query without its tier (the full probe:
GetTalentInfo({})and({ isInspect = true, isPet = true }); un... - args.rs: [
check] with the documented arguments from argumentfirston (2 for a method:selfcomes first). - args.rs: A spell book item's bank: a number (nil refused as well), one of
Enum.SpellBookSpellBank(the full probe's `(1, "x"... - args.rs: Whether a function's argument errors are Lua's own (
luaL_argerror: the caller's position and the name it was called... - args.rs: A method's range error is Lua's own (
s:SetValue(math.huge)called directly names itself,/stdtest engine answers)... - args.rs: "CRITTER" or "MOUNT" (unverified: the probe passed neither).
- args.rs: A GUID (
BattlePet-…), or 0, which reads as none (C_PetJournal.PetIsHurt(0)answers,1and"x"are refused; a...
auction (15)
- auction.rs: Unverified: bids and buying items (not commodities), favorites, more than one page of results, the deposit's formula...
- auction.rs: A commodity's price quote's length (unverified: not recorded).
- auction.rs: The same query already waiting: nothing more (unverified: the client's dedup; a refreshed search queued once, recorded).
- auction.rs: Nothing more in the data: none added, all told (unverified).
- auction.rs: The item back by the house's mail (unverified).
- auction.rs: A commodity's results told (with the browse results' update after a purchase; their owners' names a moment later, unl...
- auction.rs:
C_AuctionHouse.SendBrowseQuery(query): everything (as recorded: the data's rows, more on the server), or the rows w... - auction.rs:
C_AuctionHouse.RequestMoreBrowseResults(): the next page asked for; the data has none, so its answer adds nothing a... - auction.rs:
C_AuctionHouse.QueryOwnedAuctions(sorts): the player's auctions asked for, answered byOWNED_AUCTIONS_UPDATED(un... - auction.rs:
C_AuctionHouse.CanCancelAuction(auctionID): one of the player's (unverified: no bid on it, the engine has none). - auction.rs:
C_AuctionHouse.GetCancelCost(auctionID): nothing without a bid (unverified: the deposit is what a cancel loses, pai... - auction.rs:
C_AuctionHouse.CancelAuction(auctionID): one of the player's sent; its answerAUCTION_CANCELED(auctionID), the it... - auction.rs:
C_AuctionHouse.CalculateItemDeposit(location, duration, quantity): the data's deposit, a silver at least (the full... - auction.rs:
C_AuctionHouse.IsSellItemValid(location, displayError): an unbound bag item (unverified beyond the recorded gloves'). - auction.rs:
C_AuctionHouse.GetItemCommodityStatus(location): a commodity when it stacks, else an item (unverified: the client's...
auras (5)
- auras.rs: Recorded on WoW Forever 1.60.1 (
/stdtest restrictions): in combat, tainted code reading an aura fails with "`<Funct... - auras.rs: A word after
!must not hold (SuuUI probe partyAuras, the player's auras:HELPFUL|!PLAYERkept only another's buf... - auras.rs: A stun (
stuns) changes the unit's flags, told at once (recorded: Hammer of Justice on the cat, its flags before the... - auras.rs:
GetAuraDataByIndex(unit, index [, filter])and its buff and debuff forms. - auras.rs:
GetAuraSlots(unit, filter [, maxSlots [, continuationToken]]): the continuation token (nil when no slot is left), t...
aurastates (1)
- aurastates.rs: When: with the blow's packet (after the attacker's power, before the victim's:
combat6.283,death12.969), or th...
bank (3)
- bank.rs: A tab's size, unless its data says (
slots,tabSlots): 48 (the bank scenario's two tabs; SuuUI probe bankSlots: th... - bank.rs: The second tab costs 1000 (SuuUI probe bankSlots: one bought), the third 10000 (the bank scenario: two bought); the o...
- bank.rs:
C_Bank.IsItemAllowedInBankType(bankType, itemLocation): any item in the character's bank; none in another (the acco...
bars (1)
- bars.rs: Whether the range or the value was set from a secret: read back secret (unverified: the documented secret aspects; a...
batch (3)
- batch.rs: Recorded: in every scenario recording (20 of them, 369 frames with two or more of these events) the frame's `ACTIONBA...
- batch.rs: Recorded once,
quest's level up (69.677): the player's specialization's update between the bags' and the spells' co... - batch.rs: One
UNIT_AURAupdate telling another's changes too: its lists lengthened, its other fields kept (a secret list as i...
bindings (15)
- bindings.rs: Unverified:
GetBinding's results beyond the command and keys, and the addons' reasons and security strings. - bindings.rs: The command a key runs: a priority override's, an override's, else the key's binding (
GetBindingAction(key, true);... - bindings.rs: Runs a key's command, "down" or "up": a binding's code, or a
CLICKbinding's button (OnClick(button, down); unver... - bindings.rs: Whether a binding command exists: a binding's (
Bindings.xml), or aCLICK,SPELL,MACROorITEMone (unverif... - bindings.rs:
SetBinding(key [, command]): whether it bound. - bindings.rs:
C_KeyBindings.GetBindingByKey(key): the command the key runs, nil for none (unverified: with overrides). - bindings.rs: "Every addon gets a group set" (Blizzard's AddonList): the TOC's, else one the client gives addons with similar names...
- bindings.rs:
C_AddOns.IsAddOnDefaultEnabled(addon): an addon the client has, yes (the TOC'sDefaultStateis not read: unverifi... - bindings.rs:
C_AddOns.IsAddOnLoadable(addon): every known addon loads, the reason empty; an unknown one is "MISSING" (recorded f... - bindings.rs:
C_AddOns.IsAddonVersionCheckEnabled(): on unless turned off (unverified: the account's setting). - bindings.rs:
C_AddOns.DoesAddOnExist(name): an addon the client knows (one the test loads, or a Blizzard addon of the loaded UI... - bindings.rs:
C_AddOns.GetAddOnEnableState(name [, character]):All(2) for an addon the client knows and loads,None(0) for... - bindings.rs:
C_UIFileAsset.IsKnownFile(asset): a file ID, or a path the client ships, is known (the engine has no list of the cl... - bindings.rs:
IsModifiedClick([action]): the action's modifiers are held (NONE: never; no action: any modifier). - bindings.rs: A key as the client shows it (recorded, 167 keys on the Mac client): the modifiers as written but META, which is `CMD...
blanks (1)
- blanks.rs: Unverified: the answers with something there (a petition offered, a dungeon proposed), and for the settings another a...
buttons (2)
- buttons.rs: The state textures shown as the button's state has them (SuuUI probe trees: of 380 state textures of enabled, uncheck...
- buttons.rs: The layer a state's texture is drawn in (SuuUI probe trees: XML's
<HighlightTexture>in HIGHLIGHT, `<CheckedTexture...
casting (9)
- casting.rs: Verified against the client (
/stdtest engine record cast, Forever 70425): the player's `SENT(unit, target name | ni... - casting.rs: Secret where units' identities are (
ConditionalSecret): a paladin's Judgement in Ragefire Chasm (its cast GUIDs' ma... - casting.rs: A spell's slots told changed as it is sent (its data's
slotChanges: the seconds after, one per time; recorded: Seal... - casting.rs: Another unit's new cast replaces the one running (unverified).
- casting.rs: Moving: a spell with a cast time refused (recorded,
profession: Holy Light, 2.5 s, pressed on the walk; unverified:... - casting.rs:
player:setMoving(moving): the player starts or stops moving (PLAYER_STARTED_MOVING,PLAYER_STOPPED_MOVING, reco... - casting.rs:
player:spellFailedQuiet(spellID, { client? }): a spell the server cast for the player (a proc) failing without a wo... - casting.rs:
player:castFailed(spellID, { error, client? }): the player's cast ofspellIDrefused, the reasonerrortold: a... - casting.rs: The server's refusal ends the global cooldown the press began (recorded:
auradeath17.005, the slots' cooldowns ina...
channels (1)
- channels.rs: Unverified: what
GetNumGroupChannelscounts (recorded 1 without a group); collapsed headers; joining and leaving; a...
character (14)
- character.rs: Unverified (inferred from Blizzard's documentation and UI code):
BAG_CONTAINER_UPDATEfor a bag put in, other flavo... - character.rs:
GetInventoryItemCount(unit, slot): the worn item's count, 1 where none is (the full probe:("player")and("x")... - character.rs: The keyring (
Enum.BagIndex.Keyring, -1): always there, 32 slots, empty unless the profile holds it (the full probe:... - character.rs:
C_Item.GetItemCount(item, includeBank): in the bags (and equipped); the bank's tabs (bags 6 on) withincludeBank... - character.rs:
C_Container.GetItemCooldown(itemID): its running cooldown's start and duration, enabled for an item; 0 for an ID na... - character.rs: The bags a new slot of item
idmay take, in order: a trade good's (classID7) the reagent bag first (recorded: ro... - character.rs:
countof itemidtaken from the bags (the last stacks first, unverified); the bags changed. - character.rs: The class's hidden group buffs: the test's (
e.setHiddenGroupBuffs), else the player's class's as recorded (`data/ca... - character.rs:
C_Map.GetPlayerMapPosition(mapID, unit): a vector (x,y,GetXY) on the player's map, or on a map holding it (... - character.rs: A unit that does not exist (or a GUID): three nils and instance 0 (the full probe); another unit's nothing (unverified).
- character.rs: Not given: the map position's place on its map's world rectangle (
maps::world_rect), the documentation's returns no... - character.rs: The backpack, the keyring, the bank's tabs (the character's and the account's): their general names (the full probe,...
- character.rs:
GetInventoryAlertStatus(slot): no durability warning (recorded for whole gear; unverified for damaged). - character.rs:
GetInventoryItemBroken(unit, slot),GetInventoryItemEquippedUnusable( unit, slot): whole and usable (recorded; un...
chat (1)
- chat.rs: Addon messages:
C_ChatInforegisters prefixes and sends; a sent message is kept for the test (sentAddonMessages),...
clock (5)
- clock.rs: Unverified until probed:
GetTime()starts at 0; a timer handle is a table withCancel,IsCancelledandInvoke... - clock.rs: Handles are userdata whose metatable is hidden (
/stdtest engine: no methods table to read; that__metatableis fa... - clock.rs: A timer a running timer sets without a delay waits for the next run of timers (the next frame), so one that sets itse...
- clock.rs:
GetTickTime(): the frame's seconds, as itsOnUpdategot them (unverified: before the first frame, 0). - clock.rs:
C_Timer.NewTimedSignalMap(callback): keys scheduled to signal at a time, as Blizzard's documentation describes the...
collections (48)
- collections.rs: What the client recorded is the source where it exists: the wardrobe's appearances and sources (`/stdtest engine coll...
- collections.rs: A name the client approves: any not blank (unverified: its profanity and length checks).
- collections.rs: Whether an indexed filter has that index (the full probe, 1.60.1: the mount journal's collected filters 1 to 3 and ty...
- collections.rs: A boolean filter's getter and setter, by an index argument (
$indexed) or none, with its default. - collections.rs: Mount sources and types (
Enum.MountJournalSourceType-sized, unverified counts: 13 sources, 6 types). - collections.rs: The toy box's sources and expansions (unverified source count; the full probe, 1.60.1: expansions 0 and 1).
- collections.rs: The heirlooms' sources (recorded
C_HeirloomInfo.IsHeirloomSourceValidasked for 1 to 12; unverified as the filter's... - collections.rs:
C_MountJournal.GetMountAllCreatureDisplayInfoByID(mountID): its one display, visible; nothing for a mount without d... - collections.rs:
C_MountJournal.GetMountFromSpell(spellID),GetMountFromItem(itemID): as recorded, else none, noted (unverified: t... - collections.rs:
C_MountJournal.IsValidSourceFilter(i),IsValidTypeFilter(i): the filters the dropdown lists (unverified counts). - collections.rs:
GetTitleName(titleMaskID): as recorded, else the title's name and true for a title (warcraft.wiki.gg's `playerTitle... - collections.rs:
IsTitleKnown(id): none known (unverified: the recorded character's titles were not asked). - collections.rs:
C_PetJournal.GetPetLoadOutInfo(slot): no pet, no abilities, locked (unverified: no battle pets); nothing for a slot... - collections.rs:
C_PetJournal.GetPetInfoBySpeciesID(speciesID)of a species the client has no pet of: the top two values of its Lua... - collections.rs:
C_PetJournal.GetPetSummonInfo(guid): not summonable, no error (Enum.PetJournalError.None), no text (unverified: n... - collections.rs:
C_PetJournal.GetNumPetTypes(): the ten pet types (humanoid to mechanical; unverified). - collections.rs:
C_PetBattles.GetAttackModifier(petType, enemyPetType): the pet types' chart, 1.5 strong and 2/3 weak (warcraft.wiki... - collections.rs:
C_TransmogCollection.GetSourceInfo(sourceID): the source as recorded in its appearance's sources; nothing for one n... - collections.rs:
C_TransmogCollection.GetCategoryForItem(source),C_TransmogOutfitInfo.GetItemModifiedAppearanceEffectiveCategory:... - collections.rs:
PlayerCanCollectSource(source),AccountCanCollectSource(source): the item's data known for a recorded source, and... - collections.rs:
C_TransmogCollection.GetAppearanceInfoBySource(source): its appearance's collection state from the recorded source... - collections.rs:
C_TransmogCollection.GetAppearanceCameraIDBySource(source): its appearance's recorded camera, else 0 (unverified). - collections.rs:
C_TransmogCollection.GetIsAppearanceFavorite(appearanceID): as set, else as recorded;SetIsAppearanceFavoriteset... - collections.rs:
C_TransmogCollection.GetItemInfo(itemInfo): the item's appearance and source, as recorded (its first source; unveri... - collections.rs:
C_Transmog.GetSlotForInventoryType(inventoryType): the inventory slot an inventory type (counted from 1, as `Appear... - collections.rs:
C_Transmog.CanHaveSecondaryAppearanceForSlotID(slotID): the shoulders (split shoulders; unverified on Forever). - collections.rs:
C_Transmog.ExtractTransmogIDList(input): the numbers in the text (unverified). - collections.rs:
C_TransmogCollection.SetClassFilter(classID): a class kept forGetClassFilter, another ID not (the full probe, 1.... - collections.rs:
C_TransmogCollection.SetSearch(type, text),ClearSearch(type): complete at once (unverified: no search database t... - collections.rs:
C_TransmogSets.GetBaseSets(),GetAvailableSets(),GetUsableSets(): the base sets not hidden until collected; th... - collections.rs:
GetFilteredBaseSetsCounts(): the sets' collected / not collected filters applied (unverified: the PvE/PvP filters). - collections.rs:
C_TransmogSets.GetIsFavorite(setID): as set, else as recorded; a variant's group favorite is its base's (unverified). - collections.rs:
C_TransmogSets.GetValidClassForSet(setID): none for a set any class may wear (class mask 0), else the mask's lowest... - collections.rs: A known set's items are not recorded: none (unverified).
- collections.rs:
GetMaxNumberOfUsableOutfits(): the outfits recorded (unverified: the client's limit not asked). - collections.rs: The armor options an outfit's armor slot offers the player: cloth up to the best armor the class wears at its level (...
- collections.rs:
C_TransmogOutfitInfo.GetOptionsForSlot(slot)(andGetWeaponOptionsForSlot, the same function: its usage names `Ge... - collections.rs:
C_TransmogOutfitInfo.GetCollectionInfoForSlotAndOption(slot, option, collectionType): the collection type's name, w... - collections.rs:
C_TransmogOutfitInfo.GetTransmogOutfitSlotForInventoryType(type): -1, no outfit slot, for an inventory type; nothin... - collections.rs:
C_TransmogOutfitInfo.GetNumberOfOutfitsUnlockedForSource(source): the recorded account's two outfits of source 1, n... - collections.rs: A statistic's value as the client shows it: a statistic of one criterion its quantity's text; of several, their quant...
- collections.rs:
GetStatistic(id)orGetStatistic(categoryID, index): the value's text, not skipped, and the statistic's ID (a num... - collections.rs:
GetCategoryAchievementPoints(categoryID, includeSubCategories): the points of its completed achievements (and its s... - collections.rs:
GetAchievementSearchProgress(),GetAchievementSearchSize(): the search done, its results' count both; none search... - collections.rs: No toy source offered (unverified: the heirlooms' recorded
IsHeirloomSourceValidare all false; the toys' not asked). - collections.rs: The journal unlocked and writable, no battles to find (unverified).
- collections.rs: Custom sets: none saved (unverified: the limit not recorded, noted).
- collections.rs: No new sources (
Constants.Transmog.NoTransmogID-like 0 for the latest; unverified).
conditionals (8)
- conditionals.rs: The syntax is the client's documented one (no probe yet; Wowpedia's macro conditionals are a hint, Blizzard's callers...
- conditionals.rs: An unclosed bracket: the rest is its group (unverified).
- conditionals.rs: Whether all of a bracket group's conditions hold; if so, its target.
- conditionals.rs: Outdoors: not indoors where the engine has no answer of its own (unverified).
- conditionals.rs: The click's button; none (a key binding, a slash command): button 1 (unverified).
- conditionals.rs: Talents the engine does not model here: never chosen (unverified).
- conditionals.rs:
SecureCmdOptionParse(options): the first matching clause's value and target (nil without one), or nothing when no c... - conditionals.rs:
C_ActionBar.SetActionBarPage(page): a new page firesACTIONBAR_PAGE_CHANGED(Blizzard'sActionBarControllerand...
content (26)
- content.rs: What the world models is answered from it: the instance the player is in (
encounters.rs), the party and its members... - content.rs:
C_PartyInfo.DoCountdown(seconds): the player's countdown starts, `START_PLAYER_COUNTDOWN(guid, seconds, seconds, tr... - content.rs:
GetLFGDungeonNumEncounters(dungeonID): one encounter, none done; nothing for no ID (the full probe: 1, 0 for IDs 1... - content.rs:
IsLFGDungeonJoinable(dungeonID): joinable, for the player, not locked (the full probe: true, true, false for IDs 1... - content.rs: The calendar's event types (
Enum.CalendarEventType, raid to other) and their names: five (the full probe, 1.60.1; t... - content.rs:
GetBattlefieldStatus(index): no queue in that slot ("none"), no map, no team, not registered or suspended, solo q... - content.rs: The difficulties the client has (
/stdtest engine answers: 1, 9 and 148 answered; 2, 3, 4, 173 to 176 and 9999 nothi... - content.rs:
SetDungeonDifficultyID(difficultyID): a dungeon difficulty chosen outside an instance,PLAYER_DIFFICULTY_CHANGED... - content.rs:
SetRaidDifficultyID(difficultyID [, force]): a raid difficulty chosen outside an instance, `PLAYER_DIFFICULTY_CHANG... - content.rs:
C_RaidLocks.GetRedirectedDifficultyID(mapID, difficultyID): the difficulty itself, nothing redirected (unverified). - content.rs:
C_EncounterJournal.GetBaseDifficultyID(difficultyID): the difficulty itself, truncated; one the client lacks its un... - content.rs:
CanShowResetInstances(): false, no instance run to reset (recorded alone outside an instance; the engine keeps no i... - content.rs:
C_PartyInfo.CanInvite(): alone, or leading the group (unverified: a raid's assistants). - content.rs:
C_PartyInfo.GetMinLevel(): the lowest level in the group, the player's alone (unverified). - content.rs: Classic's loot methods: free for all, round robin, master looter, group, need before greed (
Enum.LootMethod0 to 4;... - content.rs:
GetLootThreshold(): uncommon (2) until changed (recorded: the party was formed with group loot at uncommon; unverif... - content.rs:
SetLootThreshold(threshold): the leader's party's threshold,PARTY_LOOT_METHOD_CHANGED(unverified: the event, th... - content.rs:
GetLootInfo(): the open loot window's slots as tables (texture,item,quantity,quality,locked, `isQuest... - content.rs:
SetLFGRoles(leader, tank, healer, damage): kept (unverified: the class's allowed roles,LFG_ROLE_UPDATE). - content.rs:
GetPVPRoles(): tank, healer, damage: none (unverified). - content.rs:
GetLFGQueuedList(category [, table]): the table given (else a new one), no dungeon queued in it (unverified). - content.rs:
C_LFGList.GetApplicationInfo(searchResultID): the ID, not applied ("none"), no pending status, no time, no role (... - content.rs:
GetWorldPVPQueueStatus(index): no queue: status"none", no map, queue ID, expire time and average wait 0, the que... - content.rs:
C_Calendar.GetMaxCreateDate(): the last minute of the month a year from the clock's (the full probe, 1.60.1: 31 Oct... - content.rs:
C_LFGInfo.CanPlayerUseGroupFinder(): usable, no reason (Forever has the group finder:CanPlayerUseLFD()and `CanP... - content.rs:
C_LFGInfo.IsLFDEnabled(),C_LFGList.IsPremadeGroupFinderEnabled(): on, as the recordedCanPlayerUseLFDand `Can...
controls (1)
- controls.rs:
dragTo(source, target): the user dragssourceontotarget: the source'sOnDragStart("LeftButton")(picking so...
coverage (1)
- coverage.rs: A fill-in module's answer, from the documentation, Blizzard's UI code and the function's name (
fill_ins; unverified).
cursor (7)
- cursor.rs: Unverified: picking up while holding something else, moving within one bag, money.
- cursor.rs: Whether holding it shows the action bars' grid: a spell, a macro, an item but a trade good or a quest item (recorded:...
- cursor.rs:
PickupAction(slot): the action onto the cursor, the slot emptied. - cursor.rs: Takes the item at
sourceonto the cursor, or puts the held item back when it came from there; another slot: moves i... - cursor.rs: Onto another item: the two swap places, the target locked at once, then the cursor let go (recorded:
bags, the Roug... - cursor.rs: The bags as a packet tells their updates: the session's order first (
e.setBagOrder;bagstold bag 1, the reagent... - cursor.rs: The items whose counts a packet's moves changed, as the client told them (
bags' sort and swap): the backpack's slot...
curves (16)
- curves.rs: Curve objects (
C_CurveUtil.CreateCurve,CreateColorCurve): points a value is mapped through, as Blizzard's docume... - curves.rs: Adds a point after any of the same
x(unverified: the client keeps its points ordered byx; Blizzard's curves all... - curves.rs:
SetPoints(points): vectors (x,y), or color points (x,ya color); a point as a list{x, y}is taken too... - curves.rs:
ClearPoints(): no points; the secret flag stays (unverified: the documentation names onlySetToDefaultsas cleari... - curves.rs:
SetType(type): a secret type counts as a secret value (unverified). - curves.rs: The curve's value at
xin each channel: an empty curve's is zero (the documentation); outside its points, its end p... - curves.rs:
C_CurveUtil.EvaluateColorFromBoolean(boolean, ifTrue, ifFalse): a new color of the chosen one's channels, secret wh... - curves.rs: The chosen color as bytes, read back as floats (the full probe, 1.60.1: 0.5 came back 0.50196081399918, 128/255; unve...
- curves.rs:
C_DurationUtil.CreateDuration(): a zeroDurationObject, a time span on the clock that keeps secret values secret... - curves.rs: The span's measures now: (total, elapsed, remaining), in base time with
Enum.DurationTimeModifier.BaseTime(1): rea... - curves.rs:
UnitCastingDuration(unit),UnitChannelDuration(unit): a new duration object of the unit's cast (or channel) from... - curves.rs:
C_DurationUtil.CreateDurationTextBinding(): a binding that writes a duration's text (and color) into a font string,... - curves.rs:
SetToDefaults(): no font string, duration, format, formatter or fallback text (the documentation); the rest as a ne... - curves.rs:
Assign(other): the other binding's configuration, all of it (unverified: its font string too). - curves.rs: The text it would write, and whether it is secret: the zero-duration text without a duration or for a span of none, t...
- curves.rs: The memory in KiB as
UpdateAddOnMemoryUsagelast measured it, 0 before (the full probe: 0 for any name, its own add...
damagemeter (5)
- damagemeter.rs: A session begins with the player's combat or the first blow before it (
DAMAGE_METER_CURRENT_SESSION_UPDATED): `tale... - damagemeter.rs: Unverified (never recorded): the sessions' contents.
- damagemeter.rs: A fight that begins within this many seconds of the last one's end goes on in its session (unverified bound: see the...
- damagemeter.rs:
GetAvailableCombatSessions(): the sessions kept, oldest first, each{ sessionID, name, durationSeconds }(unverif... - damagemeter.rs:
ResetAllCombatSessions(): every session gone,DAMAGE_METER_RESET(documented; unverified: an open fight's session...
death (5)
- death.rs: Unverified: where the ghost appears, the health on resurrection (half), the release timer counting down, spirit heale...
- death.rs: The corpse's place known after the release: the navigation frame made (recorded once,
death29.621: 0.148 s after `... - death.rs:
caster:resurrect(target, { health }): another's resurrection spell landing (unverified throughout: no recording). - death.rs:
GetReleaseTimeRemaining(): 360 s from the death (unverified: the count down), 0 alive. - death.rs: No resurrection sickness, no timer (recorded without an offer; with one unverified).
editmode (2)
- editmode.rs: The login sends them (
EDIT_MODE_LAYOUTS_UPDATED(layoutInfo, false), recorded with Blizzard's addons loading). - editmode.rs: The default preset's place among the layouts: Blizzard lists its presets first, in
Enum.EditModePresetLayoutsorder...
encounters (5)
- encounters.rs: A dungeon's or raid's instance and its boss encounters.
- encounters.rs: Unverified: the events' order, entering an instance's loading screen (
PLAYER_ENTERING_WORLD, the zone's events: `mo... - encounters.rs: An instance kind's usual difficulty, its name and size (the
DifficultyIDenum's normal ones; unverified for camelot). - encounters.rs:
GetInstanceInfo()in an instance: its name, kind, difficulty and its name, size, no dynamic difficulty, its ID, the... - encounters.rs:
RequestRaidInfo(): the server's answer a round trip later,UPDATE_INSTANCE_INFO()(recorded, lfg: each time the g...
equipsets (2)
- equipsets.rs: Unverified: an item in the bags or lost (its location, the counts), a set with a spec, making, changing and using set...
- equipsets.rs:
C_EquipmentSet.GetItemLocations(id): where each of the set's items is, by gear slot (unverified for the bags'; a lo...
extras (35)
- extras.rs: Unverified unless a comment says otherwise: Forever's own answers to these were not recorded.
- extras.rs: Undocumented functions of systems Forever lacks and their answers by kind:
ffalse,0zero,tan empty table, `... - extras.rs:
C_Garrison,C_CharacterServicesandKioskanswer as the full probe recorded them (WoW Forever 1.60.1): most of... - extras.rs:
C_CharacterServices.CapitalizeCharName(name): the name with its first letter capital and the rest small (unverified... - extras.rs: The data's type set to
ty(an aura's spell is aUnitAura's data; unverified: the lines the client adds for each t... - extras.rs:
C_TooltipInfo.GetAction(slot): the action's spell's or item's (GetActionInfo; unverified: a macro's, a companion's). - extras.rs:
C_TooltipInfo.GetInventoryItemByID,GetOwnedItemByID: the item's (unverified: the client's only for an item the p... - extras.rs:
C_TooltipInfo.GetUnitAuraByAuraInstanceID(unit, id [, filter])and its buff and debuff forms: the aura with that in... - extras.rs: The buff form: none for a harmful aura (unverified).
- extras.rs:
C_TooltipInfo.GetWorldCursor(): the unit under the cursor's (C_TooltipInfo.GetUnit("mouseover"); unverified: obje... - extras.rs:
C_PlayerInteractionManager.IsInteractingWithNpcOfType(type): that type's window open (unverified: the client's inte... - extras.rs:
C_PlayerInteractionManager.IsValidNPCInteraction(type): the NPC the player interacts with offers that type (unverif... - extras.rs:
C_Trainer.GetTrainerType():Enum.TrainerType.General(recorded: 0 at all 14 class trainers probed; a profession t... - extras.rs:
C_Trainer.GetCategorizeTrainerUI(): the settingSetCategorizeTrainerUIkeeps, true at first (recorded: true at 11... - extras.rs:
C_CombatText.SetActiveUnit(unit): the unit the floating combat text follows, forGetActiveUnit()("player" at fir... - extras.rs:
C_SwingTimer.IsTargetWithinSwingRange(swingType): the target within melee reach (5 yards) for a hand, within a rang... - extras.rs:
C_CreatureInfo.GetCreatureID(guid): a creature's (or pet's, or vehicle's) NPC ID, the GUID's sixth part (`Creature-... - extras.rs: The client's races (as
units.rs'sUnitRacenames them; the Undead's and the Skyborne's recorded, the others unver... - extras.rs:
C_CreatureInfo.GetFactionInfo(raceID):{ name, groupTag }of the race's faction ("Horde" or "Alliance" both; unve... - extras.rs:
C_EditMode.IsValidLayoutName(name): a name with something besides spaces (unverified: the client's length limit and... - extras.rs:
C_LevelSquish.ConvertPlayerLevel(level)andConvertFollowerLevel(level, max): the level as given (Forever's level... - extras.rs:
C_NameUtil.ReplaceSurnameSeparatorWithLinkSeparator(fullName): the name as given (Forever's names have no surname s... - extras.rs:
C_ColorOverrides.GetDefaultColorForQuality(quality): the quality's color (a quality beyond: the common white, unver... - extras.rs:
C_AuctionHouse.HasFullBidResults()andHasFullOwnedAuctionResults(): true (the engine's lists are whole: `GetNumB... - extras.rs:
C_AuctionHouse.GetTimeLeftBandInfo(band): the band's least and most seconds: Short under 30 minutes, Medium to 2 ho... - extras.rs:
C_AuctionHouse.GetItemKeySampleLink(itemKey): the key's item's link (C_Item.GetItemInfo's second answer), nil whe... - extras.rs:
C_Intl.GetCurrentLocale(): the client's locale (GetLocale's answer; unverified: ICU's form of it). - extras.rs: A text function of
C_Intl(Unicode's case rules; unverified against the client's ICU for special cases). - extras.rs:
C_Intl.ToTitle(text): each word's first letter capital, the rest small; a word ends at any character but a letter o... - extras.rs:
C_Intl.Normalize(text, form): the text as given (unverified: only ASCII text is already normal in every form). - extras.rs:
C_Intl.IsNormalized(text, form): ASCII text is (unverified beyond). - extras.rs:
C_Intl.CompareStrings(left, right, strength): -1, 0 or 1; the primary and secondary strengths ignore case (unverifi... - extras.rs:
C_Commentator.GetOrCreateSeries(teamName1, teamName2): a new series of the two teams, no score (the full probe: two... - extras.rs:
C_EncounterTimeline.GetCurrentTime(): the client's clock, asGetTime(the full probe: 206454.927 within the run's... - extras.rs: Artifact power a trait's ranks cost, from rank 0, whatever the tier (the full probe: rank 0 100, rank 1 300, tiers 0...
facts (12)
- facts.rs: Unverified: the neutral answers' exact shape (
GetRestStatewhen not rested,GetInstanceInfooutside any map, `Get... - facts.rs: The free slots of the backpack and the four bags (the full probe, 1.60.1: 2, the backpack's two, its other bag full;...
- facts.rs: No zone: no PvP type, not a PvP subzone, no faction.
- facts.rs: Outside an instance: the continent the map lies on (the full probe: "Kalimdor", instance 1, in the Barrens; Eastern K...
- facts.rs:
SetPortraitTexture(texture, unit [, disableMasking]),C_NamePlate.SetNamePlateSize(width, height): what the clien... - facts.rs: An enumeration's value: a non-number reads as 0,
None, which is the type while no interaction is open (the full pro... - facts.rs: What
GetSpecializationRole(specIndex [, isInspect, isPet])asks about: nothing for an index past the class's specia... - facts.rs:
GetSpecializationRole(specIndex [, isInspect, isPet]): the role `C_SpecializationInfo.GetSpecializationInfo(specInd... - facts.rs:
C_ColorOverrides.GetColorForQuality(quality): aColorMixincolor (camelot's; an unknown quality gives nothing, un... - facts.rs: The slot taken from 1 past a 32-bit integer is refused with the usage (the full probe, 1.60.1: 2147483647 refused, -1...
- facts.rs: The bags' search: nothing the engine filters by (unverified: the client's
INVENTORY_SEARCH_UPDATE). - facts.rs: The engine measures no addon's time (unverified: the profiler disabled answers 0 too).
formatters (15)
- formatters.rs:
C_StringUtil: the numeric formatters (CreateNumericRuleFormatter,CreateAbbreviatedNumberFormatter, `CreateSeco... - formatters.rs:
xrounded to multiples ofstepbyEnum.NumericRuleFormatRounding(Nearest 0, Up 1, Down 2; unverified: halves a... - formatters.rs:
xby the rule of the highest threshold at or below it (below every threshold, the lowest rule's; unverified): round... - formatters.rs: The client's breakpoints (enUS), as
AbbreviateNumbersabbreviates (recorded): for each unit, one decimal from it, w... - formatters.rs:
C_StringUtil.GetDefaultAbbreviationBreakpoints(locale?): the enUS ones for any locale (unverified for the others). - formatters.rs: A new formatter starts with the client's breakpoints (unverified: as
ResetBreakpointsgives them; the documentation... - formatters.rs: A
NumberAbbreviationBreakpointcopied and checked (the predicateRequiresValidAbbreviationBreakpoints, its errors... - formatters.rs: A new formatter's settings (unverified: those of Blizzard's
SecondsFormatterMixin:Initwithout arguments, its forer... - formatters.rs: A setting by a curve or a value: the curve's value at
secondswhen one is set (an interval or count: whole, unverif... - formatters.rs:
Format(seconds, abbreviation?), after Blizzard'sSecondsFormatterMixin:Format(its forerunner in Lua): under the... - formatters.rs:
SetStripIntervalWhitespace(true), as Blizzard's mixin took it, isStrip(unverified). - formatters.rs:
EscapeDecimalNonPrintables(text): ASCII control characters but\n,\r,\t, and bytes of invalid UTF-8, as\... - formatters.rs:
FloorToNearestString(n),RoundToNearestString(n): the whole number as text (unverified: halves round up). - formatters.rs: Hyperlinks stripped to their text:
|H…|hand|hremoved, the brackets of a link's text too unless kept (unverifie... - formatters.rs:
StripTextureMarkupForLooseFiles(text): textures by a file path removed, those by a file ID kept (unverified: what "...
framescript (8)
- framescript.rs: Unverified (the documentation's signatures, behaviour inferred from Blizzard's callers): event callbacks run after th...
- framescript.rs:
SetCVar(name, value): a secure CVar is refused to addons in combat (ADDON_ACTION_FORBIDDEN, recorded for `SoftTar... - framescript.rs: No value sets "0" (the full probe, 1.60.1: ten switches read "0" after
SetCVar(name); unverified: a CVar whose rang... - framescript.rs: The camera's zoom factor keeps a value below 1 or no number, the set answered as done (the full probe, 1.60.1: "0", "...
- framescript.rs:
C_Texture.GetAtlasExists(atlas): every name but the empty one (the full probe, 1.60.1: "" false; unverified: the cl... - framescript.rs:
C_AddOns.LoadAddOn(name): a Blizzard addon of the loaded UI code loads (true); without it, or for another addon, (f... - framescript.rs:
C_LFGList.GetPremadeGroupFinderStyle(): camelot's group finder is the vanilla style (the client loads Blizzard_Grou... - framescript.rs:
C_LFGInfo.IsGroupFinderEnabled(): on camelot, yes (the client loads its group finder at login,/stdtest engine);...
gamedata (18)
- gamedata.rs: As the M8 mock had them (unverified details): spell data is cached once defined unless
cached = false; an item arri... - gamedata.rs: The art the client gives a spell without its own:
Interface\Icons\Temp(the recorded smelting spells'iconID, 136... - gamedata.rs: A spell no test defined and no probe recorded, from the client's spell table (
spell_table; camelot's): a table like... - gamedata.rs: A spell of the client's table without a description: an empty one (the full probe, 1.60.1: Attack's ""; unverified: a...
- gamedata.rs: One a use began (the data's
cooldownseconds, as the spell'sC_Spell.GetSpellCooldownDurationhas it): running si... - gamedata.rs:
C_Spell.GetSpellLink(spell): a defined or probed spell's link, else the client's recorded answer, else the spell ta... - gamedata.rs: A glyph above 0 gives no link (the full probe, 1.60.1: glyph 1 nothing, 0 and none the link; the spellbook's -1 the l...
- gamedata.rs:
C_Item.IsEquippableItem(item): an item with an equipment slot (itsequipLoc,INVTYPE_NON_EQUIP_IGNOREand none... - gamedata.rs:
C_Spell.IsRangedAutoAttackSpell(spell): Auto Shot (75) and Shoot (5019), and a spell the client lacks (the full pro... - gamedata.rs:
C_SpellBook.IsSpellKnownOrInSpellBook(spellID [, bank, includeOverrides]): known (C_SpellBook.IsSpellKnown) or in... - gamedata.rs:
C_Spell.IsSpellDataCached(spell): a defined spell'scached, else whether the client has it (client_spell), or t... - gamedata.rs: A spell of the client's spell table loads too (unverified: as a defined one; the scan read every name at once).
- gamedata.rs:
C_Item.GetItemInfo(item): a cached item's info; one not cached yet, nothing, and one definedcached = false(its... - gamedata.rs:
C_Item.GetItemIconByID(item): a defined or probed item's icon, else as the client answered, else the question mark'... - gamedata.rs:
C_Item.DoesItemExistByID(item): a defined item (notmissing), else as the client answered. - gamedata.rs: Else as the client answered, else no (the full probe: "x", -1, 0; unverified: an item that exists unknown to the engi...
- gamedata.rs: The item subclasses the answers probe did not ask (it asked classes 0, 1, 2, 4, 6, 7, 9, 11, 12, 13 and 15), as Atlas...
- gamedata.rs: The functions with behaviour here.
globalsinfo (72)
- globalsinfo.rs: Each answer names its source: a recording (
/stdtest engine answers,tests/client/forever-camelot-answers.lua), Bl... - globalsinfo.rs:
IsDualWielding(): a weapon in the off hand (a shield or a held item is armor). - globalsinfo.rs:
IsRangedWeapon(): a bow, gun, crossbow or thrown weapon in the ranged slot (recorded false without one; unverified... - globalsinfo.rs:
HasWandEquipped(): a wand (weapon subclass 19) in the ranged slot (from the name; unverified). - globalsinfo.rs:
CanDualWield(): the player knows Dual Wield (spell 674), as the spellbook answers (unverified). - globalsinfo.rs:
IsUnitModelReadyForUI(unit): a unit that exists (recorded true for the player; unverified for other units and for n... - globalsinfo.rs:
PlayerIsInCombat(): the player in combat, asUnitAffectingCombatanswers (from the name; unverified). - globalsinfo.rs:
IsOutdoors(): not under a roof, asIsIndoorsanswers (the macro conditionals' rule; unverified: caves, instances). - globalsinfo.rs:
GroupHasOfflineMember(): a member of the player's group offline (from the name; unverified). - globalsinfo.rs:
PetHasSpellbook(),PetCanBeDismissed(): the player has a pet (from the names; unverified: a pet without abilities... - globalsinfo.rs:
CanLootUnit(guid): whether the unit has loot and the player may take it: a dead unit with loot left (unverified: ta... - globalsinfo.rs: A living unit leaves nothing to forbid: may loot, nothing there (the full probe: the player's own GUID answers false,...
- globalsinfo.rs:
GetDefaultLanguage(),GetAlternativeDefaultLanguage(): the player's faction's language and its ID, the faction as... - globalsinfo.rs: The player's languages: its faction's, then its race's own (the full probe: the Undead's "Orcish", 1 and "Gutterspeak...
- globalsinfo.rs:
SelectedRealmName(): the realm the player is on, asGetRealmNameanswers (from the name; unverified). - globalsinfo.rs:
GetLocalGameTime(): the game's time of day, asGetGameTimeanswers (unverified: the client's local and server tim... - globalsinfo.rs:
GetResSicknessDuration(): how long resurrection sickness lasts at the player's level, unformatted: classic's minute... - globalsinfo.rs:
GetMouseButtonName(button): a mouse button's own name; another "UNKNOWN" (the full probe: the five buttons, "x"; Bu... - globalsinfo.rs:
C_Spell.GetSchoolString's global twinGetSchoolString(mask): its answer (recorded "Frost" for 16, "Fire" for 4),... - globalsinfo.rs:
DoesTemplateExist(name): a template the loaded XML defined, asC_XMLUtil.GetTemplateInfoknows it (from the name;... - globalsinfo.rs:
GetClickFrame(name): the frame a global of that name holds, else nil (warcraft.wiki.gg; unverified). - globalsinfo.rs:
RunBinding(command [, "up"]): runs the binding's code as a key press would, down unless "up" (warcraft.wiki.gg; unv... - globalsinfo.rs:
CreateUnitHealPredictionCalculator(): a new calculator object of the documented class (its methods are the document... - globalsinfo.rs:
CreateFontFamily(name, members): a named font object with the first member's file, height and flags (the documentat... - globalsinfo.rs:
CopyToClipboard(text [, removeMarkup]): the length copied, the text's in bytes (the documentation'slength; the e... - globalsinfo.rs:
CalculateStringEditDistance(a, b): the Levenshtein distance between the two strings' characters (from the name; unv... - globalsinfo.rs:
CaseAccentInsensitiveParse(name): the name in lower case with the Latin accents taken off, a form searches compare... - globalsinfo.rs:
GetGameMessageInfo(index): the client's answer where recorded (26:ERR_ITEM_MAX_COUNT, no sound kit, voice 30); e... - globalsinfo.rs:
GetMaxLevelForLatestExpansion(): the classic game's cap, 60, asGetMaxLevelForPlayerExpansionrecorded (unverified). - globalsinfo.rs:
GetNumClasses(): Classic's nine classes (warcraft.wiki.gg: on Classic it is not the highest class ID; unverified on... - globalsinfo.rs:
GetRealmID(),GetNativeRealmID(): recorded 4618 (the native realm's unverified). - globalsinfo.rs:
GetWorldElapsedTime(timerID): no timer (recorded"", 0, 0for 0; unverified for other IDs). - globalsinfo.rs:
GetNextAvailableRaidTargetMarkerIndex(start, …): with no marker in use, the start (recorded 1 from 1, 8 from 8 back... - globalsinfo.rs:
GetBaseDifficultyID(difficultyID): the difficulty itself, taken whole (no difficulty derives from another in the cl... - globalsinfo.rs:
GetTaskInfo(questID): not a task quest: not in its area, not on the map, no objectives (from the declaration; unver... - globalsinfo.rs:
InGuildParty(): not a guild group, no guild members, none needed, no bonus (from the declaration; unverified). - globalsinfo.rs: The movies the client has, by ID, and their sizes in bytes: the intro (the full probe:
GetMovieDownloadProgress(1)... - globalsinfo.rs:
ChangeChatColor(chatType, r, g, b): tellsUPDATE_CHAT_COLOR(chatType, r, g, b), the event Blizzard's chat frames... - globalsinfo.rs:
SetChatColorNameByClass(chatType, colorNameByClass): tells `UPDATE_CHAT_COLOR_NAME_BY_CLASS(chatType, colorNameByCl... - globalsinfo.rs: A getter and setter pair over one kept value: the setter's first argument kept, the getter's answer it or the default.
- globalsinfo.rs: A setting the server keeps: the setter asks it, the getter reads the same until it answers (the full probe: read back...
- globalsinfo.rs: Allowed: the account's (the full probe; an account that never allowed them answers false, unverified).
- globalsinfo.rs: The helmet and the cloak: not shown, and unchanged right after
ShowHelm(true)(the full probe; unverified whether a... - globalsinfo.rs:
LoggingCombat([newState]),LoggingChat([newState]): a boolean given turns logging on or off; the answer is whethe... - globalsinfo.rs:
GetSheathState(): 1 with the weapons sheathed, as a character stands out of combat, 2 drawn afterToggleSheath()... - globalsinfo.rs:
ToggleSelfHighlight(): the player's highlight switched; whether it is now on (off at first; the documentation's `en... - globalsinfo.rs: Actions and requests the engine has nothing to do for: no visible state of its own changes (camera moves, requests to...
- globalsinfo.rs: "No" in the classic game or with nothing modeled: no vehicle, no pending glyph (recorded false), no new boost (record...
- globalsinfo.rs: "Yes": the cursor shown (recorded true), a 64-bit client, the mouse in use, quest data at hand (the engine's quests c...
- globalsinfo.rs: Counts and amounts of nothing: no LFG dungeons, scenarios, war games or battleground types listed; no archaeology; no...
- globalsinfo.rs: No such thing: an unknown index's or ID's info, no running macro, no glyph, no tutorial next or before, no invite to...
- globalsinfo.rs: Results that do not apply say nothing (the documentation marks them
MayReturnNothing: no event profiled, no source... - globalsinfo.rs: Two zeros: no CPU used and no calls profiled; no comparison achievements; no LFG search results; no battleground poin...
- globalsinfo.rs: Empty lists: no failed talents, no credits, no corruption effects, no pending invite confirmations (the documentation...
- globalsinfo.rs: The LFG lists' order and state functions: the caller's table, nothing added (no dungeons listed; Blizzard's code pass...
- globalsinfo.rs:
SetLegacyRaidDifficultyID(difficultyID): the legacy raid difficultyGetLegacyRaidDifficultyIDtells (content; u... - globalsinfo.rs: The quest greeting's text: none (unverified).
- globalsinfo.rs: No cinematic playing: no summary (unverified).
- globalsinfo.rs: The engine's locale (
GetLocale): enUS (unverified). - globalsinfo.rs: A comparison of nothing, an inspected player's honor of none (the declarations' shapes; unverified).
- globalsinfo.rs: The global twin of
C_Flyout.GetNumFlyouts(): its answer, else none (unverified). - globalsinfo.rs:
GetOSLocale(): enUS, the engine's locale (unverified). - globalsinfo.rs:
GetLFDRoleRestrictions(dungeonID): no role restricted for a dungeon, three trues (the full probe, IDs 1 and 2; unve... - globalsinfo.rs:
EJ_GetInvTypeSortOrder(invType): nothing for a type below 1 (the full probe; the types' orders, 1's 0 and 2's 10, u... - globalsinfo.rs:
IsSpellClassOrSpec(slot, bank): two nils for a slot and bank, nothing without the bank (the full probe; the spellbo... - globalsinfo.rs:
GetNextCompleatedTutorial(index)and the previous: none (the full probe: nothing for -1, 0 and 1; 2's 27 unverified... - globalsinfo.rs:
EJ_IsLootListOutOfDate(...): false asked with nothing, true with any argument (the full probe:()false,("x"),... - globalsinfo.rs:
IsSpecializationActivateSpell(spellID): no spell activates a specialization, but 0 answers true (the full probe: 0... - globalsinfo.rs:
CanInitiateWarGame(index): no war game to start, with the war game type's player counts (the full probe: 1 answers... - globalsinfo.rs:
GetSourceLocation(): where the caller is, its chunk's name (a file's path, or the code of a string chunk) and line... - globalsinfo.rs:
GetFunctionCPUUsage(func [, includeSubroutines]): no CPU used, no calls profiled; asked without a function, the C c... - globalsinfo.rs:
GetStringFromModifiers(modifiers): the keys a modifier mask holds, as a binding writes them (the full probe: 0 "",...
gossip (2)
- gossip.rs: Unverified: an option that opens nothing, active quests in a gossip, why the trainer's text came later, why a walk aw...
- gossip.rs: The NPC now
distanceaway: beyond reach, its open gossip closes (recorded, walking away from a trainer: `GOSSIP_CLO...
guild (43)
- guild.rs: The engine's camelot character is in a guild as the recorded one is (the full probe, WoW Forever 1.60.1): its leader...
- guild.rs: The second row recorded: level 3, 24 days and an hour away, 25th by achievements.
- guild.rs: The guild's professions, each its header, collapsed: Alchemy's and Blacksmithing's recorded (5 players, none online;...
- guild.rs: The ranks of a new guild, Blizzard's default names (unverified: the recorded names are scrubbed).
- guild.rs: The roster in its order: the player first, the other members online, then those offline, each in the order they joine...
- guild.rs: The roster changed:
GUILD_ROSTER_UPDATE(false)a round trip later (unverified: the client's argument, whether it ma... - guild.rs:
GetGuildInfo(unit): the guild's name, the unit's rank's name and index, and the realm (nil for the player's own); f... - guild.rs:
GetGuildRosterInfo(index): the member's name, rank name and index, level, class name, zone, public and officer note... - guild.rs:
IsGuildMember(unit): the unit a member (the full probe: "player" true; "x" and numbers false; another member's unit... - guild.rs:
UnitIsInMyGuild(unit): the unit a member of the player's guild (the full probe: "player" true, others and a GUID fa... - guild.rs:
C_GuildInfo.MemberExistsByName(name): a member by its roster name (the full probe: the player's first name alone fa... - guild.rs:
C_GuildInfo.GetGuildRankOrder(guid): a member's rank order (index + 1); for a GUID no member has, the player's own... - guild.rs:
GuildControlGetNumRanks(): the guild's ranks (the full probe: 5); none outside one (unverified). - guild.rs:
GuildControlGetRankName(rankOrder): the rank's name at its order (index + 1); "" for no rank there (the full probe:... - guild.rs:
C_GuildInfo.GuildControlGetRankFlags(rankOrder): the rank's 22 rights; for order 0 an empty list, for an order past... - guild.rs:
GuildControlGetAllowedShifts(rankOrder): whether the rank may move up and down: not above the second (the leader's... - guild.rs:
GetPromotionRank(index): the rank index the member at that roster place would be promoted to, nil when the player m... - guild.rs:
GetDemotionRank(index): the rank index a demotion would give, nil when the player may not (asGetPromotionRank; u... - guild.rs:
IsGuildRankAssignmentAllowed(index, rankOrder): a member at that roster place, and the player one who may change ra... - guild.rs:
C_GuildInfo.IsGuildRankAssignmentAllowed(guid, rankOrder): as the global by the member's GUID (the full probe: the... - guild.rs: Each the player's rank's right (the full probe: each true for the leader, whose rank has them; outside a guild false,...
- guild.rs:
CanEditGuildTabInfo(tab): a tab (1 on) the rank may modify; for 0 and below nothing (the full probe: -1 and 0 no va... - guild.rs:
CanSignPetition(): true (the full probe, in a guild; unverified outside one and with a petition offered). - guild.rs:
C_GuildInfo.GetPreferredPlaySettingsFeatures()(the full probe, in a guild: true, true) and `C_GuildInfo.RequestPre... - guild.rs:
C_GuildInfo.SetMOTD(motd),GuildSetMOTD(motd): the message of the day, told (GUILD_MOTD(motd)) a round trip lat... - guild.rs:
C_GuildInfo.SetInfoText(text),SetGuildInfoText(text): the info text, for a rank that may change it (`GUILD_TEXT_... - guild.rs:
C_GuildInfo.SetNote(guid, note, isPublic): a member's public or officer note, for a rank that may edit it (unverifi... - guild.rs:
GuildPromote(name),C_GuildInfo.Promote(name): the member one rank up (unverified: the client's system message an... - guild.rs:
GuildSetLeader(name),C_GuildInfo.SetLeader(name): the leader hands the guild to a member, taking its rank (unver... - guild.rs:
GuildLeave(),C_GuildInfo.Leave(): the player leaves (the leader must hand the guild on first; unverified: the cl... - guild.rs:
GuildDisband(),C_GuildInfo.Disband(): the leader's guild gone (unverified). - guild.rs:
C_GuildInfo.GuildRoster(): the roster asked for, told a round trip later (GUILD_ROSTER_UPDATE; unverified: the cl... - guild.rs: The player's guild changed:
PLAYER_GUILD_UPDATE("player")(the loading screen's, recorded; on joining and leaving u... - guild.rs:
GetGuildBankTabCost(): the next tab's price: 100 gold for the first (the full probe: 1000000 with none bought), the... - guild.rs:
GetGuildBankWithdrawMoney(): what the player may take today: the leader without limit, 2^64 (the full probe); any o... - guild.rs:
C_Calendar.GetDefaultGuildFilter(): the levels from and to the maximum, 60, and the guild's lowest rank (the full p... - guild.rs:
C_Club.GetGuildClubId(): the guild's club (the full probe: 22684421); nil outside a guild (unverified). - guild.rs:
C_Club.GetClubInfo(clubId): the guild's club by its ID; nil for any other (recorded "", "x", {} nil; the guild's by... - guild.rs: A roster row's club member ID: the player 1, another member its handle + 1 (unverified: the client's IDs).
- guild.rs:
C_Club.GetClubMembers(clubId [, streamId]): the guild's members' IDs, in the roster's order; the officer stream's t... - guild.rs: A member as the club sees it (
ClubMemberInfo): its ID, name, role (the leader the owner, an officer's rank a modera... - guild.rs: The guild club's streams: Guild (1,
Enum.ClubStreamType.Guild) and, for a rank that hears officer chat, Officer (2,... - guild.rs:
C_Club.AreMembersReady(clubId): the guild's club's members known (unverified); any other false (recorded).
healcalc (2)
- healcalc.rs: The engine's units have no absorbs and no incoming heals (
UnitGetIncomingHeals,UnitGetTotalAbsorbs: none), so th... - healcalc.rs:
UnitGetDetailedHealPrediction(unit, healer, calculator): the unit's health and maximum kept in the calculator (noth...
input (3)
- input.rs: The key itself, pressed: to the keyboard frames as any key (
/stdtest engine keys:OnKeyDown("LSHIFT"); unverified... - input.rs: An enabled button's click, down or up as it registered for clicks (
RegisterForClicks: by default the left button's... - input.rs: A key the focused edit box takes, whether it took it: every key while it has the focus (unverified: typing into chat...
inspect (1)
- inspect.rs: Unverified: inspecting out of range,
ClearInspectPlayer, the inspected nodes' ranks (the recorded character's at it...
inventory (3)
- inventory.rs: - An item with stats (its
worndata,{ maxHealth, maxMana, stats, attackPower }) changes the player's as it goes... - inventory.rs: Unverified: rings and trinkets (the first slot), a one-handed weapon with a two-handed one worn, bags as gear, using...
- inventory.rs: Food: its cooldown category's items on a second's cooldown from the use (recorded once: the jerky's slot told so with...
iteminfo (35)
- iteminfo.rs: An item GUID is the engine's own (
Item-<realm>-0-<16 hex>): its place (bag and slot, or gear slot) and its item ID,... - iteminfo.rs: Unverified unless noted: everything here but the armor effectiveness, the off-hand's weapon and the quality colors.
- iteminfo.rs: Whether item
idmay be worn in gear slotslot: its own slot, the second ring or trinket slot, a one-hander in the... - iteminfo.rs: Accepted, nothing done: actions of systems WoW Forever lacks, and settings the engine does not keep (unverified).
- iteminfo.rs: False: what an
Is…/Can…asks of a system WoW Forever lacks or the engine does not model (unverified). - iteminfo.rs: 0: a count or level of a system WoW Forever lacks (unverified).
- iteminfo.rs: Nil: a documented nilable answer when there is nothing (unverified).
- iteminfo.rs: No values: a function documented as possibly returning nothing, when there is nothing (unverified).
- iteminfo.rs: The documentation's empty values (each structure's fields' zeros, falses and empty strings): a structure of a system...
- iteminfo.rs:
C_Item.GetItemQualityColor(quality): the quality's color (the client's recordedqualityColors,facts.rs) and it... - iteminfo.rs:
GetItemLevelColor(): the character sheet's item level color, the epic quality's #a335ee as the client's floats, eac... - iteminfo.rs:
C_Item.IsUsableItem(item): an item with a use spell or one worn, at or above its required level; never short of man... - iteminfo.rs:
C_Item.GetItemStatDelta(link1, link2): the first item's stats less the second's, the unchanged left out (unverified... - iteminfo.rs:
C_Item.EquipItemByName(item [, slot]): the first of it in the bags worn, as a right-click wears it (inventory.rs;... - iteminfo.rs:
C_Item.UseItemByName(item [, target]): the first of it in the bags used, as a right-click uses it (unverified: the... - iteminfo.rs:
C_Item.GetItemFamily(item): no bag family (0) for an item with data, nil otherwise (unverified: special bags' and t... - iteminfo.rs:
C_Item.IsHelpfulItem(item): one with a use spell (unverified: the spell's target not asked);IsHarmfulItem: none... - iteminfo.rs:
C_Item.GetBaseItemTransmogInfo(location)andGetCurrentItemTransmogInfo: the item's own appearance (its recorded... - iteminfo.rs:
C_Item.GetAppliedItemTransmogInfo(location): nothing transmogrified (appearance 0; the full probe, 1.60.1: the worn... - iteminfo.rs:
C_Item.CanItemTransmogAppearance(location): an item with an appearance source can, error 0; one without cannot, err... - iteminfo.rs:
C_Item.CanScrapItem(location): an item that can be worn (the full probe, 1.60.1: the worn shoulders yes, a crate no... - iteminfo.rs:
C_Container.PlayerHasHearthstone(): the Hearthstone's ID when it is in the bags (unverified: toys that hearth). - iteminfo.rs: The armor's damage reduction against an attacker's level: classic's
armor / (armor + 400 + 85 * level), beyond leve... - iteminfo.rs:
C_PaperDollInfo.GetArmorEffectivenessAgainstTarget(armor): against the target's level (a hidden level's as ten abov... - iteminfo.rs:
C_PaperDollInfo.IsRangedSlotShown(): WoW Forever's gear has the ranged slot (recorded: `GetInventorySlotInfo("RANGE... - iteminfo.rs:
C_PaperDollInfo.IsInventorySlotEnabled(slotName): the gear's slots yes, the professions' tool and gear slots no (un... - iteminfo.rs: No slot by that name: no (the full probe: "x"; unverified: the client's own list of names, here any
…Slot). - iteminfo.rs:
GetInventoryItemsForSlot(slot, table [, transmog]): the items that may be worn in the slot, worn and carried, by th... - iteminfo.rs: The client's checks (the full probe): a slot not a number refused with its usage; a slot past the inventory's answers...
- iteminfo.rs:
C_Bank.BankBagTypeAndIDToInvSlot(bankType, slotIndex): the character bank's tabs 1 to 9 are inventory slots 63 to 7... - iteminfo.rs:
C_Bank.UpdateBankTabSettings(bankType, tabID, name, icon, flags): the character's tab renamed, its icon and deposit... - iteminfo.rs: Yes, whatever the item, class and specialization (the full probe; unverified for an item made for one specialization).
- iteminfo.rs: The recorded character sorts right to left, and a setting made does not read back at once (the full probe, 1.60.1: tr...
- iteminfo.rs:
C_Item.IsEquippedItemType(type): a worn item of that type or subtype (its data'stype,subType: "Shields", "Mai... - iteminfo.rs:
C_Bank.DoesBankTypeSupportAutoDeposit(bankType): the character's bank (Enum.BankType.Character, 0) yes (the full...
itemlocation (2)
- itemlocation.rs: Unverified: the answers for an empty location (none, as documented nilable;
DoesItemExistfalse). - itemlocation.rs:
C_Item.IsBound(location): a bag item as it was given; a worn item bound, as wearing binds it (the full probe, 1.60....
leftovers2 (81)
- leftovers2.rs: Unverified unless a comment says otherwise: Forever's own answers to these were not recorded.
- leftovers2.rs: Undocumented functions of systems the engine does not model and their answers by kind:
ffalse,ttrue,0zero,... - leftovers2.rs: Documented functions of systems Forever lacks or the engine does not model, answering their documentation's empty val...
- leftovers2.rs:
C_ActionBar.GetBonusBarIndex(): the page of the bonus bar the player is on,NUM_ACTIONBAR_PAGESplus `GetBonusBar... - leftovers2.rs:
C_ActionBar.GetBonusBarIndexForSlot(slot): the bonus bar page holding the slot (slots 73-132 are pages 7-11, compar... - leftovers2.rs:
SetActionBarToggles(bottomLeft, bottomRight, right, right2, bar5, bar6, bar7)(Blizzard's settings, ActionBars.lua)... - leftovers2.rs:
JoinPermanentChannel(name, password, frameID, hasVoice)(andJoinTemporaryChannel,JoinChannelByName): the chan... - leftovers2.rs:
EnumerateServerChannels(): the server's channels' names, as the recording's realm listed them where the character s... - leftovers2.rs:
GetNumChannelMembers(id): no member lists are kept (unverified). - leftovers2.rs:
C_ChatInfo.GetColorForChatType(chatType): the chat type's color asChatTypeInfoholds it, nil for an unknown type... - leftovers2.rs:
C_ChatInfo.GetChatTypeName(typeID): the chat type whose recordedGetChatTypeIndexis the ID (recorded: 1 is "SYST... - leftovers2.rs:
DeclineName(name, gender, declensionSet): the name in each of the five Russian cases; other locales do not decline,... - leftovers2.rs:
GetNetIpTypes(): the home and world connections over IPv4 (1 in Blizzard's PerformanceBar.lua table `{ "IPv4", "IPv... - leftovers2.rs:
GetProtocolTypes(): the home and world connections over TCP (1 in Blizzard's PerformanceBar.lua table `{ "TCP", "UD... - leftovers2.rs:
RequestTimePlayed(): the server's answer (TIME_PLAYED_MSG) was never recorded, so nothing is told (unverified). - leftovers2.rs:
RandomRoll(min, max): the server's roll message was never recorded, so nothing is told (unverified). - leftovers2.rs:
ConsoleExec(command, addToHistory): the engine has no console; the command not run (false; unverified). - leftovers2.rs:
ConsoleEcho(command, addToHistory, prefix): the text shown on the console (true; unverified). - leftovers2.rs: The console's font height until set (unverified).
- leftovers2.rs:
UIReload(): asC_UI.Reload(the session ends; unverified that the two differ in nothing). - leftovers2.rs:
RunScript(text): the text compiled asloadstringcompiles it (its taint too) and run; a compile error raised (unv... - leftovers2.rs:
C_AddOnProfiler.MeasureCall(func, ...): the function called with the arguments; its results and a measure of nothin... - leftovers2.rs:
GetCurrentGraphicsSetting(): the normal settings, not the raid ones (0;SetCurrentGraphicsSettingchanges nothing... - leftovers2.rs:
GetMonitorAspectRatio(): the physical screen's width over its height (GetPhysicalScreenSize; unverified). - leftovers2.rs:
GetCurrentScaledResolution(): the UI's width and height (GetScreenWidth,GetScreenHeight; unverified). - leftovers2.rs:
GetBattlefieldMapIconScale(): the battlefield map's icons at their size (unverified). - leftovers2.rs:
IsBNLogin(): logged in through Battle.net, asBNFeaturesEnabledanswers (recorded true; unverified that the two a... - leftovers2.rs:
GetMaxNumCUFProfiles(): the raid profiles one may keep (5 as on Blizzard's other clients; unverified). - leftovers2.rs:
PlayerCanTeleport(): whether a summons may be accepted; nothing in the engine stops it (Blizzard's summon popups te... - leftovers2.rs:
GetAreaText(): the zone the player is in, as the Who list's zone filter uses it (GetZoneText; unverified). - leftovers2.rs:
GetQuestResetTime(): the seconds until the daily quests reset (C_DateAndTime.GetSecondsUntilDailyReset; unverified). - leftovers2.rs:
GetNumUnspentTalents(): the unspent talent pointsC_ClassTalents.HasUnspentTalentPointscounts (its second answer... - leftovers2.rs:
GetQuestLogSpecialItemCooldown(questLogIndex): no cooldown running (start 0, duration 0, enabled; unverified). - leftovers2.rs:
GetTabardCreationCost(): ten gold, the classic clients' guild tabard price (unverified). - leftovers2.rs:
IsAchievementEligible(achievementID): nothing in the engine keeps an achievement from being earned (unverified). - leftovers2.rs:
C_QuestLog.GetTrivialRange(): how many levels below the player a creature or quest turns grey (Blizzard's camelot n... - leftovers2.rs:
GetGlancingBlowChance(playerWeaponSkill, targetDefenseSkill): 10% plus 2% for each point of the target's defense ov... - leftovers2.rs:
GetGlancingBlowPenalty(playerWeaponSkill, targetDefenseSkill): the damage a glancing blow loses, one minus the aver... - leftovers2.rs:
ResistancePercent(resistance, casterLevel): the share of damage the resistance resists against a caster of the leve... - leftovers2.rs:
PlayerEffectiveAttackPower(): the main hand's, off hand's and ranged attack power with their buffs, then the base m... - leftovers2.rs:
FindSpellBookSlotBySpellID(spellID): the spellbook slotC_SpellBook.FindSpellBookSlotForSpellfinds (unverified). - leftovers2.rs:
C_TradeSkillUI.GetTradeSkillLineForRecipe(recipeID): the recipe's profession ID, name and parent profession ID, fro... - leftovers2.rs:
C_FriendList.GetWhoRaceFilters(): the player's faction's races' names and IDs asC_CreatureInfo.GetRaceInfonames... - leftovers2.rs:
GetMouseButtonClicked(): nil outside a click (recorded; unverified: the button during a click's handlers, which the... - leftovers2.rs:
C_XMLUtil.GetTemplates(): none listed (the engine's templates are named byC_XMLUtil.GetTemplateInfo; unverified). - leftovers2.rs:
CreateFrameWithOptions(options):CreateFramewith the options' type, name, parent, templates (joined with commas)... - leftovers2.rs: Functions of systems the character was not in (no pet battle, black market, talking head, scenario, voice channel, ad...
- leftovers2.rs:
C_ClubFinder.GetFocusIndexFromFlag(flags): the first focus set, from Dungeons (1) to Social (5), else 0 (the full p... - leftovers2.rs:
C_Club.GetCommunityNameResultText(result): a failed name check's text, nil for Success (the full probe, 1.60.1: 0 a... - leftovers2.rs: The creature types (
CreatureType.db2) Forever lists: 1 to 12 and 14 (the full probe, 1.60.1:GetCreatureTypeIDs()... - leftovers2.rs:
C_CreatureInfo.GetCreatureFamilyInfo(creatureFamilyID): the wolf's (the full probe, 1.60.1: 1 and 1.5); nil for the... - leftovers2.rs:
C_VoiceChat.GetActiveChannelID(),C_QuestSession. GetSessionBeginDetails(): nothing while Blizzard's code loads (... - leftovers2.rs:
C_QuestSession.GetProposedMaxLevelForSession(): the player's level, out of a group (the full probe, 1.60.1: 21 for... - leftovers2.rs:
C_PartyInfo.GetMinItemLevel(avgItemLevelCategory): out of a group, the player's average item level, whole, and name... - leftovers2.rs:
C_UIFileAsset.GetFileID(asset): a file ID is its own (the full probe, 1.60.1: 134400); a path's ID nil, the engine... - leftovers2.rs:
C_ReportSystem.GetMajorCategoryString(category): the global string's name (the full probe, 1.60.1: 0 to 5; a string... - leftovers2.rs:
C_ReportSystem.GetMinorCategoriesForReportTypeAndMajorCategory(type, major): the client's lists where the full prob... - leftovers2.rs: A chat line's ID: kept lines from 1 (the full probe, 1.60.1: line 1 valid with a sender, 0, 1.5 and 2147483647 not; u...
- leftovers2.rs:
C_LFGInfo.AreCrossFactionGroupQueuesAllowed(category),DoesCrossFactionQueueRequireFullPremade(category): a categ... - leftovers2.rs:
C_AccountStore.GetCategoryInfo(id),GetCurrencyInfo(id): the ID (truncated) with an empty name, a category of typ... - leftovers2.rs:
C_Heirloom.GetHeirloomLink(itemID): an item link at the player's level and specialization, the ID empty for 0 (the... - leftovers2.rs:
C_EncounterWarnings.GetColorForSeverity(severity): magenta for every severity (the full probe, 1.60.1: 0 to 2 and a... - leftovers2.rs:
C_EventToastManager.GetLevelUpDisplayToastsFromLevel(level): the level-up toast, "Level " (truncated) under... - leftovers2.rs:
C_TransmogOutfitInfo.GetUnassignedAtlasForSlot(slot): the gear slot's empty art (the full probe, 1.60.1: every slot... - leftovers2.rs:
C_TransmogOutfitInfo.CanPlayerTransmogSlot(slot): every slot but the ranged one (the full probe, 1.60.1, a paladin:... - leftovers2.rs:
C_TransmogOutfitInfo.GetMaxNumberOfTotalOutfitsForSource(source): 1, 2 and 48 for sources 0 to 2 (the full probe, 1... - leftovers2.rs:
C_TransmogOutfitInfo.GetViewedOutfitSlotInfo(slot, type, option): the slot as nothing transmogrified shows it, with... - leftovers2.rs:
C_TransmogOutfitInfo.GetEquippedSlotOptionFromTransmogSlot(slot): the option the item equipped there wears, `Enum.T... - leftovers2.rs:
C_EncounterWarnings.GetSoundKitForSeverity(severity): the sound kits ofEnum.EncounterEventSeverity0 to 2 (the f... - leftovers2.rs:
C_Minimap.GetPOITextureCoords(index): the cell of the POI sheet, 18 pixels square on a 256 by 512 texture, a pixel'... - leftovers2.rs:
C_EncounterJournal.GetEncounterJournalLink(type, id, name, difficulty): the journal link (the full probe, 1.60.1: n... - leftovers2.rs:
C_Intl.FormatDate,FormatTime,FormatDateTime: en-US, the time zone given read as UTC (the full probe, 1.60.1:... - leftovers2.rs:
C_Intl.GetCurrencyName(code, style): the code itself for a code ICU does not know, nothing for none (the full probe... - leftovers2.rs:
C_Intl.GetDisplayName(displayLocale): the client's locale named in that locale: English (United States), "en (US)"... - leftovers2.rs:
C_ScenarioInfo.GetJailersTowerTypeString(type): Torghast's wings byEnum.JailersTowerType(the full probe, 1.60.1... - leftovers2.rs:
C_Intl.FindBreaks(text, breakType): the 1-based byte offsets of the breaks, the text's start and end among them: ch... - leftovers2.rs: Sentences: after a bar (the full probe, 1.60.1: a color code's at 2 and 15), and after a sentence's end and its space...
- leftovers2.rs:
C_Intl.GetSortKey(text, strength): ICU's sort key of the text, its levels by the strength (0 primary, 1 secondary,... - leftovers2.rs: ICU's BOCSU of a text (its identical level): each code point as its difference from the previous one's block middle;...
- leftovers2.rs:
C_Intl.FindStringMatches(text, pattern, strength): the 1-based byte offsets where the pattern starts; nothing for a... - leftovers2.rs:
C_Intl.GetCharacterProperties(text): the first character's Unicode properties (the full probe, 1.60.1: "H" Lu, "x"...
levels (2)
- levels.rs: Unverified: more than one level at once, a level with talents or spells to learn, a pet's; the skill lines' changes'...
- levels.rs: The health full at the new maximum (the packet's
UNIT_HEALTH; no aura state's change told,quest70.006, the play...
lfg (26)
- lfg.rs: Unverified: Blizzard's own (untainted) code searching and listing without a hardware event (its UI searches from `LFG...
- lfg.rs: A listing's time (
GetActiveEntryInfo().duration, seconds left): the recorded listing had 1794 left a few seconds af... - lfg.rs: The classic instances' map IDs, for the dungeons whose full info was not recorded: the six recorded (Wailing Caverns...
- lfg.rs: Seconds listed (unverified whether it grows between searches).
- lfg.rs: A server's listing delisted: later searches do not find it, and when the last search found it, its result is told del...
- lfg.rs: The next search's answer a failure:
LFG_LIST_SEARCH_FAILED(reason), the results none (Blizzard's browse tab shows `... - lfg.rs: An addon's restricted call refused:
ADDON_ACTION_BLOCKED(addon, action)(recorded throughpcall:"UNKNOWN()"). - lfg.rs: A description is checked: in the same answer the listing's update and the check's verdict, not censored (recorded onc...
- lfg.rs: The player's own listing as a search finds it: the player its only member (alone in the recording; a group's members...
- lfg.rs:
C_LFGList.GetLfgCategoryInfo(categoryID): as recorded (nosearchPromptOverride); an unknown category nothing (unv... - lfg.rs:
C_LFGList.GetActivityGroupInfo(groupID): its name and order (0, as every recorded activity'sorderIndex; unverifi... - lfg.rs:
C_LFGList.GetAvailableActivities([categoryID [, groupID [, filter]]]): a group's activities as recorded; a category... - lfg.rs:
C_LFGList.GetActivityFullName(activityID): its info'sfullName, the ID taken whole; an activity not known still a... - lfg.rs:
C_LFGList.SaveLanguageSearchFilter(locales): kept, its true keys (unverified). - lfg.rs:
C_LFGList.ClearCreationTextFields(): the comment box emptied (recorded, lfg: a dungeon listed after a described Cus... - lfg.rs:
C_LFGList.CopyActiveEntryInfoToCreationFields(): the listing's description into the comment box (unverified). - lfg.rs:
C_LFGListRoles.GetRoles(): the rolesSetRoleschose, none at first (asGetSavedRoles; unverified). - lfg.rs:
C_LFGListRoles.SetRoles(roles [, limitToClassRoles]): kept, true; no event (recorded, lfg: Blizzard's listing panel... - lfg.rs:
C_LFGList.IsPlayerAuthenticatedForLFG(categoryID): true (recorded, lfg: the Custom category's listing posted, which... - lfg.rs:
C_LFGList.CreateListing(createData): blocked for addons (SuuUI's probe notes; unverified, see the module's notes),... - lfg.rs:
C_LFGList.UpdateListing(createData): blocked for addons, even from a click (recorded), false; Blizzard's code chang... - lfg.rs:
C_LFGList.RemoveListing(): delisted a round trip later,LFG_LIST_ACTIVE_ENTRY_UPDATE()(recorded from an addon's... - lfg.rs:
C_LFGList.GetSearchResults()andGetFilteredSearchResults(): the last search's results, their count (recorded 0 a... - lfg.rs:
C_LFGList.ClearSearchResults(): none (unverified: no event). - lfg.rs:
C_LFGList.GetSearchResultMemberCounts(searchResultID): the members by role (NOROLEwithout one) and by class, eac... - lfg.rs: A member as
LfgSearchResultPlayerInfo(documented; no spec on Forever, unverified).
lib (8)
- lib.rs: Functions with behaviour the documentation lacks (
IsInGroup): the client has them (camelot's inventory; other flavo... - lib.rs: The client's project ID, and the project constants (WoW Forever has these,
/stdtest engine; other flavors unverified). - lib.rs: A function's documented results as empty values: nil where nilable, false, 0, "", an empty table, none of a list (unv...
- lib.rs: Numbers by their alias; other types are objects.
- lib.rs: Globals camelot's client lacks though the engine has their behaviour: the
C_functions' old global names (`C_Contai... - lib.rs: The fill-in modules' behaviours: answers for functions no recording or model of the engine answers, from Blizzard's d...
- lib.rs: Refused before the arguments are checked (unverified).
- lib.rs: A curve's color stays a readable color, its channels secret (
UnitHealthPercent(unit, true, colorCurve): ElvUI's oUF...
login (4)
- login.rs: Unverified: the inventory's load, one block per item (the recording's character loaded 51 blocks for 35 items); the s...
- login.rs: A loading screen (a world transfer: a Hearthstone's), as the client recorded it (
data/camelot-teleport.txt): the cl... - login.rs: The guild's: its bank's withdrawal and its Discord lobby told again, in a guild only (recorded once,
hearth, the pl... - login.rs: The auras sent again (recorded once,
hearth: the player's after its flags with the inventory's reload, 21.750; a pa...
loot (1)
- loot.rs: Unverified: the packets' spacing (recorded: the slots 0.39 to 1.07 s after the window opened,
slotsAfterreplays a...
macros (2)
- macros.rs: Macros: the account's (indices 1 to 120) and the character's (121 to 138), each a name, an icon and a body.
- macros.rs: Unverified: the order a new or renamed macro takes (kept by name, as the client lists them),
GetMacroInfo's answer...
mail (5)
- mail.rs: Unverified:
GetInboxText's values (not recorded), deleting and returning letters, COD letters, more than one attach... - mail.rs:
GetInboxText(i): the letter read (the server'sMAIL_INBOX_UPDATEa round trip later): its text (empty without one... - mail.rs:
InboxItemCanDelete(i): a letter without items or money (unverified). - mail.rs:
ClickSendMailItemButton(i, clear): the attachment taken back (to its bag slot, unlocked; picking it up unverified). - mail.rs:
GetSendMailPrice(): 30 copper a letter, an item more each after the first (unverified beyond one).
maps (6)
- maps.rs: What the world map, the quest log's map and the battlefield minimap ask of a map beyond its static data (that is reco...
- maps.rs:
C_Map.GetMapPosFromWorldPos(instanceID, worldPosition [, overrideUiMapID]): the instance's continent and the point'... - maps.rs:
C_ContentTracking.GetTrackablesOnMap(type, mapID): success (0) and none; on no map failure (`Enum.ContentTrackingRe... - maps.rs: The two continents' world positions: their instance and the world coordinates of their top left corner (
leftthe wo... - maps.rs: A map's place in the world: its instance, the world coordinates of its top left corner and its size (`C_Map.GetMapWor...
- maps.rs:
C_Map.GetWorldPosFromMapPos(uiMapID, mapPosition): the instance and the world position (a vector,xthe world's X...
measures (8)
- measures.rs: What regions measure and hold beyond their setters: a font string's lines and height (on the engine's text model: 6 u...
- measures.rs: A texture's atlas set (
SetAtlas(atlas, useAtlasSize), a button'sSetXAtlas): withuseAtlasSize, the texture tak... - measures.rs:
GetTextureFileID(): the file IDSetTexturewas given; a path's ID is not known to the engine (nil, unverified). - measures.rs:
EditBox:GetTextInsets(): whatSetTextInsetsset, else none (unverified: a fresh edit box's, not recorded). - measures.rs:
Minimap:GetZoomLevels(): 6 (zooms 0 to 5). - measures.rs:
AddMaskTexture(mask): added once (unverified: a second add). - measures.rs:
GetHorizTile(),GetVertTile(): whatSetHorizTile/SetVertTileset, off at first (unverified: a fresh texture's... - measures.rs:
SetVerticalScroll(offset)/SetHorizontalScroll(offset): the offset kept; a change runs `OnVerticalScroll(offset)...
merchant (6)
- merchant.rs: Unverified: the server's delay (0.4 s, as its other answers), a purchase's price for stacks (the price per `stackCoun...
- merchant.rs: A frame after opening: the filter updates of the goods whose data was not loaded, with
MERCHANT_UPDATEbefore the l... - merchant.rs: The repair cursor gone with the window (the next visit's opens out of repair mode:
repair, unverified beyond its sa... - merchant.rs: An item mended with the repair cursor (
PickupInventoryItem(slot)in repair mode): a round trip later its durability... - merchant.rs:
CHAT_MSG_LOOT("You receive item: <link>", …)for the player, with the payload the client gave it (`/stdtest engine... - merchant.rs:
C_Container.UseContainerItem(bag, slot)at a vendor (Blizzard's bag buttons): the sale; elsewhere nothing (unverifi...
methods2 (21)
- methods2.rs: The defaults below are unverified unless a recording is named: they come from Blizzard's API documentation (`Blizzard...
- methods2.rs:
GetShadowColor(): the shadow's color set (own or a font object's), alpha 1 when set without one; none at first (0,... - methods2.rs:
GetShadowOffset(): the offset set (own or a font object's), else 0, 0 (unverified). - methods2.rs:
GetJustifyH()/GetJustifyV(): the justification set (own or a font object's), else the fresh widget's recorded o... - methods2.rs:
Font:GetFontObjectForAlphabet(alphabet): the object itself (the engine keeps one font a family for every alphabet,... - methods2.rs: The cursor's byte offset: where
SetCursorPositionput it (within the text), else at the text's end (unverified: the... - methods2.rs:
GetHistoryLines(): the lines kept (XMLhistoryLines; SuuUI probe chat: the chat edit box's 32), 0 at first (unver... - methods2.rs:
GetBoundsRect(): the rectangle around it and its shown descendants, in its own scale (unverified: which descendants... - methods2.rs:
ClearAttribute(name): the attribute gone; whether there was one. - methods2.rs:
Line:GetStartPoint()/GetEndPoint(): as set, else the center of nothing at no offset (unverified). - methods2.rs:
Cooldown:GetCooldownTimes(): start and duration as set, in milliseconds (the client's unit), 0 and 0 without one. - methods2.rs:
GetHideCountdownNumbers(): as set, shown (false) at first (unverified: the client's default follows a CVar). - methods2.rs: An animation's order: as set (XML
order), else 1 (unverified: the client's default;animations.rstimes unset ord... - methods2.rs:
Animation:GetSmoothProgress(): the progress through its smoothing (INsquares it,OUTthe reverse,IN_OUTbot... - methods2.rs:
ControlPoint:GetOrder(): as set (CreateControlPoint's order), else 0 (unverified). - methods2.rs:
GameTooltip:GetAnchorType(): the anchor set (SetAnchorType, orSetOwner's,ANCHOR_LEFTwhen it gave none), `A... - methods2.rs:
GameTooltip:FadeOut(): hidden (unverified: the client fades it out over a moment first). - methods2.rs:
MessageFrame:GetTimeVisible(): as set, else 10 seconds (unverified: the long-known default). - methods2.rs:
GetFadeDuration(): as set, else 3 seconds (unverified). - methods2.rs:
GetFading(): as set, else on (unverified). - methods2.rs:
GetInsertMode(): as set, elseBOTTOM(unverified).
methods3 (19)
- methods3.rs: The defaults are unverified unless a recording is named: they come from Blizzard's API documentation (`Blizzard_APIDo...
- methods3.rs:
Frame:CanChangeAttribute(): not while a protected frame is locked down in combat (unverified: the documentation's n... - methods3.rs:
Frame:GetEffectivelyFlattensRenderLayers(): its own or an ancestor'sSetFlattensRenderLayers(true)(unverified: w... - methods3.rs:
Frame:GetRaisedFrameLevel(): its level (unverified: the engine does not raise frames above their level). - methods3.rs:
Cooldown:GetCooldownDisplayDuration(): the duration shown, in milliseconds asGetCooldownTimesgives it (unverifi... - methods3.rs: A cooldown made in code draws its swipe and its bling (Blizzard's code turns them off with
SetDrawSwipe(false)/ `S... - methods3.rs:
EditBox:GetDisplayText(): the text as shown: a password's as stars (unverified: the client's mask character). - methods3.rs: A font string's font without one set (unverified).
- methods3.rs:
Model:TransformCameraSpaceToModelSpace(position): the position as a vector (unverified: the engine's model space is... - methods3.rs: x forward, y left, z up: yaw about z, pitch about y, roll about x (unverified signs).
- methods3.rs:
ModelScene:Project3DPointTo2D(x, y, z): the scene's center at no depth (unverified: the engine draws no 3D scene). - methods3.rs:
CalculateMountScale(rider): 1 (no models loaded to fit; unverified). - methods3.rs:
AnimationGroup:GetLoopState():FORWARDwhile a looping group plays, elseNONE(unverified: a bouncing group's w... - methods3.rs:
VertexColor:GetStartColor()/GetEndColor(): the color set, else white (unverified). - methods3.rs:
Minimap:GetPingPosition(): no ping (0, 0; unverified). - methods3.rs:
SimpleHTML:GetTextData(): the documented empty list (unverified: the engine does not parse its markup into nodes). - methods3.rs: No model is loaded to have an animation (unverified).
- methods3.rs: Nothing to release (unverified).
- methods3.rs: Unverified: whether the client lets addons change them (the documented empty false).
misc (14)
- misc.rs:
C_Calendar.SetAbsMonth(month, year): that month shown (the full probe, 1.60.1: 1, 2025 showed January 2025; unverif... - misc.rs:
C_Calendar.GetMonthInfo([offsetMonths]): the month that many from the one shown: `month, year, numDays, firstWeekda... - misc.rs:
C_Calendar.GetNumDayEvents(offsetMonths, monthDay): none, andGetDayEventnothing (unverified: the engine keeps n... - misc.rs:
C_Spell.IsCurrentSpell(spell): the player casting it, or it waiting for the next swing (unverified: an auto-repeat... - misc.rs:
C_Spell.GetSpellLevelLearned(spell): the player's class's level for it, as the trainers' recordings or SuuUI's trai... - misc.rs:
C_Widget.IsWidget(object): any of the client's objects (the restricted environment'sIsValidFrameasks `IsFrameWi... - misc.rs: A documented structure's value from the one given: each field given kept (a structure's processed in turn), each miss...
- misc.rs:
IsPlayerInWorld(): past the loading screen (recorded: true in the world; unverified: false behind a loading screen). - misc.rs: A path to no file answers nil (the full probe:
""and"x"; taken here as a path without a folder, unverified for... - misc.rs:
C_CurrencyInfo.GetCoinTextureString(amount [, fontHeight]): gold, silver and copper each with its icon (`|T…:h:h:2:... - misc.rs:
C_Map.GetAreaInfo(areaID): the area's name as the client answered (data/camelot-answers.txt: the zones and capita... - misc.rs:
ClassicExpansionAtLeast(level): true for every level (the user's probe: true for 0 to 4; LibDualSpec's note "Classi... - misc.rs:
ClassicExpansionAtMost(level): false for every level (the user's probe: false for 0 to 4, so Forever takes LibDualS... - misc.rs:
GetThreatStatusColor(status): grey, yellow, orange, red for 0 to 3, magenta above, white at 4294967295, as single-p...
objects2 (34)
- objects2.rs: The rules come from Blizzard's documentation (camelot's
Blizzard_APIDocumentationGenerated:LuaDurationClockAPI,... - objects2.rs:
C_DurationUtil.CreateManualClock(): "a manually driven time source for use with duration objects" (the documentatio... - objects2.rs:
clock:GetTime(): "the current time value represented by this clock" (the documentation), secret once a secret set i... - objects2.rs:
AdvanceTime(delta): "advances the clock by a specified number of seconds" (the documentation; unverified: a negativ... - objects2.rs:
RewindTime(delta): back by that many seconds (unverified: below zero allowed). - objects2.rs:
ResetTime(): "resets the clock to a zero time value" (and, unverified, forgets a secret). - objects2.rs:
Copy(): a copy keeps the clock (unverified). - objects2.rs:
Assign(other): "copies another duration object", its clock too (unverified). - objects2.rs:
SetToDefaults(): a zero span on the default clock (unverified: the clock goes back to the default;Resetkeeps it... - objects2.rs: Checked copies of a list of
NumberAbbreviationBreakpoints (the predicate's errors as the abbreviated number formatt... - objects2.rs: A breakpoint list's entries in their order (fields missing or not numbers: skipped; unverified for a list `Abbreviate...
- objects2.rs:
AbbreviateLargeNumbers(number, options?): a config's or a list's breakpoints asAbbreviateNumbersuses them (unve... - objects2.rs: WoW's form: two small letters, two capitals (unverified: the client's ICU reads it so).
- objects2.rs: A locale's formatting data (CLDR's, as remembered; unverified).
- objects2.rs: The data for a locale: its language's (British English's for English outside the United States and its territories, t...
- objects2.rs: Whether any of the call's arguments after
selfis secret: the documentation's `SecretArguments = "AllowedWhenTainte... - objects2.rs:
GetLocale(): "the locale ID of this locale context", as it was given (unverified: ICU's canonical form). - objects2.rs:
SetLocale(locale): true when it was updated (an empty ID is not: unverified). - objects2.rs: A currency's symbol in a locale (CLDR's, as remembered; unverified): style 1 the narrow symbol, else the symbol; the...
- objects2.rs:
GetCurrencyName(currencyCode, style):Enum.CurrencyNameStyleSymbol 0, NarrowSymbol 1, Long 2, FormalSymbol 3 and... - objects2.rs:
SelectPlural(number, pluralType): CLDR's plural rules for WoW's languages (Enum.PluralTypeCardinal 0, Ordinal 1)... - objects2.rs: A time zone ID's offset: empty for the formatter's default (the engine's local time,
date's), UTC and GMT and their... - objects2.rs: A zone's name:
zshort (UTC,GMT+2),zzzzlong (the language's UTC,GMT+02:00), ICU's localized GMT forms (... - objects2.rs: A moment's date and time by
Enum.DateTimeStyle(None 0, Short 1, Medium 2, Long 3, Full 4), joined as the locale jo... - objects2.rs:
GetDisplayName(displayLocale): the context's locale named in the display locale's language: English's names, or the... - objects2.rs:
TransformLocale(transform):Enum.LocaleTransformCanonicalize 0, AddLikelySubtags 1, RemoveLikelySubtags 2, Langu... - objects2.rs: The boundaries of
text(byte offsets, its start and end included) byEnum.BreakType: Character 0 (code points wit... - objects2.rs:
FindStringMatches(text, pattern, strength): where the pattern starts in the text, as Lua's indexes, matches not ove... - objects2.rs:
GetSortKey(text, strength): bytes that sort as the strength compares (unverified: ICU's keys are its own): the text... - objects2.rs:
SetPredictedValues(predictedValues): "sets the healing values used for all calculations" (missing fields 0, their d... - objects2.rs:
Reset(): "resets all stored state on the object": the values and the modes (back to 0, the enumerations' first); un... - objects2.rs: A searcher's on/off filters and their values before they are set: both placements, collected and uncollected on, the...
- objects2.rs:
RunSearch(): nothing to find; the results callback is not called (unverified: the client might report an empty resu... - objects2.rs: A setting's getter: what was set; before that nil, the sort type
Enum.HousingCatalogSortType.DateAdded(0, unverifi...
party (10)
- party.rs: Unverified: a party of more than two, leaving, a raid, roles, the loot method's choice (group loot, uncommon: recorde...
- party.rs: Its faction by its group token alone (recorded: party1's, not the soft friend's it also was; unverified: other tokens).
- party.rs:
GetTradePlayerItemInfo(i): an empty slot's, its item ID last (the eighth: Blizzard's trade frame reads it; unverifi... - party.rs: The player's group is gone (left, or its last member removed): the server's message (
message, a global string, else... - party.rs:
GetRaidRosterInfo(index): name, rank, subgroup, level, class, file name, zone, online, dead, role, master looter, c... - party.rs:
C_PartyInfo.ConvertToParty(): the leader's raid of five or fewer a party again (GROUP_ROSTER_UPDATE; unverified:... - party.rs:
C_PartyInfo.GetLootMethod(): group loot (recorded in a party and a raid, as the party was formed with; unverified:... - party.rs:
C_PartyInfo.IsPartyFull(): a party of five (recorded: not with two; unverified: full, a raid). - party.rs:
GetPartyAssignment(assignment, unit [, exactMatch]): no one is the main tank or assist (unverified: assigning); any... - party.rs:
C_PartyInfo.ConvertToRaid(): the leader's party a raid (GROUP_ROSTER_UPDATE; unverified: its other events and mes...
pets (6)
- pets.rs: The player's pet.
- pets.rs: Unverified: the events' order and their units, the default bar, the damage percentage by happiness (classic's 125, 10...
- pets.rs: Its stats (
pet:setStats); the default character's stand-ins until a test gives them (unverified). - pets.rs: The hunter's bar (unverified: classic's layout).
- pets.rs:
GetPetActionCooldown(slot): none,0, 0, 0(recorded without a pet, every slot; with one unverified). - pets.rs:
GetPetActionSlotUsable(slot): an action there, the pet alive; with no pet, any slot (the full probe: -1, 0, 1 and 2...
protection (6)
- protection.rs: Protected methods are the documentation's (
IsProtectedFunction); the documentation does not mark global functions,... - protection.rs: Global functions only Blizzard's code may call (not in the documentation's flags).
- protection.rs: Functions tainted code may call only while the user acts (a click or a key): otherwise refused with `ADDON_ACTION_BLO...
- protection.rs: A protected method of
idrefused: in combat lockdown, on a protected widget, for tainted code. - protection.rs:
AddForbiddenAspects(aspects): from secure code only. - protection.rs: Whether
vis a widget whose untrusted layout scripts are forbidden (its own aspect; unverified and not kept: the do...
queries (11)
- queries.rs:
C_CVar.SetCVarBitfield(name, index, value): bitindexset or cleared in the encodingGetCVarBitfieldreads, cha... - queries.rs:
IsInventoryItemLocked(slot): the equipped item's lock; a slot below 0 or past the inventory's nothing (the full pro... - queries.rs:
UnitIsVisible(unit),UnitIsInInteractRange(unit): the unit exists (recorded for units that do not: false; for a s... - queries.rs:
C_Container.ContainerIDToInventoryID(bag): the bag's inventory slot, bag + 30 for the bags (1 to 5), bag + 58 for t... - queries.rs:
BreakUpLargeNumbers(n, natural): a whole number with its digits grouped; a fraction to one decimal (999.99→ `100... - queries.rs:
C_TransmogCollection.GetCategoryAppearances(category, location): the category's appearances as recorded for the acc... - queries.rs:
C_TransmogCollection.GetValidAppearanceSourcesForClass(appearance, class, category, location): as recorded for the... - queries.rs:
C_ColorUtil.GenerateTextColorCode(color): the color's code (ff2b9305). - queries.rs: Nothing tracked (unverified).
- queries.rs: No quest pop-ups (unverified: not yet asked).
- queries.rs: No task quests (unverified: not yet asked).
questinfo (18)
- questinfo.rs: Unverified unless said otherwise: none of these calls was recorded with anything super-tracked, a pin set, a recipe t...
- questinfo.rs:
GetQuestLogItemLink(type, index [, questID]): the reward's link, in the quest's context as the dialog's (`GetQuestI... - questinfo.rs: The quest's colour for the player's level, Blizzard's
GetRelativeDifficultyColorsteps with `UnitQuestTrivialLevelR... - questinfo.rs:
C_QuestLog.GetQuestLogPortraitGiver([logIndex]): a quest's entry in the log no portrait (0, "", "", 0, nil); a he... - questinfo.rs:
C_QuestInfoSystem.GetQuestRewardCurrencies(questID)andGetQuestRewardSpells: none for a quest ID (from 0); nothi... - questinfo.rs:
C_QuestLog.SetMapForQuestPOIs(uiMapID): kept forC_QuestLog.GetMapForQuestPOIs()(0 before any); another map than... - questinfo.rs: What is super-tracked: one thing at a time (setting one clears the others; unverified).
- questinfo.rs:
C_Map.SetUserWaypoint(point): the pin set where the map takes one,USER_WAYPOINT_UPDATED(); whether it was set. - questinfo.rs:
C_Map.GetUserWaypointPositionForMap(uiMapID): the pin's place on that map (avector2): its own map's point, else... - questinfo.rs:
C_Map.GetUserWaypointHyperlink(): the pin as a chat link,|cffffff00|Hworldmap:MAP:X:Y|h[MAP_PIN_HYPERLINK]|h|rw... - questinfo.rs:
C_Map.GetMapInfoAtPosition(uiMapID, x, y): the smallest of the map's recorded children whose rectangle on it (`C_Ma... - questinfo.rs:
C_TradeSkillUI.IsRecipeRepeating(): a craft of several running (unverified). - questinfo.rs:
GetQuestExpansion(questID): -2 for any quest (Forever's carry no expansion), 0 for an ID below 1 (the full probe: 1... - questinfo.rs:
C_QuestLog.GetRequiredMoney(questID): -1, no money asked (SuuUI probe quest: all 23 quests of a log; a quest asking... - questinfo.rs: What no quest in the engine's world rewards or has (as the dialog's own answers,
quests.rs; unverified): no artifac... - questinfo.rs: A quest not in the log: nothing (the full probe; a quest's own faction unverified, the probe's second quest answered 2).
- questinfo.rs: Sharing a quest: no group member takes it (unverified).
- questinfo.rs: No corpse arrow, no item, no path (unverified).
quests (8)
- quests.rs: Unverified: more than one quest at a giver (a greeting), a quest ended elsewhere, declining, objectives other than it...
- quests.rs: How near the player must be to talk to an NPC, in yards (unverified: 9.9 was too far).
- quests.rs: At once, not at the frame's end as a loot's (recorded once,
quest122.368: the log's updates after it, out of their... - quests.rs: At once, as the turn-in's (recorded once,
quest122.537: the health's maximum after it; unverified). - quests.rs:
DeclineQuest(): as closing (unverified). - quests.rs:
GetQuestUiMapID(questID): the map a quest's place is on (defineQuest'suiMapID), else 0, none (unverified: not... - quests.rs:
C_QuestLog.CanAbandonQuest(questID): a quest's ID yes, in the log or not; 0, a negative or a fraction no (the full... - quests.rs: What a quest without them shows (unverified: not recorded): no currencies, no hidden item (
0), the parchment, not f...
social (29)
- social.rs: Functions of systems with nothing in them answer the documentation's "nothing": no values for a function that may ret...
- social.rs:
Ambiguate(fullName, context): the name with its realm or without, as warcraft.wiki.gg's table has it (unverified):... - social.rs:
BNGetDisplayName(id): a text for any account ID, empty here with no friends (the full probe: -1, 0, 1, 2 answered a... - social.rs:
GuildControlGetRank(): the rank the guild control panel edits, asGuildControlSetRank(rankOrder)set it, 2 before... - social.rs:
GetGuildFactionGroup(): the player's faction, 0 for the Horde, 1 for the Alliance (recorded 0 for a Horde character... - social.rs:
GetGuildCharterCost(): 0 away from a guild registrar (recorded; unverified: the price at one, warcraft.wiki.gg's 10... - social.rs:
BNGetInfo(): presence ID (nil), BattleTag, toon ID 1, broadcast, away, busy, Real ID enabled, and an eighth false (... - social.rs:
C_AccountInfo.IsGUIDBattleNetAccountType(guid): aBNetAccount-GUID (by its form; unverified). - social.rs:
C_AccountInfo.IsGUIDRelatedToLocalAccount(guid): the player's own character (unverified: the account's other charac... - social.rs:
C_ChatInfo.IsPartyChannelType(channelType): the private and public party channels (Enum.ChatChannelType2 and 3;... - social.rs:
C_ChatInfo.GetChannelShortcut(channelIndex): the joined channel's shortcut (its name when it has none), "" for none... - social.rs: The channel's place in the list, not its number (the full probe, 1.60.1: 1 answered a shortcut with number 1 free, Lo...
- social.rs:
C_ChatInfo.SwapChatChannelsByChannelIndex(first, second): the two joined channels change numbers (`CHANNEL_UI_UPDAT... - social.rs:
C_ChatInfo.ReplaceIconAndGroupExpressions(input [, noIconReplacement, noGroupReplacement]): raid target expressions... - social.rs:
C_VoiceChat.CreateChannel(name): refused, not logged in (Enum.VoiceChatStatusCode.ClientNotLoggedIn; unverified). - social.rs:
C_Club.ValidateText(clubType, text, fieldType):NoNamefor an empty text, elseSuccess(unverified: the client'... - social.rs: By the channel's local ID, as by its index (unverified: the full probe's 1 answered with number 1 free, as the index).
- social.rs: Battle.net is connected (recorded
BNFeaturesEnabled,BNGetInfo; unverified: the connection itself); Real ID on, a... - social.rs: Unverified: voice chat enabled (recorded
IsEnabled), the player free to use it and its settings. - social.rs: Unverified: nothing keeps the player from chat.
- social.rs: Unverified: an emote is performed.
- social.rs: Unverified: a custom message is set.
- social.rs: Unverified: an ignore is accepted (the server's list answers later; the engine keeps none).
- social.rs: Lists with nothing in them: no friends, ignores, Battle.net friends, clubs, members, messages, tickets, applicants, a...
- social.rs: Counts of nothing, amounts of none (unverified; a guild bank, its money and log, news, perks, rewards, challenges, ev...
- social.rs: Unknown IDs, no one selected, nothing found: nil (unverified).
- social.rs: Not so (unverified unless said).
- social.rs: Nothing returned: nothing found (functions that may return nothing, undocumented ones for something unknown), or an a...
- social.rs: Chat and channels (unverified: the client's chat lines, its channel moderation; leaving and joining keep the engine's...
spellinfo (7)
- spellinfo.rs: Unless a comment says recorded or probed, an answer is unverified: it follows Blizzard's documentation (its return sh...
- spellinfo.rs: Whether the unit is in the spell's range: nil for a spell without one, no unit, or a unit at no known distance (the c...
- spellinfo.rs:
C_Spell.GetSchoolString(schoolMask): the school's name, the global strings' (STRING_SCHOOL_*) for a school and th... - spellinfo.rs:
C_Spell.GetItemCooldown(itemID): nothing for an item without a use cooldown running (the full probe, 1.60.1: the He... - spellinfo.rs:
C_SpellBook.GetCurrentLevelSpells(level): the spells of the spellbook's General line (its items without a skill lin... - spellinfo.rs:
C_CooldownViewer.GetLayoutData(): whatSetLayoutDatasaved, else an empty string, the documented string's empty v... - spellinfo.rs:
C_CooldownViewer.IsCooldownViewerAvailable(): available, no reason (the full probe, 1.60.1, a level 21 character; t...
stats (11)
- stats.rs: A stat: its key in a profile, the function that reports it, how it is asked, and the event that tells of a change (un...
- stats.rs:
mock.player:setStats(stats): sets the stats given (by key; a value or the function's answer as a list; indexed stat... - stats.rs: The player's experience, gained
amount:UnitXPgrows,PLAYER_XP_UPDATEfor each of the player's tokens; past th... - stats.rs: A spellbook item's link with a glyph: nothing (the full probe: glyph 1, 1.5 and 2147483647 nothing, -1, 0 and nil the...
- stats.rs: For the attribute's effective value only (as the sheet asks it); unverified for others.
- stats.rs: Another value: the recorded one's rate per point, the value taken whole, none below 0 (the full probe: strength 67 re...
- stats.rs: A flyout not recorded: its spellbook item's name, no slots (unverified; the snapshot records flyouts since this).
- stats.rs: One the spellbook lacks: no name, no slots, unknown (the client knows every flyout; unverified).
- stats.rs: A quest's or faction's stat for one the profile does not hold, as the client answers any (the full probe, every numbe...
- stats.rs:
C_SpecializationInfo.GetSpecializationInfo(index, isInspect, isPet, …)for another than the player's recorded specs... - stats.rs:
C_SpellBook.IsSpellInSpellBook(spellID [, bank]): in the player's book (unverified: overrides, the pet's bank).
systeminfo (67)
- systeminfo.rs: Unverified unless a comment says recorded: most answers follow the documentation's shapes and the systems' empty stat...
- systeminfo.rs:
Round(value): halves away from zero (Blizzard'sMathUtil.luain the other flavors; a C function on camelot, unver... - systeminfo.rs:
PlaySound(soundKitID [, channel, forceNoDuplicates, runFinishCallback]),PlaySoundFile(file [, channel]): played,... - systeminfo.rs:
GetCombatRatingBonusForCombatRatingValue(rating, value): rating 1's bonus the value's whole part, as a single-preci... - systeminfo.rs:
IsKeyDown(key): a modifier the engine holds (Shift, Ctrl, Alt, the left ones or either); any other key or button up... - systeminfo.rs:
IsMouselooking(): sinceMouselookStart, untilMouselookStop(unverified: the client also starts it with a held... - systeminfo.rs:
GetScreenDPIScale(): 1 (unverified). - systeminfo.rs:
GetFramerate(): frames a second by the last frame's length, 60 before any frame (recorded: 166.4 on the probing mac... - systeminfo.rs:
C_DateAndTime.GetServerTimeLocal(): the epoch seconds in the clock's local zone (unverified). - systeminfo.rs:
GetSessionTime(): whole seconds since the session began (GetTime's start; unverified). - systeminfo.rs:
C_DateAndTime.AdjustTimeByDays(date, days),…ByMinutes: the date moved (unverified: a date without its time). - systeminfo.rs:
C_DateAndTime.AdjustTimeByMonths(date, months): the same day of the month that many on, the month's last if it has... - systeminfo.rs:
C_DateAndTime.CompareCalendarTime(lhs, rhs): 1 when rhs is later, -1 when earlier, 0 the same minute (warcraft.wiki... - systeminfo.rs:
GetClientDisplayExpansionLevel(),GetAccountExpansionLevel(),GetExpansionForLevel(level): classic's, 0 (as `Ge... - systeminfo.rs:
C_AddOns.GetAddOnEnableState(name [, character]): all (2) for an add-on that exists, none (0) disabled or unknown (... - systeminfo.rs:
C_AddOns.GetAddOnDependencies(name): the required add-ons, one result each (the client returns them so; unverified). - systeminfo.rs:
C_AddOns.GetAddOnSecurity(name): Blizzard's secure (0), others insecure (1), unknown ones not available (3) (`Enum.... - systeminfo.rs:
C_AddOns.IsAddOnLoadable(name): loadable with no reason; disabled"DISABLED", unknown"MISSING"(the reasons' g... - systeminfo.rs: Binds
keytocommandasSetBindingdoes: a key in lower case binds nothing (false); a binding set tells `UPDATE... - systeminfo.rs:
LoadBindings(set): the saved bindings back,UPDATE_BINDINGS(the engine keeps one set; unverified). - systeminfo.rs:
SaveBindings(set): kept (the engine keeps one set),UPDATE_BINDINGS(unverified: warcraft.wiki.gg's UPDATE_BINDIN... - systeminfo.rs:
C_KeyBindings.GetTurnStrafeStyle(): as set, else 2 (recorded with the character's settings;Enum.TurnStrafeStyle... - systeminfo.rs:
GetHaste(): the melee haste the player's stats hold (GetMeleeHaste), else 0 (unverified). - systeminfo.rs:
GetMastery(): none, as classic has no mastery rating (the recordedGetMasteryEffectis 0; unverified). - systeminfo.rs:
GetExpertisePercent(): none for each hand and ranged (classic-era gear has no expertise; unverified). - systeminfo.rs:
GetPowerRegenForPowerType(powerType): the player's power's regeneration (GetPowerRegen, recorded per character) f... - systeminfo.rs:
CanBeRaidTarget(unit): any unit that exists (unverified: hostile players in instances). - systeminfo.rs: A currency's link, colored by its quality (item links' form; unverified).
- systeminfo.rs:
C_CurrencyInfo.CanTransferCurrency(id): no (no account transfers on Forever); a currency not known: `InvalidCurrenc... - systeminfo.rs:
C_CurrencyInfo.DoesWarModeBonusApply(id): no war mode, both nil (the full probe, currencies not held; unverified fo... - systeminfo.rs: The retail currencies' IDs the client still answers (Azerite 1553, War Resources 1560, Dragon Isles Supplies 2003; un...
- systeminfo.rs:
C_CurrencyInfo.GetPlayerCurrencyCategoryInfo(categoryID): the category's name, the ID taken whole, no currencies (t... - systeminfo.rs:
C_CurrencyInfo.GetCoinIcon(amount): the largest coin's icon (the full probe: copper 133788, gold 133785, `INV_Misc_... - systeminfo.rs:
C_Reputation.GetFactionDataByID(id): the player's reputation list's entry for it, else nil (the client knows factio... - systeminfo.rs:
C_Reputation.SetSelectedFaction(index): whatGetSelectedFactionanswers. - systeminfo.rs: Sets each faction's
isWatched(the one atindexwatched, the others not) and the watched faction's data, then `UP... - systeminfo.rs: A watched faction asked of the server: the watch changes when it answers, the last asked winning (the full probe, 1.6...
- systeminfo.rs:
C_Reputation.ToggleFactionAtWar(index): at war or not, where it can be toggled;UPDATE_FACTION(unverified). - systeminfo.rs:
C_Reputation.AreLegacyReputationsShown(): as set, shown at first (unverified). - systeminfo.rs:
C_CVar.SetCVarBitfield(name, index, value): bitindexset or cleared in the six bits a character above@that `... - systeminfo.rs:
C_CVar.SetTempCVar(name [, value]): the value for now, the old one kept forRemoveTempCVar(unverified: not saved... - systeminfo.rs:
C_GameRules.IsPersonalResourceDisplayEnabled(): thenameplateShowSelfCVar (documented: the game rule as well; Fo... - systeminfo.rs:
C_GameRules.IsClassAllowedForGameMode(classID): classic's nine classes (unverified). - systeminfo.rs:
C_Minimap.GetViewRadius(): the outdoor radius at zoom 0, 233 1/3 yards as a C float (recorded 233.33332824707; unve... - systeminfo.rs:
C_Minimap.GetNumTrackingTypes(): the tracking types listed (recorded 25 for a paladin with mining; unverified: othe... - systeminfo.rs:
C_Minimap.GetTrackingInfo(index): the type's name, kind, state and a spell's ID and icon (the spellbook's); a spell... - systeminfo.rs:
CombatLog_Object_IsA(flags, mask): the flags meet the mask in each object group (affiliation, reaction, controller,... - systeminfo.rs:
CombatLogGetRetentionTime(): as set, 300 seconds at first (unverified). - systeminfo.rs:
C_Secrets.Should…BeSecret: while restricted (the documented secrecy flags' rule; unverified each). - systeminfo.rs:
C_Secrets.ShouldUnitThreatStateBeSecret(unit [, mobUnit])and…ThreatValuesBeSecret(unit, mobUnit): secret, but f... - systeminfo.rs: Whether comparing two units is secret: identities restricted (a restricted map, an encounter, a challenge mode, a PvP...
- systeminfo.rs:
C_EventUtils.IsCallbackEvent(event): an event its documentation marksCallbackEvent(12, the combat log's among t... - systeminfo.rs:
C_Texture.GetFilenameFromFileDataID(id): "FileData ID ", the client's name for a file it does not list (the ful... - systeminfo.rs:
C_EncodingUtil.EncodeBase64(source [, variant]): padded, the standard or URL-safe alphabet (Enum.Base64Variant; u... - systeminfo.rs:
C_EncodingUtil.EncodeHex(source): lower-case digits (unverified the case). - systeminfo.rs:
C_EncodingUtil.DecodeHex(source): either case; an odd length errors (the full probe, 1.60.1:"x"); nothing for ot... - systeminfo.rs:
C_EncodingUtil.CompressString(source [, method, level]): raw deflate, zlib or gzip (Enum.CompressionMethod), at t... - systeminfo.rs: A Lua value as CBOR: integers as integers, other numbers as doubles, strings as byte strings, lists as arrays (an emp...
- systeminfo.rs: The serializers' options: a table or nil, anything else refused with the C code's usage (
SerializeJSON({}, "x"), th... - systeminfo.rs:
C_EncodingUtil.DeserializeCBOR(source): the value; bad input errors as the client's C code does, with the taint of... - systeminfo.rs: A Lua value as JSON: lists as arrays (an empty table one too: recorded
[]), other tables as objects (keys as string... - systeminfo.rs:
C_EncodingUtil.DeserializeJSON(source): the value; bad input errors (the full probe, 1.60.1:""and"x""attemp... - systeminfo.rs:
Logout()(Blizzard's/camp; protected): the client starts camping,PLAYER_CAMPINGtold in the same second (SuuU... - systeminfo.rs: How long the account server takes to answer a request for the preferred play settings (unverified: SuuUI probe lfg ha...
- systeminfo.rs:
C_AccountServices.RequestPreferredPlaySettings(): started (SuuUI probe lfg:true), the settings arrive as `PREFER... - systeminfo.rs: Raid marks (unverified: no mark kept).
- systeminfo.rs: Headers: the engine's list is the recorded one, flat (unverified: collapsing hides the children).
taxi (4)
- taxi.rs: Unverified: the routes' hops, a node's state other than current, reachable and unreachable; the item and durability u...
- taxi.rs: `defineTaxi(npc, { mapID, nodes = { { name, nodeID, x, y, state, cost, routes, hops, flightTime } }, mapNodes = { { n...
- taxi.rs:
TaxiIsDirectFlight(slot): a node one hop away (its path from the current node two slots long:GetNumRoutes1). - taxi.rs:
C_TaxiMap.GetTaxiNodesForMap(mapID): every node the map shows.
tooltip (11)
- tooltip.rs: Unverified: the colors of lines added without one (white here), and what
ClearLinesleaves in the font strings (no... - tooltip.rs: - Every data carries
dataInstanceID, the session's count of tooltip data made (the probe's answers: consecutive wit... - tooltip.rs: Unverified: the lines the client adds that the game data lacks (an item's equip slot, stats, requirements, sell price...
- tooltip.rs: An item's lines (
Nonewithout its data); a data the client does not have yet: its retrieving line (unverified: the... - tooltip.rs:
Enum.TooltipDataItemBindingby the item's bind type (recorded: a quest item's "Quest Item" 0, the Hearthstone's "Bi... - tooltip.rs: An item's tooltip data asked another way (
extras.rs: an action's, a merchant's goods'): as by ID, without its link... - tooltip.rs:
C_TooltipInfo.GetItemByID(itemID [, quality, itemContext, treasureContextLevel]): the item's, its link carrying the... - tooltip.rs:
C_TooltipInfo.GetUnit(unit [, hideStatus]): a player's name with its last name (UnitName, gold, with the token as... - tooltip.rs:
C_TooltipInfo.GetInventoryItem(unit, slot [, hideUselessStats]): the player's worn item's (unverified: its GUID, eq... - tooltip.rs:
C_TooltipInfo.GetEquipmentSet(setID): the set's name with its items' count on the right ("10 |4Item:Items;", gold),... - tooltip.rs:
C_TooltipInfo.GetQuestPartyProgress(questID [, omitTitle, ignoreActivePlayer]): a quest in the log's title (gold, `...
tradeskill (6)
- tradeskill.rs: Unverified: the delays (one recording each), the clicks the client ignored (a request unanswered: no
CRAFT_BEGIN; n... - tradeskill.rs: The window's data after it opened, and the list's update after that (recorded: 0.029 and 0.012 s, 0.006 and 0.005 s;...
- tradeskill.rs: The calls of recipes (spells) no window recorded, as the client answers them (the full probe: recipe 1, the spell "Wo...
- tradeskill.rs:
C_TradeSkillUI.CanTradeSkillShowCraftingUI(spell): a profession's spell of the character's (setSpellTraits' `prof... - tradeskill.rs: Unverified: what follows the last cast, one held.
- tradeskill.rs: A new slot's bag told at once (recorded: the first copper and bronze bars; unverified: the wheel's in the backpack, t...
trainer (6)
- trainer.rs: Unverified: a profession trainer, the filters' list kept until the window reopens, a spell bought without room on the...
- trainer.rs: A rank no data gives a level (its service reads 0, no learn level recorded, not in SuuUI's data): estimated between t...
- trainer.rs: The class's spellbook tabs after General, by skill line (Classic's; unverified: Forever's beyond the warrior's Fury 3).
- trainer.rs: Whether the character knows a recorded service's spell (
has: the spells it has): it, or a higher rank of it (unveri... - trainer.rs:
SetTrainerServiceTypeFilter(type, on): the list again, its update (unverified). - trainer.rs: A class trainer's: a recorded one's as its data has them; an explicit one's (unverified) no skill or ability required...
traits (7)
- traits.rs: Unverified: an edge is met by its source at its last rank (the classic rule; recorded only met at 5 of 5); the unlock...
- traits.rs: A commit's second stage after its first, by the config's type: the legacy trees' (
Generic, 0.499 s recorded), the c... - traits.rs: The talents' spells that change the player's damage done, applied:
PLAYER_DAMAGE_DONE_MODS("player")as many times,... - traits.rs: An inspected player's tree without its recorded character (the test named none): its currency as the tree's owner's w...
- traits.rs: The nodes it unlocked, after the currencies, then its edges' targets again (recorded: the legacy druid's fifth point).
- traits.rs:
C_ClassTalents.CommitConfig(savedConfigID): the active config's staged ranks applied (the loadout saved: unverified). - traits.rs:
C_Traits.RollbackConfig(config): the staged ranks dropped (unverified: its events).
ui (7)
- ui/mod.rs: The startup set is the client's (
/stdtest engine: the 201 addons WoW Forever had loaded when StdTest loaded): every... - ui/mod.rs: The globals of Blizzard's secure addons: their own table, reading through to the main environment (unverified: the cl...
- ui/mod.rs:
allowUntaintedCreation(Blizzard_AuraContainer's intrinsic and its custom container template): what is declared wit... - ui/mod.rs: An XML font's flags as the client reports them (
GetFont,GetFontInfo:/stdtest engine answers): `outline="NORMA... - ui/mod.rs: A secure delegate of
f: as the client documentsCreateSecureDelegate, it "invokes the original function in a prot... - ui/mod.rs: The load-on-demand addons' bootstrap files (order unverified: after the startup addons, by name).
- ui/mod.rs: Blizzard's key bindings, which the client reads at startup: the game's (
Bindings_Camelot.xml), then each addon's `B...
ui/build (12)
- ui/build.rs: Unverified (no recording): the order within an element (attributes, mixins, key values, children, scripts),
$parent... - ui/build.rs: A widget a secure addon's file builds as it loads is forbidden only within a
<ScopedModifier forbidden="true">(or... - ui/build.rs: A child marked virtual is still built, but its name makes no global (SuuUI probe bankSlots: camelot's BankFrame.xml m...
- ui/build.rs: Built visible: shown (unverified that the client runs OnShow here; Blizzard's PersonalResourceDisplay sets itself up...
- ui/build.rs: A texture's
alphais its vertex color's too (SuuUI probe trees: the character window's side tabs'TabGlow, `alpha... - ui/build.rs: A frame's own font (an edit box's, a message frame's): the element's font object, font and justification.
- ui/build.rs: SimpleHTML justifies by text type (unverified for this element).
- ui/build.rs: A texture the XML neither anchors nor sizes fills its parent (SuuUI probe trees: such textures, slot icons, glows, a...
- ui/build.rs: Lines as in the file.
- ui/build.rs: An intrinsic type's own handlers stay, whatever the widget sets (
ScrollingMessageFrame'sOnPreLoad, before the fr... - ui/build.rs: A TOC's file that is not there: skipped, as the client skips it (it only logs; unverified wording).
- ui/build.rs:
import(".Name"),import(".Dir.Name"): the result of the fileName.lua(inDir) next to the calling file, whic...
unitinfo (27)
- unitinfo.rs: Answers come from the same state
units.rs,party.rs,auras.rs,pets.rsandcasting.rskeep, so they agree w... - unitinfo.rs:
UnitSelectionType(unit [, useExtendedColors]): a player 4 (5 with extended colors), a creature by its reaction (hos... - unitinfo.rs:
UnitHasPowerType(unit, powerType): its own power, or a druid's mana besides its form's (unverified: the client's se... - unitinfo.rs:
UnitThreatPercentageOfLead(unit, mob): nil, but against the player a secret (the full probe: any first unit with "p... - unitinfo.rs:
UnitHasRelicSlot(unit): the classes whose ranged slot holds a relic (recorded: a paladin's true; druids and shamans... - unitinfo.rs:
UnitUsesAmmo(unit): a hunter (recorded: a paladin's false; the other classes unverified, a warrior's or rogue's bow... - unitinfo.rs: The level difference within which a lower level's content is still worth it: classic's grey level (at most 5: 0; to 3...
- unitinfo.rs: A quest's range one level short of a creature's (the full probe: 5 at the player's level 21, any unit token; one samp...
- unitinfo.rs:
C_PlayerInfo.GetContentDifficultyCreatureForPlayer(unit): theRelativeContentDifficultyof its level against the... - unitinfo.rs:
GetUnitEmpowerHoldAtMaxTime(unit): the player's 120 (the full probe, a paladin without empowered spells; the unit k... - unitinfo.rs:
UnitSexBase(unit): its sex asEnum.UnitSex(unverified: the documentation's type;UnitSexgives 2 male, 3 female). - unitinfo.rs:
IsStealthed(): the player under a stealth aura (by its name: Stealth, Prowl, Shadowmeld; unverified, the client's o... - unitinfo.rs:
GetPlayerInfoByGUID(guid): a player's class, race, sex, name, realm (empty on the player's) and level; nothing for... - unitinfo.rs:
UnitClassFromGUID(guid): a player's class's name, file and ID; nothing for creatures (unverified). - unitinfo.rs: A creature's GUID names it even with none there, nil for the second (the full probe:
Creature-0-0-0-0-0-0000000000... - unitinfo.rs:
C_PlayerInfo.GetDisplayID(),GetNativeDisplayID(): the recorded character's model, 54041 (recorded both; unverifi... - unitinfo.rs:
C_PlayerInfo.GetPlayerCharacterData(): the player's race's name and file and its sex (Enum.UnitSex), no alternate... - unitinfo.rs:
C_PlayerInfo.GetPlayerMythicPlusRatingSummary(unit): an empty summary (no mythic+ on WoW Forever); nothing for anot... - unitinfo.rs:
C_UnitAuras.GetUnitAuras(unit, filter [, maxCount]): the unit's auras passing the filter asAuraData, in applicat... - unitinfo.rs:
C_UnitAuras.GetAuraBaseDuration(unit, auraInstanceID [, spellID]): its duration; 0 when a spell is given, whichever... - unitinfo.rs:
C_UnitAuras.GetRefreshCarryOverDurationandGetRefreshExtendedDuration(unit, auraInstanceID [, spellID]): nil for... - unitinfo.rs:
C_UnitAuras.GetAuraDispelTypeColor(unit, auraInstanceID, curve): the curve at the aura's dispel type (none 0, magic... - unitinfo.rs:
C_UnitAuras.SetHiddenGroupBuffs(spellIDs): accepted, the class's hidden group buffs as they were (the cooldown view... - unitinfo.rs:
C_UnitAuras.AddAuraSound(trigger, sound)(SuuUI probe sound, one session): a sound with asoundFileIDor a `sound... - unitinfo.rs:
C_NamePlate.GetNamePlateSize(): 237.5 by 85 (recorded with the character's settings; unverified: how the nameplate... - unitinfo.rs: Recorded: slots 8 and 10 true (the others unverified).
- unitinfo.rs: As the client answered (the full probe; facts of Forever's account and systems, unverified for another account).
units (44)
- units.rs: Unverified until probed: the player's defaults; GUID formats; the order of the events a change fires (a unit event fi...
- units.rs: Each class's ID, file and name (enUS; the client's for Paladin,
UnitClass; the others unverified). - units.rs:
C_CreatureInfo.GetClassInfo(classID):{ className, classFile, classID }for camelot's classes; nil for another (r... - units.rs:
C_SpecializationInfo.GetAllClassIDs(): camelot's classes (unverified, probe queued). - units.rs: The tokens that name a unit by themselves (not compounds), in the order unit events fire for them (unverified).
- units.rs: Recorded orders: nameplate3 before target, player before targettarget (
/stdtest engine record combat); the rest unv... - units.rs: The pet's (unverified: its place in the order).
- units.rs: After target (
/stdtest engine record combat: UNIT_AURA for softenemy after target); the rest's order unverified. - units.rs: In a raid too, the player's subgroup's (unverified: after raidN).
- units.rs:
UnitTokenFromGUID(guid): a token naming the unit (the first intokens_of's order; unverified which the client pre... - units.rs: "none" has a name (the full probe, blanked: a string and nil; unverified which, here
UNKNOWNOBJECT's). - units.rs: A race's file name and ID (the client's races; the Undead's and the Skyborne's recorded, the others unverified).
- units.rs:
UnitIsTrivial(unit): a creature grey to the player, too low to give experience (warcraft.wiki.gg's API_UnitIsTrivia... - units.rs:
UnitHasPowerType(unit, powerType): the unit's power is of that type (unverified: a unit's other powers, a druid's m... - units.rs:
UnitPlayerControlled: a player (recorded) or the player's pet (unverified). - units.rs: Whether a power call (
UnitPower(unit [, powerType])) asks for a power type the unit does not have: it has none of i... - units.rs:
UnitPlayerOrPetInParty(unit): a group member, a raid's too (recorded; pets unverified). - units.rs:
UnitPlayerOrPetInRaid(unit): a raid's member, none in a party (recorded; pets unverified). - units.rs: A group member's raid subgroup: its own (moved: the recording's druid, moved to subgroup 4 by hand), else five to a s...
- units.rs:
UnitIsVisible(unit): a unit in the player's zone (recorded: a group member in another zone not; unverified: by dist... - units.rs:
unit:setOnline(online): a group member logged in or out (GROUP_ROSTER_UPDATE; unverified: the client's other even... - units.rs:
C_Secrets.ShouldUnitPowerBeSecret(unit [, powerType]): as the unit's power, but a power type the unit does not have... - units.rs: As
UnitName(recorded alike for the player: its first and last name; unverified for a renamed unit, a vehicle's). - units.rs:
unit:target(other, { echo? }): the player'sPLAYER_TARGET_CHANGED()at once andUNIT_TARGET("player")when the... - units.rs: On another: its flags only when the creature is the player's target (the flags come with the targettarget token: reco...
- units.rs: The player's threat on
mob: whether tanking, the status, the scaled and raw percentages, the value; none without th... - units.rs:
unit:softTarget(other [, kind])(the player): the soft target ofkind("enemy", "friend", "interact"; by default... - units.rs: A hostile target on someone: that one's flags, by its tokens with targettarget (recorded,
talents: the fox on the p... - units.rs:
C_ClickBindings.GetEffectiveInteractionButton(button, modifiers): the default interaction bindings' (a unit frame's... - units.rs:
C_ClickBindings.GetBindingType(button, modifiers): the recorded answer (the left button unmodified: an interaction)... - units.rs: The death's events.
- units.rs:
player:raiseSkill(name, rank): a skill up, as recorded (scenarios combat and quest: Defense, Swords): "Your skill i... - units.rs: Several skills up in one packet (
raiseSkill(name, rank, name2, rank2)): their messages, then the stats' events once... - units.rs: The combat text's delay after a hit lands (
/stdtest engine scenario combat:UNIT_COMBAT0.33 to 0.53 s after the... - units.rs: Sets a restriction's state, firing
ADDON_RESTRICTION_STATE_CHANGEDwithActivatingbefore it becomes active (unve... - units.rs: The corpses still on the player drop it too, before the player's flags (no targettarget: recorded,
quest's 4 of 4 c... - units.rs: A slot's first use makes its frame:
NAME_PLATE_CREATED(frame)in the same frame as, and before, its `NAME_PLATE_UNI... - units.rs:
mock.addToGroup(unit, raid? | { raid, subgroup }): the unit joins the player's group (a raid withraid; in a raid... - units.rs:
mock.removeFromGroup(unit [, { quiet }]): the unit leaves the player's group (GROUP_ROSTER_UPDATE;quiet: nothi... - units.rs:
UnitHealthPercent(unit [, usePredicted, curve]): the health as a fraction, or a curve's value for it (unverified: t... - units.rs: More of this module's behaviours.
- units.rs:
UnitCanCooperate(a, b): two players of one faction (unverified: not recorded; Blizzard's unit menu shows Trade and... - units.rs:
UnitIsHumanPlayer(unit): a player's character (unverified: asUnitIsPlayer). - units.rs: Not casting or channeling: no values.
widgets (43)
- widgets.rs: As
/stdtest enginerecorded on WoW Forever 1.60.1 (fixturetests/client/forever-camelot-engine.lua, checked by `w... - widgets.rs: Edit boxes Lua set the text of this frame:
OnTextChanged(false)runs once each after the frame'sOnUpdate, not at... - widgets.rs: An aura container is a frame (Blizzard_AuraContainer's intrinsic of a
Frame): the client names it one and gives it... - widgets.rs: Regions the client makes with the widget (
/stdtest engine: a new edit box has 2, a new cooldown 1). - widgets.rs: A script object the documentation calls a userdata is one, with its class's methods (
ObjectType = "Userdata": `type... - widgets.rs: A duration prints as the client's
LuaDurationObject: 0x…(the full probe, 1.60.1; unverified: the other script obje... - widgets.rs: Addon code may not use a forbidden widget (unverified wording).
- widgets.rs: Attributes stay open: Blizzard's "Inbound" files talk to a forbidden frame through them from any code (`StoreFrame:Se...
- widgets.rs: An intrinsic type of Blizzard's UI code, not loaded: a frame (unverified stand-in).
- widgets.rs: Blizzard's secure templates are protected (unverified without their XML).
- widgets.rs: The ID before the templates and OnLoad (Blizzard's action buttons read it there for their slot).
- widgets.rs: A type or template declared with
allowUntaintedCreationis built untainted, its scripts compiled and its mixins cop... - widgets.rs: Built visible from XML: shown, as a frame of an XML file is (
ui::build; warcraft.wiki.gg's UIHANDLER_OnShow, "if a... - widgets.rs: A method without behaviour (decided for S3, unverified):
SetX(...)andEnableX(...)store their arguments; `GetX(... - widgets.rs: The script types a class has (from the annotations'
Script<Class>unions; unverified), withOnLoadandOnUpdate... - widgets.rs: (isRegistered, units): the units a unit event was registered for (unverified).
- widgets.rs: Fires
eventat every widget registered for it, in creation order (unverified); a unit event only where the unit (th... - widgets.rs:
GetObjectTable(): the object's own table (Blizzard's aura containers hand it to an addon's button initializer, whic... - widgets.rs:
CreateActor(name, template): a model scene's actor (its parent, not among its children:GetNumActors, `GetActorAt... - widgets.rs:
MessageFrame:AddMessage(text, r, g, b, a, messageID): a font string of the frame shows it (GetFontStringByIDfind... - widgets.rs:
SetToDefaults()of a region or frame: its anchors cleared, its size 0 by 0 (Blizzard's Compositor.lua: "The anchors... - widgets.rs:
GetPointByName(point): the anchor of that point asGetPointgives it; nothing without one. - widgets.rs:
OnSizeChangedfor the widgets resized since the last frame: thoseSetSizeresized, then those whose size follows... - widgets.rs: An object whose untrusted layout scripts are forbidden runs only its secure ones (the documentation's `UntrustedLayou...
- widgets.rs: A region's size: as laid out when its points give it one (two opposite points,
SetAllPoints), else as set (unverifi... - widgets.rs: SuuUI probe trees: the client's font strings report their text's size on the sides neither their size nor two points...
- widgets.rs:
SetAlphaFromBoolean(value [, alphaIfTrue [, alphaIfFalse]]): the alpha one of the two picks (1 and 0 by default; un... - widgets.rs: A scroll child without points of its own sits at its scroll frame's top left (unverified: the scroll offsets are not...
- widgets.rs: A button's text goes to its font string, made if it has none (unverified: the client makes one so).
- widgets.rs:
fontString:SetTextToFit([text]): its text set asSetTextsets it (the documentedtext; Blizzard's menus' entrie... - widgets.rs: A text as a widget keeps it: a number as its string (
SetText(1)reads back "1"; unverified, queued: answers' "FontS... - widgets.rs:
editBox:SetNumber(n): its text the number's, asSetText's (unverified: not recorded; the auction house's quantity... - widgets.rs:
editBox:GetNumber(): its text as a number, 0 when it is none (unverified: not recorded). - widgets.rs: Attribute names are case-insensitive (unverified): kept lower-case.
- widgets.rs:
GetAttribute(name), orGetAttribute(prefix, name, suffix): the first set ofprefix..name..suffix, `*..name..suf... - widgets.rs:
GetFrameLevel(): whatSetFrameLevelset, else one above the parent (unverified). - widgets.rs:
SetUsingParentLevel(using): kept; using its parent's, a frame drops the level set before (SuuUI probe trees: `Inset... - widgets.rs: A frame's level: what
SetFrameLevelset, else one above the parent (unverified). - widgets.rs: Without a maximum, no limit (unverified).
- widgets.rs: Enables or disables a button, edit box or slider;
OnEnable/OnDisablerun when it changes (unverified). - widgets.rs:
SetVertexColor(r, g, b [, a]): alpha 1 when left out; white until set (unverified). - widgets.rs: Addon code is not handed forbidden frames (unverified: ElvUI's toolkit asks every enumerated frame's
GetObjectType... - widgets.rs: A button's
kindtexture (Normal,Highlight): the one set, else a new texture of the button's (the highlight's i...
Known gaps
What the engine still answers differently from the client, by cause, and what
would close each. The counts are the full probe's misses
(crates/wowlua-cli/tests/fullprobe-misses.txt) and the replays' leftovers
above; this section is written by hand
(crates/wowlua-engine/data/coverage-gaps.md).
Session variance
Answers that differ between the client's own sessions, so no fixed answer matches every recording.
- Aura instance IDs. Each session numbers its auras anew: the
C_UnitAurasanswers by instance ID, slot or index (88 full-probe misses) and the aura tooltips (C_TooltipInfo.GetUnitAura,GetUnitBuff, by instance ID: 30). Closed by comparing an aura by its spell and position instead of its ID, or by recording the probe's own aura list with each answer. - Clocks.
GetQuestResetTime, the calendar's month and day events, andC_DateAndTime.GetCalendarTimeFromEpoch(4), which follows the machine's time zone. Closed by recording the session's clock and time zone with the probe (date("%H:%M")againstdate("!%H:%M"), probes). - The client's own measurements.
C_AddOnProfiler(49) times the client's frames;GetNumModifiedClickActionsanswered 380, 500 and 820 in three sessions. Nothing to model: compared by shape at most.
Game data the engine lacks
- Spells. Power cost, range, cast time, base cooldown
(
GetSpellBaseCooldown) and descriptions, and the tooltips' spell lines. Closed by a spell data probe over the class spells (C_Spell.GetSpellPowerCost,C_Spell.GetSpellInfo) intodata/camelot-spells.txt. - Item sets.
C_LootJournal.GetItemSetsandC_Item.GetItemSetInfo(31). Closed by recording the loot journal's sets. - Transmog category totals.
C_TransmogCollection.GetFilteredCategoryTotalandGetFilteredCategoryCollectedCount(17 of the namespace's 24). Closed by a probe of each category with the default filters. - Key bindings.
GetNumBindings(8; the client has 290) and the binding list. Closed by the binding list probe. - Tooltips. The item, recipe, heirloom and toy tooltips' lines
(
C_TooltipInfo, 90 with the aura tooltips): the engine builds tooltips from its item data, which lacks most lines. Closed by recordingC_TooltipInfofor the recorded items and recipes. - Other systems.
GetLFGDungeonInfo, the model scenes (C_ModelInfo.GetModelScene*), the calendar's holidays (C_Calendar.GetHolidayInfo,GetDayEvent), PvP talents by level (GetNumUnspentPvpTalents), the allied races' racial abilities, andC_ActionBar.IsHarmfulAction(4), which needs each spell's harmfulness (C_Spell.IsSpellHarmful). Each closes with a recording of its data.
State not recorded
The full probe ran from about 01:00 to 02:44; the replay starts from the last snapshot before it (00:43) and what the probe's own answers say changed.
- Battle.net friends (
C_BattleNet, 21): the account's, scrubbed and not in the snapshot. - Item GUIDs (
C_Item.GetItemGUID): the server's. - Quest 1492's log entry (its reward money and experience), the bind
location, the mail senders (
GetLatestThreeSenders), the chat windows' saved places, the stats' latest update (GetLatestUpdatedStats). - The account's Edit Mode layouts (the hearth replay's one line).
Closed by a snapshot right before and right after the next full probe (probes).
Scenario leftovers
- quest (53 lines): one-off orders of the server's messages within a frame, which the recording shows once and the engine cannot predict.
- profession (2 lines): the order of the bronze item counts after a smelt. Closed by the crafting scenario in the probes.
- death (1 line):
ADDON_LOADED(Blizzard_PlayerSpells), loaded on demand at a moment the engine does not reproduce. - hearth (1 line): the account's Edit Mode layouts, not in the snapshot.
- trade: recorded, without a replay script yet.
Other flavors
Only camelot's Blizzard UI code loads without an error in the engine (every
replay asserts it). Measured on 2026-10-20 with each flavor's UI code from
cargo xtask types fetch (no test counts these yet): standard 648 errors,
mists 475, wrath 481, tbc 430, vanilla 426, cata 18. The first of them come
from tables and globals the engine has for camelot (from its documentation and
recordings) and lacks for the others (Enum.GameMode, Enum.VasServiceType,
PLAYER_FACTION_COLOR_HORDE).
Closed per flavor: a test that loads its UI code with a ratchet on the
errors, then its missing tables and globals, then probes on that client.
Scrubbing
cargo xtask ingest scrubs what identifies a player: the recordings hold
Player or <scrubbed> where the client gave a name, and
Player-0000-00000000 where it gave a player's GUID. The engine answers with
its default character's name and GUID, so an answer that holds them differs
unless the comparison blanks both sides, which it does only for the social
systems' strings. Closed by blanking the engine's side as ingest blanks the
client's, or by recording only what the answers battery's name check records:
whether a name is empty, its length and whether it equals the player's own.
Widget methods
The method probe compares only the 765 fresh-widget getters recorded so far.
Closed by the method probe run (/stdtest engine methodprobe, about 13,000
calls on 53 widget kinds).
In-game probes that would close gaps
The probes to run in the client next, what each answers and how to run it, are in tests/ingame/PROBES.md:
- The answers battery's new calls
- The method probe
- Before and after the next full probe
- Situations (one /dump each, whenever it happens)
- Replay leftovers
- The guild
- Regressions and other flavors
In-game regressions
The bugs found in the game that must fail in the emulator as they failed there (spec §17.8), and the tests that hold them:
| Bug found in game | Test |
|---|---|
os.date in wowlua:format crashed in game: WoW Forever has no os table (decision S37); the VM has none either |
format_uses_the_client_formats (crates/wowlua-cli/tests/stdlib.rs) |
0 / 0 in wowlua:serialize raised "Division by zero" in game (decision S38), as Vm::wow does |
serialize_round_trips_and_rejects (crates/wowlua-cli/tests/stdlib.rs) |
SuuUI's reparented status-bar containers broke Edit Mode: opening it raised a Lua error at StatusTrackingManager.lua:228 (SuuUI 27a38b3) |
suuui_reparented_status_bars_break_edit_mode (crates/wowlua-cli/tests/test_runner.rs) |
Taint met in combat: SuuUI's call of Blizzard's ToggleAllBags tainted the bag frames' fields, so Escape in combat could not close the spells window ("Interface action failed", SuuUI 85ad391); a protected frame changed by an addon in combat is blocked, a tainted read of a secret aura fails |
suuui_bag_calls_taint_escape_in_combat (crates/wowlua-cli/tests/test_runner.rs); protected_frames_are_blocked_in_combat (crates/wowlua-engine/tests/protection.rs); tainted_reads_in_combat_fail_as_recorded (crates/wowlua-engine/tests/auras.rs) |