From 400b48787dff0e6f6da4e01c8578bafbfa9cd57b Mon Sep 17 00:00:00 2001 From: Shabakur Date: Fri, 6 Jan 2023 12:42:04 +0100 Subject: [PATCH] Several genes and changes - Succubus wings now have the flight abilty (same as longjump) - Modified aphrodisiac pheromones to increase with strenght based on carrier's sexdrive. - Added paralysing kiss, touch range stun which uses fertilin - Added seduce, beckon like ability which results in sex if target reached caster. Uses fertilin --- Common/Assemblies/Rjw-Genes.dll | Bin 73728 -> 78336 bytes Common/Defs/AbilityDefs/Ability_Flight.xml | 28 ++++ .../AbilityDefs/Ability_ParalysingKiss.xml | 44 ++++++ Common/Defs/AbilityDefs/Ability_Seduce.xml | 43 ++++++ Common/Defs/Genes/GeneDefs_Cosmetic.xml | 6 + Common/Defs/Genes/GeneDefs_LifeForce.xml | 80 +++++++++-- Common/Defs/Genes/GeneDefs_SexSpecial.xml | 2 +- Common/Defs/HediffDefs/Hediffs_Genes.xml | 24 +++- Common/Defs/JobDefs/Jobs_LifeForce.xml | 8 ++ Common/Defs/JobDefs/Jobs_SexOnSpot.xml | 17 +++ .../Life_Force/CompAbilityEffect_Seduce.cs | 82 +++++++++++ .../Genes/Life_Force/CompProperties_Seduce.cs | 21 +++ Source/Genes/Life_Force/Gene_LifeForce.cs | 3 - .../HediffCompProperties_RemoveSubmit.cs | 18 +++ .../Life_Force/HediffComp_RemoveSubmit.cs | 42 ++++++ .../Life_Force/JobDriver_Drink_Cumflation.cs | 131 ------------------ Source/Genes/Life_Force/JobDriver_Seduced.cs | 54 ++++++++ .../Genes/Life_Force/JobDriver_SexOnSpot.cs | 108 +++++++++++++++ .../Life_Force/JobDriver_SexOnSpotReceiver.cs | 84 +++++++++++ .../Patch_SexTicks_ChangePsyfocus.cs | 5 +- .../Special/Gene_Aphrodisiac_Pheromones_.cs | 39 ++++-- Source/HediffDefOf.cs | 1 + Source/Interactions/GenesPartKindUsageRule.cs | 6 - Source/JobDefOf.cs | 3 + Source/Rjw-Genes.csproj | 9 +- 25 files changed, 687 insertions(+), 171 deletions(-) create mode 100644 Common/Defs/AbilityDefs/Ability_Flight.xml create mode 100644 Common/Defs/AbilityDefs/Ability_ParalysingKiss.xml create mode 100644 Common/Defs/AbilityDefs/Ability_Seduce.xml create mode 100644 Common/Defs/JobDefs/Jobs_SexOnSpot.xml create mode 100644 Source/Genes/Life_Force/CompAbilityEffect_Seduce.cs create mode 100644 Source/Genes/Life_Force/CompProperties_Seduce.cs create mode 100644 Source/Genes/Life_Force/HediffCompProperties_RemoveSubmit.cs create mode 100644 Source/Genes/Life_Force/HediffComp_RemoveSubmit.cs delete mode 100644 Source/Genes/Life_Force/JobDriver_Drink_Cumflation.cs create mode 100644 Source/Genes/Life_Force/JobDriver_Seduced.cs create mode 100644 Source/Genes/Life_Force/JobDriver_SexOnSpot.cs create mode 100644 Source/Genes/Life_Force/JobDriver_SexOnSpotReceiver.cs diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index 1294fcbbfd39c5fa7ee57f70329c094e7a90dfa1..6c73855dd4bb9105ff27a27fdb991f4a115fcf79 100644 GIT binary patch literal 78336 zcmdpfd3=*q_V>w?vQi-7(3+}vJ#OEpWlBcdJ0ees~325&<=Kb;WO#9!L_6KDa)80#S>@GX)T)95F@u1^7L3~ zpHWFsilvGuU?I{K^{UZG7a=_ZPogf8)|A~$FvN)N1Rr$%v(k*^EXw~9PXlEV{su$u z@tlC(3po%S|Jp5-+L89(;6+4ElbjRyC=*_B{;Uhn2Y!8T*bAQcYS4TU6Vjg63J~4aa3u?%+TGY(S3NNU#(ma%na2sW7{&eI?afGHjBFJqE zSHp_bVE;_b-v_BQSHul!n*(4Ofe=X2(UjSt5he!EK zpQLAMhrAgmGMod#M|!}5wy0588a{(iq_U+BPc%J`HQXOU?w~i5`~#3m(IQ~E9p3Oj zJjy^FglG9)Xr)75Ph2aw*+j7pw=yAo~SQRwb@z+ zLvfS~Q?&3gNQQ?1_?lCLMT%%*Im1I)pdP>p38%O6Bdg|b0P4mQW$Gz5haY`Xx9RF3 zMft*Lf9`UpX0`cY6W0aXc@=Cy)ID0Lm-0ANsGdsRt%q7v*}4%4RBkV;Xbcsqr;+*Xzyw1G!xZEa_FXqRT~*nc&N3}LVBqd zorBg8D5%m1xe3iY?x$vz>U8UV^weOek1lOACD--AET9R9* zDz}ij4OZnMvg42=z;%yy&f}y<^P`vOZas{_*zK(@)7#KPZKdVDvbHc1hxD;9v~@g~ zrR~h|qw@v>*`i|?bf5=%TE{`gtwm0NREncq%MR#{$caEA69J+v$OeL>=Of)V2~;h7 z5@4$C44=$0t*m-7QfV&zkbXRu*$m8&?iu7j1i2P?Bnf(}tsYx|rN(z6W%tk(ET%HvEEI?1Ga^mry+WrBYWvLWNM&3Yos~=;l9ynH$98rYcW{d^-{(R=N zwR{Z0w{OI->qkp+`_cM>t@WtVFlyKxn1YUV0x)!}#mHQ0jb6y*^|OvFccR}efsPXb zYV1clpcHQZk@Jz$SApisiQEcHK#MFuN{d_o=?TyT->ArO9N`vSf>pwEs>u& zMt+kqoZoA-$zu@{tRp?G?Fa`NAR3lCg2v>|r0g&l!B|sCGb%<)s*7(r)&8utl5VhsayKSGER-49~0{3J&hA#kS!Ycs8W zIOCQf`6)Eu@)C^Amw^(>Lju(tOm&9Rou!e>L9D^MYl4RW^o(4 zQ^TpsMqVeP|1#3i7K{vtkzvtPWf5la0hu;s5|964QW+9rQa2>nq%>D3)9DhEToL%} zo?@LcITiWDtQTRH&1{x4ZdWNaovrL@)BIf#IxTV~vTKnBuFzumulb_&9K_o-|5d_a ztUULKa!;D&Lfw@dJZm4SlulJzy-KSLheZuhE>81zg8_jKh72Yw!qz6)X*3i=;j|d>vVi>y%=tBfJ9$zMeh zuh<_uErLIp@tF9#qv`rf08oh>B>x`(QZ%DKW&3Xh8f9~oqS!!^>r~?2@NE!qN-GQB zj^trQJ20|H?YgqVcR(O;Qq1E~hLh++I#ZRCNz}MsOzq$olm3HW#U{V*MA;qvVig*{ zy2J;_|IRPYahPAf#Qc&l#%gjjM7btMz)2&*vyDoQu@GH7a46=#wA8gQHn#>1AtsZ^ z9$}u(%#-}_NO6u1kz$e&Db*i4YXgO*Sn*8LF;=WZ+4DbZ1Dx-$SfLFbsVx@$|Fom? z-ghia<~ke071Md|OA?94o~a#T&!qnt`~T!KE72kh|7Wr19EZiebDxicDEmC&$UY~D zNc~lz9@V(cLQWQw`yXVFtA*p5fKjG|VJXxh;0|g#|kJ!leJk7anSo ze8EJce8E%(U*;!#VUF1sF5+-sIb7wqn|9&!A~arH-7Rkk>n>@ zf$|fRDEvG>;U{y{O(4KUqr$KbiD@-{te*DR<0KQ6Oxf98EgayKLrp#!+9D{&3`UhnrfZ?9w;S*J@zZX@IS*+ z{mfE}8=WrXo%D|$WNu{~qSdmgn+!ky|#u!Jj zg{6{g@u6)KQF?T&9`%hUUKu71)L`Mva=3*pM%3StUoXicmd1b{{+in3`EH5{wNUJV{}lc zhL1~#R+w9F+g3=my}@7`fFBct9)Lt5%tw+))Kc4a&c1`en@7-b1PPOlw>bOTN7Hcx z36qYUoc+&7({Tg|la6;d`z{9W0(2ISBS@HZyvNyhGkE_9I*uS=(y@oLf56~KG3`u( z+s#1>5gLN0br~9%Ti2pk=Gb&z?AWA(7(2!T?}ePPX*{3}>DEgi&%4HYbRA?pHe(|> zilq>+2tQ=^b|8-S2m~c152c-719&~e(#*_`VqIm+PK{;04E#{QVB(xGku{d)%xb5J zbH?(0XwDZ?E=3+a9~L@#Xrv(%6O}k%Xh^cuZsx|)hZ(~@McA;=gqRFtv1M_0oWCSo zI&4GC%=BPjTF(9dSr{VgC1VGE;01?pL_IWl6TYPtt2?6xKjI7@Gx!9+AbyHu+h+hi z|6agAprI?D@n9u_&uY}xbNHkq&3~9@KZlT<_=dkgs^xL05AWlQe>sfzY>Zc4a2RiE zjEBWJpWA6P82WuYW=Ttv6A5<^Z&tGXk45ED6ylKA5zwvxQvLcpFV+^=p#2h={C@%PhQH$cSxKb7f)pBI9N(!e)|5=GWXJaHL!w`UC+RUm zqu(H{`(X`MC%7Z<91>*?1J?~4F3CH?JUsJIwijyywqG`mBi|y0arZks_%g^Chco;= z(hFX~fLop(!!`j6g$&Fa{s9u9ZU&lR@&5=MkH4{!@P3A|izAQea_?Xg%FY+R|IS&P zvOSohH)zaY=~$3UaZ&^dbe zUqH%FZ<`4-9R7nq{Qm|>bz)U7!iRuGeh2XR$%1}p0nj5Fpw}0+#t~;hw%3=m{X>v0?X3HG76dtjFxM7LgdJ1Dqd1EjoDC_W>jaA;%ev!WmF^6k;>p$;+z$G;MVL3 zZ7E!k%i3}>a!lX@M;x`JGB;Ko$8mLVKNtwlvZOu4!!B! zT$+C?>`675=$xEp!f;|i)Gy>x+WY-CDiLxC@vF*Fjw`w@VF<$bl87reNW|5ajl+LE zk_Idb=a>AJ=kVAg>A+JQ3&x`pq&myhxkp;Cz!}M4LEKp>cSt{ju;4GT_prtkNuJsK{gU80EM;u0%O5DQ7aKaEEVlmc!%d zRBt#7y85ibEgiJ7Y^39@Y>4XgyoT6-cocFx5`A9vExhmQa{ip6JLLR1)hXxC1D7L* z(>Q`Y{jeiw%$MrCca+H{TwBON`Kra~GPZ(r6WWa~$A}RxxDg+NT!6MSFreUMFc0ZZ z@?s~}*B^Fbt>%xuH1D3+{9z-EHdF+E5@Q5r3cNJuLzl@S!7FgH0~c}JL5nXXHe~Vm z#;41;5+!{;%~2k9x=t-W+ZLMT4E1r9S9UVUe0{_LAXw!n?`&A=VLS4Wp=a~)>k&t^ z1xLvmA8n>`7SF-bpuGq!O%i zw8#Xsrzz;9TN6CS`6rGvX?9nip;ntvdkDx8Cm z3J(V0(HzsmF^mrZ03u=vc~5b)$WXBS^#Is2GNc=T8OcT@+lH~oZ~z=xN1E^qj{xvi zX}Pkj!y3p=%iyPn>sJc&kAy%d-%x`2*SxVf3Oqw>G?Ha1-DzV$-D4Y=T@bc$v&#?;!^c^ zT_vQwabMuQI-|YKHLV(3R&y_%gxucnNvz}eBQS47OpSX>2z$_7DkCMYV~=Sz-t{p@ z=xU1*+l;uSw}?%Gb0?z!zO}cQaoEKB-&j5KHjPK=?yzd$tD%lCCOVx{E%&jl zlcA*UapZDDrXZ?y_ace=ftW9KOnVS>Mw%fKnZjTyKpW;dwaf7w5{LB1pssZq7^UsZ z@n^!F^BbTf%_Zf@j-{Hso24&uk1T4K?2_&|)ju6svuw^#6;^%K!M0O@Iunb^Qm1rg z%q}y)h|c74aCH+8T!Iy!EmVPL5BRM1Yh^Ezj7woj0Vp?ECAZw{X+Y+zDmU##-k!+Y z`Z(Nh>(=NC@Ij9-jGT^A!e;=awCv4)XMQRFT8njg2ICV^cD6HtPx&hv!3&9%e&ZzDBSR<2m*I7FG^@8jXX#QpDMo7$@Wn%k51GR_YG(t5po!gy|ua zVPNXjsyqz~pA?5KZ)JV9NFCbfLc`Yh+#fna_v1S35vS7sH!lbANte&K@k%CtSbCb4 z8`*vwjJnGMRuk>;ca=1|u_(YA`tVnU>9MJsUjj{2I!{{bQOOu4Uq(gX_Co6d6c#-Z zh~~clN$u^?$yws6j!mX7)>?6}>5gJTw!tfVy3Kzf=l4Yy;SmTh&5tuX)MY`HPHQzH z%(<8=I72uBM#~`hphcD-8IA(@vESrwyNFZm00w6%lB>{kECzmY4EHZX%8-&{rSK&n zlxHeAMd1}&=vadSkNNsHQQvgEWoj&b?qEP~xhQUlNjAJ3x%n3M3Owce4=C+YPUB@O zI1nz#<~F4&YWOm+(t>@l23?7iT)@2?iBJ#aGuG#}@D(7mt^x>O34pC3q2NxV)qfQT z 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 z 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 + + + rjw_genes_flight + + Fly to a distant location using wings. + Genes/Icons/Succubus_Wings + 1250 + false + + Verb_CastAbilityJump + + false + false + 0.5 + 19.9 + true + Longjump_Jump + Longjump_Land + + true + false + false + + + CastJump + + \ No newline at end of file diff --git a/Common/Defs/AbilityDefs/Ability_ParalysingKiss.xml b/Common/Defs/AbilityDefs/Ability_ParalysingKiss.xml new file mode 100644 index 0000000..eb2a13d --- /dev/null +++ b/Common/Defs/AbilityDefs/Ability_ParalysingKiss.xml @@ -0,0 +1,44 @@ + + + + rjw_genes_paralysingkiss + + Paralyse someone briefly with a kiss. + Things/Mote/Heart + true + true + false + + 5 + + Mote_CoagulateStencil + Coagulate + Coagulate_Cast + 402 + + Verb_CastAbilityTouch + false + -1 + 1 + + true + false + false + false + true + + + +

  • + CompAbilityEffect_Stun + -15 +
  • +
  • + Heart . +
  • +
  • + 0.05 +
  • + + + \ No newline at end of file diff --git a/Common/Defs/AbilityDefs/Ability_Seduce.xml b/Common/Defs/AbilityDefs/Ability_Seduce.xml new file mode 100644 index 0000000..fb87fea --- /dev/null +++ b/Common/Defs/AbilityDefs/Ability_Seduce.xml @@ -0,0 +1,43 @@ + + + + rjw_genes_seduce + + Seduce the target to approach the caster. + Things/Mote/Heart + True + true + true + false + + 10 + + Mote_CoagulateStencil + Coagulate + Coagulate_Cast + + Verb_CastAbility + 10 + 1 + + false + false + false + false + true + + + +
  • + RJW_Genes.CompAbilityEffect_Seduce + Caster +
  • +
  • + Heart +
  • +
  • + 0.1 +
  • +
    +
    +
    \ No newline at end of file diff --git a/Common/Defs/Genes/GeneDefs_Cosmetic.xml b/Common/Defs/Genes/GeneDefs_Cosmetic.xml index 01e1f5d..a4460d2 100644 --- a/Common/Defs/Genes/GeneDefs_Cosmetic.xml +++ b/Common/Defs/Genes/GeneDefs_Cosmetic.xml @@ -19,6 +19,12 @@ Genes/Icons/Succubus_Wings (0.75, 0.75, 0.75) 1000 + +
  • rjw_genes_flight
  • +
    + + rjw_genes_flight + 1 Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings diff --git a/Common/Defs/Genes/GeneDefs_LifeForce.xml b/Common/Defs/Genes/GeneDefs_LifeForce.xml index 21d63f6..76a1463 100644 --- a/Common/Defs/Genes/GeneDefs_LifeForce.xml +++ b/Common/Defs/Genes/GeneDefs_LifeForce.xml @@ -44,20 +44,20 @@ 10 rjw_genes_fertilin -
  • rjw_genes_pussyheal
  • +
  • rjw_genes_pussyheal
  • - rjw_genes_pussyheal + rjw_genes_pussyheal 1 -1 18 - -
  • life
  • -
  • pussy
  • -
  • heal
  • -
    + +
  • life
  • +
  • pussy
  • +
  • heal
  • +
    @@ -71,20 +71,72 @@ 11 rjw_genes_fertilin -
  • rjw_genes_cockeater
  • +
  • rjw_genes_cockeater
  • - rjw_genes_cockeater + rjw_genes_cockeater 1 -1 18 - -
  • life
  • -
  • cock
  • -
  • eat
  • -
    + +
  • life
  • +
  • cock
  • +
  • eat
  • +
    +
    + + + + rjw_genes_paralysingkiss + + paralysing kiss + Carriers of this gene are able to briefly stun an enemy with a kiss. + Things/Mote/Heart + rjw_genes_lifeforce + 11 + rjw_genes_fertilin + +
  • rjw_genes_paralysingkiss
  • +
    + + rjw_genes_paralysingkiss + + 1 + -1 + 18 + + +
  • stun
  • +
  • kiss
  • +
    +
    +
    + + + rjw_genes_seduce + + seduction + Carriers of this gene are able to seduce a pawn into having sex with them. + Things/Mote/Heart + rjw_genes_lifeforce + 11 + rjw_genes_fertilin + +
  • rjw_genes_seduce
  • +
    + + rjw_genes_seduce + + 1 + -1 + 18 + + +
  • stun
  • +
  • kiss
  • +
    diff --git a/Common/Defs/Genes/GeneDefs_SexSpecial.xml b/Common/Defs/Genes/GeneDefs_SexSpecial.xml index 3761995..6f90175 100644 --- a/Common/Defs/Genes/GeneDefs_SexSpecial.xml +++ b/Common/Defs/Genes/GeneDefs_SexSpecial.xml @@ -15,7 +15,7 @@ rjw_genes_special RJW_Genes.Gene_Aphrodisiac_Pheromones - Pheremones of this pawn induce an increased sexdrive to others nearby. + Carriers of this gene create an aphrodisiac pheremones which induce an increased sexdrive to others nearby, increasing in strength as the sexdrive of the carrier increases.\nCarriers are unaffected by others with this gene. UI/Memes/FleshPurity 2 1 diff --git a/Common/Defs/HediffDefs/Hediffs_Genes.xml b/Common/Defs/HediffDefs/Hediffs_Genes.xml index 41ed3e2..d03f411 100644 --- a/Common/Defs/HediffDefs/Hediffs_Genes.xml +++ b/Common/Defs/HediffDefs/Hediffs_Genes.xml @@ -1,6 +1,4 @@  - - Aphrodisiac_Pheromone @@ -16,7 +14,7 @@
  • - false + true 2 @@ -88,4 +86,24 @@
  • + + + rjw_genes_sexually_exhausted + HediffWithComps + + Has been exhaused due to sexual activities and needs a little break before being able to stand up again.\n\nWill remove submitting hediff. + (1,1,1) + +
  • + true +
  • +
    + +
  • + 300~900 + true +
  • +
  • + + \ No newline at end of file diff --git a/Common/Defs/JobDefs/Jobs_LifeForce.xml b/Common/Defs/JobDefs/Jobs_LifeForce.xml index babb547..6992ddd 100644 --- a/Common/Defs/JobDefs/Jobs_LifeForce.xml +++ b/Common/Defs/JobDefs/Jobs_LifeForce.xml @@ -14,4 +14,12 @@ Healing someone with sex. false + + + rjw_genes_lifeforce_seduced + RJW_Genes.JobDriver_Seduced + Seduced. + false + false + \ No newline at end of file diff --git a/Common/Defs/JobDefs/Jobs_SexOnSpot.xml b/Common/Defs/JobDefs/Jobs_SexOnSpot.xml new file mode 100644 index 0000000..e904f3e --- /dev/null +++ b/Common/Defs/JobDefs/Jobs_SexOnSpot.xml @@ -0,0 +1,17 @@ + + + + + sex_on_spot + RJW_Genes.JobDriver_SexOnSpot + Making love on the spot. + false + + + + sex_on_spot_reciever + RJW_Genes.JobDriver_SexOnSpotReciever + lovin'. + false + + \ No newline at end of file diff --git a/Source/Genes/Life_Force/CompAbilityEffect_Seduce.cs b/Source/Genes/Life_Force/CompAbilityEffect_Seduce.cs new file mode 100644 index 0000000..bf0643d --- /dev/null +++ b/Source/Genes/Life_Force/CompAbilityEffect_Seduce.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using RimWorld; +using Verse.AI; +using rjw; + +namespace RJW_Genes +{ + public class CompAbilityEffect_Seduce : CompAbilityEffect_WithDest + { + private new CompProperties_Seduce Props + { + get + { + return (CompProperties_Seduce)this.props; + } + } + public override void Apply(LocalTargetInfo target, LocalTargetInfo dest) + { + base.Apply(target, dest); + Pawn pawn = target.Thing as Pawn; + Pawn pawn2 = this.parent.pawn; + if (pawn != null && pawn2 != null && !pawn.Downed) + { + Job job = JobMaker.MakeJob(JobDefOf.rjw_genes_lifeforce_seduced, pawn2);//ChooseJob(pawn, pawn2); + job.mote = MoteMaker.MakeThoughtBubble(pawn, this.parent.def.iconPath, true); //make this image of pawn or else heart + pawn.jobs.StopAll(false, true); + pawn.jobs.StartJob(job, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true); + } + } + + public override bool Valid(LocalTargetInfo target, bool throwMessages = false) + { + + Pawn pawn = target.Pawn; + if (pawn != null) + { + if (!xxx.can_be_fucked(pawn)) + { + if (throwMessages) + { + Messages.Message(pawn.Name + " is unable to have sex", pawn, MessageTypeDefOf.RejectInput, false); + } + return false; + } + else if (pawn.IsAnimal() && !RJWSettings.bestiality_enabled) + { + if (throwMessages) + { + Messages.Message("bestiality is disabled", pawn, MessageTypeDefOf.RejectInput, false); + } + return false; + } + else if (pawn.Downed) + { + if (throwMessages) + { + Messages.Message(pawn.Name + " is unable to move", pawn, MessageTypeDefOf.RejectInput, false); + } + return false; + } + + } + return base.Valid(target, throwMessages); + } + + public override bool GizmoDisabled(out string reason) + { + reason = null; + if (!RJWSettings.rape_enabled) + { + reason = "Rape is disabled"; + return true; + } + return false; + } + } +} diff --git a/Source/Genes/Life_Force/CompProperties_Seduce.cs b/Source/Genes/Life_Force/CompProperties_Seduce.cs new file mode 100644 index 0000000..21e0cde --- /dev/null +++ b/Source/Genes/Life_Force/CompProperties_Seduce.cs @@ -0,0 +1,21 @@ +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 CompProperties_Seduce : CompProperties_EffectWithDest + { + public CompProperties_Seduce() + { + this.compClass = typeof(CompAbilityEffect_Seduce); + } + + public StatDef durationMultiplier; + } +} + diff --git a/Source/Genes/Life_Force/Gene_LifeForce.cs b/Source/Genes/Life_Force/Gene_LifeForce.cs index de19281..dcb61d1 100644 --- a/Source/Genes/Life_Force/Gene_LifeForce.cs +++ b/Source/Genes/Life_Force/Gene_LifeForce.cs @@ -29,13 +29,10 @@ namespace RJW_Genes { yield return gizmo; } - IEnumerator enumerator = null; foreach (Gizmo gizmo2 in GeneResourceDrainUtility.GetResourceDrainGizmos(this)) { yield return gizmo2; } - enumerator = null; - yield break; yield break; } diff --git a/Source/Genes/Life_Force/HediffCompProperties_RemoveSubmit.cs b/Source/Genes/Life_Force/HediffCompProperties_RemoveSubmit.cs new file mode 100644 index 0000000..fd68856 --- /dev/null +++ b/Source/Genes/Life_Force/HediffCompProperties_RemoveSubmit.cs @@ -0,0 +1,18 @@ +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 HediffCompProperties_RemoveSubmit :HediffCompProperties + { + + public HediffCompProperties_RemoveSubmit() + { + this.compClass = typeof(HediffComp_RemoveSubmit); + } + } +} diff --git a/Source/Genes/Life_Force/HediffComp_RemoveSubmit.cs b/Source/Genes/Life_Force/HediffComp_RemoveSubmit.cs new file mode 100644 index 0000000..01891cc --- /dev/null +++ b/Source/Genes/Life_Force/HediffComp_RemoveSubmit.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using RimWorld; +using rjw; +namespace RJW_Genes +{ + public class HediffComp_RemoveSubmit : HediffComp + { + public HediffCompProperties_RemoveSubmit Props + { + get + { + return (HediffCompProperties_RemoveSubmit)this.props; + } + } + + public override void CompPostPostRemoved() + { + base.CompPostPostRemoved(); + HediffWithComps submitting = this.Pawn.health.hediffSet.GetFirstHediffOfDef(xxx.submitting) as HediffWithComps; + submitting.CurStage.becomeVisible = false; + if (submitting != null) + { + foreach (HediffComp comp in submitting.comps) + { + HediffComp_Disappears hediffComp = comp as HediffComp_Disappears; + if (hediffComp != null) + { + hediffComp.ticksToDisappear = 1; + //pawn.health.RemoveHediff(submitting); + //removing the hediff directly gives an error, ArgementOutOrRange, making the remaining time 1 ticks should have the same effect without the error + } + } + } + + } + } +} diff --git a/Source/Genes/Life_Force/JobDriver_Drink_Cumflation.cs b/Source/Genes/Life_Force/JobDriver_Drink_Cumflation.cs deleted file mode 100644 index b1ab9a1..0000000 --- a/Source/Genes/Life_Force/JobDriver_Drink_Cumflation.cs +++ /dev/null @@ -1,131 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using Verse; -using Verse.AI; -using rjw; -using rjw.Modules.Interactions.Enums; -using rjw.Modules.Interactions.Helpers; -using rjw.Modules.Interactions.Objects; -using rjw.Modules.Interactions.Contexts; -using rjw.Modules.Interactions.Implementation; - -namespace RJW_Genes -{ - public class JobDriver_DrinkCumflation : JobDriver_SexBaseInitiator - { - //Summary// - //WIP is for custom interaction - protected override IEnumerable MakeNewToils() - { - base.setup_ticks(); - this.rape = !LovePartnerRelationUtility.LovePartnerRelationExists(this.pawn, this.Partner); - JobDef PartnerJob = rape? xxx.gettin_raped: xxx.getting_quickie; - this.FailOnDestroyedNullOrForbidden(TargetIndex.A); - this.FailOnSomeonePhysicallyInteracting(TargetIndex.A); - this.FailOn(() => this.pawn.Drafted); - this.FailOn(() => this.pawn.IsFighting()); - this.FailOn(() => this.Partner.IsFighting()); - yield return Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch); - yield return new Toil - { - defaultCompleteMode = ToilCompleteMode.Instant, - socialMode = RandomSocialMode.Off, - initAction = delegate () - { - Job newJob = JobMaker.MakeJob(PartnerJob, this.pawn, this.Partner); - this.Partner.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true); - } - }; - - Toil toil = new Toil(); - toil.defaultCompleteMode = ToilCompleteMode.Never; - toil.defaultDuration = this.duration; - toil.handlingFacing = true; - toil.FailOn(() => this.Partner.CurJob.def != PartnerJob); - toil.initAction = delegate () - { - this.Partner.pather.StopDead(); - this.Partner.jobs.curDriver.asleep = false; - this.SetInteraction(); - this.cumflation = this.Partner.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("Cumflation")); - this.gene_LifeForce = (this.pawn.genes != null) ? this.pawn.genes.GetFirstGeneOfType() : null; - this.Start(); - }; - toil.tickAction = delegate () - { - if (this.pawn.IsHashIntervalTick(this.ticks_between_hearts)) - { - this.ThrowMetaIconF(this.pawn.Position, this.pawn.Map, FleckDefOf.Heart); - } - this.SexTick(this.pawn, this.Partner, true, true); - SexUtility.reduce_rest(this.Partner, 1f); - SexUtility.reduce_rest(this.pawn, 2f); - if (this.ticks_left <= 0) - { - this.ReadyForNextToil(); - } - }; - toil.AddFinishAction(delegate - { - this.End(); - }); - yield return toil; - yield return new Toil - { - initAction = delegate () - { - SexUtility.ProcessSex(this.Sexprops); - }, - defaultCompleteMode = ToilCompleteMode.Instant - }; - yield break; - } - - public void Reduce_Cumflation() - { - this.reductiontick--; - if (reductiontick <= 0) - { - if (this.cumflation != null && this.gene_LifeForce != null) - { - this.cumflation.Severity =+ 0.01f; - gene_LifeForce.Resource.Value += 0.01f; - } - this.reductiontick = 60; - } - - } - public override bool TryMakePreToilReservations(bool errorOnFailed) - { - return this.pawn.Reserve(this.job.GetTarget(TargetIndex.A), this.job, 1, -1, null, errorOnFailed); - } - - public void SetInteraction() - { - InteractionDef interaction = rape ? DefDatabase.GetNamed("Rape_Reverse_Cunnilingus") : DefDatabase.GetNamed("Sex_Reverse_Cunnilingus"); - - SpecificInteractionInputs inputs = new SpecificInteractionInputs - { - Initiator = this.pawn, - Partner = this.Partner, - Interaction = interaction - }; - InteractionOutputs interactionOutputs = SpecificLewdInteractionService.Instance.GenerateSpecificInteraction(inputs); - this.Sexprops.sexType = interactionOutputs.Generated.RjwSexType; - this.Sexprops.rulePack = interactionOutputs.Generated.RulePack.defName; - this.Sexprops.dictionaryKey = interaction; - this.Sexprops.isRapist = rape; - this.Sexprops.isWhoring = false; - this.Sexprops.isRevese = true; - } - - public Hediff cumflation; - public Gene_LifeForce gene_LifeForce; - int reductiontick = 60; - bool rape = false; - } -} diff --git a/Source/Genes/Life_Force/JobDriver_Seduced.cs b/Source/Genes/Life_Force/JobDriver_Seduced.cs new file mode 100644 index 0000000..8960887 --- /dev/null +++ b/Source/Genes/Life_Force/JobDriver_Seduced.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using RimWorld; +using Verse; +using Verse.AI; +using rjw; +using rjw.Modules.Interactions.Enums; +using rjw.Modules.Interactions.Helpers; +using rjw.Modules.Interactions.Objects; +using rjw.Modules.Interactions.Contexts; +using rjw.Modules.Interactions.Implementation; + +namespace RJW_Genes +{ + public class JobDriver_Seduced : JobDriver + { + //Summary// + //Makes a pawn move to seducing pawn and then tries to rape them. + protected override IEnumerable MakeNewToils() + { + + this.FailOnDespawnedNullOrForbidden(TargetIndex.A); + this.FailOn(() => !this.pawn.CanReserve(TargetA, xxx.max_rapists_per_prisoner, 0, null, false)); + this.FailOn(() => this.pawn.IsFighting()); + this.FailOn(() => this.pawn.Drafted); + + Pawn partner = this.job.GetTarget(TargetIndex.A).Pawn; + yield return Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.Touch); + yield return new Toil + { + defaultCompleteMode = ToilCompleteMode.Instant, + socialMode = RandomSocialMode.Off, + initAction = delegate () + { + if(partner != null) + { + partner.drafter.Drafted = false; + Job newJob = JobMaker.MakeJob(JobDefOf.sex_on_spot, pawn); + partner.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true); + } + } + }; + yield break; + } + + public override bool TryMakePreToilReservations(bool errorOnFailed) + { + return this.pawn.Reserve(TargetA, this.job, xxx.max_rapists_per_prisoner, 0, null, errorOnFailed); + } + } +} diff --git a/Source/Genes/Life_Force/JobDriver_SexOnSpot.cs b/Source/Genes/Life_Force/JobDriver_SexOnSpot.cs new file mode 100644 index 0000000..05c9d5b --- /dev/null +++ b/Source/Genes/Life_Force/JobDriver_SexOnSpot.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using RimWorld; +using Verse; +using Verse.AI; +using rjw; +using rjw.Modules.Interactions.Enums; +using rjw.Modules.Interactions.Helpers; +using rjw.Modules.Interactions.Objects; +using rjw.Modules.Interactions.Contexts; +using rjw.Modules.Interactions.Implementation; + +namespace RJW_Genes +{ + public class JobDriver_SexOnSpot : JobDriver_SexBaseInitiator + { + protected override IEnumerable MakeNewToils() + { + if (RJWSettings.DebugRape) + { + ModLog.Message(base.GetType().ToString() + "::MakeNewToils() called"); + } + base.setup_ticks(); + JobDef PartnerJob = JobDefOf.sex_on_spot_reciever; + this.FailOnDespawnedNullOrForbidden(this.iTarget); + this.FailOn(() => !this.pawn.CanReserve(this.Partner, xxx.max_rapists_per_prisoner, 0, null, false)); + this.FailOn(() => this.pawn.IsFighting()); + this.FailOn(() => this.Partner.IsFighting()); + this.FailOn(() => this.pawn.Drafted); + yield return Toils_Goto.GotoThing(this.iTarget, PathEndMode.Touch); + if (this.pawn.HostileTo(this.Partner)) + { + Partner.health.AddHediff(xxx.submitting); + } + yield return Toils_Goto.GotoThing(this.iTarget, PathEndMode.OnCell); + //Give thought malus to partner (I was seduced into having sex against my will) + yield return new Toil + { + defaultCompleteMode = ToilCompleteMode.Instant, + socialMode = RandomSocialMode.Off, + initAction = delegate () + { + if (!(this.Partner.jobs.curDriver is JobDriver_SexOnSpotReciever)) + { + Job newJob = JobMaker.MakeJob(PartnerJob, this.pawn); + Building_Bed building_Bed = null; + if (this.Partner.GetPosture() == PawnPosture.LayingInBed) + { + building_Bed = this.Partner.CurrentBed(); + } + this.Partner.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true); + if (building_Bed != null) + { + JobDriver_SexOnSpotReciever jobDriver_SexOnSpotReciever = this.Partner.jobs.curDriver as JobDriver_SexOnSpotReciever; + if (jobDriver_SexOnSpotReciever == null) + { + return; + } + jobDriver_SexOnSpotReciever.Set_bed(building_Bed); + } + } + } + }; + Toil toil = new Toil(); + toil.defaultCompleteMode = ToilCompleteMode.Never; + toil.defaultDuration = this.duration; + toil.handlingFacing = true; + toil.FailOn(() => this.Partner.CurJob.def != PartnerJob); + toil.initAction = delegate () + { + this.Partner.pather.StopDead(); + this.Partner.jobs.curDriver.asleep = false; + this.Start(); + }; + toil.tickAction = delegate () + { + if (this.pawn.IsHashIntervalTick(this.ticks_between_hearts)) + { + this.ThrowMetaIconF(this.pawn.Position, this.pawn.Map, FleckDefOf.Heart); + } + this.SexTick(this.pawn, this.Partner, true, true); + SexUtility.reduce_rest(this.Partner, 1f); + SexUtility.reduce_rest(this.pawn, 2f); + if (this.ticks_left <= 0) + { + this.ReadyForNextToil(); + } + }; + toil.AddFinishAction(delegate + { + this.End(); + }); + yield return toil; + yield return new Toil + { + initAction = delegate () + { + SexUtility.ProcessSex(this.Sexprops); + }, + defaultCompleteMode = ToilCompleteMode.Instant + }; + yield break; + } + } +} diff --git a/Source/Genes/Life_Force/JobDriver_SexOnSpotReceiver.cs b/Source/Genes/Life_Force/JobDriver_SexOnSpotReceiver.cs new file mode 100644 index 0000000..6399e43 --- /dev/null +++ b/Source/Genes/Life_Force/JobDriver_SexOnSpotReceiver.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using RimWorld; +using Verse; +using Verse.AI; +using rjw; +using rjw.Modules.Interactions.Enums; +using rjw.Modules.Interactions.Helpers; +using rjw.Modules.Interactions.Objects; +using rjw.Modules.Interactions.Contexts; +using rjw.Modules.Interactions.Implementation; + +namespace RJW_Genes +{ + //Modified JobDriver_SexBaseRecieverLoved from rjw + public class JobDriver_SexOnSpotReciever : JobDriver_SexBaseReciever + { + protected override IEnumerable MakeNewToils() + { + base.setup_ticks(); + this.parteners.Add(base.Partner); + if (this.pawn.relations.OpinionOf(base.Partner) < 0) + { + this.ticks_between_hearts += 50; + } + else if (this.pawn.relations.OpinionOf(base.Partner) > 60) + { + this.ticks_between_hearts -= 25; + } + this.FailOnDespawnedOrNull(this.iTarget); + this.FailOn(() => !base.Partner.health.capacities.CanBeAwake); + this.FailOn(() => this.pawn.Drafted); + this.FailOn(() => base.Partner.Drafted); + yield return Toils_Reserve.Reserve(this.iTarget, 1, 0, null); + Toil toil2 = this.MakeSexToil(); + toil2.handlingFacing = false; + yield return toil2; + yield break; + } + + // Token: 0x06000420 RID: 1056 RVA: 0x00024190 File Offset: 0x00022390 + private Toil MakeSexToil() + { + Toil toil = new Toil(); + toil.defaultCompleteMode = ToilCompleteMode.Never; + toil.socialMode = RandomSocialMode.Off; + toil.handlingFacing = true; + toil.tickAction = delegate () + { + if (this.pawn.IsHashIntervalTick(this.ticks_between_hearts)) + { + base.ThrowMetaIconF(this.pawn.Position, this.pawn.Map, FleckDefOf.Heart); + } + }; + toil.AddEndCondition(delegate + { + if (this.parteners.Count <= 0) + { + return JobCondition.Succeeded; + } + return JobCondition.Ongoing; + }); + toil.AddFinishAction(delegate + { + if (xxx.is_human(this.pawn)) + { + this.pawn.Drawer.renderer.graphics.ResolveApparelGraphics(); + } + GlobalTextureAtlasManager.TryMarkPawnFrameSetDirty(this.pawn); + Hediff submitting = this.pawn.health.hediffSet.GetFirstHediffOfDef(xxx.submitting); + if (submitting != null) + { + this.pawn.health.RemoveHediff(submitting); + this.pawn.stances.stunner.StunFor(60, this.pawn, true, true); + } + }); + toil.socialMode = RandomSocialMode.Off; + return toil; + } + } +} diff --git a/Source/Genes/Life_Force/Patch_SexTicks_ChangePsyfocus.cs b/Source/Genes/Life_Force/Patch_SexTicks_ChangePsyfocus.cs index 1a608cc..dd3444b 100644 --- a/Source/Genes/Life_Force/Patch_SexTicks_ChangePsyfocus.cs +++ b/Source/Genes/Life_Force/Patch_SexTicks_ChangePsyfocus.cs @@ -44,9 +44,6 @@ namespace RJW_Genes public static void DrinkCumflation(Pawn dom, Pawn sub) { - Log.Message("Firese"); - Log.Message(dom.Name.ToString()); - Log.Message(sub.Name.ToString()); if (GeneUtility.HasLifeForce(sub) && dom.health.hediffSet.HasHediff(HediffDef.Named("Cumflation"))) { Hediff cumflation = dom.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("Cumflation")); @@ -55,6 +52,6 @@ namespace RJW_Genes gene_LifeForce.Resource.Value += 0.05f; } } - //Maybe i can store instance and hediff so I dont need to look them up every time + //Maybe I can store gene and hediff so I dont need to look them up every time } } diff --git a/Source/Genes/Special/Gene_Aphrodisiac_Pheromones_.cs b/Source/Genes/Special/Gene_Aphrodisiac_Pheromones_.cs index 02e51de..d9f4341 100644 --- a/Source/Genes/Special/Gene_Aphrodisiac_Pheromones_.cs +++ b/Source/Genes/Special/Gene_Aphrodisiac_Pheromones_.cs @@ -19,19 +19,24 @@ namespace RJW_Genes base.Tick(); if (this.pawn.IsHashIntervalTick(2500)) { - foreach (Pawn pawn in this.AffectedPawns(this.pawn.Position, this.pawn.Map)) - { - this.InduceAphrodisiac(pawn); - } + //Only spread pheromones if sexdrive above 1 + float sexfrequency = this.pawn.GetStatValue(StatDef.Named("SexFrequency")); + if(sexfrequency > 1f) + { + foreach (Pawn pawn in this.AffectedPawns(this.pawn.Position, this.pawn.Map)) + { + this.InduceAphrodisiac(pawn, sexfrequency); + } + } } } - //Creatus an IEnumerable of all pawns which are closeby and in lineofsight + //Creatus an IEnumerable of all pawns which are closeby and in lineofsight, self and other pawns with aphrodisiac pheromones gene are skipped. private IEnumerable AffectedPawns(IntVec3 pos, Map map) { foreach (Pawn pawn in map.mapPawns.AllPawns) { - if (pos.DistanceTo(pawn.Position) < 5 && GenSight.LineOfSight(pos, pawn.Position, pawn.Map)) + if (this.pawn != null && pawn != this.pawn && pos.DistanceTo(pawn.Position) < 5 && GenSight.LineOfSight(pos, pawn.Position, pawn.Map) && !GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_aphrodisiac_pheromones)) { yield return pawn; } @@ -41,17 +46,35 @@ namespace RJW_Genes } //Applies er renews a hediff which increases sexdrive for 6 hours - private void InduceAphrodisiac(Pawn pawn) + private void InduceAphrodisiac(Pawn pawn, float sexfrequency) { Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.Aphrodisiac_Pheromone); + if (hediff != null) { hediff.Severity = 1f; } else { - pawn.health.AddHediff(HediffDefOf.Aphrodisiac_Pheromone); + Hediff aphrodisiac = HediffMaker.MakeHediff(HediffDefOf.Aphrodisiac_Pheromone, pawn); + foreach (StatModifier stat in aphrodisiac.CurStage.statFactors) + { + //Log.Message(pawn.Name.ToString()); + //Log.Message(stat.stat.defName); + //Log.Message(stat.value.ToString()); + if (stat.stat.defName == "SexFrequency") + { + stat.value = ModifySexfrequency(pawn, sexfrequency); + pawn.health.AddHediff(aphrodisiac); + } + } } } + + //Function to modify aphrodisiac strength, currently has no effect, but it's an easy hook for other modders. + public float ModifySexfrequency(Pawn pawn, float sexfrequency) + { + return sexfrequency; + } } } diff --git a/Source/HediffDefOf.cs b/Source/HediffDefOf.cs index b0425ec..66796f8 100644 --- a/Source/HediffDefOf.cs +++ b/Source/HediffDefOf.cs @@ -14,5 +14,6 @@ namespace RJW_Genes public static readonly HediffDef Aphrodisiac_Pheromone; public static readonly HediffDef Fertilin_Lost; public static readonly HediffDef Succubus_Drained; + public static readonly HediffDef rjw_genes_sexually_exhausted; } } diff --git a/Source/Interactions/GenesPartKindUsageRule.cs b/Source/Interactions/GenesPartKindUsageRule.cs index aae65b0..6c0f53c 100644 --- a/Source/Interactions/GenesPartKindUsageRule.cs +++ b/Source/Interactions/GenesPartKindUsageRule.cs @@ -19,17 +19,14 @@ namespace RJW_Genes.Interactions Pawn pawn = context.Internals.Dominant.Pawn; if (GeneUtility.HasCriticalLifeForce(pawn)) { - Log.Message("Critical"); yield return new Weighted(50f, LewdablePartKind.Mouth); } else if (GeneUtility.HasLowLifeForce(pawn)) { - Log.Message("Low"); yield return new Weighted(10f, LewdablePartKind.Mouth); } else if (GeneUtility.HasLifeForce(pawn)) { - Log.Message("normal"); yield return new Weighted(2f, LewdablePartKind.Mouth); } yield break; @@ -40,17 +37,14 @@ namespace RJW_Genes.Interactions Pawn pawn = context.Internals.Submissive.Pawn; if (GeneUtility.HasCriticalLifeForce(pawn)) { - Log.Message("Critical"); yield return new Weighted(50f, LewdablePartKind.Mouth); } else if (GeneUtility.HasLowLifeForce(pawn)) { - Log.Message("Low"); yield return new Weighted(10f, LewdablePartKind.Mouth); } else if (GeneUtility.HasLifeForce(pawn)) { - Log.Message("normal"); yield return new Weighted(2f, LewdablePartKind.Mouth); } yield break; diff --git a/Source/JobDefOf.cs b/Source/JobDefOf.cs index fc64b2d..8bae1fa 100644 --- a/Source/JobDefOf.cs +++ b/Source/JobDefOf.cs @@ -11,5 +11,8 @@ namespace RJW_Genes public static class JobDefOf { public static readonly JobDef rjw_genes_lifeforce_randomrape; + public static readonly JobDef rjw_genes_lifeforce_seduced; + public static readonly JobDef sex_on_spot; + public static readonly JobDef sex_on_spot_reciever; } } diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index ba2b195..487ae64 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -115,11 +115,17 @@ + + + + - + + + @@ -157,5 +163,6 @@ + \ No newline at end of file