From 65aada833b7f06fdb3cdb307316919fbf2cb709f Mon Sep 17 00:00:00 2001 From: Ed86 <email@email.com> Date: Tue, 9 Jul 2019 11:36:59 +0300 Subject: [PATCH] fix for cum on body not being applied for futas cum on body no longer applied on receiving slimes, goes into their food need --- Source/Modules/SemenOverlay/SemenHelper.cs | 40 ++++++++++++++++++---- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/Source/Modules/SemenOverlay/SemenHelper.cs b/Source/Modules/SemenOverlay/SemenHelper.cs index 7b40741a..ec6f971d 100644 --- a/Source/Modules/SemenOverlay/SemenHelper.cs +++ b/Source/Modules/SemenOverlay/SemenHelper.cs @@ -361,12 +361,12 @@ namespace rjw Pawn giver, receiver; //dispenser of the seed - if (pawn.gender == Gender.Male || pawn.RaceProps.IsMechanoid || xxx.is_insect(pawn)) + if (Genital_Helper.has_penis(pawn) || xxx.is_mechanoid(pawn) || xxx.is_insect(pawn)) { giver = pawn; receiver = partner; } - else if (partner != null && (partner.gender == Gender.Male || partner.RaceProps.IsMechanoid || xxx.is_insect(partner))) + else if (partner != null && (Genital_Helper.has_penis(partner) || xxx.is_mechanoid(partner) || xxx.is_insect(partner))) { giver = partner; receiver = pawn; @@ -376,6 +376,9 @@ namespace rjw return; } + //slimes do not waste fluids? + //if (xxx.is_slime(giver)) return; + //determine entity: int entityType = SemenHelper.CUM_NORMAL; if (xxx.is_mechanoid(giver)) @@ -502,12 +505,37 @@ namespace rjw if (cumAmount > 0) { - SemenHelper.cumOn(giver, genitals, cumAmount * 0.3f, giver, entityType);//cum on self - smaller amount - foreach (BodyPartRecord bpr in targetParts) + if (xxx.is_slime(receiver)) + { + //slime absorb cum + //this needs balancing, since cumamount ranges 0-10(?) which is fine for cum/hentai but not very realistic for feeding + //using TransferNutrition for now + //Log.Message("cumAmount " + cumAmount); + //float nutrition_amount = cumAmount/10; + + Need_Food need = need = giver.needs.TryGetNeed<Need_Food>(); + if (need == null) + { + //Log.Message("xxx::TransferNutrition() " + xxx.get_pawnname(pawn) + " doesn't track nutrition in itself, probably shouldn't feed the others"); + return; + } + + if (receiver?.needs?.TryGetNeed<Need_Food>() != null) + { + //Log.Message("xxx::TransferNutrition() " + xxx.get_pawnname(partner) + " can receive"); + float nutrition_amount = Math.Min(need.MaxLevel / 15f, need.CurLevel); //body size is taken into account implicitly by need.MaxLevel + receiver.needs.food.CurLevel += nutrition_amount; + } + } + else { - if (bpr != null) + SemenHelper.cumOn(giver, genitals, cumAmount * 0.3f, giver, entityType);//cum on self - smaller amount + foreach (BodyPartRecord bpr in targetParts) { - SemenHelper.cumOn(receiver, bpr, cumAmount, giver, entityType);//cum on partner + if (bpr != null) + { + SemenHelper.cumOn(receiver, bpr, cumAmount, giver, entityType);//cum on partner + } } } } -- GitLab