internal static string AllVaginasShortDescription <T>(IVaginaCollection <T> collection, out bool isPlural) where T : IVagina { isPlural = collection.vaginas.Count != 1; if (collection.vaginas.Count == 0) { return(""); } else if (collection.vaginas.Count == 1) { return(collection.vaginas[0].ShortDescription()); } bool mismatched = collection.vaginas.Any(x => x.type != collection.vaginas[0].type); return(mismatched ? VaginaType.VaginaNoun(true) : collection.vaginas[0].ShortDescription(false)); }
private static string RandomMixedVaginasText() { return(Utils.RandomChoice("mixed ", "mixed ", "mismatched ") + VaginaType.VaginaNoun(true)); }
internal static string EachVaginaOrVaginasNoun <T>(IVaginaCollection <T> collection, Conjugate conjugate, out bool isPlural) where T : IVagina { isPlural = collection.vaginas.Count != 1; if (collection.vaginas.Count == 0) { return(""); } return(CommonBodyPartStrings.EachOfDescription(collection.vaginas.Count > 1, conjugate, VaginaType.VaginaNoun(collection.vaginas.Count > 1))); }
internal static string OneVaginaOrVaginasNoun <T>(IVaginaCollection <T> collection, Conjugate conjugate) where T : IVagina { if (collection.vaginas.Count == 0) { return(""); } return(CommonBodyPartStrings.OneOfDescription(collection.vaginas.Count > 1, conjugate, VaginaType.VaginaNoun(collection.vaginas.Count > 1))); }
internal static string AllVaginasNoun <T>(IVaginaCollection <T> collection, out bool isPlural) where T : IVagina { isPlural = collection.vaginas.Count > 1; return(VaginaType.VaginaNoun(collection.vaginas.Count > 1)); }
private static string RandomMixedClitsText() { return(Utils.RandomChoice("different-sized ", "uneven ", "mismatched ") + VaginaType.VaginaNoun(true)); }
private string WetnessLoosenessText(PlayerBase player) { string WetnessText(V****a v****a) { byte wetnessLevel = 0; if (v****a.wetness >= VaginalWetness.DROOLING) { wetnessLevel = 2; } else if (v****a.wetness >= VaginalWetness.WET) { wetnessLevel = 1; } //stack once if above 50 in at least one - at least horny. if (player.relativeLust >= 50 || player.relativeLibido >= 50) { wetnessLevel++; } //stack again if both are very high - uber horny. if (player.relativeLust >= 80 && player.relativeLibido >= 80) { wetnessLevel++; } if (wetnessLevel > 0) { return(""); } else if (wetnessLevel == 1) { return("Moisture gleams in "); //horny and below wet or not horny and between wet and max wetness. } else if (wetnessLevel == 2) { return("Occasional beads of lubricant drip from "); //uber horny and below wet or horny and above wet and not max or not horny and max. } else if (wetnessLevel == 3) //uber horny and above wet, but not max. or horny and max. { return("Thin streams of lubricant occasionally dribble from "); } else //(wetnessLevel > 3) //uber horny and max wetness. { return("Thick streams of lubricant drool constantly from "); } } string WetnessPredicate(V****a v****a) { byte wetnessLevel = 0; if (v****a.wetness >= VaginalWetness.DROOLING) { wetnessLevel = 2; } else if (v****a.wetness >= VaginalWetness.WET) { wetnessLevel = 1; } //stack once if above 50 in at least one - at least horny. if (player.relativeLust >= 50 || player.relativeLibido >= 50) { wetnessLevel++; } //stack again if both are very high - uber horny. if (player.relativeLust >= 80 && player.relativeLibido >= 80) { wetnessLevel++; } if (wetnessLevel > 0) { return(""); } else if (wetnessLevel == 1) { return("gleams"); //horny and below wet or not horny and between wet and max wetness. } else if (wetnessLevel == 2) { return("drips"); //uber horny and below wet or horny and above wet and not max or not horny and max. } else if (wetnessLevel == 3) //uber horny and above wet, but not max. or horny and max. { return("occasionally dribbles"); } else //(wetnessLevel > 3) //uber horny and max wetness. { return("drools constantly"); } } if (player.vaginas.Count == 1) { V****a v****a = player.vaginas[0]; //the original source repeated the same text for various options, though it did so in a specific way. this does the same, but makes it cleaner. string wetness = WetnessText(v****a); if (!string.IsNullOrEmpty(wetness)) { string tightness; if (v****a.looseness == VaginalLooseness.TIGHT) { tightness = "your tight " + v****a.ShortDescription(); } else if (v****a.looseness == VaginalLooseness.NORMAL) { tightness = "your " + v****a.ShortDescription(); } else if (v****a.looseness < VaginalLooseness.GAPING) { tightness = "your " + v****a.ShortDescription() + ", its lips slightly parted"; } else { tightness = "the massive hole that is your " + v****a.ShortDescription(); } return(wetness + tightness + "."); } //default case: no wetness description. Try to do a looseness description if applicable. else if (v****a.looseness != VaginalLooseness.NORMAL) { if (v****a.looseness == VaginalLooseness.TIGHT) { return("Your " + v****a.ShortDescription() + " is extremely tight, though otherwise normal."); } else if (v****a.looseness <= VaginalLooseness.ROOMY) { return("Your pussy-lips have parted slightly, granting extra room in your otherwise normal " + v****a.ShortDescription() + "."); } else { return("Your " + v****a.ShortDescription() + "has been stretched so wide that it gapes."); } } else { return(""); } } else { V****a first = player.vaginas[0]; V****a second = player.vaginas[1]; string loosenessText(VaginalLooseness looseness) { if (looseness <= VaginalLooseness.TIGHT) { return("a little tight"); } else if (looseness == VaginalLooseness.LOOSE) { return("a little loose"); } else if (looseness == VaginalLooseness.ROOMY) { return("rather loose"); } else //if (looseness > VaginalLooseness.GAPING) { return("so loose that they gape"); } } //if both are the same wetness and looseness. if (first.looseness == second.looseness && first.wetness == second.wetness) { //both are normal if (first.looseness == VaginalLooseness.NORMAL && first.wetness == VaginalWetness.NORMAL) { return("Both vaginas are relatively normal"); } //wetness normal, non-normal looseness. else if (first.wetness == VaginalWetness.NORMAL) { return("Both of your " + VaginaType.VaginaNoun(true) + " are " + loosenessText(first.looseness) + ", but otherwise normal."); } //looseness normal, non-normal wetness. else if (first.looseness == VaginalLooseness.NORMAL) { if (first.wetness == VaginalWetness.DRY) { return("Both of your vaginas are relatively normal, though a bit dry."); } else { return(WetnessText(first) + " both of your vaginas."); } } else { return("Both of your " + VaginaType.VaginaNoun(true) + " are " + loosenessText(first.looseness) + ", and " + WetnessText(first).ToLower() + "from both of them"); } } //same looseness, different wetness. else if (first.looseness == second.looseness) { string wetter, describe; if (first.wetness > second.wetness) { wetter = "first"; describe = "your first is " + first.wetness.AsAdjective() + "; your second: " + second.wetness.AsAdjective(); } else { wetter = "second"; describe = "your second is " + second.wetness.AsAdjective() + "; your first: " + first.wetness.AsAdjective(); } return("Both of your " + VaginaType.VaginaNoun(true) + " are " + loosenessText(first.looseness) + ", but your " + wetter + " is wetter - " + describe + "."); } //same wetness, differnet looseness. else if (first.wetness == second.wetness) { if (first.looseness >= VaginalLooseness.GAPING && second.looseness >= VaginalLooseness.GAPING) { string looser = first.looseness > second.looseness ? "first" : "second"; return("Both of your " + VaginaType.VaginaNoun(true) + " are " + first.wetness.AsAdjective() + " and are so loose they gape; but your " + looser + " is slightly looser. "); } else { string looser, describe; if (first.looseness > second.looseness) { looser = "first"; describe = "your first is " + loosenessText(first.looseness) + "; your second: " + loosenessText(second.looseness); } else { looser = "second"; describe = "your second is " + loosenessText(second.looseness) + "; your first: " + loosenessText(first.looseness); } return("Both of your " + VaginaType.VaginaNoun(true) + " are " + first.wetness.AsAdjective() + ", but your " + looser + " is looser - " + describe + "."); } } //different wetness, looseness //one looser and wetter than other. else if ((first.wetness > second.wetness && first.looseness > second.looseness) || (second.wetness > first.wetness && second.looseness > first.looseness)) { V****a moreUsed; V****a lessUsed; string moreUsedString; string lessUsedString; if (first.wetness > second.wetness) { moreUsedString = "first"; lessUsedString = "second"; moreUsed = first; lessUsed = second; } else { moreUsedString = "second"; lessUsedString = "first"; moreUsed = second; lessUsed = first; } return("Your " + moreUsedString + " is both wetter and looser than your " + lessUsedString + ". Your " + moreUsedString + " is " + loosenessText(moreUsed.looseness) + " and " + WetnessPredicate(moreUsed) + ", while your " + lessUsedString + " is " + loosenessText(lessUsed.looseness) + " and " + WetnessPredicate(lessUsed) + "."); } //mixed else { string firstString, secondString; if (first.wetness > second.wetness) { firstString = "wetter"; secondString = "looser"; } else { firstString = "looser"; secondString = "wetter"; } return("Your first is " + firstString + "than the second, though the second is " + secondString + ". Your first is " + loosenessText(first.looseness) + " and " + WetnessPredicate(first) + ", while your second is " + loosenessText(second.looseness) + " and " + WetnessPredicate(second) + "."); } } }