diff --git a/source/Enderal DLL/src/Patches/HeroMenuPatch.cpp b/source/Enderal DLL/src/Patches/HeroMenuPatch.cpp index 0bb81f099..c8cf575ca 100644 --- a/source/Enderal DLL/src/Patches/HeroMenuPatch.cpp +++ b/source/Enderal DLL/src/Patches/HeroMenuPatch.cpp @@ -154,10 +154,16 @@ void HeroMenuPatch::FillMenuValues() args2[32].SetNumber(fEXPNeededForNextLevel - fEXPNeededForCurrentLevel); uiMovie->Invoke("heromenu_mc.SetIntValues", nullptr, args2, 33); + // The movie paints a stat green or red when its modifier is non-zero and shows the modifier + // next to the base value. Base plus permanent plus temporary modifiers is the boosted maximum. + auto statModifier = [&](RE::ActorValue av) { + return std::round(player->GetActorValueMax(av) - playerAV->GetBaseActorValue(av)); + }; + RE::GFxValue args3[21]; - args3[0].SetNumber(0); - args3[1].SetNumber(0); - args3[2].SetNumber(0); + args3[0].SetNumber(statModifier(RE::ActorValue::kHealth)); + args3[1].SetNumber(statModifier(RE::ActorValue::kMagicka)); + args3[2].SetNumber(statModifier(RE::ActorValue::kStamina)); args3[3].SetNumber(playerAV->GetActorValue(RE::ActorValue::kIllusion) - playerAV->GetBaseActorValue(RE::ActorValue::kIllusion)); args3[4].SetNumber(playerAV->GetActorValue(RE::ActorValue::kDestruction) - playerAV->GetBaseActorValue(RE::ActorValue::kDestruction)); args3[5].SetNumber(playerAV->GetActorValue(RE::ActorValue::kAlteration) - playerAV->GetBaseActorValue(RE::ActorValue::kAlteration));