From 3cf2d44c821d34845c883d2f004dd58608e8c570 Mon Sep 17 00:00:00 2001 From: Shabakur Date: Thu, 29 Dec 2022 16:08:22 +0100 Subject: [PATCH] Custom succubus tail sex interactions and modification to fertilin absorbtion --- Common/Assemblies/Rjw-Genes.dll | Bin 64512 -> 66048 bytes Common/Defs/Genes/GeneDefs_Cosmetic.xml | 2 +- Common/Defs/Genes/GeneDefs_LifeForce.xml | 4 +- .../InteractionDef/Rape/Rape_SuccubusTail.xml | 153 +++++++++++++++++ .../Reverse/Rape_Reverse_SuccubusTail.xml | 159 ++++++++++++++++++ .../Sex/Reverse/Sex_Reverse_SuccubusTail.xml | 159 ++++++++++++++++++ .../InteractionDef/Sex/Sex_SuccubusTail.xml | 154 +++++++++++++++++ .../RulePackDefs/Sex/RulePacks_SuccubTail.xml | 77 +++++++++ Source/GeneDefOf.cs | 3 + .../JobDriver_CastAbilityAfterSex.cs | 2 +- Source/Genes/Life_Force/Patch_LifeForce.cs | 140 ++++++++++++--- .../CompAbility_SexInteractionRequirements.cs | 23 +++ ...mpProperties_SexInteractionRequirements.cs | 0 .../CustomSexInteraction_Helper.cs} | 12 +- ...DomSuccubusTailCustomRequirementHandler.cs | 52 ++++++ ...ubusTailCustomRequirementHandler - Copy.cs | 52 ++++++ Source/Rjw-Genes.csproj | 7 +- 17 files changed, 955 insertions(+), 44 deletions(-) create mode 100644 Common/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml create mode 100644 Common/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml create mode 100644 Common/Defs/InteractionDef/Sex/Reverse/Sex_Reverse_SuccubusTail.xml create mode 100644 Common/Defs/InteractionDef/Sex/Sex_SuccubusTail.xml create mode 100644 Common/Defs/RulePackDefs/Sex/RulePacks_SuccubTail.xml create mode 100644 Source/Interactions/CompAbility_SexInteractionRequirements.cs rename Source/{Genes/Life_Force => Interactions}/CompProperties_SexInteractionRequirements.cs (100%) rename Source/{Genes/Life_Force/CompAbility_SexInteractionRequirements.cs => Interactions/CustomSexInteraction_Helper.cs} (95%) create mode 100644 Source/Interactions/DomSuccubusTailCustomRequirementHandler.cs create mode 100644 Source/Interactions/SubSuccubusTailCustomRequirementHandler - Copy.cs diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index efb3423eaf24a7c5c209df8cbd1a12f63e142ce9..5e50e3cd12cd43b349c2d5bf0f15e21c759959ed 100644 GIT binary patch literal 66048 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 L7K#7IGw^=^Jw_kA literal 64512 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 kRj89jx+7P1wu^K9jritojh8^= - Succubus_Tail + rjw_genes_succubus_tail Carriers of this gene grow a slender tail ending with a heart that can act as a dexterous fifth limb. Genes/Icons/Succubus_Tail diff --git a/Common/Defs/Genes/GeneDefs_LifeForce.xml b/Common/Defs/Genes/GeneDefs_LifeForce.xml index dbaa10b..db2de4d 100644 --- a/Common/Defs/Genes/GeneDefs_LifeForce.xml +++ b/Common/Defs/Genes/GeneDefs_LifeForce.xml @@ -29,7 +29,7 @@ rjw_genes_lifeforce_randomrape 18 - 0.02 + 0.05 1 1 @@ -70,7 +70,6 @@ 2 rjw_genes_fertilin 1 - -1 @@ -82,6 +81,5 @@ 3 rjw_genes_fertilin 1 - -1 \ No newline at end of file diff --git a/Common/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml b/Common/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml new file mode 100644 index 0000000..be8905c --- /dev/null +++ b/Common/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml @@ -0,0 +1,153 @@ + + + + + Rape_SuccubusTail_Tailjob + + + +

  • r_logentry->Was given tailjob by [RECIPIENT_nameDef].
  • + + + + +
  • r_logentry->Gave tailjob to [INITIATOR_nameDef].
  • +
    +
    + +
  • + Tailjob + Handjob + +
  • DomSuccubusTail_Tailjob_RP
  • + + +
  • + SubSuccubusTailCustomRequirementHandler + +
  • Rape
  • + + + +
  • CanPenetrate
  • +
    +
    + + + + +
    + + + + Rape_SuccubusTail_Vaginal + + + +
  • r_logentry->Gave vaginal tailsex to [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Was given vaginal tailsex by [INITIATOR_nameDef].
  • +
    +
    + +
  • + Vaginal Tailsex + Vaginal + +
  • DomSuccubusTail_Vaginal_RP
  • + + +
  • + DomSuccubusTailCustomRequirementHandler + +
  • Rape
  • + + + + + +
  • Vagina
  • +
    +
    + +
    +
    + + + Rape_SuccubusTail_Anal + + + +
  • r_logentry->Gave anal tailsex to [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Was given anal tailsex by [INITIATOR_nameDef].
  • +
    +
    + +
  • + Anal Tailsex + Anal + +
  • DomSuccubusTail_Anal_RP
  • + + +
  • + DomSuccubusTailCustomRequirementHandler + +
  • Rape
  • + + + + + +
  • Anus
  • +
    +
    + +
    +
    + + + + Rape_SuccubusTail_Envelop + + + +
  • r_logentry->Was given special tailjob by [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Gave special tailjob to [INITIATOR_nameDef].
  • +
    +
    + +
  • + Envelop + Vaginal + +
  • DomSuccubusTail_Envelop_RP
  • + + +
  • + SubSuccubusTailCustomRequirementHandler + +
  • Rape
  • + + + +
  • CanPenetrate
  • +
    +
    + + + +
    +
    + \ No newline at end of file diff --git a/Common/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml b/Common/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml new file mode 100644 index 0000000..ce679d6 --- /dev/null +++ b/Common/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml @@ -0,0 +1,159 @@ + + + + + Rape_SuccubusTail_Reverse_Tailjob + + + +
  • r_logentry->Gave tailjob to [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Was given tailjob by [INITIATOR_nameDef].
  • +
    +
    + +
  • + Tailjob + Handjob + +
  • SubSuccubusTail_Tailjob_RP
  • + + +
  • + DomSuccubusTailCustomRequirementHandler + +
  • Reverse
  • +
  • Rape
  • + + + + + + +
  • CanPenetrate
  • +
    +
    + +
    +
    + + + Rape_SuccubusTail_Reverse_Vaginal + + + +
  • r_logentry->Was given vaginal tailsex by [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Gave vaginal tailsex to [INITIATOR_nameDef].
  • +
    +
    + +
  • + Vaginal Tailsex + Vaginal + +
  • DomSuccubusTail_Vaginal_RP
  • + + +
  • + SubSuccubusTailCustomRequirementHandler + +
  • Reverse
  • +
  • Rape
  • + + + +
  • Vagina
  • +
    +
    + + + + +
    +
    + + + Rape_SuccubusTail_Reverse_Anal + + + +
  • r_logentry->Was given anal tailsex by [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Gave anal tailsex to [INITIATOR_nameDef].
  • +
    +
    + +
  • + Anal Tailsex + Anal + +
  • DomSuccubusTail_Anal_RP
  • + + +
  • + SubSuccubusTailCustomRequirementHandler + +
  • Reverse
  • +
  • Rape
  • + + + +
  • Anus
  • +
    +
    + + + + +
    +
    + + + + Rape_SuccubusTail_Reverse_Envelop + + + +
  • r_logentry->Gave special tailjob to [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Was given special tailjob by [INITIATOR_nameDef].
  • +
    +
    + +
  • + Envelop + Vaginal + +
  • DomSuccubusTail_Envelop_RP
  • + + +
  • + DomSuccubusTailCustomRequirementHandler + +
  • Reverse
  • +
  • Rape
  • + + + + + +
  • CanPenetrate
  • +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/Common/Defs/InteractionDef/Sex/Reverse/Sex_Reverse_SuccubusTail.xml b/Common/Defs/InteractionDef/Sex/Reverse/Sex_Reverse_SuccubusTail.xml new file mode 100644 index 0000000..a6e98c5 --- /dev/null +++ b/Common/Defs/InteractionDef/Sex/Reverse/Sex_Reverse_SuccubusTail.xml @@ -0,0 +1,159 @@ + + + + + Sex_SuccubusTail_Reverse_Tailjob + + + +
  • r_logentry->Gave tailjob to [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Was given tailjob by [INITIATOR_nameDef].
  • +
    +
    + +
  • + Tailjob + Handjob + +
  • SubSuccubusTail_Tailjob_RP
  • + + +
  • + DomSuccubusTailCustomRequirementHandler + +
  • Reverse
  • +
  • Consensual
  • + + + + + + +
  • CanPenetrate
  • +
    +
    + +
    +
    + + + Sex_SuccubusTail_Reverse_Vaginal + + + +
  • r_logentry->Was given vaginal tailsex by [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Gave vaginal tailsex to [INITIATOR_nameDef].
  • +
    +
    + +
  • + Vaginal Tailsex + Vaginal + +
  • DomSuccubusTail_Vaginal_RP
  • + + +
  • + SubSuccubusTailCustomRequirementHandler + +
  • Reverse
  • +
  • Consensual
  • + + + +
  • Vagina
  • +
    +
    + + + + +
    +
    + + + Sex_SuccubusTail_Reverse_Anal + + + +
  • r_logentry->Was given anal tailsex by [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Gave anal tailsex to [INITIATOR_nameDef].
  • +
    +
    + +
  • + Anal Tailsex + Anal + +
  • DomSuccubusTail_Anal_RP
  • + + +
  • + SubSuccubusTailCustomRequirementHandler + +
  • Reverse
  • +
  • Consensual
  • + + + +
  • Anus
  • +
    +
    + + + + +
    +
    + + + + Sex_SuccubusTail_Reverse_Envelop + + + +
  • r_logentry->Gave special tailjob to [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Was given special tailjob by [INITIATOR_nameDef].
  • +
    +
    + +
  • + Envelop + Vaginal + +
  • DomSuccubusTail_Envelop_RP
  • + + +
  • + DomSuccubusTailCustomRequirementHandler + +
  • Reverse
  • +
  • Consensual
  • + + + + + +
  • CanPenetrate
  • +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/Common/Defs/InteractionDef/Sex/Sex_SuccubusTail.xml b/Common/Defs/InteractionDef/Sex/Sex_SuccubusTail.xml new file mode 100644 index 0000000..dda1ffe --- /dev/null +++ b/Common/Defs/InteractionDef/Sex/Sex_SuccubusTail.xml @@ -0,0 +1,154 @@ + + + + + Sex_SuccubusTail_Tailjob + + + +
  • r_logentry->Was given tailjob by [RECIPIENT_nameDef].
  • + +
    +
    + + +
  • r_logentry->Gave tailjob to [INITIATOR_nameDef].
  • +
    +
    + +
  • + Tailjob + Handjob + +
  • DomSuccubusTail_Tailjob_RP
  • + + +
  • + SubSuccubusTailCustomRequirementHandler + +
  • Consensual
  • + + + +
  • CanPenetrate
  • +
    +
    + + + + +
    +
    + + + Sex_SuccubusTail_Vaginal + + + +
  • r_logentry->Gave vaginal tailsex to [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Was given vaginal tailsex by [INITIATOR_nameDef].
  • +
    +
    + +
  • + Vaginal Tailsex + Vaginal + +
  • DomSuccubusTail_Vaginal_RP
  • + + +
  • + DomSuccubusTailCustomRequirementHandler + +
  • Consensual
  • + + + + + +
  • Vagina
  • +
    +
    + +
    +
    + + + Sex_SuccubusTail_Anal + + + +
  • r_logentry->Gave anal tailsex to [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Was given anal tailsex by [INITIATOR_nameDef].
  • +
    +
    + +
  • + Anal Tailsex + Anal + +
  • DomSuccubusTail_Anal_RP
  • + + +
  • + DomSuccubusTailCustomRequirementHandler + +
  • Consensual
  • + + + + + +
  • Anus
  • +
    +
    + +
    +
    + + + + Sex_SuccubusTail_Envelop + + + +
  • r_logentry->Was given special tailjob by [RECIPIENT_nameDef].
  • +
    +
    + + +
  • r_logentry->Gave special tailjob to [INITIATOR_nameDef].
  • +
    +
    + +
  • + Envelop + Vaginal + +
  • DomSuccubusTail_Envelop_RP
  • + + +
  • + SubSuccubusTailCustomRequirementHandler + +
  • Consensual
  • + + + +
  • CanPenetrate
  • +
    +
    + + + +
    +
    +
    \ No newline at end of file diff --git a/Common/Defs/RulePackDefs/Sex/RulePacks_SuccubTail.xml b/Common/Defs/RulePackDefs/Sex/RulePacks_SuccubTail.xml new file mode 100644 index 0000000..21e75a1 --- /dev/null +++ b/Common/Defs/RulePackDefs/Sex/RulePacks_SuccubTail.xml @@ -0,0 +1,77 @@ + + + + + DomSuccubusTail_Tailjob_RP + + +
  • sent-> [INITIATOR_nameDef] gave [RECIPIENT_nameDef] a tailjob.
  • +
    +
    +
    + + + DomSuccubusTail_Vaginal_RP + + +
  • sent-> [INITIATOR_nameDef] [INITIATOR_possessive] tail was vaginally inserted into [RECIPIENT_nameDef].
  • +
    +
    +
    + + + DomSuccubusTail_Anal_RP + + +
  • sent-> [INITIATOR_nameDef] [INITIATOR_possessive] tail was anally inserted into [RECIPIENT_nameDef].
  • +
    +
    +
    + + + + DomSuccubusTail_Envelop_RP + + +
  • sent-> [RECIPIENT_nameDef] dick was enveloped by [INITIATOR_nameDef] [INITIATOR_possessive] tail.
  • +
    +
    +
    + + + SubSuccubusTail_Tailjob_RP + + +
  • sent-> [RECIPIENT_nameDef] gave [INITIATOR_nameDef] a tailjob.
  • +
    +
    +
    + + + SubSuccubusTail_Vaginal_RP + + +
  • sent-> [RECIPIENT_nameDef] [RECIPIENT_possessive] tail was vaginally inserted into [INITIATOR_nameDef].
  • +
    +
    +
    + + + SubSuccubusTail_Anal_RP + + +
  • sent-> [RECIPIENT_nameDef] [RECIPIENT_possessive] tail was anally inserted into [INITIATOR_nameDef].
  • +
    +
    +
    + + + + SubSuccubusTail_Envelop_RP + + +
  • sent-> [INITIATOR_nameDef] dick was enveloped by [RECIPIENT_nameDef] [RECIPIENT_possessive] tail.
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index 37446c0..bd8590f 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -77,5 +77,8 @@ namespace RJW_Genes public static readonly GeneDef rjw_genes_pussyhealer; public static readonly GeneDef rjw_genes_vaginal_absorber; public static readonly GeneDef rjw_genes_anal_absorber; + + // Cosmetic + public static readonly GeneDef rjw_genes_succubus_tail; } } diff --git a/Source/Genes/Life_Force/JobDriver_CastAbilityAfterSex.cs b/Source/Genes/Life_Force/JobDriver_CastAbilityAfterSex.cs index 7198890..d604cca 100644 --- a/Source/Genes/Life_Force/JobDriver_CastAbilityAfterSex.cs +++ b/Source/Genes/Life_Force/JobDriver_CastAbilityAfterSex.cs @@ -50,7 +50,7 @@ namespace RJW_Genes if (comp.props is CompProperties_SexInteractionRequirements) { CompProperties_SexInteractionRequirements sexpropsreq = comp.props as CompProperties_SexInteractionRequirements; - this.Sexprops = CompAbility_SexInteractionRequirements.GenerateSexProps(this.pawn, this.Partner, sexpropsreq); + this.Sexprops = CustomSexInteraction_Helper.GenerateSexProps(this.pawn, this.Partner, sexpropsreq); } } this.Start(); diff --git a/Source/Genes/Life_Force/Patch_LifeForce.cs b/Source/Genes/Life_Force/Patch_LifeForce.cs index af4370b..a20317b 100644 --- a/Source/Genes/Life_Force/Patch_LifeForce.cs +++ b/Source/Genes/Life_Force/Patch_LifeForce.cs @@ -20,58 +20,144 @@ namespace RJW_Genes if (props.pawn == null || !props.hasPartner()) return; + // Exit if pawn has fertilin themself, it won't give any if it has lifeforce themself. + if (GeneUtility.HasLifeForce(props.pawn)) + { + return; + } + + //Summary// + //We use the positions of the pawn (dom or sub) and based on that which interactions will transfer fertilin + //By checking isreceiver we know if the succubus is the dom or the sub and if the situation is reverse we also swap the function we use + // float absorb_factor = 0f; if (GeneUtility.HasLifeForce(props.partner)) { - if (props.sexType == xxx.rjwSextype.Oral || props.sexType == xxx.rjwSextype.Fellatio || props.sexType == xxx.rjwSextype.Sixtynine) + Pawn succubus = props.partner; + if (!props.isRevese) { - absorb_factor += 1f; - //Currently taking the sum of all penises, maybe I should just consider one at random - } - else if (props.sexType == xxx.rjwSextype.Vaginal && GeneUtility.HasGeneNullCheck(props.partner, GeneDefOf.rjw_genes_vaginal_absorber)) - { - absorb_factor += 1f; - } - else if (props.sexType == xxx.rjwSextype.Anal && GeneUtility.HasGeneNullCheck(props.partner, GeneDefOf.rjw_genes_anal_absorber)) - { - absorb_factor += 1f; - } - else if (props.sexType == xxx.rjwSextype.DoublePenetration) - { - if (GeneUtility.HasGeneNullCheck(props.partner, GeneDefOf.rjw_genes_vaginal_absorber)) + if (props.isReceiver) { - absorb_factor += 0.5f; + // Scenario Dom Succubus, normal + absorb_factor = BaseDom(props, succubus); } - if (GeneUtility.HasGeneNullCheck(props.partner, GeneDefOf.rjw_genes_anal_absorber)) + else { - absorb_factor += 0.5f; + // Scenario Sub Succubus, normal + absorb_factor = BaseSub(props, succubus); } } - if (absorb_factor != 0) - { + else + { + if (props.isReceiver) + { + // Scenario Dom Succubus, Reverse + absorb_factor = BaseSub(props, succubus); + } + else + { + // Scenario Sub Succubus, Reverse + absorb_factor = BaseDom(props, succubus); + } + } + + //If we remove this check fertelin is always lost, but the succubus doesn't always gain any + if (absorb_factor != 0f) + { AbsorbFertilin(props, absorb_factor); } } } public static void AbsorbFertilin(SexProps props, float absorb_factor = 1f) - { + { Pawn_GeneTracker genes = props.partner.genes; Gene_LifeForce gene = genes.GetFirstGeneOfType(); float multiplier = Rand.Range(0.10f, 0.40f); //Around quarter get ejected everytime pawn cums Hediff fertelin_lost = props.pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.Fertilin_Lost); if (fertelin_lost == null) - { + { Hediff new_fertelin_lost = HediffMaker.MakeHediff(HediffDefOf.Fertilin_Lost, props.pawn); props.pawn.health.AddHediff(new_fertelin_lost); new_fertelin_lost.Severity = multiplier; } - else - { + else + { multiplier *= 1 - fertelin_lost.Severity; fertelin_lost.Severity += multiplier; - - } - gene.Resource.Value += CumUtility.GetTotalFluidAmount(props.partner) / 100 * absorb_factor * multiplier; + + } + //Currently taking the sum of all penises, maybe I should just consider one at random + gene.Resource.Value += CumUtility.GetTotalFluidAmount(props.pawn) / 100 * absorb_factor * multiplier; + } + + + public static float BaseDom(SexProps props, Pawn succubus) + { + float absorb_factor = 0f; + if (props.sexType == xxx.rjwSextype.Sixtynine) + { + absorb_factor += 1f; + + } + else if (props.sexType == xxx.rjwSextype.Vaginal) + { + //with insertion absorbtion or vaginal cum absorbtion + //absorb_factor += 1f; + } + else if (props.sexType == xxx.rjwSextype.DoublePenetration) + { + if (GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_vaginal_absorber)) + { + //with insertion absorbtion? + //absorb_factor += 0.5f; + } + if (GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_anal_absorber)) + { + //with insertion absorbtion? + //absorb_factor += 0.5f; + } + } + else if (props.sexType == xxx.rjwSextype.Scissoring) + { + //with vaginal cum absorption && vaginal absorbtion + //absorb_factor += 1f; + } + return absorb_factor; + } + + public static float BaseSub(SexProps props, Pawn succubus) + { + float absorb_factor = 0f; + if (props.sexType == xxx.rjwSextype.Oral || props.sexType == xxx.rjwSextype.Fellatio || props.sexType == xxx.rjwSextype.Sixtynine) + { + absorb_factor += 1f; + + } + else if (props.sexType == xxx.rjwSextype.Vaginal && GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_vaginal_absorber)) + { + absorb_factor += 1f; + } + else if (props.sexType == xxx.rjwSextype.Anal && GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_anal_absorber)) + { + absorb_factor += 1f; + } + else if (props.sexType == xxx.rjwSextype.DoublePenetration) + { + if (GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_vaginal_absorber)) + { + absorb_factor += 0.5f; + } + if (GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_anal_absorber)) + { + absorb_factor += 0.5f; + } + } + else if (props.sexType == xxx.rjwSextype.Scissoring || props.sexType == xxx.rjwSextype.Cunnilingus) + { + //with vaginal cum absorbtion + //absorb_factor += 1f; + } + return absorb_factor; } } } diff --git a/Source/Interactions/CompAbility_SexInteractionRequirements.cs b/Source/Interactions/CompAbility_SexInteractionRequirements.cs new file mode 100644 index 0000000..f3b9c26 --- /dev/null +++ b/Source/Interactions/CompAbility_SexInteractionRequirements.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using RimWorld; + +namespace RJW_Genes +{ + public class CompAbility_SexInteractionRequirements : AbilityComp + { + public CompProperties_SexInteractionRequirements Props + { + get + { + return (CompProperties_SexInteractionRequirements)this.props; + } + } + + + } +} diff --git a/Source/Genes/Life_Force/CompProperties_SexInteractionRequirements.cs b/Source/Interactions/CompProperties_SexInteractionRequirements.cs similarity index 100% rename from Source/Genes/Life_Force/CompProperties_SexInteractionRequirements.cs rename to Source/Interactions/CompProperties_SexInteractionRequirements.cs diff --git a/Source/Genes/Life_Force/CompAbility_SexInteractionRequirements.cs b/Source/Interactions/CustomSexInteraction_Helper.cs similarity index 95% rename from Source/Genes/Life_Force/CompAbility_SexInteractionRequirements.cs rename to Source/Interactions/CustomSexInteraction_Helper.cs index 5e926c5..315ac64 100644 --- a/Source/Genes/Life_Force/CompAbility_SexInteractionRequirements.cs +++ b/Source/Interactions/CustomSexInteraction_Helper.cs @@ -13,16 +13,8 @@ using rjw.Modules.Interactions.Implementation; using rjw.Modules.Interactions.Defs.DefFragment; namespace RJW_Genes { - public class CompAbility_SexInteractionRequirements : AbilityComp - { - public CompProperties_SexInteractionRequirements Props - { - get - { - return (CompProperties_SexInteractionRequirements)this.props; - } - } - + public class CustomSexInteraction_Helper + { public static List GenerateInteractionDefList(Pawn pawn, Pawn pawn2, CompProperties_SexInteractionRequirements sexpropsreq) { List tags = new List(); diff --git a/Source/Interactions/DomSuccubusTailCustomRequirementHandler.cs b/Source/Interactions/DomSuccubusTailCustomRequirementHandler.cs new file mode 100644 index 0000000..cfa3ebf --- /dev/null +++ b/Source/Interactions/DomSuccubusTailCustomRequirementHandler.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using RimWorld; +using rjw.Modules.Interactions; +using rjw.Modules.Interactions.Internals.Implementation; +using rjw.Modules.Interactions.Objects; +using rjw; +using rjw.Modules.Interactions.Enums; + +//Modefied code based of RJW-AI code at https://gitgud.io/Ed86/rjw-ia/-/tree/master/ +namespace RJW_Genes +{ + [StaticConstructorOnStartup] + public class DomSuccubusTailCustomRequirementHandler : ICustomRequirementHandler + { + public string HandlerKey + { + get + { + return "DomSuccubusTailCustomRequirementHandler"; + } + } + + + static DomSuccubusTailCustomRequirementHandler() + { + Register(); + } + public static void Register() + { + InteractionRequirementService.CustomRequirementHandlers.Add(new DomSuccubusTailCustomRequirementHandler()); + if (Prefs.DevMode) + { + Log.Message("DomSuccubusTailCustomRequirementHandler registered: "); + } + } + + public bool FufillRequirements(InteractionWithExtension interaction, InteractionPawn dominant, InteractionPawn submissive) + { + if (GeneUtility.HasGeneNullCheck(dominant.Pawn, GeneDefOf.rjw_genes_succubus_tail)) + { + return true; + } + return false; + } + //public static readonly StringListDef filter = DefDatabase.GetNamed("DomSuccubusTailFilter"); + } +} diff --git a/Source/Interactions/SubSuccubusTailCustomRequirementHandler - Copy.cs b/Source/Interactions/SubSuccubusTailCustomRequirementHandler - Copy.cs new file mode 100644 index 0000000..5824aa5 --- /dev/null +++ b/Source/Interactions/SubSuccubusTailCustomRequirementHandler - Copy.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using RimWorld; +using rjw.Modules.Interactions; +using rjw.Modules.Interactions.Internals.Implementation; +using rjw.Modules.Interactions.Objects; +using rjw; +using rjw.Modules.Interactions.Enums; + +//Modefied code based of RJW-AI code at https://gitgud.io/Ed86/rjw-ia/-/tree/master/ +namespace RJW_Genes +{ + [StaticConstructorOnStartup] + public class SubSuccubusTailCustomRequirementHandler : ICustomRequirementHandler + { + public string HandlerKey + { + get + { + return "SubSuccubusTailCustomRequirementHandler"; + } + } + + + static SubSuccubusTailCustomRequirementHandler() + { + Register(); + } + public static void Register() + { + InteractionRequirementService.CustomRequirementHandlers.Add(new SubSuccubusTailCustomRequirementHandler()); + if (Prefs.DevMode) + { + Log.Message("SubSuccubusTailCustomRequirementHandler registered: "); + } + } + + public bool FufillRequirements(InteractionWithExtension interaction, InteractionPawn dominant, InteractionPawn submissive) + { + if (GeneUtility.HasGeneNullCheck(submissive.Pawn, GeneDefOf.rjw_genes_succubus_tail)) + { + return true; + } + return false; + } + //public static readonly StringListDef filter = DefDatabase.GetNamed("SubSuccubusTailFilter"); + } +} diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index 5f043ec..1039e64 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -116,10 +116,10 @@ - + - + @@ -137,7 +137,10 @@ + + +