ICombatSpec interface
Per-entity active sub-profession (spec).
Talent-first. Every spec has exactly one root talent (“<Spec> Spec”) that grants one spec-exclusive buff, and the game broadcasts each nearby player’s buff set (talent buffs included) on AOI appear and on every change. When an entity carries a spec root buff, that spec is AUTHORITATIVE: it is known from the moment the player appears (in town, before any cast) and cast inference cannot overwrite it. During a same-class spec swap the root is removed ~2 s before the new one arrives; the previous spec is held across that gap (no flicker, no 0) for at most 10 s, after which it is dropped. A fresh full buff snapshot (the player re-entering view) without a root clears it. If the class (attr 220) changes and no root of the new class is present yet, the old class’s spec is not reported. The root-buff map is derived from the game’s own talent tables at load (with built-in constants as the fallback).
Cast fallback. For an entity whose root buff has never been seen, the spec is recognised from spec-defining skill ids as damage/heal events flow through (last-seen-wins) — the ZDPS-family method. The equipped-skill loadout (AttrSkillLevelIdList) carries both specs’ signature skills, so it cannot disambiguate. Use TryGetTalentSpec to tell the two sources apart, and SpecChanged to be notified of changes. Resolve the display name via Name and the gear talent-school via TalentSchool.
public interface ICombatSpecMembers
Section titled “Members”| name | description |
|---|---|
| GetSubProfession(…) | The entity’s resolved sub-profession id (e.g. 110002 = Falconry; format ProfessionId*10000 + SpecIndex), or 0 if unknown. Talent-derived when a spec root buff has been seen for the entity (see the interface remarks), otherwise cast-derived. Covers any entity in AOI this scene — not just party members. |
| TryGetTalentSpec(…) | Returns true only while the entity’s spec is talent-derived: a spec root buff is present, OR the entity is inside a same-class swap gap (≤ 10 s) and still holds its last talent-derived spec. Returns false when the spec is cast-derived or unknown — including after a class change with no root buff of the new class yet, and once the entity has left view (its last value may still be returned by GetSubProfession until it reappears or the scene changes). Use this when only an authoritative spec is acceptable (e.g. uploading it); a cast guess never satisfies it. |
See Also
Section titled “See Also”- namespace Stellar.Abstractions.Services