Fix draining processor failing gameplay on bonus misses and ignore hits

This commit is contained in:
Bartłomiej Dach 2024-02-13 12:26:37 +01:00
parent d07ea8f5b1
commit 16d893d40c
No known key found for this signature in database
2 changed files with 13 additions and 1 deletions

View File

@ -142,6 +142,11 @@ protected override void ApplyResultInternal(JudgementResult result)
}
}
protected override bool CanFailOn(JudgementResult result)
{
return !result.Judgement.MaxResult.IsBonus() && result.Type != HitResult.IgnoreHit;
}
protected override void Reset(bool storeResults)
{
base.Reset(storeResults);

View File

@ -50,7 +50,7 @@ protected override void ApplyResultInternal(JudgementResult result)
Health.Value += GetHealthIncreaseFor(result);
if (meetsAnyFailCondition(result))
if (CanFailOn(result) && meetsAnyFailCondition(result))
TriggerFailure();
}
@ -68,6 +68,13 @@ protected override void RevertResultInternal(JudgementResult result)
/// <returns>The health increase.</returns>
protected virtual double GetHealthIncreaseFor(JudgementResult result) => result.HealthIncrease;
/// <summary>
/// Whether a failure can occur on a given <paramref name="result"/>.
/// If the return value of this method is <see langword="false"/>, neither <see cref="DefaultFailCondition"/> nor <see cref="FailConditions"/> will be checked
/// after this <paramref name="result"/>.
/// </summary>
protected virtual bool CanFailOn(JudgementResult result) => true;
/// <summary>
/// The default conditions for failing.
/// </summary>