diff --git a/CHANGELOG.md b/CHANGELOG.md
index 08005c3..0d034b0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,10 @@
# 1.1.0 (2023-xx-xx)
-Features:
+1.1.0-beta-1 was released on 05.02.2023.
-- Succubus (see below)
+## Features:
+
+- Succubus, other Fertilin Xenotypes (see below)
- Orgasm Rush got a Hediff
- Unbreakable Gene
- Age-Transfer and Youth-Fountain per Sex Gene
@@ -12,14 +14,49 @@ Features:
- RJW Race-Support Compatibility (#12,#13, Shabakur)
- Animal Gene Inheritance Gene-Chance Multiplier per Setting (#13, Shabakur)
- Lots of Debug-Only Logging for Animal Gene Inheritance
+- Patches for some popular Xenotype Mods (Nyaron, Kijin3, Roos Minotaurs, VRE Phytokin)
- Mod-Settings
-Succubus:
+## Fertilin:
-Fixes:
+Big news ! We got a system similar to hemogen running, labelled *Fertilin*.
+
+Pawns gain Fertilin through various sources, and can spend them on various abilities and loose it over time.
+
+Fertilin-Sources:
+
+- Vaginal & Anal Absorption (Through sex in respective types)
+- Cum-Eater (through oral sex, eating cum from Sexperience, or cunnilinguing (?) cumflated pawns)
+- Sex Drain, after Sex apply a debuff to the fucked pawn
+- Cock-Eater, bite off the wiener of downed enemies, own colonists, animals, slaves, not sure about visitors but let me know what you think.
+
+Animals give less Fertilin as a source, configurable in the Mod Settings.
+The Vaginal, Anal and CumEater interactions *empty* the pawns balls and the pawn needs to *recharge*. Gain and recharge are based on cum-production.
+The drainer is a flag - undrained pawns can be drained, drained pawns will not get any debuff and will not give any fertilin.
+
+Fertilin-Abilities:
+
+- Heal Pussy; Rape someone to tend their wounds.
+- Seduce; Target Pawn needs to follow the caster, engaging in sex on collision.
+- Paralysing Kiss; Stun someone in meele range.
+- Naked Prowess; When the pawn is naked, get a 3h buff on meele stats and armor.
+
+Other than that, the Xenotypes tend to have other buffs from base-game to make up for their insatiable hunger.
+
+Xenotypes:
+
+**Succubi** absorb Fertilin through sex and can use it for paralyzing kiss and seduce.
+
+**Incubi** are their male parallels, but gaining fertilin through draining.
+
+**Cumazones** are female only martial fighters, that can only gain fertilin through biting cocks. Be sure to have enough supply before you hire one of these bad bitches.
+
+Incubi and Succubi can spawn in a special event at night when pawns have low sex need. Cumazones can just appear randomly.
+
+## Fixes:
- Issue with Breast-Size (#8) fixed by lowercasing breast-match (Shabakur)
-- Error on Game Load when Licentia Genes are tried to be added to Xenotypes for players without Licentia (#5)
+- Error on Game Load when Licentia Genes are tried to be added to Xenotypes for players without Licentia (#5,#17)
- Futa Gene only triggers if Pawn is not a futa already (#2)
- Genitalia Resizing triggers on 20th Birthday (#11)
- RJW-Gene-Inheritance Settings now do things (#13, Shabakur)
diff --git a/Common/Assemblies/0Harmony.dll b/Common/Assemblies/0Harmony.dll
deleted file mode 100644
index 86fc5eb..0000000
Binary files a/Common/Assemblies/0Harmony.dll and /dev/null differ
diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll
index f4a0a25..0be1a48 100644
Binary files a/Common/Assemblies/Rjw-Genes.dll and b/Common/Assemblies/Rjw-Genes.dll differ
diff --git a/Common/Defs/Xenotypes/Xenotype_Lifeforce.xml b/Common/Defs/Genes/Xenotype_Lifeforce.xml
similarity index 62%
rename from Common/Defs/Xenotypes/Xenotype_Lifeforce.xml
rename to Common/Defs/Genes/Xenotype_Lifeforce.xml
index a297ef9..9af34ef 100644
--- a/Common/Defs/Xenotypes/Xenotype_Lifeforce.xml
+++ b/Common/Defs/Genes/Xenotype_Lifeforce.xml
@@ -28,15 +28,16 @@
rjw_genes_female_only
rjw_genes_lifeforce
rjw_genes_lifeforce_drain
+
rjw_genes_demonic_genitalia
-
rjw_genes_cum_eater
+
rjw_genes_cum_eater
rjw_genes_vaginal_absorber
rjw_genes_anal_absorber
rjw_genes_paralysingkiss
rjw_genes_seduce
-
rjw_genes_succubus_wings
+
rjw_genes_succubus_wings
rjw_genes_succubus_tail
rjw_genes_aphrodisiac_pheromones
Beauty_Pretty
@@ -76,10 +77,11 @@
rjw_genes_male_only
rjw_genes_lifeforce
rjw_genes_lifeforce_drain
-
rjw_genes_drainer
-
+
rjw_genes_drainer
+
rjw_genes_demonic_genitalia
+
rjw_genes_seduce
-
rjw_genes_succubus_wings
+
rjw_genes_succubus_wings
rjw_genes_succubus_tail
rjw_genes_aphrodisiac_pheromones
@@ -90,8 +92,48 @@
AptitudeStrong_Intellectual
Ears_Pointed
Headbone_MiniHorns
-
Skin_Purple
+
Skin_InkBlack
+
+ rjw_genes_cumazone
+
+ Cumazone are a female only xenotype that excel at meele combat. Originally created as bodyguards for glitterworld amazon communities, they spred to other systems by mere strength and providing for some fetishes. They can use Fertilin to enhance their skin to overpower any combatant in meele. Their only source for Fertilin is biting of male genitalia - so be sure to have a steady supply of victim males or prepare to raid unsuspecting men of the rim.
+ Female only, strong meele fighters, that use Fertilin from bitten-off cocks for powerful buffs.
+ UI/Icons/Xenotypes/Neanderthal
+ 0.5
+ 0.1~140
+ 2.5
+ -1000
+ 0.01
+ false
+
+
WoundHealing_Fast
+
NakedSpeed
+
Aggression_Aggressive
+
MeleeDamage_Strong
+
KillThirst
+
Pain_Reduced
+
rjw_genes_rapist
+
Beauty_Ugly
+
Hair_BaldOnly
+
Hair_ShortOnly
+
Brow_Heavy
+
Body_Hulk
+
AptitudeStrong_Shooting
+
AptitudeRemarkable_Melee
+
AptitudePoor_Crafting
+
AptitudePoor_Artistic
+
Unstoppable
+
rjw_genes_female_only
+
rjw_genes_lifeforce
+
rjw_genes_lifeforce_drain
+
rjw_genes_pussyhealing
+
rjw_genes_cockeater
+
rjw_genes_naked_prowess
+
rjw_genes_orgasm_rush
+
+
+
\ No newline at end of file
diff --git a/Common/Patches/Xenotypes/PatchKijinRace3.xml b/Common/Patches/Xenotypes/PatchKijinRace3.xml
new file mode 100644
index 0000000..de2b840
--- /dev/null
+++ b/Common/Patches/Xenotypes/PatchKijinRace3.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index ec21dd7..ade08b3 100644
--- a/README.md
+++ b/README.md
@@ -2,17 +2,16 @@
This mod adds genes related and based on RJW to Rimworld.
-This is my first Mod I started from scratch so any feedback is very welcome.
-
## Current Features
- Different Genitalia Types
- Genitalia Size Scaling
- Extra Genitalia (and a Futa Attempt)
-- Some Traits, Cumflation Immunity, Elasticity
-- Cum-Amount Changes, Transfer Nutrition
+- Most RJW Traits, Cumflation Immunity, Elasticity
+- Cum-Amount Changes, Transfer Nutrition Boosts
- Mech Breeding / Insect Breeding Support
- Human-Animal Gene Inheritance merged from [Shabakur](https://github.com/Shabakur/RJW_Animal_Gene_Inheritance)
+- Succubi, Incubi & Cumazones that utilize Fertilin, similar to Hemogen
See [planned things](TODOS.md) and feel free to contribute.
With the Human-Animal-Gene Inheritance we have a lot of XML that you can contribute!
@@ -31,8 +30,6 @@ One of the main motivations was to have genes being added to the xenotypes that
## Load Order / Deps
-Please load this after any mod adding genes, and after the used RJW-Mods (Licentia, Sexperience).
-
-Should not be used with the original RJW_Animal_Gene_Inheritance anymore.
-
-There was an issue with other "Male-Only / Female-Only" Mods --- for which we provide our own Genes now.
\ No newline at end of file
+1. Please load this after any mod adding genes, and after the used RJW-Mods (Licentia, Sexperience).
+2. Should not be used with the original RJW_Animal_Gene_Inheritance anymore.
+3. There was an issue with other "Male-Only / Female-Only" Mods --- for which we provide our own Genes now.
\ No newline at end of file
diff --git a/Source/Genes/Life_Force/Events/SuccubusVisit/IncidentWorker_SuccubusDreamVisit.cs b/Source/Genes/Life_Force/Events/SuccubusVisit/IncidentWorker_SuccubusDreamVisit.cs
index 806b4ce..7948e37 100644
--- a/Source/Genes/Life_Force/Events/SuccubusVisit/IncidentWorker_SuccubusDreamVisit.cs
+++ b/Source/Genes/Life_Force/Events/SuccubusVisit/IncidentWorker_SuccubusDreamVisit.cs
@@ -24,7 +24,7 @@ namespace RJW_Genes
{
return false;
}
- if (!RJW_GenesSettings.rjw_genes_sexdemon_visit_incubi && !RJW_GenesSettings.rjw_genes_sexdemon_visit_succubi)
+ if (!RJW_Genes_Settings.rjw_genes_sexdemon_visit_incubi && !RJW_Genes_Settings.rjw_genes_sexdemon_visit_succubi)
{
return false;
}
@@ -53,7 +53,7 @@ namespace RJW_Genes
{
return false;
}
- int pawn_amount = RJW_GenesSettings.rjw_genes_sexdemon_visit_groups ? Rand.Range(1, victims.Count) : 1;
+ int pawn_amount = RJW_Genes_Settings.rjw_genes_sexdemon_visit_groups ? Rand.Range(1, victims.Count) : 1;
List new_sexdemons = new List();
for (int i = 0; i < pawn_amount; i++)
{
@@ -62,11 +62,11 @@ namespace RJW_Genes
PawnKindDef pawnKindDef;
Gender gender;
- if (victim.gender == Gender.Male || !RJW_GenesSettings.rjw_genes_sexdemon_visit_incubi)
+ if (victim.gender == Gender.Male || !RJW_Genes_Settings.rjw_genes_sexdemon_visit_incubi)
{
}
- if ((Rand.Bool && RJW_GenesSettings.rjw_genes_sexdemon_visit_succubi) || !RJW_GenesSettings.rjw_genes_sexdemon_visit_incubi)
+ if ((Rand.Bool && RJW_Genes_Settings.rjw_genes_sexdemon_visit_succubi) || !RJW_Genes_Settings.rjw_genes_sexdemon_visit_incubi)
{
pawnKindDef = PawnKindDef.Named("rjw_genes_succubus");
gender = Gender.Female;
diff --git a/Source/Genes/Life_Force/Events/SuccubusVisit/LordJob_SuccubusVisit.cs b/Source/Genes/Life_Force/Events/SuccubusVisit/LordJob_SuccubusVisit.cs
index 388a133..f2e9a99 100644
--- a/Source/Genes/Life_Force/Events/SuccubusVisit/LordJob_SuccubusVisit.cs
+++ b/Source/Genes/Life_Force/Events/SuccubusVisit/LordJob_SuccubusVisit.cs
@@ -1,10 +1,6 @@
using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using Verse;
-using Verse.AI;
using Verse.AI.Group;
using RimWorld;
using rjw;
@@ -13,10 +9,7 @@ namespace RJW_Genes
//Based on LordJob_VisitColony
public class LordJob_SuccubusVisit : LordJob
{
- public LordJob_SuccubusVisit()
- {
-
- }
+ public LordJob_SuccubusVisit(){}
public LordJob_SuccubusVisit(Pawn target)
{
this.target = target;
diff --git a/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs b/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs
index fdfdefd..a853abe 100644
--- a/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs
+++ b/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs
@@ -8,15 +8,17 @@ namespace RJW_Genes
///
public class IngestionOutcomeDoer_LifeForceOffset : IngestionOutcomeDoer
{
- public const float FERTILIN_PER_UNIT = 1f;
+ public const float DEFAULT_FERTILIN_PER_UNIT = 1f;
+ public float FertilinPerUnit = 1f;
protected override void DoIngestionOutcomeSpecial(Pawn pawn, Thing ingested)
{
if (GeneUtility.HasLifeForce(pawn) && GeneUtility.IsCumEater(pawn))
{
- float num = ingested.stackCount * FERTILIN_PER_UNIT / 100;
+ float num = ingested.stackCount * this.FertilinPerUnit / 100;
GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(pawn), num);
}
}
+
}
}
diff --git a/Source/Genes/Life_Force/JobGivers/JobGiver_GetLifeForce.cs b/Source/Genes/Life_Force/JobGivers/JobGiver_GetLifeForce.cs
index 3c0eff6..fdd7279 100644
--- a/Source/Genes/Life_Force/JobGivers/JobGiver_GetLifeForce.cs
+++ b/Source/Genes/Life_Force/JobGivers/JobGiver_GetLifeForce.cs
@@ -39,7 +39,7 @@ namespace RJW_Genes
{
return null;
}
- int num = Mathf.RoundToInt(((gene_lifeforce.targetValue - gene_lifeforce.Value) * 100 + 10) / IngestionOutcomeDoer_LifeForceOffset.FERTILIN_PER_UNIT);
+ int num = Mathf.RoundToInt(((gene_lifeforce.targetValue - gene_lifeforce.Value) * 100 + 10) / IngestionOutcomeDoer_LifeForceOffset.DEFAULT_FERTILIN_PER_UNIT);
if (gatheredCum != null && num > 0)
{
Job job = JobMaker.MakeJob(RimWorld.JobDefOf.Ingest, gatheredCum);
diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj
index ca0d5f8..96bc6f5 100644
--- a/Source/Rjw-Genes.csproj
+++ b/Source/Rjw-Genes.csproj
@@ -22,49 +22,12 @@
false
-
- ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll
- False
-
-
- ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll
- False
-
-
- ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\licentia-labs-master\Assemblies\LicentiaLabs.dll
- False
-
-
- ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\rjw-master\1.4\Assemblies\RJW.dll
- False
-
-
- ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\RJW-Sexperience-master\1.4\Assemblies\RJWSexperience.dll
- False
-
-
-
-
-
-
-
-
- ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.dll
- False
-
-
- ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll
- False
-
-
- ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll
-
@@ -188,6 +151,46 @@
-
+
+
+ False
+ ..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll
+ False
+
+
+ False
+ ..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll
+ False
+
+
+ False
+ ..\..\licentia-labs\Assemblies\LicentiaLabs.dll
+ False
+
+
+ False
+ ..\..\rjw\1.4\Assemblies\RJW.dll
+ False
+
+
+ ..\..\RJW-Sexperience\1.4\Assemblies\RJWSexperience.dll
+ False
+
+
+
+ ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll
+ False
+
+
+ False
+ ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll
+ False
+
+
+ False
+ ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll
+ False
+
+
\ No newline at end of file
diff --git a/Source/Settings/RJW_Genes_Settings.cs b/Source/Settings/RJW_Genes_Settings.cs
index ba1d69a..0db1b15 100644
--- a/Source/Settings/RJW_Genes_Settings.cs
+++ b/Source/Settings/RJW_Genes_Settings.cs
@@ -20,6 +20,22 @@ namespace RJW_Genes
listing_Standard.Label("Fertlin-Gain from Animals" + ": " +
Math.Round((double)(RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor * 100f), 0).ToString() + "%", -1f, "of fertilin gained (compared to human-baseline).");
RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor = listing_Standard.Slider(RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor, 0f, 3f);
+
+ listing_Standard.Gap(5f);
+ listing_Standard.CheckboxLabeled("Sexdemon Visits", ref rjw_genes_sexdemon_visit, "If enabled, incubi and succubi can spawn in through an event.", 0f, 1f);
+ if (rjw_genes_sexdemon_visit)
+ {
+ listing_Standard.Gap(3f);
+ listing_Standard.CheckboxLabeled(" Size matters", ref rjw_genes_sexdemon_join_size_matters, "Incubi and succubi will consider size/tightness of partners genital for deciding if they want to join", 0f, 1f);
+ listing_Standard.Gap(3f);
+ listing_Standard.CheckboxLabeled(" Sexdemon groups", ref rjw_genes_sexdemon_visit_groups, "Multiple sexdemons can spawn during a event", 0f, 1f);
+ listing_Standard.Gap(3f);
+ listing_Standard.CheckboxLabeled(" Succubi", ref rjw_genes_sexdemon_visit_succubi, "Allow incubi to spawn through this even", 0f, 1f);
+ listing_Standard.Gap(3f);
+ listing_Standard.CheckboxLabeled(" Incubi", ref rjw_genes_sexdemon_visit_incubi, "Allow incubi to spawn through this even", 0f, 1f);
+
+ }
+
listing_Standard.Gap(5f);
listing_Standard.CheckboxLabeled("detailed-debug", ref rjw_genes_detailed_debug, "Adds detailed information to the log about interactions and genes.", 0f, 1f);
listing_Standard.End();
@@ -30,9 +46,21 @@ namespace RJW_Genes
base.ExposeData();
Scribe_Values.Look(ref RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor, "rjw_genes_fertilin_from_animals_factor", RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor, true);
Scribe_Values.Look(ref RJW_Genes_Settings.rjw_genes_detailed_debug, "rjw_genes_detailed_debug", RJW_Genes_Settings.rjw_genes_detailed_debug, true);
+ Scribe_Values.Look(ref RJW_Genes_Settings.rjw_genes_sexdemon_visit, "rjw_genes_sexdemon_visit", RJW_Genes_Settings.rjw_genes_sexdemon_visit, true);
+ Scribe_Values.Look(ref RJW_Genes_Settings.rjw_genes_sexdemon_join_size_matters, "rjw_genes_sexdemon_join_size_matters", RJW_Genes_Settings.rjw_genes_sexdemon_join_size_matters, true);
+ Scribe_Values.Look(ref RJW_Genes_Settings.rjw_genes_sexdemon_visit_groups, "rjw_genes_sexdemon_groups", RJW_Genes_Settings.rjw_genes_sexdemon_visit_groups, true);
+ Scribe_Values.Look(ref RJW_Genes_Settings.rjw_genes_sexdemon_visit_succubi, "rjw_genes_sexdemon_succubi", RJW_Genes_Settings.rjw_genes_sexdemon_visit_succubi, true);
+ Scribe_Values.Look(ref RJW_Genes_Settings.rjw_genes_sexdemon_visit_incubi, "rjw_genes_sexdemon_incubi", RJW_Genes_Settings.rjw_genes_sexdemon_visit_incubi, true);
}
public static bool rjw_genes_detailed_debug = false;
public static float rjw_genes_fertilin_from_animals_factor = 0.1f;
+
+
+ public static bool rjw_genes_sexdemon_visit = true;
+ public static bool rjw_genes_sexdemon_join_size_matters = true;
+ public static bool rjw_genes_sexdemon_visit_groups = true;
+ public static bool rjw_genes_sexdemon_visit_succubi = true;
+ public static bool rjw_genes_sexdemon_visit_incubi = true;
}
}
diff --git a/TODOS.md b/TODOS.md
index 0dc2a0a..b19f8e1 100644
--- a/TODOS.md
+++ b/TODOS.md
@@ -5,32 +5,16 @@ So any help is very appreciated, even if it is just pointing me to existing simi
## Planned Genes
-**Sanguophage like Cumwhores** adding Hemogen and refilling it by getting semen.
-Showstopper here is the amount of code required, and that I need to understand a bit better of harmony to run the AfterSexUtility and modulate SexChances. My first attempt exploded on adding UI Elements.
-
**Adjustable Cock-Size** like e.g. artificial genitalia have
**Infectious Hypersexuality Gene** (Maybe?) add Hypersexuality Gene through sex with a certain chance.
-**Cum Addiction** add Cum-Addiction from Sexpererience, slowly loose conciousness while addiction is not attended.
+**Cum Addiction** add Cum-Addiction from Sexperience, slowly loose conciousness while addiction is not attended.
**Cum-Drugs** eating cum has an effect similar to Go-Juice (including (separate?) addiction)
-**More Orgasm Boost** currently only does sleep, other things could be cool here too. Maybe a separate hediff boosting movement or fight.
-
**Self-Fertilizing Eggs** Pawns fertilize eggs that are put inside them (with themselves as a parent)
-## Animal Gene Inheritance
-
-It should be doable to have a per-category list of genes that a child can inherit on bestiality.
-Just roll for the available genes and add them to the kid.
-
-Issues:
-
-- I do not know how to access babies genes from pregnancy
-- I did not (yet) find categories in the game such as *canine* or *equine*.
-- To have genes, the baby needs to be non-baseliner to the best of my knowledge (maybe make bestiality babies hybrid)
-
## Genes with Abilities and more Effects
There were some suggestions on the Discord I saved them somewhere else. I am far away from making that work, but to have them here:
@@ -38,11 +22,4 @@ There were some suggestions on the Discord I saved them somewhere else. I am far
- Genitalia deal damage as per size (on normal sex-use)
- Genitalia can cause Terror (as ability)
- Cumshot Sniper Abilities
-- Healing Pussy
-
-## Things to add/change for base-rjw
-
-(Bit dependable on RJW-Core people)
-
-1. Make Racegroup-Defs accessible and non-private [This file here](https://gitgud.io/Ed86/rjw/-/blob/master/1.4/Source/Common/Helpers/RaceGroupDef_Helper.cs)
-2. Make [this](https://gitgud.io/Ed86/rjw/-/blob/master/1.4/Source/Common/Helpers/Gender_Helper.cs#L316) not warn, to reduce errors towards users
\ No newline at end of file
+- Healing Pussy
\ No newline at end of file