From 02f57c23161a77c32102ff0ee20e1ee0dfbbda83 Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Tue, 2 Jul 2024 10:43:50 +0200 Subject: [PATCH] Check if partner died - but did not work fully --- .../Patches/Patch_DangerousGenitalia.cs | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/Source/Genes/Damage/Patches/Patch_DangerousGenitalia.cs b/Source/Genes/Damage/Patches/Patch_DangerousGenitalia.cs index 2e64d23..79deffe 100644 --- a/Source/Genes/Damage/Patches/Patch_DangerousGenitalia.cs +++ b/Source/Genes/Damage/Patches/Patch_DangerousGenitalia.cs @@ -86,9 +86,8 @@ namespace RJW_Genes instigator: damager, category: DamageInfo.SourceCategory.ThingOrUnknown, hitPart: GetRandomOralBodyPartRecord(damaged, allow_for_inner_damage)); - - var result = DamageWorker.Apply(dInfo, damaged); - return result.LastHitPart.IsMissingForPawn(damaged); + DamageWorker.DamageResult result = DamageWorker.Apply(dInfo, damaged); + return CheckIfNeedsToAbortSexDriver(damaged, result); } case xxx.rjwSextype.Vaginal: @@ -107,8 +106,8 @@ namespace RJW_Genes instigator: damager, category: DamageInfo.SourceCategory.ThingOrUnknown, hitPart: GetRandomGenitalBodyPartRecord(damaged, allow_for_inner_damage)); - var result = DamageWorker.Apply(dInfo, damaged); - return result.LastHitPart.IsMissingForPawn(damaged); + DamageWorker.DamageResult result = DamageWorker.Apply(dInfo, damaged); + return CheckIfNeedsToAbortSexDriver(damaged, result); } case xxx.rjwSextype.Anal: @@ -126,18 +125,21 @@ namespace RJW_Genes instigator: damager, category: DamageInfo.SourceCategory.ThingOrUnknown, hitPart: GetRandomAnalBodyPartRecord(damaged, allow_for_inner_damage)); - - dInfo.SetApplyAllDamage(false); - dInfo.SetAllowDamagePropagation(true); - - var result = DamageWorker.Apply(dInfo, damaged); - return result.LastHitPart.IsMissingForPawn(damaged); + DamageWorker.DamageResult result = DamageWorker.Apply(dInfo, damaged); + return CheckIfNeedsToAbortSexDriver(damaged, result); } default: return false; } } + private static bool CheckIfNeedsToAbortSexDriver(Pawn damaged, DamageWorker.DamageResult result) + { + bool partner_killed = damaged.Dead; + bool part_destroyed = result.LastHitPart.IsMissingForPawn(damaged); + return partner_killed || part_destroyed; + } + /// /// Checks both pawns for their genes, /// and returns the pawn that has the rjw_genes_dangerous_genitalia def.