Highlight health/mana/stamina in the hero menu when an effect is applied

This commit is contained in:
Eddoursul 2026-09-15 13:13:55 +02:00
parent a7a8ce18db
commit 5158e48628

View File

@ -154,10 +154,16 @@ void HeroMenuPatch::FillMenuValues()
args2[32].SetNumber(fEXPNeededForNextLevel - fEXPNeededForCurrentLevel); args2[32].SetNumber(fEXPNeededForNextLevel - fEXPNeededForCurrentLevel);
uiMovie->Invoke("heromenu_mc.SetIntValues", nullptr, args2, 33); 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]; RE::GFxValue args3[21];
args3[0].SetNumber(0); args3[0].SetNumber(statModifier(RE::ActorValue::kHealth));
args3[1].SetNumber(0); args3[1].SetNumber(statModifier(RE::ActorValue::kMagicka));
args3[2].SetNumber(0); args3[2].SetNumber(statModifier(RE::ActorValue::kStamina));
args3[3].SetNumber(playerAV->GetActorValue(RE::ActorValue::kIllusion) - playerAV->GetBaseActorValue(RE::ActorValue::kIllusion)); 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[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)); args3[5].SetNumber(playerAV->GetActorValue(RE::ActorValue::kAlteration) - playerAV->GetBaseActorValue(RE::ActorValue::kAlteration));