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
|
|
@ -379,7 +379,7 @@ public sealed class PlayerDescriptionParserTests
|
|||
writer.Write(0u); // option_flags = None — no further sections
|
||||
writer.Write(0xDEADBEEFu); // options1 sentinel
|
||||
|
||||
// No more bytes — spellbook_filters is optional (defaults to 0).
|
||||
// No more bytes — spellbook_filters is optional (retail defaults all on).
|
||||
var parsed = PlayerDescriptionParser.TryParse(sb.ToArray());
|
||||
|
||||
Assert.NotNull(parsed);
|
||||
|
|
@ -392,7 +392,7 @@ public sealed class PlayerDescriptionParserTests
|
|||
// pre-existing regression guard if they accidentally consume into
|
||||
// the wrong field's wire bytes.
|
||||
Assert.Equal(0u, parsed.Value.Options2);
|
||||
Assert.Equal(0u, parsed.Value.SpellbookFilters);
|
||||
Assert.Equal(0x3FFFu, parsed.Value.SpellbookFilters);
|
||||
Assert.Empty(parsed.Value.HotbarSpells);
|
||||
Assert.Empty(parsed.Value.DesiredComps);
|
||||
Assert.True(parsed.Value.GameplayOptions.IsEmpty);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue