Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
R
rjw
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Nebuchadnezzer2
rjw
Commits
2e0aa4d1
Commit
2e0aa4d1
authored
5 years ago
by
Ed86
Browse files
Options
Downloads
Patches
Plain Diff
added ability to change slime parts at will(50% food need) for slime colonists/prisoners
parent
2c02eb31
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
Source/Harmony/SexualityCardInternal.cs
+383
-2
383 additions, 2 deletions
Source/Harmony/SexualityCardInternal.cs
with
383 additions
and
2 deletions
Source/Harmony/SexualityCardInternal.cs
+
383
−
2
View file @
2e0aa4d1
...
...
@@ -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
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment