Newer
Older
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
["Scalemail bikini", "a scalemail bikini"],
["Succubus costume", "a succubus outfit"],
["Suit (nice)", "nice business sattire"],
["Suit (slutty", "slutty business attire"],
["Spats and tank top", "spats and a tank top"]
];
const fsnclothes = [
["Body oil (FS)", "body oil"],
["Bunny outfit (FS)", "a bunny outfit"],
["Chattel habit (FS)", "a chattel habit"],
["Conservative clothing (FS)", "conservative clothing"],
["Harem gauze (FS)", "harem gauze"],
["Huipil (FS)", "a huipil"],
["Kimono (FS)", "a kimono"],
["Maternity dress (FS)", "a maternity dress"],
["Maternity lingerie (FS)", "attractive lingerie for a pregnant woman"],
["Slutty qipao (FS)", "a slutty qipao"],
["Stretch pants and a crop-top (FS)", "stretch pants and a crop-top"],
["Toga (FS)", "a toga"],
["Western clothing (FS)", "Western clothing"],
];
fsnclothes.forEach(pair => { if (isItemAccessible(pair[1])) nclothes.push(pair); });
this.appendChild(nice);
const hclothes = [
["Nude", "no clothing"],
["Penitent nun", "a penitent nuns habit"],
["Restrictive latex", "restrictive latex"],
["Shibari ropes", "shibari ropes"],
["Uncomfortable straps", "uncomfortable straps"]
];
const fshclothes = [
["Chains (FS)", "chains"],
];
fshclothes.forEach(pair => { if (isItemAccessible(pair[1])) hclothes.push(pair); });
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
this.appendChild(harsh);
this.setValue(V.currentRule.set.clothes);
this.onchange = (data) => V.currentRule.set.clothes = value;
}
}
class CollarList extends List {
constructor() {
const items = [
["No default collar setting", "no default setting"],
["No collar", "none"],
];
super("Collar", items);
const ncollars = [
["Stylish leather", "stylish leather"],
["Satin choker", "satin choker"],
["Silken Ribbon", "silk ribbon"],
["Heavy Gold", "heavy gold"],
["Pretty jewelry", "pretty jewelry"],
["Cowbell", "leather with cowbell"]
];
if (V.seeAge !== 0)
ncollars.push(["Nice retirement counter", "nice retirement counter"]);
const fsncollars = [
["Bowtie collar", "bowtie"],
["ancient Egyptian", "ancient Egyptian"],
];
fsncollars.forEach(pair => { if (isItemAccessible(pair[1])) ncollars.push(pair); });
this.appendChild(nice);
const hcollars = [
["Tight steel", "tight steel"],
["Uncomfortable leather", "uncomfortable leather"],
["Pregnancy biometrics", "preg biometrics"],
["Shock punishment", "shock punishment"],
["Dildo gag", "dildo gag"],
["Ball gag", "ball gag"],
["Bit gag", "bit gag"],
["Neck corset", "neck corset"],
];
if (V.seeAge !== 0)
hcollars.push(["Cruel retirement counter", "cruel retirement counter"]);
if (V.toysBoughtGags === 1)
hcollars.push(["Massive dildo gag", "massive dildo gag"]);
this.appendChild(harsh);
this.setValue(V.currentRule.set.collar);
this.onchange = (value) => V.currentRule.set.collar = value;
}
}
class ShoeList extends List {
constructor() {
this.setValue(V.currentRule.set.shoes);
this.onchange = (value) => V.currentRule.set.shoes = value;
}
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
class CorsetList extends List {
constructor() {
const bellies = [];
setup.bellyAccessories.forEach(acc => {
if (acc.fs === undefined && acc.rs === undefined)
bellies.push([acc.name, acc.value]);
else if (acc.fs === "repopulation" && V.arcologies[0].FSRepopulationFocus !== "unset")
bellies.push([acc.name + " (FS)", acc.value]);
else if (acc.rs === "boughtBelly" && V.clothesBoughtBelly === 1)
bellies.push([acc.name + " (Purchased)", acc.value]);
});
super("Corsetage", bellies);
this.setValue(V.currentRule.set.bellyAccessory);
this.onchange = (value) => V.currentRule.set.bellyAccessory;
}
}
class VagAccVirginsList extends List {
constructor() {
const accs = [];
setup.vaginalAccessories.forEach(acc => {
if (acc.fs === undefined && acc.rs === undefined)
accs.push([acc.name, acc.value]);
else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
accs.push([acc.name + " (Purchased)", acc.value]);
});
super("Vaginal accessories for virgins");
this.setValue(V.currentRule.set.virginAccessory);
this.onchange = (value) => V.currentRule.set.virginAccessory = value;
}
class VagAccAVirginsList extends List {
constructor() {
const accs = [];
setup.vaginalAccessories.forEach(acc => {
if (acc.fs === undefined && acc.rs === undefined)
accs.push([acc.name, acc.value]);
else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
accs.push([acc.name + " (Purchased)", acc.value]);
});
super("Vaginal accessories for anal virgins");
this.setValue(V.currentRule.set.aVirginAccessory);
this.onchange = (value) => V.currentRule.set.aVirginAccessory = value;
}
class VagAccOtherList extends List {
constructor() {
const accs = [];
setup.vaginalAccessories.forEach(acc => {
if (acc.fs === undefined && acc.rs === undefined)
accs.push([acc.name, acc.value]);
else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
accs.push([acc.name + " (Purchased)", acc.value]);
});
super("Vaginal accessories for other slaves");
this.setValue(V.currentRule.set.vaginalAccessory);
this.onchange = (value) => V.currentRule.set.vaginalAccessory = value;
}
super("Dick accessories for anal virgins", setup.dickAccessories.map(i => [i.name, i.value]));
this.setValue(V.currentRule.set.aVirginDickAccessory);
this.onchange = (value) => V.currentRule.set.aVirginDickAccessory = value;
}
super("Dick accessories for other slaves", setup.dickAccessories.map(i => [i.name, i.value]));
this.setValue(V.currentRule.set.dickAccessory);
this.onchange = (value) => V.currentRule.set.dickAccessory = value;
}
class ButtplugsVirginsList extends List {
constructor() {
const accs = [];
setup.buttplugs.forEach(acc => {
if (acc.fs === undefined && acc.rs === undefined)
accs.push([acc.name, acc.value]);
else if (acc.rs === "buyBigPlugs" && V.toysBoughtButtPlugs === 1)
accs.push([acc.name + " (Purchased)", acc.value]);
});
super("Buttplugs for anal virgins");
this.setValue(V.currentRule.set.aVirginButtplug);
this.onchange = (value) => V.currentRule.set.aVirginButtplug = value;
}
class ButtplugsOtherList extends List {
constructor() {
const accs = [];
setup.buttplugs.forEach(acc => {
if (acc.fs === undefined && acc.rs === undefined)
accs.push([acc.name, acc.value]);
else if (acc.rs === "buyBigPlugs" && V.toysBoughtButtPlugs === 1)
accs.push([acc.name + " (Purchased)", acc.value]);
});
super("Buttplugs for other slaves");
this.setValue(V.currentRule.set.buttplug);
this.onchange = (value) => V.currentRule.set.buttplug = value;
}
class ImplantVolumeList extends List {
constructor() {
const pairs = [
["No changes", -1],
["Empty implant", 0],
["Early pregnancy", 1500],
["Second trimester pregnancy", 5000],
["Full-term pregnancy", 15000],
["Full-term with twins", 30000],
["Full-term with triplets", 45000],
["Full-term with quadruplets", 60000],
["Full-term with quintuplets", 75000],
["Full-term with sextuplets", 90000],
["Full-term with septuplets", 105000],
["Full-term with octuplets", 120000]
];
super("Belly implant target volume (if present)", pairs);
this.setValue(V.currentRule.set.bellyImplantVol);
this.onchange = (value) => V.currentRule.set.bellyImplantVol = value;
}
}
class AutosurgerySwitch extends List {
constructor() {
const pairs = [
["Activate", 1],
["Off", 0],
];
super("Assistant-applied implants (Autosurgery global switch)", pairs);
this.setValue(V.currentRule.set.autoSurgery);
this.onchange = (value) => V.currentRule.set.autoSurgery = value;
}
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
class GrowthList extends Options {
constructor() {
super();
this.sublists = [];
const pairs = [
["No default setting", () => 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);
}
render() {
const elem = document.createElement("div");
const span = document.createElement("span");
span.innerHTML = "Growth hormone regimes for healthy slaves:";
elem.appendChild(span);
return elem;
}
nds() {
[this.breasts, this.butts, this.lips, this.dicks, this.balls].forEach(i => {
i.setValue("no default change");
i.propagateChange();
});
}
girlish() {
this.breasts.setValue(350);
this.butts.setValue(2);
this.lips.setValue(25);
if (this.dicks) this.dicks.setValue(0);
if (this.balls) this.balls.setValue(0);
this.sublists.forEach(i => i.propagateChange());
}
stacked() {
this.breasts.setValue(1000);
this.butts.setValue(4);
this.lips.setValue(25);
if (this.dicks) this.dicks.setValue(4);
if (this.balls) this.balls.setValue(4);
this.sublists.forEach(i => i.propagateChange());
}
huge() {
this.breasts.setValue(9000);
this.butts.setValue(10);
this.lips.setValue(45);
if (this.dicks) this.dicks.setValue(6);
if (this.balls) this.balls.setValue(6);
this.sublists.forEach(i => i.propagateChange());
}
unlimited() {
this.breasts.setValue(48000);
this.butts.setValue(10);
this.lips.setValue(100);
if (this.dicks) this.dicks.setValue(10);
if (this.balls) this.balls.setValue(6);
this.sublists.forEach(i => i.propagateChange());
}
none() {
this.sublists.forEach(i => {
i.setValue(0);
i.propagateChange();
});
}
class BreastGrowthList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["B Cup", 350],
["D Cup", 1000],
["Monstrous", 9000],
["Unlimited", 48000],
["None", 0]
];
super("Breasts", pairs, true);
this.setValue(V.currentRule.set.growth_boobs);
this.onchange = (value) => V.currentRule.set.growth_boobs = value;
}
class ButtGrowthList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Cute", 2],
["Big", 4],
["Huge", 6],
["Unlimited", 10],
["None", 0]
];
super("Butts", pairs, true);
this.setValue(V.currentRule.set.growth_butt);
this.onchange = (value) => V.currentRule.set.growth_butt = value;
}
class LipGrowthList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Plump", 25],
["Beestung", 45],
["Facepussy", 100],
["None", 0]
];
super("Lips", pairs, true);
this.setValue(V.currentRule.set.growth_lips);
this.onchange = (value) => V.currentRule.set.growth_lips = value;
}
class DickGrowthList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Above average", 4],
["Pornstar", 6],
["Unlimited", 10],
["None", 0]
];
super("Dicks, if present", pairs, true);
this.setValue(V.currentRule.set.growth_dick);
this.onchange = (value) => V.currentRule.set.growth_dick = value;
}
class BallGrowthList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Sizeable", 4],
["Cumslave", 6],
["Unlimited", 10],
["None", 0]
];
super("Balls, if present", pairs, true);
this.setValue(V.currentRule.set.growth_balls);
this.onchange = (value) => V.currentRule.set.growth_balls = value;
}
class CurrativesList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["None", "none", 0],
["Preventatives", "preventatives", 1],
["Curatives", "curatives", 2]
];
super("Health drugs", pairs);
this.setValue(V.currentRule.set.curatives);
this.onchange = (value) => V.currentRule.set.curatives = value;
}
class AphrodisiacList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["None", "none", 0],
["Standard", "standard", 1],
["Extreme", "extreme", 2],
["Anaphrodisiacs", "anaphrodisiacs", -1]
];
super("Aphrodisiacs", pairs);
this.setValue(V.currentRule.set.aphrodisiacs);
this.onchange = (value) => V.currentRule.set.aphrodisiacs = value;
class ContraceptiveList extends List {
constructor() {
const drugs = [
["No default setting", "no default setting"],
["Contraceptives", "contraceptives", -1],
["Fertile", "fertile", 0],
["Very fertile", "very fertile", 1],
["Extremely fertile", "extremely fertile", 2],
];
if (V.seeHyperPreg === 1 && V.superFertilityDrugs === 1) {
drugs.push(["Hyper fertile", "hyper fertile", 3]);
drugs.push(["Maximize fertility", "maximize fertility", 4]);
}
super("Contraceptives for fertile slaves", drugs);
this.setValue(V.currentRule.set.preg);
this.onchange = (value) => V.currentRule.set.preg = value;
}
class PregDrugsList extends List {
constructor() {
const pairs = [
["No changes", "no changes", "no default setting"],
["None", "none"],
["Fast gestation", "fast gestation", "fast"],
["Slow gestation", "slow gestation", "slow"],
["Birth supressors", "birth supressors", "suppress"],
["Birth stimulators", "birth stimulators", "stimulate"]
];
super("Pregnancy control agents for pregnant slaves", pairs);
this.setValue(V.currentRule.set.pregSpeed);
this.onchange = (value) => V.currentRule.set.pregSpeed = value;
}
class FemaleHormonesList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Intensive Female", "intensive female", 2],
["Female", "female", 1],
["None", "none", 0],
["Male", "male", -1],
["Intensive Male", "intensive male", -2]
];
super("Hormones for female slaves", pairs);
this.setValue(V.currentRule.set.XX);
this.onchange = (value) => V.currentRule.set.XX = value;
}
class GeldingHormonesList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Intensive Female", "intensive female", 2],
["Female", "female", 1],
["None", "none", 0],
["Male", "male", -1],
["Intensive Male", "intensive male", -2]
];
super("Hormones for geldings", pairs);
this.setValue(V.currentRule.set.gelding);
this.onchange = (value) => V.currentRule.set.gelding = value;
}
class ShemaleHormonesList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Intensive Female", "intensive female", 2],
["Female", "female", 1],
["None", "none", 0],
["Male", "male", -1],
["Intensive Male", "intensive male", -2]
];
super("Hormones for shemales", pairs);
this.setValue(V.currentRule.set.XY);
this.onchange = (value) => V.currentRule.set.XY = value;
}
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
class OtherDrugsList extends List {
constructor() {
const drugs = [];
setup.drugs.forEach(drug => {
if (drug.fs === undefined && drug.rs === undefined)
drugs.push([drug.name, drug.value]);
else if (drug.rs === "growth" && V.growthStim === 1)
drugs.push([drug.name + " (Research)", drug.value]);
else if (drug.rs === "pubHorm" && V.precociousPuberty === 1 && V.pubertyHormones === 1)
drugs.push([drug.name + " (Research)", drug.value]);
else if (drug.rs === "nosag" && V.purchasedSagBGone === 1)
drugs.push([drug.name + " (Product)", drug.value]);
else if (drug.fs === "slimness" && V.arcologies[0].FSSlimnessEnthusiastResearch === 1)
drugs.push([drug.name + " (FS)", drug.value]);
else if (drug.fs === "youth" && V.arcologies[0].FSYouthPreferentialistResearch === 1)
drugs.push([drug.name + " (FS)", drug.value]);
});
super("Other drugs (Will be overriden by hormones and other drugs where applicable)", drugs);
this.setValue(V.currentRule.set.drug);
this.onchange = (value) => V.currentRule.set.drug = value;
}
}
class DietList extends List {
constructor() {
const diets = [
["no default setting", "no default setting"],
["Fix fat and skinny slaves", "fix fat and skinny slaves", "attractive"],
["Curvy", "curvy", 30],
["Average", "average", 0],
["Thin", "thin", -30]
];
if (V.feeder === 1) {
diets.push(
["Feminine", "feminine", "XX"],
["Masculine", "masculine", "XY"]
);
if (V.dietXXY === 1)
diets.push(["Futanari", "futanari", "XXY"]);
}
if (V.dietCleanse === 1)
diets.push(["Cleansing", "promote health", "cleansing"]);
if (V.dietFertility === 1)
diets.push(["Feritlity", "promote fertility", "fertility"]);
if (V.cumProDiet === 1)
diets.push(["Cum production", "promote cum production", "cum production"]);
super("Slave diets", diets);
this.setValue(V.currentRule.set.diet);
this.onchange = (value) => V.currentRule.set.diet = value;
}
class DietGrowthList extends List {
constructor() {
const pairs = [
["On", 1],
["Off", 0]
];
super("Diet support for growth drugs", pairs);
this.setValue(V.currentRule.set.dietGrowthSupport);
this.onchange = (value) => V.currentRule.set.dietGrowthSupport = value;
}
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
class DietBaseList extends List {
constructor() {
// TODO: better data structure?
const pairs = [
["No default setting", {cum: "no default setting", milk: "no default setting"}],
["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}],
];
super("Diet base", pairs);
this.setValue({cum: V.currentRule.set.dietCum, milk: V.currentRule.set.dietMilk});
this.onchange = (value) => {
V.currentRule.set.dietCum = value.cum;
V.currentRule.set.dietMilk = value.milk;
};
}
}
class MuscleList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["None", "None", 0],
["Toned", "Toned", 20],
["Ripped", "Ripped", 50],
["Massive", "Massive", 100],
["Weak", "Weak", -20]
];
super("Muscles", pairs, true);
this.setValue(V.currentRule.set.muscles);
this.onchange = (value) => V.currentRule.set.muscles = value;
}
class BraceList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["None", "none"],
["Straighten", "straighten"],
["Universal", "universal"]
];
super("Braces", pairs);
this.setValue(V.currentRule.set.teeth);
this.onchange = (value) => V.currentRule.set.teeth = value;
}
class LivingStandardList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Luxurious", "luxurious"],
["Normal", "normal"],
["Spare", "spare"]
];
super("Living standard", pairs);
this.setValue(V.currentRule.set.livingRules);
this.onchange = (value) => V.currentRule.set.livingRules = value;
}
class PunishmentList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Confinement", "confinement"],
["Whipping", "whipping"],
["Chastity", "chastity"],
["Situational", "situational"]
];
super("Typical punishment", pairs);
this.setValue(V.currentRule.set.standardPunishment);
this.onchange = (value) => V.currentRule.set.standardPunishment = value;
}
class RewardList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Relaxation", "relaxation"],
["Drugs", "drugs"],
["Orgasm", "orgasm"],
["Situational", "situational"]
];
super("Typical reward", pairs);
this.setValue(V.currentRule.set.standardReward);
this.onchange = (value) => V.currentRule.set.standardReward = value;
}
class ReleaseList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Permissive", "permissive"],
["Sapphic", "sapphic"],
["Masturbation", "masturbation"],
["Restritive", "restrictive"]
];
super("Release rules", pairs);
this.setValue(V.currentRule.set.releaseRules);
this.onchange = (value) => V.currentRule.set.releaseRules = value;
}
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
class SmartFetishList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Vanilla", "vanilla"],
["Oral", "oral"],
["Anal", "anal"],
["Boobs", "boobs"],
["Sub", "submissive"],
["Dom", "dom"],
["Humiliation", "humiliation"],
["Preg", "pregnancy"],
["Pain", "masochist"],
["Sadism", "sadist"]
];
super("Smart piercing fetish target", pairs);
this.setValue(V.currentRule.set.clitSetting);
this.onchange = (value) => V.currentRule.set.clitSetting = value;
}
}
class SmartXYAttractionList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Passionate", "passionate", 100],
["Attracted", "attracted", 75],
["Indifferent", "indifferent", 45],
["None", "none", 0]
];
super("Smart piercing XY attraction target", pairs);
this.setValue(V.currentRule.set.clitSettingXY);
this.onchange = (value) => V.currentRule.set.clitSettingXY = value;
}
class SmartXXAttractionList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Passionate", "passionate", 100],
["Attracted", "attracted", 75],
["Indifferent", "indifferent", 45],
["None", "none", 0]
];
super("Smart piercing XX attraction target", pairs);
this.setValue(V.currentRule.set.clitSettingXX);
this.onchange = (value) => V.currentRule.set.clitSettingXX = value;
}
class SmartEnergyList extends List {
constructor() {
const pairs = [
["Nympho", "nympho", 100],
["Sex Addict", "sex addict", 85],
["Powerful", "powerful", 65],
["Healthy", "healthy", 45],
["Weak", "weak", 25],
["Frigid", "frigid", 0]
];
super("Smart piercing sex drive target", pairs);
this.setValue(V.currentRule.set.clitSettingEnergy);
this.onchange = (value) => V.currentRule.set.clitSettingEnergy = value;
}
class SpeechList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["Permissive", "permissive"],
["Suppress accents", "accent elimination"],
["Restrictive", "restrictive"]
];
super("Speech rules", pairs);
this.setValue(V.currentRule.set);
this.onchange = (value) => V.currentRule.set = value;
}
class RelationshipList extends List {
constructor() {
const pairs =[
["No default setting", "no default setting"],
["Permissive", "permissive"],
["Just friends", "just friends"],
["Restrictive", "restrictive"]
];
super("Relationship rules", pairs);
this.setValue(V.currentRule.set);
this.onchange = (value) => V.currentRule.set = value;
}
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
class PornList extends List {
constructor() {
const pairs = [
["No default setting", "no default setting"],
["No broadcasting", "no broadcasting", -1],
["No subsidy", "no subsidy", 0],
["1000", "1000", 1000],
["2000", "2000", 2000],
["3000", "3000", 3000],
["4000", "4000", 4000],
["5000", "5000", 5000]
];
super("Weekly porn publicity subsidy", pairs);
this.setValue(V.currentRule.set.pornFameSpending);
this.onchange = (value) => V.currentRule.set.pornFameSpending = value;
}
}
class EyewearList extends List {
constructor() {
const pairs = [
["no default setting"],
["correct with contacts"],
["universal glasses"],
["blur with glasses"],
["blur with contacts"]
];
super("Eyewear", pairs);
this.setValue(V.currentRule.set.eyewear);
this.onchange = (value) => V.currentRule.set.eyewear = value;
}
class LensesList extends Element {
constructor() {
super(V.currentRule.set.eyeColor);
this.appendChild(new OptionsItem("No default Setting", () => this.setValue("no default setting")));
this.colourlist = new LensesColourList();
this.shapelist = new LensesShapeList();
this.appendChild(this.colourlist);
this.appendChild(this.shapelist);
}
render(color) {
const elem = document.createElement("div");
elem.innerHTML = "Eye coloring: ";
this.label = document.createElement("strong");
combine() {
const lst = [];
if (this.colourlist.value !== "no default setting")
lst.appendChild(this.colourlist.value);
if (this.shapelist.value !== "no default setting")
list.appendChild(this.shapelist.value);
if (lst.length === 0) return "no default value";
else return lst.join(" ");
}
set_value() {
const tmp = this.combine();
this.label.innerText = tmp;
V.currentRule.set.eyeColor = tmp;
}
[
["no default setting"],
["blue"],
["black"],
["brown"],
["green"],
["turquoise"],
["sky-blue"],
["hazel"],
["pale-grey"],
["white"],
["pink"],
["amber"],
["red"]
}
}
class LensesShapeList extends Options {
constructor() {
[
["no default setting"],
["catlike"],
["serpent-like"],
["devilish"],
["demonic"],
["hypnotic"],
["heart-shaped"],
["wide-eyed"],
["almond-shaped"],
["bright"],
["teary"],
["vacant"]
}
}
class MakeupList extends List {
constructor() {
super("Makeup");
[
["no default setting"],
["makeup-free", "makeup-free", 0],
["nice", "nice", 1],
["gorgeous", "gorgeous", 2],
["color-coordinate with hair", "color-coordinate with hair", 3],
["slutty", "slutty", 4]
].forEach(pair => this.appendChild(new ListItem(...pair)));
this.setValue(V.currentRule.set.makeup);
this.onchange = (value) => V.currentRule.set.makeup = value;
}
class NailsList extends List {
constructor() {
super("Nails");
[
["no default setting"],
["clipped", "clipped", 0],
["extended", "extended", 1],
["color-coordinate with hair", "color-coordinate with hair", 2],
["sharp and claw-like", "sharp and claw-like", 3],
["bright and glittery", "bright and glittery", 4],
["hooker nails", "hooker nails", 5]
].forEach(pair => this.appendChild(new ListItem(...pair)));
this.setValue(V.currentRule.set.nails);
this.onchange = (value) => V.currentRule.set.nails = value;
}
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
class HairLengthList extends List {
constructor() {
const pairs = [
["no default setting"],
["very short", "very short", 5],
["short", "short", 10],
["shoulder length", "shoulder length", 30],
["long", "long", 60],
["very long", "very long", 100],
["floor length", "floor length", 150]
];
super("Hair length", pairs);
this.setValue(V.currentRule.set.hLength);
this.onchange = (value) => V.currentRule.set.hLength = value;
}
}
class HairColourList extends List {
constructor() {
const pairs = [
["no default setting"],
["blonde"],
["golden"],
["platinum blonde"],
["strawbery-blonde"],
["copper"],
["ginger"],
["red"],
["green"],
["blue"],
["pink"],
["dark brown"],
["brown"],
["auburn"],
["burgundy"],
["chocolate"],
["chestnut"],
["hazel"],
["black"],
["grey"],
["silver"],
["white"],
["blazing red"],
["neon green"],
["neon blue"],
["neon pink"]
];
super("Hair color", pairs);
this.setValue(V.currentRule.set.hColor);
this.onchange = (value) => V.currentRule.set.hColor = value;
}
}
class HairStyleList extends List {
constructor() {
const pairs = [
["no default setting"],
["neat"],
["shaved"],
["trimmed"],
["buzzcut"],