Newer
Older
this.onchange = (value) => current_rule.set.eyebrowHStyle = value;
}
}
class EyebrowFullnessList extends ListSelector {
constructor() {
const pairs = [
["pencil-thin"],
["thin"],
["threaded"],
["natural"],
["tapered"],
["thick"],
["bushy"]
];
super("Eyebrow fullness", pairs);
this.setValue(current_rule.set.eyebrowFullness);
this.onchange = (value) => current_rule.set.eyebrowFullness = value;
}
}
constructor() {
const pairs = [
["remove beauty marks"],
["remove birthmarks"],
["remove both"]
];
super("Facial markings", pairs, true, false, true);
this.setValue(current_rule.set.markings);
this.onchange = (value) => current_rule.set.markings = value;
}
}
class PubicHairColorList 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("Pubic hair color, when present", pairs);
this.setValue(current_rule.set.pubicHColor);
this.onchange = (value) => current_rule.set.pubicHColor = value;
class PubicHairStyleList extends ListSelector {
constructor() {
const pairs = [
["waxed"],
["in a strip"],
["neat"],
["bushy"],
["bushy in the front and neat in the rear"],
["very bushy"]
];
super("Pubic hairstyle", pairs);
this.setValue(current_rule.set.pubicHStyle);
this.onchange = (value) => current_rule.set.pubicHStyle = value;
class ArmpitHairColorList extends ListSelector {
constructor() {
const pairs = [
["blonde"],
["golden"],
["platinum blonde"],
["strawberry-blonde"],
["copper"],
["ginger"],
["red"],
["green"],
["blue"],
["pink"],
["dark brown"],
["brown"],
["auburn"],
["purple"],
["dark orchid"],
["sea green"],
["green-yellow"],
["dark blue"],
["blazing red"],
["neon green"],
["neon blue"],
["neon pink"]
this.setValue(current_rule.set.underArmHColor);
this.onchange = (value) => current_rule.set.underArmHColor = value;
class ArmpitHairStyleList extends ListSelector {
constructor() {
const pairs = [
["waxed"],
["shaved"],
["neat"],
["bushy"]
];
super("Underarm hair style", pairs);
this.setValue(current_rule.set.underArmHStyle);
this.onchange = (value) => current_rule.set.underArmHStyle = value;
function piercingTypes(smartEnabled = false) {
let res = [
["none", 0],
["light", 1],
["heavy", 2]
];
if (smartEnabled) {
res.push(["Smart (expensive)", 3]);
}
return res;
}
class EarPiercingList extends ListSelector {
this.onchange = (value) => current_rule.set.earPiercing = value;
class NosePiercingList extends ListSelector {
this.onchange = (value) => current_rule.set.nosePiercing = value;
class EyebrowPiercingList extends ListSelector {
super("Eyebrow piercings", piercingTypes());
this.onchange = (value) => current_rule.set.eyebrowPiercing = value;
class NavelPiercingList extends ListSelector {
this.onchange = (value) => current_rule.set.navelPiercing = value;
class NipplePiercingList extends ListSelector {
this.onchange = (value) => current_rule.set.nipplesPiercing = value;
super("Areola studs", pairs, true, false, true);
this.onchange = (value) => current_rule.set.areolaePiercing = value;
class LipPiercingList extends ListSelector {
this.onchange = (value) => current_rule.set.lipsPiercing = value;
class TonguePiercingList extends ListSelector {
this.onchange = (value) => current_rule.set.tonguePiercing = value;
class ClitPiercingList extends ListSelector {
super("Clit piercing", piercingTypes(true));
this.onchange = (value) => current_rule.set.clitPiercing = value;
class LabiaPiercingList extends ListSelector {
super("Pussylips piercings", piercingTypes());
this.onchange = (value) => current_rule.set.vaginaPiercing = value;
class ShaftPiercingList extends ListSelector {
this.onchange = (value) => current_rule.set.dickPiercing = value;
class PerineumPiercingList extends ListSelector {
super("Perianal piercings", piercingTypes());
this.onchange = (value) => current_rule.set.anusPiercing = value;
super("Corset piercings", pairs, true, false, true);
this.onchange = (value) => current_rule.set.corsetPiercing = value;
class AutoBrandingList extends BooleanSwitch {
super("Automatic branding", [0, 1]);
this.setValue(current_rule.set.autoBrand);
this.onchange = (value) => current_rule.set.autoBrand = value;
class BrandingLocationList extends List {
constructor() {
super("Your preferred location for brands is", []);
// I sorted this next section from top of body down, to make it easier to read for users. Hopefully when making similar lists elsewhere in the game, folks will use the same order. Makes it much easier to compare and make sure nothing is missing. And alphabetical is a poor choice for user facing lists.
this._cheeks = new ListSubSection(this, "Cheeks", [
["Right", "right cheek"],
["Both", "cheeks"]
["Right", "right ear"],
["Both", "ears"]
this._breasts = new ListSubSection(this, "Breasts", [
["Right", "right breast"],
["Both", "breasts"]
this._shoulders = new ListSubSection(this, "Shoulders", [
["Right", "right shoulder"],
["Both", "shoulders"]
this._upperArms = new ListSubSection(this, "Arms, upper", [
["Right", "right upper arm"],
["Both", "upper arms"]
this._lowerArms = new ListSubSection(this, "Arms, lower", [
["Right", "right lower arm"],
["Both", "lower arms"]
this._wrist = new ListSubSection(this, "Wrist", [
["Right", "right wrist"],
["Both", "wrists"]
["Right", "right hand"],
["Both", "hands"]
this._buttocks = new ListSubSection(this, "Buttocks", [
["Right", "right buttock"],
["Both", "buttocks"]
this._thigh = new ListSubSection(this, "Thigh", [
["Right", "right thigh"],
["Both", "thighs"]
["Right", "right calf"],
["Both", "calves"]
this._ankle = new ListSubSection(this, "Ankle", [
["Right", "right ankle"],
["Both", "ankles"]
["Right", "right foot"],
["Both", "feet"]
this._other = new ListSubSection(this, "Other", [
["Lower Back", "lower back"],
["Belly", "belly"],
["Pubic mound", "pubic mound"]
// Ignoring testicles and penis for now, as not all slaves have them.
this.setValue(current_rule.set.brandTarget);
this.onchange = (value) => current_rule.set.brandTarget = value;
_appendContentTo(container) {
super._appendContentTo(container);
this._cheeks._appendContentTo(container);
this._ears._appendContentTo(container);
this._breasts._appendContentTo(container);
this._shoulders._appendContentTo(container);
this._upperArms._appendContentTo(container);
this._lowerArms._appendContentTo(container);
this._wrist._appendContentTo(container);
this._hand._appendContentTo(container);
this._buttocks._appendContentTo(container);
this._thigh._appendContentTo(container);
this._calf._appendContentTo(container);
this._ankle._appendContentTo(container);
this._feet._appendContentTo(container);
this._other._appendContentTo(container);
}
["Your initials", "your initials"],
["SLUT"],
["WHORE"],
["SLAVE"],
["COW"],
["MEAT"],
["CUMDUMP"],
["LOVER"],
["Pussy symbol", "a pussy symbol"],
["Anus symbol", "an anus symbol"],
["Penis symbol", "a penis symbol"],
["Lady", "a lady silhouette"],
["Princess", "a princess silhouette"],
["Queen", "a queen silhouette"],
["Angel", "an angel silhouette"],
["Devil", "a devil silhouette"]
if (V.arcologies[0].FSSupremacist !== "unset" || V.arcologies[0].FSSubjugationist !== "unset") {
if (V.arcologies[0].FSSupremacist !== "unset" && V.arcologies[0].FSSupremacistRace === "white") {
if (V.arcologies[0].FSSubjugationist !== "unset" && V.arcologies[0].FSSubjugationistRace === "semitic") {
if (V.arcologies[0].FSGenderRadicalist !== "unset" || V.arcologies.FSGenderFundamentalist !== "unset") {
if (V.arcologies[0].FSTransformationFetishist !== "unset") {
items.push(["(FS) Most Desired Implants", "a shortlist of desired implants"]);
if (V.arcologies[0].FSYouthPreferentialist !== "unset") {
if (V.arcologies[0].FSMaturityPreferentialist !== "unset") {
if (V.arcologies[0].FSSlimnessEnthusiast !== "unset") {
items.push(["(FS) Breast Ceiling", "$his absolute maximum breast size"]);
if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
if (V.arcologies[0].FSHedonisticDecadence && V.PC.refreshmentType === 2) {
items.push(["(FS) Favorite Food", `a big helping of ${V.PC.refreshment}`]);
items.push(["(FS) Birth Count", "the number of children $he has birthed"]);
if (V.arcologies[0].FSChattelReligionist !== "unset") {
items.push(["(FS) Republican Crest", "a small crest of your Republic"]);
items.push(["(FS) Seven Serpents", "a small symbol of the Aztec gods"]);
if (V.arcologies[0].FSEgyptianRevivalist !== "unset") {
items.push(["(FS) Caliphate Symbol", "a small symbol of the Caliphate"]);
items.push(["(FS) Imperial Seal", "a small image of your Imperial Seal"]);
super("Your brand design is", items, true, true);
this.setValue(current_rule.set.brandDesign);
this.onchange = (value) => current_rule.set.brandDesign = value;
function commonTattoos() {
return [
["none", 0],
["tribal patterns"],
["flowers"],
["counting"],
["advertisements"],
["rude words"],
["degradation"],
["bovine patterns"],
["Asian art"],
["permanent makeup"],
["sacrament"],
["sacrilege"],
["possessive"],
["paternalist"]
];
}
class FaceTattooList extends ListSelector {
this.setValue(current_rule.set.lipsTat);
this.onchange = (value) => current_rule.set.lipsTat = value;
class ShoulderTattooList extends ListSelector {
this.setValue(current_rule.set.shouldersTat);
this.onchange = (value) => current_rule.set.shouldersTat = value;
class ChestTattooList extends ListSelector {
this.setValue(current_rule.set.boobsTat);
this.onchange = (value) => current_rule.set.boobsTat = value;
class ArmTattooList extends ListSelector {
this.setValue(current_rule.set.armsTat);
this.onchange = (value) => current_rule.set.armsTat = value;
class UpperBackTattooList extends ListSelector {
super("Upper back tattoos", commonTattoos());
this.setValue(current_rule.set.backTat);
this.onchange = (value) => current_rule.set.backTat = value;
class LowerBackTattooList extends ListSelector {
super("Lower back tattoos", commonTattoos());
this.setValue(current_rule.set.stampTat);
this.onchange = (value) => current_rule.set.stampTat = value;
class AbdomenTattooList extends ListSelector {
this.setValue(current_rule.set.vaginaTat);
this.onchange = (value) => current_rule.set.vaginaTat = value;
class DickTattooList extends ListSelector {
this.setValue(current_rule.set.dickTat);
this.onchange = (value) => current_rule.set.dickTat = value;
class ButtockTattooList extends ListSelector {
this.setValue(current_rule.set.buttTat);
this.onchange = (value) => current_rule.set.buttTat = value;
class AnalTattooList extends ListSelector {
super("Anal tattoo or bleaching", commonTattoos().concat([['bleached']]));
this.setValue(current_rule.set.anusTat);
this.onchange = (value) => current_rule.set.anusTat = value;
class LegTattooList extends ListSelector {
this.setValue(current_rule.set.legsTat);
this.onchange = (value) => current_rule.set.legsTat = value;
class VisionSurgeryList extends RadioSelector {
this.setValue(current_rule.set.surgery.eyes);
this.onchange = (value) => current_rule.set.surgery.eyes = value;
class HearingSurgeryList extends RadioSelector {
constructor() {
const items = [
["fixed", 0],
["muffled", -1],
];
this.setValue(current_rule.set.surgery.hears);
this.onchange = (value) => current_rule.set.surgery.hears = value;
constructor() {
const items = [
["fixed", 0],
["disabled", -1],
];
this.setValue(current_rule.set.surgery.smells);
this.onchange = (value) => current_rule.set.surgery.smells = value;
constructor() {
const items = [
["fixed", 0],
["disabled", -1],
];
this.setValue(current_rule.set.surgery.tastes);
this.onchange = (value) => current_rule.set.surgery.tastes = value;
class LactationSurgeryList extends RadioSelector {
this.setValue(current_rule.set.surgery.lactation);
this.onchange = (value) => current_rule.set.surgery.lactation = value;
super("Prostate production enhancing drug implants", items, true);
this.setValue(current_rule.set.surgery.prostate);
this.onchange = (value) => current_rule.set.surgery.prostate = value;
constructor() {
const items = [
["apply vasectomy", true],
["undo vasectomy", false],
];
super("Apply or undo vasectomy for slaves with testicles", items, true);
this.setValue(current_rule.set.surgery.vasectomy);
this.onchange = (value) => current_rule.set.surgery.vasectomy = value;
this.setValue(current_rule.set.surgery.cosmetic);
this.onchange = (value) => current_rule.set.surgery.cosmetic = value;
class LipSurgeryList extends NumericTargetEditor {
constructor() {
const items = [
["removed", 0],
["plush", 20],
["big", 40],
["huge", 70],
this.setValue(current_rule.set.surgery.lips);
this.onchange = (value) => current_rule.set.surgery.lips = value;
class ButtSurgeryList extends NumericTargetEditor {
this.setValue(current_rule.set.surgery.butt);
this.onchange = (value) => current_rule.set.surgery.butt = value;
class BreastSurgeryList extends NumericTargetEditor {
["slim", 400],
["stacked", 1000],
["huge", 2000],
["barely functional", 9000],
this.setValue(current_rule.set.surgery.boobs);
this.onchange = (value) => current_rule.set.surgery.boobs = value;
class TighteningSurgeryList extends RadioSelector {
this.setValue(current_rule.set.surgery.holes);
this.onchange = (value) => current_rule.set.surgery.holes = value;
class TummyTuckSurgeryList extends RadioSelector {
constructor() {
const items = [
["tuck", 1],
];
this.setValue(current_rule.set.surgery.tummy);
this.onchange = (value) => current_rule.set.surgery.tummy = value;
class BodyHairSurgeryList extends RadioSelector {
this.setValue(current_rule.set.surgery.bodyhair);
this.onchange = (value) => current_rule.set.surgery.bodyhair = value;
this.setValue(current_rule.set.surgery.hair);
this.onchange = (value) => current_rule.set.surgery.hair = value;
class AutomaticAssignmentList extends ListSelector {
constructor() {
const items = [
["Rest", "rest"],
["Fucktoy", "please you"],
["Subordinate Slave", "be a subordinate slave"],
["House Servant", "be a servant"],
["Confined", "stay confined"],
["Whore", "whore"],
["Classes", "take classes"],
["Milked", "get milked"],
["Gloryhole", "work a glory hole"],
["Choose Her Own", "choose her own job"]
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
if (V.HGSuite > 0) {
items.push(["Head Girl Suite", "live with your Head Girl"]);
}
if (V.brothel > 0) {
items.push(["Brothel", "work in the brothel"]);
}
if (V.club > 0) {
items.push(["Club", "serve in the club"]);
}
if (V.arcade > 0) {
items.push(["Arcade", "be confined in the arcade"]);
}
if (V.dairy > 0) {
items.push(["Dairy", "work in the dairy"]);
}
if (V.farmyard > 0) {
items.push(["Farmyard", "work as a farmhand"]);
}
if (V.servantsQuarters > 0) {
items.push(["Servant Quarters", "work as a servant"]);
}
if (V.masterSuite > 0) {
items.push(["Master Suite", "serve in the master suite"]);
}
if (V.schoolroom > 0) {
items.push(["Schoolroom", "learn in the schoolroom"]);
}
if (V.spa > 0) {
items.push(["Spa", "rest in the spa"]);
}
if (V.clinic > 0) {
items.push(["Clinic", "get treatment in the clinic"]);
}
if (V.cellblock > 0) {
items.push(["Cellblock", "be confined in the cellblock"]);
}
super("Automatically set assignment", items);
this.setValue(current_rule.set.setAssignment);
this.onchange = (value) => current_rule.set.setAssignment = value;
}
constructor() {
const items = [
["install", "install"],
["remove", "remove"],
];
this.setValue(current_rule.set.surgery.bellyImplant);
this.onchange = (value) => current_rule.set.surgery.bellyImplant = value;
this.setValue(current_rule.set.label);
this.onchange = (value) => current_rule.set.label = value;
}
}
constructor() {
this.setValue(current_rule.set.removeLabel);
this.onchange = (value) => current_rule.set.removeLabel = value;
}
}
class SkinColorList extends ListSelector {
["pure white"],
["ivory"],
["white"],
["extremely pale"],
["very pale"],
["extremely fair"],
["very fair"],
["fair"],
["light"],
["light olive"],
["tan"],
["olive"],
["bronze"],
["dark olive"],
["light beige"],
["beige"],
["dark beige"],
["light brown"],
["brown"],
["dark brown"],
["black"],
["ebony"],
["pure black"],
["dyed red"],
["dyed green"],
["dyed blue"],
super("Dye or tan skin", items);
this.setValue(current_rule.set.skinColor);
this.onchange = (x) => current_rule.set.skinColor = x;
}
}