diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index efb3423..5e50e3c 100644 Binary files a/Common/Assemblies/Rjw-Genes.dll and b/Common/Assemblies/Rjw-Genes.dll differ diff --git a/Common/Defs/Genes/GeneDefs_Cosmetic.xml b/Common/Defs/Genes/GeneDefs_Cosmetic.xml index 47057a0..01e1f5d 100644 --- a/Common/Defs/Genes/GeneDefs_Cosmetic.xml +++ b/Common/Defs/Genes/GeneDefs_Cosmetic.xml @@ -31,7 +31,7 @@ - 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 @@ + + +