//Method responsible for determining if a new status should be added to the bodypart //TODO: currently, it only gets worse. Should implement logic to heal damages and remove a status from a bodypart public void EvaluateStatusChange(BodyPartStatuses status, float totalDamage, float serverAuthoritativeRandomRoll) { if (bodyPartStatuses.HasFlag(status)) { return; } float requiredThreshold = DamageThresholds.OrganicMinimumRequiredDamage[status]; if (requiredThreshold > totalDamage) { return; } float applyEffectRoll = serverAuthoritativeRandomRoll + totalDamage - requiredThreshold; Debug.Log($"{status} roll {applyEffectRoll}"); if (applyEffectRoll < requiredThreshold) { return; } if (status == BodyPartStatuses.Severed && bodyPartType == BodyPartType.Chest) { return; } bodyPartStatuses |= status; PerformStatusAssociatedAction(status); }
private void PerformStatusAssociatedAction(BodyPartStatuses status) { switch (status) { case BodyPartStatuses.Numb: case BodyPartStatuses.Burned: case BodyPartStatuses.Bruised: case BodyPartStatuses.Crippled: case BodyPartStatuses.Bleeding: case BodyPartStatuses.Blistered: return; case BodyPartStatuses.Severed: body.SeverBodyPart(this); break; default: Debug.LogError($"BodyPart does not have damage handling for status {status}!"); break; } }