public string RestoredAllVaginasGeneric(VaginaCollectionData oldVaginas) { //if changed has elements, we know they still exist in the current collection. IEnumerable <ValueDifference <VaginaData> > changed = ChangedVaginas(oldVaginas, true); int changeCount = changed.Count(x => x.newValue.isDefault && !x.oldValue.isDefault); if (changeCount == 0) { return(""); } int humanVags = CountVaginasOfType(VaginaType.HUMAN); string changeText; if (vaginas.Count == 1) { //old should never be null. VaginaData old = oldVaginas.vaginas.FirstOrDefault(x => x.collectionID == vaginas[0].collectionID); if (old is null) { return(""); } else { return(vaginas[0].RestoredText(old)); } } if (humanVags < vaginas.Count) { changeText = "vaginas and find that one has returned back to a more natural, human size and color."; } else if (humanVags > changeCount) { changeText = "vaginas and find that one has returned back to something more fit on a human, matching the other one."; } else { changeText = "vaginas and find that they have turned back to their more natural, human size and color."; } string armorText = creature?.wearingArmor == true || creature?.wearingUpperGarment == true ? "Undoing your clothes" : "Looking down"; return(GlobalStrings.NewParagraph() + "nSomething invisible brushes against your sex, making you twinge. " + armorText + ", you take a look at your " + changeText); }
protected virtual string RestoreAllVaginasText(Creature target, VaginaCollectionData oldCollection) { return(target.genitals.allVaginas.RestoredAllVaginasGeneric(oldCollection)); }
//MOD NOTE: this has been changed to work like bimbo liqueur - it will remove all vaginas and restore breasts to manly defaults if //the futa perk is not active. protected override string OnConsumeAttempt(Creature consumer, out bool consumeItem, out bool isBadEnd) { isBadEnd = false; StringBuilder sb = new StringBuilder(); //get our common bimbo/bro/futa perk store. Note that it may be null (if we don't have it). BimBro bimbro = consumer.GetPerkData <BimBro>(); //intro text. //first check: we don't have any bro/futa/bimbo perks, because it's not in our perk list. do the standard faire. sb.Append(Intro(consumer, bimbro)); if (bimbro?.hasBroEffect == true) { (consumer as CombatCreature)?.RecoverFatigue(33); (consumer as CombatCreature)?.AddHPPercent(1); } VaginaCollectionData oldVaginaCollection = consumer.genitals.allVaginas.AsReadOnlyData(); //get taller. only occurs if the player does not already have the bro perk in any form. if ((bimbro is null || !bimbro.broBody) && consumer.build.heightInInches < 77) { short delta = consumer.build.SetHeight(77); sb.Append(GrewTaller(consumer, delta)); } //(T**s b' gone) //Does not affect creature if they already have bimbo or futa perks. if (bimbro is null || bimbro.broBody) { //Note: minimum cup size respects current gender. we'll need to make the creature male (or genderless) first. consumer.RemoveAllVaginas(); if (consumer.genitals.BiggestCupSize() >= consumer.genitals.smallestPossibleMaleCupSize) { BreastCollectionData oldRows = consumer.genitals.allBreasts.AsReadOnlyData(); consumer.RemovePerk <Feeder>(); bool stoppedLactation = consumer.genitals.SetLactationTo(LactationStatus.NOT_LACTATING); sb.Append(ChangedBreastsText(consumer, bimbro, oldRows, stoppedLactation)); } } //Body tone Flavor text. No effect on stats (yet) sb.Append(BecomeRippedFlavorText(consumer, bimbro)); //Dick&balls growth. Affects all. //(has dick less than 10 inches) if (consumer.hasCock) { bool grewBalls = !consumer.hasBalls; bool lengthenedCock = false; if (consumer.cocks[0].length < 10) { lengthenedCock = true; consumer.cocks[0].SetLength(10); if (consumer.cocks[0].girth < 2.75) { consumer.cocks[0].SetGirth(2.75); } } if (!consumer.hasBalls) { consumer.balls.GrowBalls(2, 3); } sb.Append(LengthenedCock(consumer, bimbro, lengthenedCock, grewBalls)); } //(No dick) else { consumer.AddCock(CockType.defaultValue, 12, 2.75); bool grewBalls = false; if (!consumer.balls.hasBalls) { grewBalls = true; consumer.balls.GrowBalls(2, 3); } sb.Append(GrewCock(consumer, bimbro, grewBalls)); } //(Pussy b gone) //Note: only applies if consumer does not have bimbo or futa perks. also note that we already silently removed them so the breasts would resize correctly. //so all this does is print out the data. if ((bimbro is null || bimbro.broBody) && oldVaginaCollection.hasVagina) { sb.Append(RemovedAllVaginas(consumer, oldVaginaCollection)); } //(below max masculinity) if ((bimbro is null || bimbro.broBody) && consumer.femininity > 0) { FemininityData oldFem = consumer.femininity.AsReadOnlyData(); sb.Append(consumer.ModifyFemininity(0, 100)); sb.Append(Masculinize(consumer, bimbro is null, oldFem)); } //max tone. Thickness + 50 //both are silent. consumer.build.ChangeMuscleToneToward(100, 100); consumer.build.ChangeThicknessToward(100, 50); if (consumer.intelligence > 21) { consumer.SetIntelligence((byte)Math.Floor(Math.Max(consumer.intelligenceTrue / 5.0, 21))); } consumer.DeltaCreatureStats(str: 33, tou: 33, inte: -1, lib: 4, lus: 40); sb.Append(Outro(consumer, bimbro, consumer.perks.HasPerk <Feeder>())); //apply the perks. this will also correct any silent data we missed. if (bimbro is null) { consumer.AddPerk(new BimBro(Gender.MALE)); } else { bimbro.Broify(); } ////Bonus cum production! //sb.Append("<b>(Bro Body - Perk Gained!)" + Environment.NewLine); //sb.Append("(Bro Brains - Perk Gained!)</b>" + Environment.NewLine);//int to 20. max int 50) //if (consumer.HasPerk<Feeder>()) //{ // sb.Append("<b>(Perk Lost - Feeder!)</b>" + Environment.NewLine); // consumer.RemovePerk<Feeder>(); //} consumeItem = true; return(sb.ToString()); }
private string RemovedAllVaginas(Creature consumer, VaginaCollectionData oldVaginaCollection) { return("At the same time, your " + oldVaginaCollection.AllVaginasLongDescription(out bool isPlural) + (isPlural ? " burn" : " burns") + " hot, nearly feeling on fire. You cuss in a decidedly masculine way for a moment before the pain fades to a dull itch. " + "Scratching it, you discover your lady-parts are gone. Only a sensitive patch of skin remains." + GlobalStrings.NewParagraph()); }