Newer
Older
["full-term with septuplets", 105000],
["full-term with octuplets", 120000]
super("Belly implant target volume (if present)", pairs, false);
this.setValue(current_rule.set.bellyImplantVol);
this.onchange = (value) => current_rule.set.bellyImplantVol = value;
class AutosurgerySwitch extends BooleanSwitch {
super("Assistant-applied implants (Autosurgery global switch)", [0, 1]);
this.setValue(current_rule.set.autoSurgery);
this.onchange = (value) => current_rule.set.autoSurgery = value;
class IntensiveGrowthSwitch extends BooleanSwitch {
super("Use intensive growth drugs for healthy slaves", [0, 1]);
this.setValue(current_rule.set.growth.intensity);
this.onchange = (value) => current_rule.set.growth.intensity = value;
class HyperGrowthSwitch extends BooleanSwitch {
this.setValue(current_rule.set.hyper_drugs);
this.onchange = (value) => current_rule.set.hyper_drugs = value;
}
}
super("Growth hormone regimes for healthy slaves");
[capFirstChar(noDefaultSetting.text), () => this.nds()],
["Girlish figure", () => this.girlish()],
["Stacked figure", () => this.stacked()],
["Huge but functional", () => this.huge()],
["Unlimited", () => this.unlimited()],
["None", () => this.none()]
];
pairs.forEach(pair => this.appendChild(new OptionsItem(...pair)));
this.breasts = new BreastGrowthList();
this.butts = new ButtGrowthList();
this.lips = new LipGrowthList();
this.sublists.push(this.breasts, this.butts, this.lips);
if (V.seeDicks > 0 || V.makeDicks > 0) {
this.dicks = new DickGrowthList();
this.balls = new BallGrowthList();
this.sublists.push(this.dicks, this.balls);
}
}
_appendContentTo(container) {
super._appendContentTo(container);
this.sublists.forEach(i => i._appendContentTo(container));
[this.breasts, this.butts, this.lips, this.dicks, this.balls].forEach(i => {
this.breasts.setValue(App.RA.makeTarget('<=', 350));
this.butts.setValue(App.RA.makeTarget('<=', 2));
this.lips.setValue(App.RA.makeTarget('<=', 25));
if (this.dicks) { this.dicks.setValue(App.RA.makeTarget('==', 0)); }
if (this.balls) { this.balls.setValue(App.RA.makeTarget('==', 0)); }
this.breasts.setValue(App.RA.makeTarget('>=', 1000));
this.butts.setValue(App.RA.makeTarget('>=', 5));
this.lips.setValue(App.RA.makeTarget('>=', 25));
if (this.dicks) { this.dicks.setValue(App.RA.makeTarget('>=', 4)); }
if (this.balls) { this.balls.setValue(App.RA.makeTarget('>=', 4)); }
this.breasts.setValue(App.RA.makeTarget('>=', 9000));
this.butts.setValue(App.RA.makeTarget('>=', 10));
this.lips.setValue(App.RA.makeTarget('>=', 45));
if (this.dicks) { this.dicks.setValue(App.RA.makeTarget('>=', 6)); }
if (this.balls) { this.balls.setValue(App.RA.makeTarget('>=', 6)); }
this.breasts.setValue(App.RA.makeTarget('>=', 48000));
this.butts.setValue(App.RA.makeTarget('>=', 20));
this.lips.setValue(App.RA.makeTarget('>=', 100));
if (this.dicks) { this.dicks.setValue(App.RA.makeTarget('>=', 30)); }
if (this.balls) { this.balls.setValue(App.RA.makeTarget('>=', 125)); }
class BreastGrowthList extends NumericTargetEditor {
["monstrous", 9000],
["unlimited", 48000],
["none", 0]
this.setValue(current_rule.set.growth.boobs);
this.onchange = (value) => current_rule.set.growth.boobs = value;
class ButtGrowthList extends NumericTargetEditor {
["cute", 2],
["big", 4],
["huge", 6],
["unlimited", 20],
["none", 0]
this.setValue(current_rule.set.growth.butt);
this.onchange = (value) => current_rule.set.growth.butt = value;
class LipGrowthList extends NumericTargetEditor {
["plump", 25],
["beestung", 45],
["facepussy", 100],
["none", 0]
this.setValue(current_rule.set.growth.lips);
this.onchange = (value) => current_rule.set.growth.lips = value;
class DickGrowthList extends NumericTargetEditor {
["above average", 4],
["pornstar", 6],
["unlimited", 30],
["none", 0]
this.setValue(current_rule.set.growth.dick);
this.onchange = (value) => current_rule.set.growth.dick = value;
class BallGrowthList extends NumericTargetEditor {
["sizable", 4],
["cumslave", 6],
["unlimited", 125],
["none", 0]
this.setValue(current_rule.set.growth.balls);
this.onchange = (value) => current_rule.set.growth.balls = value;
["none", 0],
["preventatives", 1],
["curatives", 2],
super("Health drugs", pairs, true, false, true);
this.setValue(current_rule.set.curatives);
this.onchange = (value) => current_rule.set.curatives = value;
class AphrodisiacList extends ListSelector {
["none", 0],
["standard", 1],
["extreme", 2],
["anaphrodisiacs", -1]
this.setValue(current_rule.set.aphrodisiacs);
this.onchange = (value) => current_rule.set.aphrodisiacs = value;
class ContraceptiveList extends RadioSelector {
["contraceptives", true],
["fertile", false],
super("Contraceptives for fertile slaves", drugs, true);
this.setValue(current_rule.set.preg);
this.onchange = (value) => current_rule.set.preg = value;
class AbortionList extends ListSelector {
if (V.pregnancyMonitoringUpgrade === 1 && V.geneticMappingUpgrade >= 1) {
pairs.push(["abort boys", "male"]);
pairs.push(["abort girls", "female"]);
super("Pregnancy termination", pairs);
this.setValue(current_rule.set.abortion);
this.onchange = (value) => current_rule.set.abortion = value;
}
}
class PregDrugsList extends ListSelector {
["none"],
["fast gestation", "fast"],
["slow gestation", "slow"],
["birth suppressors", "suppress"],
["birth stimulators", "stimulate"]
this.setValue(current_rule.set.pregSpeed);
this.onchange = (value) => current_rule.set.pregSpeed = value;
class FemaleHormonesList extends ListSelector {
["Intensive Female", 2],
["Female", 1],
["None", 0],
["Male", -1],
["Intensive Male", -2]
this.setValue(current_rule.set.XX);
this.onchange = (value) => current_rule.set.XX = value;
class GeldingHormonesList extends ListSelector {
["Intensive Female", 2],
["Female", 1],
["None", 0],
["Male", -1],
["Intensive Male", -2]
this.setValue(current_rule.set.gelding);
this.onchange = (value) => current_rule.set.gelding = value;
class ShemaleHormonesList extends ListSelector {
["Intensive Female", 2],
["Female", 1],
["None", 0],
["Male", -1],
this.setValue(current_rule.set.XY);
this.onchange = (value) => current_rule.set.XY = value;
class OtherDrugsList extends ListSelector {
["none"],
["fertility drugs"],
["psychosuppressants"],
["steroids"],
["Erectile dysfunction circumvention", "priapism agents"],
["breast injections"],
["intensive breast injections"],
["butt injections"],
["intensive butt injections"],
["lip injections"],
["penis enhancement"],
["intensive penis enhancement"],
["testicle enhancement"],
["intensive testicle enhancement"],
if (V.precociousPuberty === 1 && V.pubertyHormones) {
drugs.push(["Female hormone injections (Research)", "female hormone injections"]);
drugs.push(["Male hormone injections (Research)", "male hormone injections"]);
}
if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
drugs.push(["breast redistributors"]);
drugs.push(["butt redistributors"]);
drugs.push(["lip atrophiers"]);
drugs.push(["penis atrophiers"]);
drugs.push(["testicle atrophiers"]);
drugs.push(["clitoris atrophiers"]);
drugs.push(["labia atrophiers"]);
}
if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
drugs.push(["hyper breast injections"]);
drugs.push(["hyper butt injections"]);
drugs.push(["hyper penis enhancement"]);
drugs.push(["hyper testicle enhancement"]);
}
if (V.arcologies[0].FSYouthPreferentialistResearch === 1) {
}
if (V.seeHyperPreg === 1 && V.superFertilityDrugs === 1) {
this.setValue(current_rule.set.drug);
this.onchange = (value) => current_rule.set.drug = value;
class EnemaList extends ListSelector {
["aphrodisiac"],
["curative"],
["tightener"]
);
}
super("Enemas", enemas);
this.setValue(current_rule.set.inflationType);
this.onchange = (value) => current_rule.set.inflationType = value;
}
}
class DietList extends ListSelector {
["fix fat and skinny slaves", "attractive"],
["curvy", 30],
["average", 0],
["thin", -30]
["feminine", "XX"],
["masculine", "XY"]
super("Slave diets", diets);
this.setValue(current_rule.set.diet);
this.onchange = (value) => current_rule.set.diet = value;
this.setValue(current_rule.set.dietGrowthSupport);
this.onchange = (value) => current_rule.set.dietGrowthSupport = value;
class DietBaseList extends List {
constructor() {
// TODO: better data structure?
const pairs = [
[capFirstChar(noDefaultSetting.text), {cum: null, milk: null}],
["Normal Diet", {cum: 0, milk: 0}],
["Cum Added", {cum: 1, milk: 0}],
["Milk Added", {cum: 0, milk: 1}],
["Cum & Milk Added", {cum: 1, milk: 1}],
["Cum-Based", {cum: 2, milk: 0}],
["Milk-Based", {cum: 0, milk: 2}],
this.setValue(this.value2string(current_rule.set.dietCum, current_rule.set.dietMilk));
this.onchange = (value) => {
current_rule.set.dietCum = value.cum;
current_rule.set.dietMilk = value.milk;
this.setValue(this.value2string(current_rule.set.dietCum, current_rule.set.dietMilk));
value2string(cum, milk) {
return `cum: ${cum}, milk: ${milk}`;
}
class DietSolidFoodList extends RadioSelector {
this.setValue(current_rule.set.onDiet);
this.onchange = (value) => current_rule.set.onDiet = value;
}
}
class MuscleList extends NumericTargetEditor {
["none", 0],
["toned", 20],
["ripped", 50],
["massive", 100],
["weak", -20]
this.setValue(current_rule.set.muscles);
this.onchange = (value) => current_rule.set.muscles = value;
class BraceList extends ListSelector {
["none"],
["straighten"],
["universal"]
this.setValue(current_rule.set.teeth);
this.onchange = (value) => current_rule.set.teeth = value;
class LivingStandardList extends ListSelector {
["luxurious"],
["normal"],
["spare"]
this.setValue(current_rule.set.livingRules);
this.onchange = (value) => current_rule.set.livingRules = value;
class PunishmentList extends ListSelector {
["confinement"],
["whipping"],
["chastity"],
["situational"]
this.setValue(current_rule.set.standardPunishment);
this.onchange = (value) => current_rule.set.standardPunishment = value;
class RewardList extends ListSelector {
["relaxation"],
["drugs"],
["orgasm"],
["situational"]
this.setValue(current_rule.set.standardReward);
this.onchange = (value) => current_rule.set.standardReward = value;
class ReleaseList extends ListSelector {
["permissive"],
["sapphic"],
["masturbation"],
["restrictive"],
["chastity"]
this.setValue(current_rule.set.releaseRules);
this.onchange = (value) => current_rule.set.releaseRules = value;
class ToyHoleList extends ListSelector {
["all her holes"],
["mouth"],
["boobs"],
["pussy"],
["ass"],
["dick"]
];
super("Fucktoy use preference", pairs);
this.setValue(current_rule.set.toyHole);
this.onchange = (value) => current_rule.set.toyHole = value;
}
}
class SmartFetishList extends ListSelector {
["vanilla"],
["oral"],
["anal"],
["boobs"],
["Preg", "pregnancy"],
["Pain", "masochist"],
["Sadism", "sadist"]
];
super("Smart piercing fetish target", pairs);
this.setValue(current_rule.set.clitSetting);
this.onchange = (value) => current_rule.set.clitSetting = value;
class SmartXYAttractionList extends ListSelector {
["passionate", 100],
["attracted", 75],
["indifferent", 45],
["none", 0]
this.setValue(current_rule.set.clitSettingXY);
this.onchange = (value) => current_rule.set.clitSettingXY = value;
class SmartXXAttractionList extends ListSelector {
["passionate", 100],
["attracted", 75],
["indifferent", 45],
["none", 0]
this.setValue(current_rule.set.clitSettingXX);
this.onchange = (value) => current_rule.set.clitSettingXX = value;
class SmartEnergyList extends ListSelector {
["nympho", 100],
["sex addict", 85],
["powerful", 65],
["healthy", 45],
["weak", 25],
["frigid", 0]
this.setValue(current_rule.set.clitSettingEnergy);
this.onchange = (value) => current_rule.set.clitSettingEnergy = value;
["permissive"],
["suppress accents", "accent elimination"],
["restrictive"]
this.setValue(current_rule.set.speechRules);
this.onchange = (value) => current_rule.set.speechRules = value;
["permissive"],
["just friends"],
["restrictive"]
this.setValue(current_rule.set.relationshipRules);
this.onchange = (value) => current_rule.set.relationshipRules = value;
class PornBroadcastStatus extends RadioSelector {
constructor() {
const pairs = [
super("Porn Broadcasting Status", pairs, true);
this.setValue(current_rule.set.pornFeed);
this.onchange = (value) => current_rule.set.pornFeed = value;
}
}
class PornList extends ListSelector {
/* ["No broadcasting", -1], **This has changed, it would now use .pornFeed** */
["1000", 1000],
["2000", 2000],
["3000", 3000],
["4000", 4000],
["5000", 5000]
this.setValue(current_rule.set.pornFameSpending);
this.onchange = (value) => current_rule.set.pornFameSpending = value;
class EyewearList extends ListSelector {
["correct with contacts"],
["universal glasses"],
["blur with glasses"],
["blur with contacts"]
];
super("Eyewear", pairs);
this.setValue(current_rule.set.eyewear);
this.onchange = (value) => current_rule.set.eyewear = value;
super("Eye coloring");
this.colorlist = new LensesColorList(this);
this.shapelist = new LensesShapeList(this);
this.colorlist.onchange = () => this.setValue(undefined);
this.shapelist.onchange = () => this.setValue(undefined);
this.setValue(current_rule.set.eyeColor);
this.onchange = (value) => current_rule.set.eyeColor = value;
_appendContentTo(container) {
super._appendContentTo(container);
this.colorlist._appendContentTo(container);
this.shapelist._appendContentTo(container);
if (this.colorlist.getData() !== null) { lst.push(this.colorlist.getData()); }
if (this.shapelist.getData() !== null) { lst.push(this.shapelist.getData()); }
return (lst.length === 0) ? null : lst.join(" ");
if (val === undefined) {
val = this.combine();
} else {
if (val === noDefaultSetting.value) {
this.colorlist.setValue(val);
this.shapelist.setValue(val);
} else {
//
}
}
super.setValue(val);
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
class LensesColorList extends List {
constructor(parent) {
const items =
[
"blue",
"black",
"brown",
"green",
"turquoise",
"sky-blue",
"hazel",
"pale-grey",
"white",
"pink",
"yellow",
"orange",
"amber",
"red"
];
super("Color", items);
this.labelElement_.className = "ra-sub-label";
this.parent = parent;
}
createValueElement() {
return null;
}
}
class LensesShapeList extends List {
constructor(parent) {
const items =
[
"catlike",
"serpent-like",
"goat-like",
"devilish",
"demonic",
"hypnotic",
"heart-shaped",
"star-shaped",
"wide-eyed",
"almond-shaped",
"bright",
"teary",
"vacant"
];
super("Shape", items);
this.labelElement_.className = "ra-sub-label";
this.parent = parent;
}
createValueElement() {
return null;
["correct with hearing aids"],
["muffle with ear plugs"],
["deafen with ear plugs"]
];
this.setValue(current_rule.set.earwear);
this.onchange = (value) => current_rule.set.earwear = value;
}
}
class MakeupList extends ListSelector {
["makeup-free", 0],
["nice", 1],
["gorgeous", 2],
["color-coordinate with hair", 3],
["slutty", 4]
this.setValue(current_rule.set.makeup);
this.onchange = (value) => current_rule.set.makeup = value;
class NailsList extends ListSelector {
["clipped", 0],
["extended", 1],
["color-coordinate with hair", 2],
["sharp and claw-like", 3],
["bright and glittery", 4],
["hooker nails", 5],
["neon colored", 6],
["neon color-coordinate with hair", 7],
["metallic painted", 8],
["metallic color-coordinate with hair", 9]
this.setValue(current_rule.set.nails);
this.onchange = (value) => current_rule.set.nails = value;
["very short", 5],
["short", 10],
["shoulder length", 30],
["long", 60],
["very long", 100],
["floor length", 150]
super("Hair length", pairs, true, false, true);
this.setValue(current_rule.set.hLength);
this.onchange = (value) => current_rule.set.hLength = value;
constructor() {
const pairs = [
["maintain hair length", 1],
["do not maintain hair length", 0]
];
super("Hair length maintenance", pairs, true, false, true);
this.setValue(current_rule.set.haircuts);
this.onchange = (value) => current_rule.set.haircuts = value;
}
}
class HairColorList extends ListSelector {
constructor() {
const pairs = [
["blonde"],
["golden"],
["platinum blonde"],
["green"],
["blue"],
["pink"],
["dark brown"],
["brown"],
["auburn"],
["burgundy"],
["chocolate"],
["chestnut"],
["hazel"],
["purple"],
["dark orchid"],
["sea green"],
["green-yellow"],
["dark blue"],
["blazing red"],
["neon green"],
["neon blue"],
["neon pink"]
];
super("Hair color", pairs);
this.setValue(current_rule.set.hColor);
this.onchange = (value) => current_rule.set.hColor = value;
class HairStyleList extends ListSelector {
constructor() {
const pairs = [
["neat"],
["shaved"],
["trimmed"],
["buzzcut"],
["up"],
["ponytail"],
["bun"],
["curled"],
["permed"],
["luxurious"],
["dreadlocks"],
["cornrows"],
["braided"],
["tails"],
this.setValue(current_rule.set.hStyle);
this.onchange = (value) => current_rule.set.hStyle = value;
class EyebrowColorList extends ListSelector {
constructor() {
const pairs = [
["blonde"],
["golden"],
["platinum blonde"],
["copper"],
["ginger"],
["red"],
["deep red"],
["green"],
["blue"],
["pink"],
["dark brown"],
["brown"],
["auburn"],
["burgundy"],
["chocolate"],
["chestnut"],
["hazel"],
["black"],
["grey"],
["silver"],
["white"],
["blue-violet"],
["purple"],
["dark orchid"],
["sea green"],
["green-yellow"],
["dark blue"],
["blazing red"],
["neon green"],
["neon blue"],
["neon pink"]
];
super("Eyebrow hair color, when present", pairs);
this.setValue(current_rule.set.eyebrowHColor);
this.onchange = (value) => current_rule.set.eyebrowHColor = value;
}
}
class EyebrowStyleList extends ListSelector {
constructor() {
const pairs = [
["shaved"],
["straight"],
["rounded"],
["natural"],
["slanted inwards"],
["slanted outwards"],
["high-arched"],
["elongated"],
["shortened"],
["curved"]
];
super("Eyebrow style", pairs);
this.setValue(current_rule.set.eyebrowHStyle);