"README.md" did not exist on "4d6e33180ad67a01a6528394a63b746b97a00eba"
Newer
Older
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
}
if (V.servantsQuarters > 0) {
items.push("Servant Quarters");
}
if (V.masterSuite > 0) {
items.push("Master Suite");
}
if (V.schoolroom > 0) {
items.push("Schoolroom");
}
if (V.spa > 0) {
items.push("Spa");
}
if (V.nursery > 0) {
items.push("Nursery");
}
if (V.clinic > 0) {
items.push("Clinic");
}
if (V.cellblock > 0) {
items.push("Cellblock");
}
i => this.appendChild(new ButtonItem(i, this.getAttribute(i), current_rule.condition.assignment.includes(this.getAttribute(i)))));
current_rule.condition.assignment = this.getSelection();
}
getAttribute(what) {
return {
"Rest": "rest",
"Fucktoy": "please you",
"Subordinate Slave": "be a subordinate slave",
"House Servant": "be a servant",
"Confined": "stay confined",
"Whore": "whore",
"Public Servant": "serve the public",
"Classes": "take classes",
"Milked": "get milked",
"Gloryhole": "work a glory hole",
"Head Girl Suite": "live with your Head Girl",
"Brothel": "work in the brothel",
"Club": "serve in the club",
"Arcade": "be confined in the arcade",
"Dairy": "work in the dairy",
"Servant Quarters": "work as a servant",
"Master Suite": "serve in the master suite",
"Schoolroom": "learn in the schoolroom",
"Spa": "rest in the spa",
"Clinic": "get treatment in the clinic",
"Cellblock": "be confined in the cellblock",
class SpecialInclusion extends List {
["include", -1],
["exclude", 0],
["only", 1]
super("Special slaves", items, true, false, true);
this.setValue(current_rule.condition.specialSlaves);
this.onchange = (value) => current_rule.condition.specialSlaves = value;
}
}
class SpecificInclusionExclusion extends Options {
constructor() {
this.appendChild(new OptionsItem("Limit to specific slaves", () => this.show_slave_selection()));
this.appendChild(new OptionsItem("Exclude specific slaves", () => this.show_slave_exclusion()));
this.subwidget = null;
}
show_slave_selection() {
this.subwidget = new SlaveSelection();
this.appendChild(this.subwidget);
}
show_slave_exclusion() {
this.subwidget = new SlaveExclusion();
this.appendChild(this.subwidget);
}
}
class SlaveSelection extends ButtonList {
constructor() {
super("Include specific slaves");
V.slaves.forEach(slave => this.appendChild(new ButtonItem(
[slave.slaveName, slave.slaveSurname].join(" "),
slave.ID,
current_rule.condition.selectedSlaves.includes(slave.ID))));
}
onchange() {
current_rule.condition.selectedSlaves = this.getSelection();
}
}
class SlaveExclusion extends ButtonList {
constructor() {
super("Exclude specific slaves");
V.slaves.forEach(slave => this.appendChild(new ButtonItem(
[slave.slaveName, slave.slaveSurname].join(" "),
slave.ID,
current_rule.condition.excludedSlaves.includes(slave.ID))));
}
onchange() {
current_rule.condition.excludedSlaves = this.getSelection();
}
// parent section for effect editing
class EffectEditor extends Element {
constructor() {
this.appendChild(new AppearanceSection(true));
this.appendChild(new CosmeticSection(true));
this.appendChild(new BodyModSection(true));
this.appendChild(new AutosurgerySection(true));
this.appendChild(new RegimenSection(true));
this.appendChild(new BehaviourSection(true));
this.appendChild(new OtherSection(true));
constructor(isCollapsed) {
super("Appearance Settings", isCollapsed);
this.appendChild(new ClothesList());
this.appendChild(new CollarList());
this.appendChild(new ShoeList());
this.appendChild(new CorsetList());
this.appendChild(new VagChastityList());
this.appendChild(new VagAccVirginsList());
this.appendChild(new VagAccAVirginsList());
this.appendChild(new VagAccOtherList());
this.appendChild(new DickChastityList());
this.appendChild(new DickAccVirginsList());
this.appendChild(new DickAccOtherList());
this.appendChild(new AnalChastityList());
this.appendChild(new ButtplugsVirginsList());
this.appendChild(new ButtplugsOtherList());
this.appendChild(new ButtplugAttachmentsList());
constructor(isCollapsed) {
super("Physical Regimen Settings", isCollapsed);
if (V.arcologies[0].FSAssetExpansionistResearch === 1)
this.appendChild(new GrowthList());
this.appendChild(new CurrativesList());
this.appendChild(new AphrodisiacList());
this.appendChild(new ContraceptiveList());
this.appendChild(new FemaleHormonesList());
this.appendChild(new ShemaleHormonesList());
this.appendChild(new GeldingHormonesList());
this.appendChild(new OtherDrugsList());
if (V.enema === 1) {
this.appendChild(new EnemaList());
}
this.appendChild(new DietList());
this.appendChild(new DietGrowthList());
this.appendChild(new DietBaseList());
if (V.arcologies[0].FSHedonisticDecadenceResearch === 1) {
this.appendChild(new DietSolidFoodList());
}
this.appendChild(new MuscleList());
this.appendChild(new BraceList());
constructor(isCollapsed) {
super("Behavior Settings", isCollapsed);
this.appendChild(new AutomaticAssignmentList());
this.appendChild(new LivingStandardList());
this.appendChild(new PunishmentList());
this.appendChild(new RewardList());
this.appendChild(new ReleaseList());
this.appendChild(new SmartFetishList());
this.appendChild(new SmartXYAttractionList());
this.appendChild(new SmartXXAttractionList());
this.appendChild(new SmartEnergyList());
this.appendChild(new SpeechList());
this.appendChild(new RelationshipList());
if (V.studio === 1) {
this.appendChild(new PornBroadcastStatus());
constructor(isCollapsed) {
super("Other Settings", isCollapsed);
this.appendChild(new LabelRemoveList());
constructor(isCollapsed) {
super("Cosmetic Settings", isCollapsed);
this.appendChild(new EyewearList());
this.appendChild(new LensesList());
this.appendChild(new MakeupList());
this.appendChild(new NailsList());
this.appendChild(new HairLengthList());
this.appendChild(new EyebrowColorList());
this.appendChild(new EyebrowStyleList());
this.appendChild(new EyebrowFullnessList());
this.appendChild(new MarkingsList());
constructor(isCollapsed) {
super("Body Mod Settings", isCollapsed);
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
this.appendChild(new EarPiercingList());
this.appendChild(new NosePiercingList());
this.appendChild(new EyebrowPiercingList());
this.appendChild(new NavelPiercingList());
this.appendChild(new NipplePiercingList());
this.appendChild(new AreolaPiercingList());
this.appendChild(new LipPiercingList());
this.appendChild(new TonguePiercingList());
this.appendChild(new ClitPiercingList());
this.appendChild(new LabiaPiercingList());
this.appendChild(new ShaftPiercingList());
this.appendChild(new PerineumPiercingList());
this.appendChild(new CorsetPiercingList());
this.appendChild(new AutoBrandingList());
this.appendChild(new BrandingLocationList());
this.appendChild(new BrandDesignList());
this.appendChild(new FaceTattooList());
this.appendChild(new ShoulderTattooList());
this.appendChild(new ChestTattooList());
this.appendChild(new ArmTattooList());
this.appendChild(new UpperBackTattooList());
this.appendChild(new LowerBackTattooList());
this.appendChild(new AbdomenTattooList());
this.appendChild(new ButtockTattooList());
this.appendChild(new AnalTattooList());
this.appendChild(new LegTattooList());
this.appendChild(new AutosurgerySwitch());
this.appendChild(new SmellSurgeryList());
this.appendChild(new TasteSurgeryList());
this.appendChild(new CosmeticSurgeryList());
this.appendChild(new LipSurgeryList());
this.appendChild(new ButtSurgeryList());
this.appendChild(new BreastSurgeryList());
this.appendChild(new TighteningSurgeryList());
this.appendChild(new BodyHairSurgeryList());
this.appendChild(new HairSurgeryList());
class ClothesList extends List {
constructor() {
const items = [
["Select her own outfit", "choosing her own clothes"]
];
super("Clothes", items);
const nclothes = [
["Bangles", "slutty jewelry"],
["Bodysuit", "a comfortable bodysuit"],
["Bra", "a bra"],
["Button-up shirt and panties", "a button-up shirt and panties"],
["Button-up shirt", "a button-up shirt"],
["Clubslut netting", "clubslut netting"],
["Cutoffs and a t-shirt", "cutoffs and a t-shirt"],
["Leather pants and a tube top", "leather pants and a tube top"],
["Leather pants and pasties", "leather pants and pasties"],
["Leather pants", "leather pants"],
["Maid (nice)", "a nice maid outfit"],
["Maid (slutty)", "a slutty maid outfit"],
["Mini dress", "a mini dress"],
["Nice lingerie", "attractive lingerie"],
["Nurse (nice)", "a nice nurse outfit"],
["Over-sized t-shirt and boyshorts", "an oversized t-shirt and boyshorts"],
["Over-sized t-shirt", "an oversized t-shirt"],
["Panties", "panties"],
["Schoolgirl", "a schoolgirl outfit"],
["Slave gown", "a slave gown"],
["Slutty outfit", "a slutty outfit"],
["Spats and tank top", "spats and a tank top"],
["Sport shorts and a sports bra", "sport shorts and a sports bra"],
["Suit (slutty)", "slutty business attire"],
["Sweater and cutoffs", "a sweater and cutoffs"],
["Sweater and panties", "a sweater and panties"],
["Sweater", "a sweater"],
["T-shirt", "a t-shirt"],
["Tank-top and panties", "a tank-top and panties"],
["Tank-top", "a tank-top"],
["Thong", "a thong"],
["Tube top and thong", "a tube top and thong"],
["Tube top", "a tube top"]
const spclothes = [
["Battlearmor", "battlearmor"],
["Biyelgee costume", "a biyelgee costume"],
["Burkini", "a burkini"],
["Burqa", "a burqa"],
["Dirndl", "a dirndl"],
["Gothic Lolita Dress", "a gothic lolita dress"],
["Hanbok", "a hanbok"],
["Hijab and blouse", "a hijab and blouse"],
["Lederhosen", "lederhosen"],
["Mounty outfit", "a mounty outfit"],
["Military uniform", "a military uniform"],
["Niqab and abaya", "a niqab and abaya"],
["Police Uniform", "a police uniform"],
["Pony outfit (nice)", "a nice pony outfit"],
["Pony outfit (slutty)", "a slutty pony outfit"],
["Santa dress", "a Santa dress"],
["Schutzstaffel uniform (nice)", "a schutzstaffel uniform"],
["Schutzstaffel uniform (slutty)", "a slutty schutzstaffel uniform"],
["Striped Bra", "a striped bra"],
["Striped Panties", "striped panties"],
["Striped Underwear", "striped underwear"],
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"],
["Qipao (nice) (FS)", "a long qipao"],
["Qipao (slutty) (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"],
];
spclothes.forEach(pair => { if (isItemAccessible(pair[1])) { nclothes.push(pair); } });
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); } });
}
}
class CollarList extends List {
constructor() {
const items = [
["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"],
if (V.seeAge !== 0) { ncollars.push(["Nice retirement counter", "nice retirement counter"]); }
fsncollars.forEach(pair => { if (isItemAccessible(pair[1])) { ncollars.push(pair); } });
const hcollars = [];
if (item.fs === "seeAge" && V.seeAge === 0) {
return;
} else if (item.fs === "seePreg" && V.seePreg === 0) {
return;
} else if (item.rs === "buyGag" && V.toysBoughtGags !== 1) {
return;
this.setValue(current_rule.set.collar);
this.onchange = (value) => current_rule.set.collar = value;
class ShoeList extends ListSelector {
this.setValue(current_rule.set.shoes);
this.onchange = (value) => current_rule.set.shoes = value;
class CorsetList extends ListSelector {
} else if (acc.fs === "repopulation" && V.arcologies[0].FSRepopulationFocus !== "unset") {
} else if (acc.rs === "boughtBelly" && V.clothesBoughtBelly === 1) {
this.onchange = (value) => current_rule.set.bellyAccessory = value;
["none"],
["short stockings"],
["long stockings"],
super("Leg accessory", items, true, false, true);
this.setValue(current_rule.set.legAccessory);
this.onchange = (value) => current_rule.set.legAccessory = value;
}
}
class VagChastityList extends List {
super("Vaginal chastity", chaste, true, false, true);
this.setValue(current_rule.set.chastityVagina);
this.onchange = (value) => current_rule.set.chastityVagina = value;
}
class VagAccVirginsList extends ListSelector {
} else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1) {
this.setValue(current_rule.set.virginAccessory);
this.onchange = (value) => current_rule.set.virginAccessory = value;
class VagAccAVirginsList extends ListSelector {
} else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1) {
this.setValue(current_rule.set.aVirginAccessory);
this.onchange = (value) => current_rule.set.aVirginAccessory = value;
class VagAccOtherList extends ListSelector {
} else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1) {
this.setValue(current_rule.set.vaginalAccessory);
this.onchange = (value) => current_rule.set.vaginalAccessory = value;
class VaginalAttachmentsList extends ListSelector {
} else if (acc.rs === "buyVaginalAttachments" && V.toysBoughtVaginalAttachments === 1) {
super("Vaginal attachments for slaves with vaginal accessories", accs);
this.setValue(current_rule.set.vaginalAttachment);
this.onchange = (value) => current_rule.set.vaginalAttachment = value;
}
class DickChastityList extends List {
super("Penile chastity", items, true, false, true);
this.setValue(current_rule.set.chastityPenis);
this.onchange = (value) => current_rule.set.chastityPenis = value;
}
class DickAccVirginsList extends ListSelector {
super("Dick accessories for anal virgins", setup.dickAccessories.map(i => [i.name, i.value]));
this.setValue(current_rule.set.aVirginDickAccessory);
this.onchange = (value) => current_rule.set.aVirginDickAccessory = value;
class DickAccOtherList extends ListSelector {
super("Dick accessories for other slaves", setup.dickAccessories.map(i => [i.name, i.value]));
this.setValue(current_rule.set.dickAccessory);
this.onchange = (value) => current_rule.set.dickAccessory = value;
class AnalChastityList extends List {
super("Anal chastity", items, true, false, true);
this.setValue(current_rule.set.chastityAnus);
this.onchange = (value) => current_rule.set.chastityAnus = value;
}
class ButtplugsVirginsList extends ListSelector {
} else if (acc.rs === "buyBigPlugs" && V.toysBoughtButtPlugs === 1) {
this.setValue(current_rule.set.aVirginButtplug);
this.onchange = (value) => current_rule.set.aVirginButtplug = value;
class ButtplugsOtherList extends ListSelector {
} else if (acc.rs === "buyBigPlugs" && V.toysBoughtButtPlugs === 1) {
this.setValue(current_rule.set.buttplug);
this.onchange = (value) => current_rule.set.buttplug = value;
class ButtplugAttachmentsList extends ListSelector {
constructor() {
const accs = [];
} else if (acc.rs === "buyTails" && V.toysBoughtButtPlugTails === 1) {
});
super("Buttplug attachments for slaves with buttplugs", accs);
this.setValue(current_rule.set.buttplugAttachment);
this.onchange = (value) => current_rule.set.buttplugAttachment = value;
}
}
class ImplantVolumeList extends ListSelector {
["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, false);
this.setValue(current_rule.set.bellyImplantVol);
this.onchange = (value) => current_rule.set.bellyImplantVol = value;
class AutosurgerySwitch extends List {
super("Assistant-applied implants (Autosurgery global switch)", pairs, false, false, true);
this.setValue(current_rule.set.autoSurgery);
this.onchange = (value) => current_rule.set.autoSurgery = value;
class IntensiveGrowthSwitch extends List {
super("Use intensive growth drugs for healthy slaves", pairs, false, false, true);
this.setValue(current_rule.set.growth.intensity);
this.onchange = (value) => current_rule.set.growth.intensity = value;
class HyperGrowthSwitch extends List {
super("Use hyper growth drugs", pairs, false, false, true);
this.setValue(current_rule.set.hyper_drugs);
this.onchange = (value) => current_rule.set.hyper_drugs = value;
}
}
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
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: ";
[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));
["monstrous", 9000],
["unlimited", 48000],
["none", 0]
this.setValue(current_rule.set.growth.boobs);
this.onchange = (value) => current_rule.set.growth.boobs = value;
["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;
["plump", 25],
["beestung", 45],
["facepussy", 100],
["none", 0]
this.setValue(current_rule.set.growth.lips);
this.onchange = (value) => current_rule.set.growth.lips = value;
["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;
["sizable", 4],
["cumslave", 6],
["unlimited", 125],
["none", 0]
this.setValue(current_rule.set.growth.balls);
this.onchange = (value) => current_rule.set.growth.balls = value;
class CurrativesList extends List {
["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 List {
["contraceptives", true],
["fertile", false],
super("Contraceptives for fertile slaves", drugs, true, false, true);
this.setValue(current_rule.set.preg);
this.onchange = (value) => current_rule.set.preg = value;
class AbortionList extends ListSelector {
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]