v0.9

Emulator coverage

main · 29ef05e · latest release v0.9source on GitHub ↗

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%
mail 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's SecureActionButton_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's taken: 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 (as CloseMail...
  • 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), that Finish runs OnFinished...

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 class CurveObjectBase): `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 argument first on (2 for a method: self comes 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, 1 and "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 by OWNED_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 answer AUCTION_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|!PLAYER kept 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: combat 6.283, death 12.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_AURA update 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 CLICK binding's button (OnClick(button, down); unver...
  • bindings.rs: Whether a binding command exists: a binding's (Bindings.xml), or a CLICK, SPELL, MACRO or ITEM one (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's DefaultState is 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 of spellID refused, the reason error told: a...
  • casting.rs: The server's refusal ends the global cooldown the press began (recorded: auradeath 17.005, the slots' cooldowns ina...

channels (1)

  • channels.rs: Unverified: what GetNumGroupChannels counts (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_UPDATE for 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) with includeBank...
  • 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 id may take, in order: a trade good's (classID 7) the reagent bag first (recorded: ro...
  • character.rs: count of item id taken 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_ChatInfo registers 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 with Cancel, IsCancelled and Invoke...
  • clock.rs: Handles are userdata whose metatable is hidden (/stdtest engine: no methods table to read; that __metatable is 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 its OnUpdate got 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.IsHeirloomSourceValid asked 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; SetIsAppearanceFavorite set...
  • 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 for GetClassFilter, 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) (and GetWeaponOptionsForSlot, 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) or GetStatistic(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 IsHeirloomSourceValid are 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 fires ACTIONBAR_PAGE_CHANGED (Blizzard's ActionBarController and...

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.LootMethod 0 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 recorded CanPlayerUseLFD and `Can...

controls (1)

  • controls.rs: dragTo(source, target): the user drags source onto target: the source's OnDragStart("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 source onto 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; bags told 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 by x; Blizzard's curves all...
  • curves.rs: SetPoints(points): vectors (x, y), or color points (x, y a color); a point as a list {x, y} is taken too...
  • curves.rs: ClearPoints(): no points; the secret flag stays (unverified: the documentation names only SetToDefaults as cleari...
  • curves.rs: SetType(type): a secret type counts as a secret value (unverified).
  • curves.rs: The curve's value at x in 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 zero DurationObject, 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 UpdateAddOnMemoryUsage last 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, death 29.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.EditModePresetLayouts order...

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 DifficultyID enum'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: f false, 0 zero, t an empty table, `...
  • extras.rs: C_Garrison, C_CharacterServices and Kiosk answer 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 a UnitAura'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 setting SetCategorizeTrainerUI keeps, true at first (recorded: true at 11...
  • extras.rs: C_CombatText.SetActiveUnit(unit): the unit the floating combat text follows, for GetActiveUnit() ("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's UnitRace names 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) and ConvertFollowerLevel(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() and HasFullOwnedAuctionResults(): 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, as GetTime (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 (GetRestState when not rested, GetInstanceInfo outside 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): a ColorMixin color (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: x rounded to multiples of step by Enum.NumericRuleFormatRounding (Nearest 0, Up 1, Down 2; unverified: halves a...
  • formatters.rs: x by 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 AbbreviateNumbers abbreviates (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 ResetBreakpoints gives them; the documentation...
  • formatters.rs: A NumberAbbreviationBreakpoint copied and checked (the predicate RequiresValidAbbreviationBreakpoints, its errors...
  • formatters.rs: A new formatter's settings (unverified: those of Blizzard's SecondsFormatterMixin:Init without arguments, its forer...
  • formatters.rs: A setting by a curve or a value: the curve's value at seconds when one is set (an interval or count: whole, unverif...
  • formatters.rs: Format(seconds, abbreviation?), after Blizzard's SecondsFormatterMixin:Format (its forerunner in Lua): under the...
  • formatters.rs: SetStripIntervalWhitespace(true), as Blizzard's mixin took it, is Strip (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…|h and |h removed, 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 cooldown seconds, as the spell's C_Spell.GetSpellCooldownDuration has 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 (its equipLoc, INVTYPE_NON_EQUIP_IGNORE and 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's cached, 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 defined cached = 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 (not missing), 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, as UnitAffectingCombat answers (from the name; unverified).
  • globalsinfo.rs: IsOutdoors(): not under a roof, as IsIndoors answers (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, as GetRealmName answers (from the name; unverified).
  • globalsinfo.rs: GetLocalGameTime(): the game's time of day, as GetGameTime answers (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 twin GetSchoolString(mask): its answer (recorded "Frost" for 16, "Fire" for 4),...
  • globalsinfo.rs: DoesTemplateExist(name): a template the loaded XML defined, as C_XMLUtil.GetTemplateInfo knows 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's length; 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, as GetMaxLevelForPlayerExpansion recorded (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, 0 for 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): tells UPDATE_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 after ToggleSheath()...
  • 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 difficulty GetLegacyRaidDifficultyID tells (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 distance away: 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 (as GetPromotionRank; 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 worn data, { 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 id may be worn in gear slot slot: 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 recorded qualityColors, 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) and GetCurrentItemTransmogInfo: 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's type, 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; DoesItemExist false).
  • 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: f false, t true, 0 zero,...
  • 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_PAGES plus `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) (and JoinTemporaryChannel, 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 as ChatTypeInfo holds it, nil for an unknown type...
  • leftovers2.rs: C_ChatInfo.GetChatTypeName(typeID): the chat type whose recorded GetChatTypeIndex is 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(): as C_UI.Reload (the session ends; unverified that the two differ in nothing).
  • leftovers2.rs: RunScript(text): the text compiled as loadstring compiles 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; SetCurrentGraphicsSetting changes 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, as BNFeaturesEnabled answers (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 points C_ClassTalents.HasUnspentTalentPoints counts (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 slot C_SpellBook.FindSpellBookSlotForSpell finds (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 as C_CreatureInfo.GetRaceInfo names...
  • 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 by C_XMLUtil.GetTemplateInfo; unverified).
  • leftovers2.rs: CreateFrameWithOptions(options): CreateFrame with 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 of Enum.EncounterEventSeverity 0 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 by Enum.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, quest 70.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 through pcall: "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 (no searchPromptOverride); an unknown category nothing (unv...
  • lfg.rs: C_LFGList.GetActivityGroupInfo(groupID): its name and order (0, as every recorded activity's orderIndex; 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's fullName, 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 roles SetRoles chose, none at first (as GetSavedRoles; 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() and GetFilteredSearchResults(): 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 (NOROLE without 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, slotsAfter replays 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's MAIL_INBOX_UPDATE a 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 (left the 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, x the 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's SetXAtlas): with useAtlasSize, the texture tak...
  • measures.rs: GetTextureFileID(): the file ID SetTexture was given; a path's ID is not known to the engine (nil, unverified).
  • measures.rs: EditBox:GetTextInsets(): what SetTextInsets set, 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(): what SetHorizTile/SetVertTile set, 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_UPDATE before 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 SetCursorPosition put it (within the text), else at the text's end (unverified: the...
  • methods2.rs: GetHistoryLines(): the lines kept (XML historyLines; 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.rs times unset ord...
  • methods2.rs: Animation:GetSmoothProgress(): the progress through its smoothing (IN squares it, OUT the reverse, IN_OUT bot...
  • methods2.rs: ControlPoint:GetOrder(): as set (CreateControlPoint's order), else 0 (unverified).
  • methods2.rs: GameTooltip:GetAnchorType(): the anchor set (SetAnchorType, or SetOwner's, ANCHOR_LEFT when 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, else BOTTOM (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's SetFlattensRenderLayers(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 as GetCooldownTimes gives 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(): FORWARD while a looping group plays, else NONE (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, and GetDayEvent nothing (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's IsValidFrame asks `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; Reset keeps 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 as AbbreviateNumbers uses 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 self is 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.CurrencyNameStyle Symbol 0, NarrowSymbol 1, Long 2, FormalSymbol 3 and...
  • objects2.rs: SelectPlural(number, pluralType): CLDR's plural rules for WoW's languages (Enum.PluralType Cardinal 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: z short (UTC, GMT+2), zzzz long (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.LocaleTransform Canonicalize 0, AddLikelySubtags 1, RemoveLikelySubtags 2, Langu...
  • objects2.rs: The boundaries of text (byte offsets, its start and end included) by Enum.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 id refused: in combat lockdown, on a protected widget, for tainted code.
  • protection.rs: AddForbiddenAspects(aspects): from secure code only.
  • protection.rs: Whether v is 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): bit index set or cleared in the encoding GetCVarBitfield reads, 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 GetRelativeDifficultyColor steps 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) and GetQuestRewardSpells: none for a quest ID (from 0); nothi...
  • questinfo.rs: C_QuestLog.SetMapForQuestPOIs(uiMapID): kept for C_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 (a vector2): 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|r w...
  • 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, quest 122.368: the log's updates after it, out of their...
  • quests.rs: At once, as the turn-in's (recorded once, quest 122.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's uiMapID), 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, as GuildControlSetRank(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): a BNetAccount- 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.ChatChannelType 2 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): NoName for an empty text, else Success (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(): what SetLayoutData saved, 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: UnitXP grows, PLAYER_XP_UPDATE for 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's MathUtil.lua in 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(): since MouselookStart, until MouselookStop (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 key to command as SetBinding does: 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 recorded GetMasteryEffect is 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): what GetSelectedFaction answers.
  • systeminfo.rs: Sets each faction's isWatched (the one at index watched, 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): bit index set 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 for RemoveTempCVar (unverified: not saved...
  • systeminfo.rs: C_GameRules.IsPersonalResourceDisplayEnabled(): the nameplateShowSelf CVar (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 marks CallbackEvent (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_CAMPING told 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: GetNumRoutes 1).
  • 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 ClearLines leaves 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 (None without its data); a data the client does not have yet: its retrieving line (unverified: the...
  • tooltip.rs: Enum.TooltipDataItemBinding by 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 documents CreateSecureDelegate, 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 alpha is 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's OnPreLoad, 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 file Name.lua (in Dir) next to the calling file, whic...

unitinfo (27)

  • unitinfo.rs: Answers come from the same state units.rs, party.rs, auras.rs, pets.rs and casting.rs keep, 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): the RelativeContentDifficulty of 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 as Enum.UnitSex (unverified: the documentation's type; UnitSex gives 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 as AuraData, in applicat...
  • unitinfo.rs: C_UnitAuras.GetAuraBaseDuration(unit, auraInstanceID [, spellID]): its duration; 0 when a spell is given, whichever...
  • unitinfo.rs: C_UnitAuras.GetRefreshCarryOverDuration and GetRefreshExtendedDuration(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 a soundFileID or 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 in tokens_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's PLAYER_TARGET_CHANGED() at once and UNIT_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 of kind ("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_COMBAT 0.33 to 0.53 s after the...
  • units.rs: Sets a restriction's state, firing ADDON_RESTRICTION_STATE_CHANGED with Activating before 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 with raid; 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: as UnitIsPlayer).
  • units.rs: Not casting or channeling: no values.

widgets (43)

  • widgets.rs: As /stdtest engine recorded on WoW Forever 1.60.1 (fixture tests/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's OnUpdate, 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 allowUntaintedCreation is 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(...) and EnableX(...) store their arguments; `GetX(...
  • widgets.rs: The script types a class has (from the annotations' Script<Class> unions; unverified), with OnLoad and OnUpdate...
  • widgets.rs: (isRegistered, units): the units a unit event was registered for (unverified).
  • widgets.rs: Fires event at 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 (GetFontStringByID find...
  • 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 as GetPoint gives it; nothing without one.
  • widgets.rs: OnSizeChanged for the widgets resized since the last frame: those SetSize resized, 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 as SetText sets it (the documented text; 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, as SetText'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), or GetAttribute(prefix, name, suffix): the first set of prefix..name..suffix, `*..name..suf...
  • widgets.rs: GetFrameLevel(): what SetFrameLevel set, 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 SetFrameLevel set, 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 / OnDisable run 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 kind texture (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_UnitAuras answers 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, and C_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") against date("!%H:%M"), probes).
  • The client's own measurements. C_AddOnProfiler (49) times the client's frames; GetNumModifiedClickActions answered 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) into data/camelot-spells.txt.
  • Item sets. C_LootJournal.GetItemSets and C_Item.GetItemSetInfo (31). Closed by recording the loot journal's sets.
  • Transmog category totals. C_TransmogCollection.GetFilteredCategoryTotal and GetFilteredCategoryCollectedCount (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 recording C_TooltipInfo for 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, and C_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)

main · 29ef05esource on GitHub ↗