Newer
Older
wkwk
committed
["metallic", 7],
["metallic color-coordinate with hair", 8]
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;
wkwk
committed
["shaved", 0],
["very short", 5],
["short", 10],
["shoulder length", 30],
["long", 60],
["very long", 100],
["floor length", 150]
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);
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;
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
class HornColorList extends ListSelector {
constructor() {
const pairs = [
["golden"],
["copper"],
["red"],
["deep red"],
["green"],
["pink"],
["dark brown"],
["brown"],
["burgundy"],
["jet black"],
["black"],
["grey"],
["silver"],
["white"],
["blue-violet"],
["purple"],
["dark orchid"],
["sea green"],
["green-yellow"],
["dark blue"],
["blazing red"],
["neon green"],
["neon blue"],
["neon pink"]
];
super("Horn color", pairs);
this.setValue(current_rule.set.hornColor);
this.onchange = (value) => current_rule.set.hornColor = 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);
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"]
];
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;
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;
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[0].FSGenderFundamentalist !== "unset") {
if (V.arcologies[0].FSIntellectualDependency !== "unset") {
items.push(["(FS) Scores", "how much sex $he needs per day"]);
}
if (V.arcologies[0].FSSlaveProfessionalism !== "unset") {
items.push(["(FS) Scores", "$his average slave aptitude test scores"]);
}
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].FSPetiteAdmiration !== "unset" || V.arcologies[0].FSStatuesqueGlorification !== "unset") {
items.push(["(FS) Current height", "$his current height"]);
}
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 BirthsTattooList extends RadioSelector {
constructor() {
const items = [
["remove", "remove"],
];
super("Tattoo a mark for each successful birth", items, true);
this.setValue(current_rule.set.birthsTat);
this.onchange = (value) => current_rule.set.birthsTat = value;
}
}
class AbortionTattooList extends RadioSelector {
constructor() {
const items = [
["remove", "remove"],
];
super("Tattoo a mark for each abortion", items, true);
this.setValue(current_rule.set.abortionTat);
this.onchange = (value) => current_rule.set.abortionTat = 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;
["implanted", 2],
["removed", 1],
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 {