Add sprain movement placeholder

This commit is contained in:
2026-05-18 13:09:48 -07:00
parent c796a99d89
commit 559a5b237b
8 changed files with 98 additions and 3 deletions
@@ -73,6 +73,13 @@ void UAgrarianSurvivalComponent::TickComponent(float DeltaTime, ELevelTick TickT
CareHistory.InjuryBurden += BleedingRatio * 0.001f * DeltaTime;
}
if (Survival.SprainSeverity > 0.0f)
{
const float SprainRatio = Survival.SprainSeverity / 100.0f;
Survival.Exhaustion += SprainExhaustionPerSecond * SprainRatio * DeltaTime;
CareHistory.InjuryBurden += SprainRatio * 0.0005f * DeltaTime;
}
if (const UWorld* World = GetWorld())
{
if (const AAgrarianGameState* AgrarianGameState = World->GetGameState<AAgrarianGameState>())
@@ -181,6 +188,7 @@ void UAgrarianSurvivalComponent::AddInjury(float Severity)
const float PositiveSeverity = FMath::Max(0.0f, Severity);
Survival.InjurySeverity += PositiveSeverity;
Survival.BleedingSeverity += PositiveSeverity * 0.35f;
Survival.SprainSeverity += PositiveSeverity * 0.20f;
CareHistory.InjuryBurden += PositiveSeverity / 100.0f;
Survival.Health -= PositiveSeverity * 5.0f;
ClampSurvival();
@@ -222,6 +230,29 @@ void UAgrarianSurvivalComponent::ReduceBleeding(float Amount)
}
}
void UAgrarianSurvivalComponent::AddSprain(float Severity)
{
if (GetOwner() && GetOwner()->HasAuthority())
{
const float PositiveSeverity = FMath::Max(0.0f, Severity);
Survival.SprainSeverity += PositiveSeverity;
CareHistory.InjuryBurden += PositiveSeverity / 200.0f;
ClampSurvival();
ClampCareHistory();
BroadcastSurvivalChanged();
}
}
void UAgrarianSurvivalComponent::ReduceSprain(float Amount)
{
if (GetOwner() && GetOwner()->HasAuthority())
{
Survival.SprainSeverity -= FMath::Max(0.0f, Amount);
ClampSurvival();
BroadcastSurvivalChanged();
}
}
void UAgrarianSurvivalComponent::AddSickness(float Severity)
{
if (GetOwner() && GetOwner()->HasAuthority())
@@ -396,6 +427,7 @@ void UAgrarianSurvivalComponent::ClampSurvival()
Survival.BodyTemperature = FMath::Clamp(Survival.BodyTemperature, 30.0f, 42.0f);
Survival.InjurySeverity = FMath::Clamp(Survival.InjurySeverity, 0.0f, 100.0f);
Survival.BleedingSeverity = FMath::Clamp(Survival.BleedingSeverity, 0.0f, 100.0f);
Survival.SprainSeverity = FMath::Clamp(Survival.SprainSeverity, 0.0f, 100.0f);
Survival.SicknessSeverity = FMath::Clamp(Survival.SicknessSeverity, 0.0f, 100.0f);
}