fix(ui): match retail vitae and character info

Restore Vitae's omitted penalty paragraph, replace the invented character summary with gmCharacterInfoUI's ordered report and property meanings, preserve authored translucent body surfaces, and initialize the end-session button in its visible Normal DAT state.

Release build and all 5,830 tests pass with five intentional skips. Connected visual gate pending.

Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-17 12:06:14 +02:00
parent d1d603105f
commit 16c21e299c
21 changed files with 771 additions and 303 deletions

View file

@ -10,6 +10,17 @@ public sealed class IndicatorDetailPanelControllerTests
{
private const uint Player = 0x50000001u;
[Fact]
public void SharedPanelCenter_IsNotPaintedTwiceForAuthoredDetailBodies()
{
Assert.True(RetailUiRuntime.AuthorsFullPanelCenter(
FixtureLoader.LoadVitaeInfos()));
Assert.True(RetailUiRuntime.AuthorsFullPanelCenter(
FixtureLoader.LoadCharacterInformationInfos()));
Assert.False(RetailUiRuntime.AuthorsFullPanelCenter(
FixtureLoader.LoadPositiveEffectsInfos()));
}
[Fact]
public void AuthoredFixtures_AreRetailMainPanelPages()
{
@ -113,7 +124,11 @@ public sealed class IndicatorDetailPanelControllerTests
Bucket: 4u));
string text = VisibleText(layout, VitaeUiController.MainTextId);
Assert.Contains("lost 10 %", text, StringComparison.Ordinal);
Assert.Contains("lost 10%", text, StringComparison.Ordinal);
Assert.Contains(
"health, stamina, mana, and skills are temporarily reduced by 10%",
text,
StringComparison.Ordinal);
Assert.Contains("earn 379 more experience", text, StringComparison.Ordinal);
Assert.Equal(479, VitaeUiController.VitaeCpPoolThreshold(0.9f, 10));
}