Skip to content
Snippets Groups Projects
Commit 2e0aa4d1 authored by Ed86's avatar Ed86
Browse files

added ability to change slime parts at will(50% food need) for slime colonists/prisoners

parent 2c02eb31
No related branches found
No related tags found
No related merge requests found
......@@ -2,6 +2,9 @@ using System.Text;
using RimWorld;
using UnityEngine;
using Verse;
using System;
using System.Collections.Generic;
using System.Linq;
namespace rjw
{
......@@ -14,6 +17,70 @@ namespace rjw
pawn = editFor;
}
public static breasts Breasts;
public enum breasts
{
selectone,
none,
featureless_chest,
flat_breasts,
small_breasts,
average_breasts,
large_breasts,
huge_breasts,
slime_breasts,
};
public static anuses Anuses;
public enum anuses
{
selectone,
none,
micro_anus,
tight_anus,
average_anus,
loose_anus,
gaping_anus,
slime_anus,
};
public static vaginas Vaginas;
public enum vaginas
{
selectone,
none,
micro_vagina,
tight_vagina,
average_vagina,
loose_vagina,
gaping_vagina,
slime_vagina,
feline_vagina,
canine_vagina,
equine_vagina,
dragon_vagina,
};
public static penises Penises;
public enum penises
{
selectone,
none,
micro_penis,
small_penis,
average_penis,
big_penis,
huge_penis,
slime_penis,
feline_penis,
canine_penis,
equine_penis,
dragon_penis,
raccoon_penis,
hemipenis,
crocodilian_penis,
};
public void SexualityCard(Rect rect, Pawn pawn)
{
CompRJW comp = pawn.TryGetComp<CompRJW>();
......@@ -27,8 +94,13 @@ namespace rjw
Rect row1 = new Rect(10f, num, rect.width - 8f, 24f);
Rect row2 = new Rect(10f, num + 24, rect.width - 8f, 24f);
Rect row3 = new Rect(10f, num + 48, rect.width - 8f, 24f);
Rect button1 = new Rect(10f, rect1.height - 10f, rect.width - 8f, 24f);
Rect button2 = new Rect(10f, rect1.height - 34f, rect.width - 8f, 24f);
Rect button1 = new Rect(10f, rect1.height - 10f, rect.width - 8f, 24f);//re sexualize
Rect button2 = new Rect(10f, rect1.height - 34f, rect.width - 8f, 24f);//archtech toggle
Rect button3 = new Rect(10f, rect1.height - 58f, rect.width - 8f, 24f);//breast
Rect button4 = new Rect(10f, rect1.height - 82f, rect.width - 8f, 24f);//anus
Rect button5 = new Rect(10f, rect1.height - 106f, rect.width - 8f, 24f);//vagina
Rect button6 = new Rect(10f, rect1.height - 130f, rect.width - 8f, 24f);//penis 1
Rect button7 = new Rect(10f, rect1.height - 154f, rect.width - 8f, 24f);//penis 2
string price;
string sexuality;
......@@ -184,6 +256,315 @@ namespace rjw
pawn.health.AddHediff(HediffDef.Named("ImpregnationBlocker"), genitalia);
}
}
if (xxx.is_slime(pawn) && (pawn.IsColonistPlayerControlled || pawn.IsPrisonerOfColony))
{
BodyPartRecord bpr_genitalia = Genital_Helper.get_genitals(pawn);
BodyPartRecord bpr_breasts = Genital_Helper.get_breasts(pawn);
BodyPartRecord bpr_anus = Genital_Helper.get_anus(pawn);
BodyPartRecord bpr = null;
HediffDef hed = null;
if (Widgets.ButtonText(button3, "Morph breasts"))
{
Find.WindowStack.Add(new FloatMenu(new List<FloatMenuOption>()
{
new FloatMenuOption("none", (() => Breasts = breasts.none), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.featureless_chest.label.CapitalizeFirst(), (() => Breasts = breasts.featureless_chest), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.flat_breasts.label.CapitalizeFirst(), (() => Breasts = breasts.flat_breasts), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.small_breasts.label.CapitalizeFirst(), (() => Breasts = breasts.small_breasts), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.average_breasts.label.CapitalizeFirst(), (() => Breasts = breasts.average_breasts), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.large_breasts.label.CapitalizeFirst(), (() => Breasts = breasts.large_breasts), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.huge_breasts.label.CapitalizeFirst(), (() => Breasts = breasts.huge_breasts), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.slime_breasts.label.CapitalizeFirst(), (() => Breasts = breasts.slime_breasts), MenuOptionPriority.Default),
}));
}
switch (Breasts)
{
case breasts.none:
bpr = bpr_breasts;
break;
case breasts.featureless_chest:
bpr = bpr_breasts;
hed = Genital_Helper.featureless_chest;
break;
case breasts.flat_breasts:
bpr = bpr_breasts;
hed = Genital_Helper.flat_breasts;
break;
case breasts.small_breasts:
bpr = bpr_breasts;
hed = Genital_Helper.small_breasts;
break;
case breasts.average_breasts:
bpr = bpr_breasts;
hed = Genital_Helper.average_breasts;
break;
case breasts.large_breasts:
bpr = bpr_breasts;
hed = Genital_Helper.large_breasts;
break;
case breasts.huge_breasts:
bpr = bpr_breasts;
hed = Genital_Helper.huge_breasts;
break;
case breasts.slime_breasts:
bpr = bpr_breasts;
hed = Genital_Helper.slime_breasts;
break;
default:
break;
}
if (Widgets.ButtonText(button4, "Morph anus"))
{
Find.WindowStack.Add(new FloatMenu(new List<FloatMenuOption>()
{
new FloatMenuOption("none", (() => Anuses = anuses.none), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.micro_anus.label.CapitalizeFirst(), (() => Anuses = anuses.micro_anus), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.tight_anus.label.CapitalizeFirst(), (() => Anuses = anuses.tight_anus), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.average_anus.label.CapitalizeFirst(), (() => Anuses = anuses.average_anus), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.loose_anus.label.CapitalizeFirst(), (() => Anuses = anuses.loose_anus), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.gaping_anus.label.CapitalizeFirst(), (() => Anuses = anuses.gaping_anus), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.slime_anus.label.CapitalizeFirst(), (() => Anuses = anuses.slime_anus), MenuOptionPriority.Default),
}));
}
switch (Anuses)
{
case anuses.none:
bpr = bpr_anus;
break;
case anuses.micro_anus:
bpr = bpr_anus;
hed = Genital_Helper.micro_anus;
break;
case anuses.tight_anus:
bpr = bpr_anus;
hed = Genital_Helper.tight_anus;
break;
case anuses.average_anus:
bpr = bpr_anus;
hed = Genital_Helper.average_anus;
break;
case anuses.loose_anus:
bpr = bpr_anus;
hed = Genital_Helper.loose_anus;
break;
case anuses.gaping_anus:
bpr = bpr_anus;
hed = Genital_Helper.gaping_anus;
break;
case anuses.slime_anus:
bpr = bpr_anus;
hed = Genital_Helper.slime_anus;
break;
default:
break;
}
if (Widgets.ButtonText(button5, "Morph vagina"))
{
Find.WindowStack.Add(new FloatMenu(new List<FloatMenuOption>()
{
new FloatMenuOption("none", (() => Vaginas = vaginas.none), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.micro_vagina.label.CapitalizeFirst(), (() => Vaginas = vaginas.micro_vagina), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.tight_vagina.label.CapitalizeFirst(), (() => Vaginas = vaginas.tight_vagina), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.average_vagina.label.CapitalizeFirst(), (() => Vaginas = vaginas.average_vagina), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.loose_vagina.label.CapitalizeFirst(), (() => Vaginas = vaginas.loose_vagina), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.gaping_vagina.label.CapitalizeFirst(), (() => Vaginas = vaginas.gaping_vagina), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.slime_vagina.label.CapitalizeFirst(), (() => Vaginas = vaginas.slime_vagina), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.feline_vagina.label.CapitalizeFirst(), (() => Vaginas = vaginas.feline_vagina), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.canine_vagina.label.CapitalizeFirst(), (() => Vaginas = vaginas.canine_vagina), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.equine_vagina.label.CapitalizeFirst(), (() => Vaginas = vaginas.equine_vagina), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.dragon_vagina.label.CapitalizeFirst(), (() => Vaginas = vaginas.dragon_vagina), MenuOptionPriority.Default),
}));
}
switch (Vaginas)
{
case vaginas.none:
bpr = bpr_genitalia;
break;
case vaginas.micro_vagina:
bpr = bpr_genitalia;
hed = Genital_Helper.micro_vagina;
break;
case vaginas.tight_vagina:
bpr = bpr_genitalia;
hed = Genital_Helper.tight_vagina;
break;
case vaginas.average_vagina:
bpr = bpr_genitalia;
hed = Genital_Helper.average_vagina;
break;
case vaginas.loose_vagina:
bpr = bpr_genitalia;
hed = Genital_Helper.loose_vagina;
break;
case vaginas.gaping_vagina:
bpr = bpr_genitalia;
hed = Genital_Helper.gaping_vagina;
break;
case vaginas.slime_vagina:
bpr = bpr_genitalia;
hed = Genital_Helper.slime_vagina;
break;
case vaginas.feline_vagina:
bpr = bpr_genitalia;
hed = Genital_Helper.feline_vagina;
break;
case vaginas.canine_vagina:
bpr = bpr_genitalia;
hed = Genital_Helper.canine_vagina;
break;
case vaginas.equine_vagina:
bpr = bpr_genitalia;
hed = Genital_Helper.equine_vagina;
break;
case vaginas.dragon_vagina:
bpr = bpr_genitalia;
hed = Genital_Helper.dragon_vagina;
break;
default:
break;
}
if (Widgets.ButtonText(button6, "Morph penis"))
{
Find.WindowStack.Add(new FloatMenu(new List<FloatMenuOption>()
{
new FloatMenuOption("none", (() => Penises = penises.none), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.micro_penis.label.CapitalizeFirst(), (() => Penises = penises.micro_penis), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.small_penis.label.CapitalizeFirst(), (() => Penises = penises.small_penis), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.average_penis.label.CapitalizeFirst(), (() => Penises = penises.average_penis), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.big_penis.label.CapitalizeFirst(), (() => Penises = penises.big_penis), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.huge_penis.label.CapitalizeFirst(), (() => Penises = penises.huge_penis), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.slime_penis.label.CapitalizeFirst(), (() => Penises = penises.slime_penis), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.feline_penis.label.CapitalizeFirst(), (() => Penises = penises.feline_penis), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.canine_penis.label.CapitalizeFirst(), (() => Penises = penises.canine_penis), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.equine_penis.label.CapitalizeFirst(), (() => Penises = penises.equine_penis), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.dragon_penis.label.CapitalizeFirst(), (() => Penises = penises.dragon_penis), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.raccoon_penis.label.CapitalizeFirst(), (() => Penises = penises.raccoon_penis), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.hemipenis.label.CapitalizeFirst(), (() => Penises = penises.hemipenis), MenuOptionPriority.Default),
new FloatMenuOption(Genital_Helper.crocodilian_penis.label.CapitalizeFirst(), (() => Penises = penises.crocodilian_penis), MenuOptionPriority.Default),
}));
}
switch (Penises)
{
case penises.none:
bpr = bpr_genitalia;
break;
case penises.micro_penis:
bpr = bpr_genitalia;
hed = Genital_Helper.micro_penis;
break;
case penises.small_penis:
bpr = bpr_genitalia;
hed = Genital_Helper.small_penis;
break;
case penises.average_penis:
bpr = bpr_genitalia;
hed = Genital_Helper.average_penis;
break;
case penises.big_penis:
bpr = bpr_genitalia;
hed = Genital_Helper.big_penis;
break;
case penises.huge_penis:
bpr = bpr_genitalia;
hed = Genital_Helper.huge_penis;
break;
case penises.slime_penis:
bpr = bpr_genitalia;
hed = Genital_Helper.slime_penis;
break;
case penises.feline_penis:
bpr = bpr_genitalia;
hed = Genital_Helper.feline_penis;
break;
case penises.canine_penis:
bpr = bpr_genitalia;
hed = Genital_Helper.canine_penis;
break;
case penises.equine_penis:
bpr = bpr_genitalia;
hed = Genital_Helper.equine_penis;
break;
case penises.dragon_penis:
bpr = bpr_genitalia;
hed = Genital_Helper.dragon_penis;
break;
case penises.raccoon_penis:
bpr = bpr_genitalia;
hed = Genital_Helper.raccoon_penis;
break;
case penises.hemipenis:
bpr = bpr_genitalia;
hed = Genital_Helper.hemipenis;
break;
case penises.crocodilian_penis:
bpr = bpr_genitalia;
hed = Genital_Helper.crocodilian_penis;
break;
default:
break;
}
if (bpr != null)
{
//Log.Message("start ");
if (bpr != bpr_genitalia)
{
if (pawn.needs.TryGetNeed<Need_Food>().CurLevel > 0.5f)
{
pawn.needs.food.CurLevel -= 0.5f;
pawn.health.RestorePart(bpr);
if (hed != null)
pawn.health.AddHediff(hed, bpr);
}
Anuses = anuses.selectone;
Breasts = breasts.selectone;
}
else if (bpr == bpr_genitalia && Vaginas != vaginas.selectone)
{
if (pawn.needs.TryGetNeed<Need_Food>().CurLevel > 0.5f)
{
pawn.needs.food.CurLevel -= 0.5f;
List<Hediff> list = new List<Hediff>();
foreach (Hediff heddif in pawn.health.hediffSet.hediffs.Where(x =>
x.Part == bpr &&
x.def.defName.ToLower().Contains("vagina")))
list.Add(heddif);
foreach (Hediff heddif in list)
pawn.health.hediffSet.hediffs.Remove(heddif);
if (hed != null)
pawn.health.AddHediff(hed, bpr);
}
Vaginas = vaginas.selectone;
}
else if (bpr == bpr_genitalia && Penises != penises.selectone)
{
if (pawn.needs.TryGetNeed<Need_Food>().CurLevel > 0.5f)
{
pawn.needs.food.CurLevel -= 0.5f;
List<Hediff> list = new List<Hediff>();
foreach (Hediff heddif in pawn.health.hediffSet.hediffs.Where(x =>
x.Part == bpr &&
x.def.defName.ToLower().Contains("penis") ||
x.def.defName.ToLower().Contains("tentacle")))
list.Add(heddif);
foreach (Hediff heddif in list)
pawn.health.hediffSet.hediffs.Remove(heddif);
if (hed != null)
pawn.health.AddHediff(hed, bpr);
}
Penises = penises.selectone;
}
//Log.Message("end ");
}
}
}
public override void DoWindowContents(Rect inRect)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment