From b8fa98ea8d4e28f10667853eff0446fd699e54a2 Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Tue, 15 Nov 2022 17:50:25 +0100 Subject: [PATCH] Added a Futa Gene --- .LICENSE.txt.swp | Bin 4096 -> 0 bytes Common/Assemblies/Rjw-Genes.dll | Bin 16384 -> 16896 bytes .../GeneDefs_ExtraGenitaliaEndogenes.xml | 14 ++- Source/GeneDefOf.cs | 2 + Source/Genes/ExtraGenitalia/Gene_Futa.cs | 85 ++++++++++++++++++ Source/Rjw-Genes.csproj | 1 + 6 files changed, 101 insertions(+), 1 deletion(-) delete mode 100644 .LICENSE.txt.swp create mode 100644 Source/Genes/ExtraGenitalia/Gene_Futa.cs diff --git a/.LICENSE.txt.swp b/.LICENSE.txt.swp deleted file mode 100644 index 02c6893a43709219bb5b78bfe08e188103c5621b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmYc?2=nw+u+TGN00IF9hIL^@$zdNE8M;^)7<^Lm^D;o<1b~Zcuy=@mfUZTTN2pP- z2Ts-c$@&3B`RPT8xe9KXIjO}88Wk31n)<;dsfoGz#UL`VprBYkIX^cyKTkg>GdDcH zC?`eVH$SCVKgcUw*F7~awOHTB)7jN8*j2Bjq6DW+qY|SbFd70VAy8V9rfb0)YHVa^ u01{VLQdAHY3Pn*e${7uT(GVC7fzc2c4S~@R7!85Z5Eu=C(GVEkApih{D=Y~B diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index f5555d1fba51fd20efcb38352a711827a77fe852..a93c48dbaadfea0180c6089b529df60044002711 100644 GIT binary patch delta 5436 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 delta 4999 zcma)A3viUx6+ZXhfB)A$l6~hvlHEMW5<*CL$iwiI2>1dFga$$lRja9#0I?l0!UhA1 zk{JoN(qgKPQ)hg&#Wd7WYOM_Fh}BUXI+l+0(W=#swsc17sGvRP{5Q!iujw-XxA!~e zJLjHz_Wt+(NzZoC(<658EHB!)=~_^q_n`WZwY?d0Y0rc9q)*SEKhpMu%dHq6?;s9kCA2@H8vFN_@{O*K2$r=8BA<4ubO)@8V-boU2 z7fS}tCwU`Cb$k&_Rq|qSTNc;ra7ti*076}>u>+2wZ7D}?beGG9fPqI8RQg-jJU8KeF61ia7W2QZg+h zz_ZoCpJyl%nk~dt^1jH|^2*2+;;NzhA`6ENe~po$CcaJ-r*T$3SMUVE{Oyz<0ne4R z987e~Uy6nvI&*4DJ?Sfu)YNq~lWmN$QNz&ILbg(6qvoTnm264bR#3EZr2FdlrXRNx zPcFQd&UB45Ou4Y{dKkWmVZ(}zXlKgJeGTQVmai4enfd1cK*d&o1wnupXxx1BrjGSD zbYTy{!ZLrZp>0JoJdEY#qpf1$ip2}?`#`C@w6HFQTL-WU(2f^A8{k^J#>u-1OEO=X zI46D#m}l&<4fr+VDsQ`;2fwk&e!I8IGN95R^fKPdxR&u&#sjQb@9n}2S1^9eme;+T zOa~sc5?%wI^;?z$Ul_Y|2ljahOU*>a>%eIvf#~%TUTG3W8GoWDyg?Wj*c>q6L!jUd zoT$M|g`Qwb8(U7pje0LE!g4V+#s*=gy*c2(LG(KCU&J89*>apMj|RwY+X-*x5qRBC zVQpwK;1nh@pwzOgAXH(10SE92=0F|?tmCpib||=y$8jHxKjk%f*>VVzI#7dS1NN8{ z`=Lc^orV)rp9{F%0t9Ts(Xos@S2Q6Znh$?7j@iUCyz-&kcg${uuwtJvi-5_#H6HRs z!O!e6_QfE?Ea@j-9RE?4y{t??F|#6vd?-i2 z^5Ht&WlOTy7`Qr%mBNZFmW1zs2Rn*MFiSbCX7&cNDrg%~dYhmczAJ~u%vfFR>=YNl zQ;ZLLXgo_Nyw*qfD&u57jqgSDz%#!05pVSq=IeyJ*s_8xzw?k~mP6Pln@grfZnDbo zZt4@Kg#rIC-$#5)4wRH+TJ4Y~pe>2D!AtN2?mq!PQ>>TSvx>cHknaO#z3@5S1Ohrz z7zTF~G&9@CY&gqStC*YRZDzf2D&spl&00R3htu4zn49L1Vs4s`nf1bY&)Hdi zh^N}^Pvg;I zb}NQiGC2JKMO7MRy|C>ZYg&#ccUBt3R56OFEX;c8ed4U2X*oWKhO=Y@>{e8zQOr&A zHnVg8+H2`ZAK5blin&>G_r>pXlwV{kGiPj}!g1M2n-x1((jVn0_g_GHG)L*9{|#W- zZq7_@r4y9Xy$^24k>)Dz%26J^fbzo}W!d=b={qufBMjd_3)s0A21N{S${Qz;bT8EU zE#ZajioIf5c=JBT%#AbQW#wzKQkn_vb#B~oJ*`>r=tP&jjLe1;^)CAwnFG@&;rks; z@d;8N^h|bHi#Ad7!$*p>`YaL1nJ@_Y6jDmK-<+xip^;gC0i7jzIm$d(#J*lU5ND!q zX_hjdlr+D)ihO8O(jTJ~&)h6&C?{zMHYjBoDnoEfmNJ~948wM%Y(!`J zeM))|&&ddUl9kkzjw(+o<$W+$qxTsBH(B)G?SJ93+yieT>hLY1fD-R0l16~TmJy`; z-zBcw4LHcbI|3ANF0`T97WllSW492|fpLiW(7-r@aUSDh#$}AHjB62N(81%4kfE^6 zOtv8!(9gJ!@e{_7_=R2sgZyk5#Fdsop;&8Gz?X2y8i#hekp_Xzi!b4@SqJ09LUS@S zh>cny=tG2@f0e4M@Y9DBDvL+%Wl zG&Wt%<5xKNdl=9vo(jB&r8L?9fl4R|ctnFZ;#i2w@b3&Af(qRzwgiHr5;g=9VzbD@ zcdu>Yu)kRJi)wGB*oWgf@etxv@tC+SFk3u>9lb<619j$$88{@K*O!PRVv>C|;=4|Z zxQpBVCA?#Ih@)b;xn9)r^iz2HK@8i8%7bQ$7=%14A*S%eN5rl`KbAG%qa{7T*v#JX}X&;Y%j)~Pw z1zHD^TNk^Yd*tfs!r}zJ7#4tqo6*LXCI?^lqS&)2lt66gp6Ye_P_*_z&(KQ~zi;JN zJa+Qfo74Btd(Qmq2U~l#o|28zUyH1Zg?qM%@S1Q(EY!1u1{?6D$P%eG(};yPqrqc@ z+wr;%uN(2Y9`%qD&^cGO0^`u diff --git a/Common/Defs/Genes/GeneDefs_ExtraGenitaliaEndogenes.xml b/Common/Defs/Genes/GeneDefs_ExtraGenitaliaEndogenes.xml index 575a7e0..3242cb6 100644 --- a/Common/Defs/Genes/GeneDefs_ExtraGenitaliaEndogenes.xml +++ b/Common/Defs/Genes/GeneDefs_ExtraGenitaliaEndogenes.xml @@ -103,5 +103,17 @@ - + + rjw_genes_futa + + Males of this xenotype grow additional female genitalia, Females grow additional male genitalia. + Genes/Icons/Placeholder + RJW_Genes.Gene_Futa + 29 + +
  • PenisAmount
  • +
  • VaginaAmount
  • +
    +
    + \ No newline at end of file diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index f83db00..0de205b 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -27,5 +27,7 @@ namespace RJW_Genes [MayRequireBiotech] public static readonly GeneDef rjw_genes_no_breasts; [MayRequireBiotech] public static readonly GeneDef rjw_genes_extra_anus; [MayRequireBiotech] public static readonly GeneDef rjw_genes_no_anus; + [MayRequireBiotech] public static readonly GeneDef rjw_genes_futa; + } } diff --git a/Source/Genes/ExtraGenitalia/Gene_Futa.cs b/Source/Genes/ExtraGenitalia/Gene_Futa.cs new file mode 100644 index 0000000..76749ff --- /dev/null +++ b/Source/Genes/ExtraGenitalia/Gene_Futa.cs @@ -0,0 +1,85 @@ +using Verse; +using rjw; +using RimWorld; + +namespace RJW_Genes +{ + public class Gene_Futa : Gene + { + + internal Hediff additional_genital; + + public override void PostMake() + { + base.PostMake(); + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) + Sexualizer.sexualize_pawn(pawn); + + if (pawn.gender == Gender.Female && additional_genital == null) + { + createAndAddPenis(); + } + if (pawn.gender == Gender.Male && additional_genital == null) + { + CreateAndAddVagina(); + } + } + + public override void PostAdd() + { + base.PostAdd(); + + if (pawn.gender == Gender.Female && additional_genital == null) + { + createAndAddPenis(); + } + if (pawn.gender == Gender.Male && additional_genital == null) + { + CreateAndAddVagina(); + } + } + + public override void PostRemove() + { + base.PostRemove(); + if(additional_genital != null) + pawn.health.RemoveHediff(additional_genital); + } + + //TODO: Extract createAndAddXXX to extra class + internal void createAndAddPenis() + { + var correctGene = GenitaliaUtility.GetGenitaliaTypeGeneForPawn(pawn); + HediffDef penisDef = GenitaliaUtility.GetPenisForGene(correctGene); + var partBPR = Genital_Helper.get_genitalsBPR(pawn); + additional_genital = HediffMaker.MakeHediff(penisDef, pawn); + + var CompHediff = additional_genital.TryGetComp(); + if (CompHediff != null) + { + CompHediff.initComp(pawn); + CompHediff.updatesize(); + } + + pawn.health.AddHediff(additional_genital, partBPR); + } + + internal void CreateAndAddVagina() + { + var correctGene = GenitaliaUtility.GetGenitaliaTypeGeneForPawn(pawn); + HediffDef vaginaDef = GenitaliaUtility.GetVaginaForGene(correctGene); + var partBPR = Genital_Helper.get_genitalsBPR(pawn); + additional_genital = HediffMaker.MakeHediff(vaginaDef, pawn); + + var CompHediff = additional_genital.TryGetComp(); + if (CompHediff != null) + { + CompHediff.initComp(pawn); + CompHediff.updatesize(); + } + + pawn.health.AddHediff(additional_genital, partBPR); + } + + } +} diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index fd6b174..c74f409 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -51,6 +51,7 @@ +