ui: ClassicAPI's GUID player info, no-toggle cast and stable-id skill rank
Third DLL tranche, from ClassicAPI's side of the work list. Its 70 corpus-called names are mostly **not** functions — `Clear`, `Fire`, `Size`, `Armor`, `Nature`, `Normal`, `None` and the rest are widget methods and enum keys its DLL carries as strings, and several more (`GetSpellSchool`, `RunMacro`, `GetSpellLink`) the corpus defines for itself. Reading the call sites left nine genuine gaps; three are landed here and the rest need state this client does not feed yet. - `GetPlayerInfoByGUID(guid)` -> `localizedClass, englishClass, localizedRace, englishRace, sex, name, realm`. 1.12 has no verb that takes a GUID at all. Answered through the same `Model::unit` as the whole unit surface, so a raw GUID, a `0x`-prefixed one and every other token spelling resolve alike; an unknown GUID is seven nils, not a raise. `realm` is **nil** on purpose: the field means the realm the *named* character is from, which 1.12 has no concept of, and our own realm name there would be a guess that reads as data. - `CastSpellNoToggle(spellId)`: the plain cast by id. The toggle lives in the client's cast path and benilla's queue toggles nothing — a press is a send — so this is what the caller asked for, on the same queue a bar press uses. Same reasoning as nampower's `CastSpellNoQueue`. - `C_SpellBook.GetSkillLineRank(skillLineID)` -> `rank, maxRank`. 1.12 reaches a skill only by its index into the skills *window*, which moves as lines are learnt and categories collapse — a `SkillLine.dbc` id is stable, which is why pfQuest asks by one. It reuses `skills::displayed_ranks`, so the stable-id getter and `GetSkillLineInfo` fold bonuses and the mono override identically and cannot disagree. A line the character has no row for is `nil, nil`, not `0, 0`: untrained and unknown are different answers. All nine gates green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn
This commit is contained in:
@@ -319,6 +319,12 @@ fn allowed_beyond_1_12() -> HashSet<&'static str> {
|
||||
// `GetQuestLogTitle` answers the title and never the id, so neither the id nor a chat
|
||||
// link for a log row is derivable from the stock API. The id agrees with
|
||||
// `C_QuestLog.GetQuestIDForLogIndex`, which ClassicAPI publishes over the same rows.
|
||||
// ClassicAPI's `GetPlayerInfoByGUID(guid)` and `CastSpellNoToggle(spellId)`
|
||||
// (script/compat/classic_api/unit.rs). 1.12 has no verb that takes a GUID at all, and no
|
||||
// cast path that skips its own toggle — benilla's queue does not toggle, so the second is
|
||||
// the plain cast by id, the same reasoning nampower's `CastSpellNoQueue` carries.
|
||||
"CastSpellNoToggle",
|
||||
"GetPlayerInfoByGUID",
|
||||
"GetQuestIDForLogIndex",
|
||||
"GetQuestLinkForLogIndex",
|
||||
"CancelPlayerAuraSlot",
|
||||
|
||||
Reference in New Issue
Block a user