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.