feat: port retail magic lifecycle and retained spell UI
Complete the retail cast-intent, target, component, enchantment, and busy-state paths; mount the DAT-authored spell bar, spellbook, component book, effects panels, and shared panel lifecycle; and add scoped input plus conformance coverage. Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
parent
7b7ffcd278
commit
07be994d97
84 changed files with 17822 additions and 1051 deletions
|
|
@ -101,6 +101,18 @@ public sealed class SpellTable
|
|||
int? iIsDebuff = Get("IsDebuff");
|
||||
int? iIsFellow = Get("IsFellowship");
|
||||
int? iDescription = Get("Description");
|
||||
int? iSortKey = Get("SortKey");
|
||||
int? iDifficulty = Get("Difficulty");
|
||||
int? iFlags = Get("Flags [Hex]");
|
||||
int? iGeneration = Get("Generation");
|
||||
int? iFastWindup = Get("IsFastWindup");
|
||||
int? iOffensive = Get("IsOffensive");
|
||||
int? iUntargeted = Get("IsUntargetted");
|
||||
int? iSpeed = Get("Speed");
|
||||
int? iCasterFx = Get("CasterEffect");
|
||||
int? iTargetFx = Get("TargetEffect");
|
||||
int? iTargetMask = Get("TargetMask [Hex]");
|
||||
int? iSpellType = Get("Type");
|
||||
|
||||
if (iSpellId is null || iName is null) return new SpellTable(byId);
|
||||
|
||||
|
|
@ -125,10 +137,24 @@ public sealed class SpellTable
|
|||
bool isDebuff = ParseBool(fields, iIsDebuff);
|
||||
bool isFellow = ParseBool(fields, iIsFellow);
|
||||
string description = iDescription is int d && d < fields.Count ? fields[d] : "";
|
||||
int sortKey = (int)ParseUInt(fields, iSortKey);
|
||||
int difficulty = (int)ParseUInt(fields, iDifficulty);
|
||||
uint flags = ParseHexUInt(fields, iFlags);
|
||||
int generation = (int)ParseUInt(fields, iGeneration);
|
||||
bool fastWindup = ParseBool(fields, iFastWindup);
|
||||
bool offensive = ParseBool(fields, iOffensive);
|
||||
bool untargeted = ParseBool(fields, iUntargeted);
|
||||
float speed = ParseFloat(fields, iSpeed);
|
||||
uint casterEffect = ParseUInt(fields, iCasterFx);
|
||||
uint targetEffect = ParseUInt(fields, iTargetFx);
|
||||
uint targetMask = ParseHexUInt(fields, iTargetMask);
|
||||
int spellType = (int)ParseUInt(fields, iSpellType);
|
||||
|
||||
byId[spellId] = new SpellMetadata(
|
||||
spellId, name, school, family, iconId, words, duration,
|
||||
mana, isDebuff, isFellow, description);
|
||||
mana, isDebuff, isFellow, description, sortKey, difficulty,
|
||||
flags, generation, fastWindup, offensive, untargeted, speed,
|
||||
casterEffect, targetEffect, targetMask, spellType);
|
||||
}
|
||||
|
||||
return new SpellTable(byId);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue