diff --git a/js/002-config/fc-js-init.js b/js/002-config/fc-js-init.js index 25c52a87a62ced70f885e16e7fedf779bad9c3aa..b2f6656f91a1bfb95e24d6aa2b023b25cdcd3a5e 100644 --- a/js/002-config/fc-js-init.js +++ b/js/002-config/fc-js-init.js @@ -50,6 +50,8 @@ App.Neighbor = {}; App.MainView = {}; App.Medicine = {}; App.Medicine.Modification = {}; +App.Medicine.Modification.Brands = {}; +App.Medicine.Modification.Select = {}; App.Medicine.OrganFarm = {}; App.Medicine.OrganFarm.Organs = {}; App.Medicine.Surgery = {}; diff --git a/js/003-data/policiesData.js b/js/003-data/policiesData.js index 3187767968a592b10205cc55a8bfa4d1c126a5b5..4b56d17639f47ab1305a3d77c958938a5f91dd15 100644 --- a/js/003-data/policiesData.js +++ b/js/003-data/policiesData.js @@ -703,6 +703,7 @@ App.Data.Policies.Selection = { }, get activatedText() { return `you have set your arcology's standard retirement age for sex slaves at ${V.retirementAge}.`; }, onRepeal: function() { V.retirementAge = 45; }, + requirements: function() { return (V.policies.retirement.physicalAgePolicy === 0); }, note: "Set age before implementing" } ], @@ -731,6 +732,7 @@ App.Data.Policies.Selection = { return el; }, get activatedText() { return `you have set your arcology's standard retirement age for sex slaves at physically ${V.retirementAge}. This policy completely supplants former age retirement policies.`; }, + onImplementation: function() { V.policies.retirement.customAgePolicy = 0; }, onRepeal: function() { V.retirementAge = 45; }, note: "Set age before implementing" } diff --git a/js/003-data/slaveMods.js b/js/003-data/slaveMods.js new file mode 100644 index 0000000000000000000000000000000000000000..1d660eb8e5b9ab782d5065dc817eb4935257eddc --- /dev/null +++ b/js/003-data/slaveMods.js @@ -0,0 +1,194 @@ +/** + * @typedef {object} BrandStyle + * @property {string} displayName The way the brand is dispayed as a choice in the UI + * @property {function(void):boolean} [requirements] Function to determine if a brand symbol can be used. + */ +/** + * @typedef {object<string, BrandStyle[]>} BrandStyleList + * How the brand is saved in the variable. + */ + +/** @type {object<string, BrandStyleList>} */ +App.Medicine.Modification.Brands = { + personal: { + "your personal symbol": {displayName: "Your slaving emblem"}, + "your initials": {displayName: "Your initials"}, + }, + dirtyWord: { + "SLUT": {displayName: "SLUT"}, + "WHORE": {displayName: "WHORE"}, + "SLAVE": {displayName: "SLAVE"}, + "COW": {displayName: "COW"}, + "MEAT": {displayName: "MEAT"}, + "CUMDUMP": {displayName: "CUMDUMP"}, + "LOVER": {displayName: "LOVER"}, + }, + genitalSymbol: { + "a pussy symbol": {displayName: "Pussy symbol"}, + "an anus symbol": {displayName: "Anus symbol"}, + "a penis symbol": {displayName: "Penis symbol"}, + }, + silhouettes: { + "Lady": {displayName: "a lady silhouette"}, + "Princess": {displayName: "a princess silhouette"}, + "Queen": {displayName: "a queen silhouette"}, + "Angel": {displayName: "an angel silhouette"}, + "Devil": {displayName: "a devil silhouette"}, + + }, + FS: { + "a racial slur": { + displayName: "Racial Slur", + requirements: function() { + return ( + (V.arcologies[0].FSSupremacist !== "unset" && slave.race !== V.arcologies[0].FSSupremacistRace) || + (V.arcologies[0].FSSubjugationist !== "unset" && slave.race === V.arcologies[0].FSSubjugationistRace) + ); + } + }, + "how much sex $he needs per day": { + displayName: "Scores", + requirements: function() { + return (V.arcologies[0].FSIntellectualDependency !== "unset"); + } + }, + "$his average slave aptitude test scores": { + displayName: "Scores", + requirements: function() { + return (V.arcologies[0].FSSlaveProfessionalism !== "unset"); + } + }, + "the number of children $he has birthed": { + displayName: "Birth Count", + requirements: function() { + return (V.arcologies[0].FSRepopulationFocus !== "unset"); + } + }, + "a gender symbol": { + displayName: "Gender Symbol", + requirements: function() { + return ((V.arcologies[0].FSGenderRadicalist !== "unset") || (V.arcologies[0].FSGenderFundamentalist !== "unset")); + } + }, + "$his own personal symbol": { + displayName: "Personal Symbol", + requirements: function() { + return (V.arcologies[0].FSPaternalist !== "unset"); + } + }, + "a chain symbol": { + displayName: "Chain Symbol", + requirements: function() { + return (V.arcologies[0].FSDegradationist !== "unset"); + } + }, + "a Vitruvian man": { + displayName: "Vitruvian Man", + requirements: function() { + return (V.arcologies[0].FSBodyPurist !== "unset"); + } + }, + "a scalpel": { + displayName: "Scalpel", + requirements: function() { + return (V.arcologies[0].FSTransformationFetishist !== "unset"); + } + }, + "$his virginity status": { + displayName: "Virginity Status", + requirements: function() { + return (V.arcologies[0].FSYouthPreferentialist !== "unset"); + } + }, + "$his sexual skills": { + displayName: "Sexual Skill Info", + requirements: function() { + return (V.arcologies[0].FSMaturityPreferentialist !== "unset"); + } + }, + "$his current height": { + displayName: "Current height", + requirements: function() { + return ((V.arcologies[0].FSPetiteAdmiration !== "unset") || (V.arcologies[0].FSStatuesqueGlorification !== "unset")); + } + }, + "$his absolute minimum breast size": { + displayName: "Breast Floor", + requirements: function() { + return (V.arcologies[0].FSSlimnessEnthusiast !== "unset"); + } + }, + "$his absolute maximum breast size": { + displayName: "Breast Ceiling", + requirements: function() { + return (V.arcologies[0].FSAssetExpansionist !== "unset"); + } + }, + "$his highest weigh-in": { + displayName: "Weight Record", + requirements: function() { + return (V.arcologies[0].FSHedonisticDecadence !== "unset"); + } + }, + "a big helping of your favorite food": { + displayName: "Favorite Food", + requirements: function() { + return ((V.arcologies[0].FSHedonisticDecadence !== "unset") && V.PC.refreshmentType === 2); + } + }, + "$his body product quality": { + displayName: "Product Quality", + requirements: function() { + return (V.arcologies[0].FSPastoralist !== "unset"); + } + }, + "$his deadlift record": { + displayName: "Deadlift Info", + requirements: function() { + return (V.arcologies[0].FSPhysicalIdealist !== "unset"); + } + }, + "a religious symbol": { + displayName: "Religious Symbol", + requirements: function() { + return (V.arcologies[0].FSChattelReligionist !== "unset"); + } + }, + "the crest of your Republic": { + displayName: "Republican Crest", + requirements: function() { + return (V.arcologies[0].FSRomanRevivalist !== "unset"); + } + }, + "the symbol of the Aztec gods": { + displayName: "Seven Serpents", + requirements: function() { + return (V.arcologies[0].FSAztecRevivalist !== "unset"); + } + }, + "the sigil of your Dynasty": { + displayName: "Dynastic Sigil", + requirements: function() { + return (V.arcologies[0].FSEgyptianRevivalist !== "unset"); + } + }, + "the Shogunate's mon": { + displayName: "Mon", + requirements: function() { + return (V.arcologies[0].FSEdoRevivalist !== "unset"); + } + }, + "a symbol of the Caliphate": { + displayName: "Caliphate Symbol", + requirements: function() { + return (V.arcologies[0].FSArabianRevivalist !== "unset"); + } + }, + "your Imperial Seal": { + displayName: "Imperial Seal", + requirements: function() { + return (V.arcologies[0].FSChineseRevivalist !== "unset"); + } + }, + } +}; diff --git a/src/cheats/mod_EditChildCheatNew.tw b/src/cheats/mod_EditChildCheatNew.tw index 29a8e4cecf83ac920c0eae2941360e6944ee521d..14046e6b0891397407af860262099846c7b8eb26 100644 --- a/src/cheats/mod_EditChildCheatNew.tw +++ b/src/cheats/mod_EditChildCheatNew.tw @@ -2756,136 +2756,11 @@ <</widget>> <<widget BrandTab>> - <br> - ''Branding: ''<<link "[No Branding]">><<set $tempSlave.brand =0>><<set $tempSlave.brandLocation = 0>><</link>> - <br> - <<if $tempSlave.brand == 0>> - ''$He has no Branding'' - <<else>> - ''@@.yellow;$He has $tempSlave.brand branded onto $his <<if $tempSlave.brandLocation == 0>>@@.red;[NEEDS TO BE SET]<<else>> $tempSlave.brandLocation <</if>>@@'' - <</if>> - <br><br> - ''Branding Location:'' - <br> - <<radiobutton "$tempSlave.brandLocation" "neck">> Neck - <<radiobutton "$tempSlave.brandLocation" "chest">> Chest - <<radiobutton "$tempSlave.brandLocation" "pubic mound">> Pubic mound - <<radiobutton "$tempSlave.brandLocation" "back">> On the back - <br> - ''Ears:'' - <<radiobutton "$tempSlave.brandLocation" "left ear">> Left ear - <<radiobutton "$tempSlave.brandLocation" "right ear">> Right ear - <<radiobutton "$tempSlave.brandLocation" "ears">> Both ears - <br> - ''Cheeks:'' - <<radiobutton "$tempSlave.brandLocation" "left cheek">> Left cheek - <<radiobutton "$tempSlave.brandLocation" "right cheek">> Right cheek - <<radiobutton "$tempSlave.brandLocation" "cheeks">> Both cheeks - <br> - ''Shoulders:'' - <<radiobutton "$tempSlave.brandLocation" "left shoulder">> Left shoulder - <<radiobutton "$tempSlave.brandLocation" "right shoulder">> Right shoulder - <<radiobutton "$tempSlave.brandLocation" "shoulders">> Both shoulders - <br> - ''Breasts:'' - <<radiobutton "$tempSlave.brandLocation" "left shoulder">> Left shoulder - <<radiobutton "$tempSlave.brandLocation" "right shoulder">> Right shoulder - <<radiobutton "$tempSlave.brandLocation" "shoulders">> Both shoulders - <br> - ''Upper Arms:'' - <<radiobutton "$tempSlave.brandLocation" "left upper arm">> Left upper arm - <<radiobutton "$tempSlave.brandLocation" "right upper arm">> Right upper arm - <<radiobutton "$tempSlave.brandLocation" "upper arms">> Both upper arms - <br> - ''Lower Arms:'' - <<radiobutton "$tempSlave.brandLocation" "left lower arm">> Left lower arm - <<radiobutton "$tempSlave.brandLocation" "right lower arm">> Right lower arm - <<radiobutton "$tempSlave.brandLocation" "lower arms">> Both lower arms - <br> - ''Wrist:'' - <<radiobutton "$tempSlave.brandLocation" "left wrist">> Left wrist - <<radiobutton "$tempSlave.brandLocation" "right wrist">> Right wrist - <<radiobutton "$tempSlave.brandLocation" "wrists">> Both wrists - <br> - ''Hand:'' - <<radiobutton "$tempSlave.brandLocation" "left hand">> Left hand - <<radiobutton "$tempSlave.brandLocation" "right hand">> Right hand - <<radiobutton "$tempSlave.brandLocation" "hands">> Both hands - <br> - ''Buttocks:'' - <<radiobutton "$tempSlave.brandLocation" "left buttock">> Left buttock - <<radiobutton "$tempSlave.brandLocation" "right buttock">> Right buttock - <<radiobutton "$tempSlave.brandLocation" "buttocks">> Both buttocks - <br> - ''Thighs:'' - <<radiobutton "$tempSlave.brandLocation" "left thigh">> Left thigh - <<radiobutton "$tempSlave.brandLocation" "right thigh">> Right thigh - <<radiobutton "$tempSlave.brandLocation" "thighs">> Both thighs - <br> - ''Calves:'' - <<radiobutton "$tempSlave.brandLocation" "left calf">> Left calf - <<radiobutton "$tempSlave.brandLocation" "right calf">> Right calf - <<radiobutton "$tempSlave.brandLocation" "calves">> Both calves - <br> - ''Ankles:'' - <<radiobutton "$tempSlave.brandLocation" "left ankle">> Left ankle - <<radiobutton "$tempSlave.brandLocation" "right ankle">> Right ankle - <<radiobutton "$tempSlave.brandLocation" "ankles">> Both ankles - <br> - ''Feet:'' - <<radiobutton "$tempSlave.brandLocation" "left foot">> Left foot - <<radiobutton "$tempSlave.brandLocation" "right foot">> Right foot - <<radiobutton "$tempSlave.brandLocation" "feet">> Both feet - <br><br> - ''Brand Design:'' - <br> - <<link "[your personal symbol]">><<set $tempSlave.brand = "your personal symbol">><</link>><<print " | ">> - <<link "[SLUT]">><<set $tempSlave.brand = "SLUT">><</link>><<print " | ">> - <<link "[WHORE]">><<set $tempSlave.brand = "WHORE">><</link>><<print " | ">> - <<link "[SLAVE]">><<set $tempSlave.brand = "SLAVE">><</link>><<print " | ">> - <<link "[COW]">><<set $tempSlave.brand = "COW">><</link>> - <br> - <<link "[MEAT]">><<set $tempSlave.brand = "MEAT">><</link>><<print " | ">> - <<link "[CUMDUMP]">><<set $tempSlave.brand = "CUMDUMP">><</link>><<print " | ">> - <<link "[LOVER]">><<set $tempSlave.brand = "LOVER">><</link>><<print " | ">> - <<link "[a pussy symbol]">><<set $tempSlave.brand = "a pussy symbol">><</link>><<print " | ">> - <<link "[an anus symbol]">><<set $tempSlave.brand = "an anus symbol">><</link>> - <br> - <<link "[a penis symbol]">><<set $tempSlave.brand = "a penis symbol">><</link>><<print " | ">> - <<link "[a lady silhouette]">><<set $tempSlave.brand = "a lady silhouette">><</link>><<print " | ">> - <<link "[a princess silhouette]">><<set $tempSlave.brand = "a princess silhouette">><</link>><<print " | ">> - <<link "[a queen silhouette]">><<set $tempSlave.brand = "a queen silhouette">><</link>><<print " | ">> - <<link "[an angel silhouette]">><<set $tempSlave.brand = "an angel silhouette">><</link>> - <br> - <<link "[a devil silhouette]">><<set $tempSlave.brand = "a devil silhouette">><</link>><<print " | ">> - <<link "[a racial slur]">><<set $tempSlave.brand = "a racial slur">><</link>><<print " | ">> - <<link "[the number of children $he has birthed]">><<set $tempSlave.brand = "the number of children $he has birthed">><</link>><<print " | ">> - <<link "[a gender symbol]">><<set $tempSlave.brand = "a gender symbol">><</link>><<print " | ">> - <<link "[$his own personal symbol]">><<set $tempSlave.brand = "$his own personal symbol">><</link>><<print " | ">> - <br> - <<link "[a chain symbol]">><<set $tempSlave.brand = "a chain symbol">><</link>><<print " | ">> - <<link "[a Vitruvian man]">><<set $tempSlave.brand = "a Vitruvian man">><</link>><<print " | ">> - <<link "[a scalpel]">><<set $tempSlave.brand = "a scalpel">><</link>><<print " | ">> - <<link "[$his virginity status]">><<set $tempSlave.brand = "$his virginity status">><</link>><<print " | ">> - <<link "[$his sexual skills]">><<set $tempSlave.brand = "$his sexual skills">><</link>> - <br> - <<link "[$his absolute minimum breast size]">><<set $tempSlave.brand = "$his absolute minimum breast size">><</link>><<print " | ">> - <<link "[$his absolute maximum breast size]">><<set $tempSlave.brand = "$his absolute maximum breast size">><</link>><<print " | ">> - <<link "[$his highest weigh-in]">><<set $tempSlave.brand = "$his highest weigh-in">><</link>><<print " | ">> - <<link "[a big helping of your personal refreshment]">><<set $tempSlave.brand = "a big helping of "+$PC.refreshment >><</link>><<print " | ">> - <<link "[$his body product quality]">><<set $tempSlave.brand = "$his body product quality">><</link>> - <br> - <<link "[$his deadlift record]">><<set $tempSlave.brand = "$his deadlift record">><</link>><<print " | ">> - <<link "[a religious symbol]">><<set $tempSlave.brand = "a religious symbol">><</link>><<print " | ">> - <<link "[the crest of your Republic]">><<set $tempSlave.brand = "the crest of your Republic">><</link>><<print " | ">> - <<link "[the symbol of the Aztec gods]">><<set $tempSlave.brand = "the symbol of the Aztec gods">><</link>><<print " | ">> - <<link "[the sigil of your Dynasty]">><<set $tempSlave.brand = "the sigil of your Dynasty">><</link>> - <br> - <<link "[the Shogunate's mon]">><<set $tempSlave.brand = "the Shogunate's mon">><</link>><<print " | ">> - <<link "[a symbol of the Caliphate]">><<set $tempSlave.brand = "a symbol of the Caliphate">><</link>><<print " | ">> - <<link "[your Imperial Seal]">><<set $tempSlave.brand = "your Imperial Seal">><</link>> - <br>''Custom brand design:'' <<textbox "$tempSlave.brand" $tempSlave.brand>> - <br> + ''Branding:'' + <p id="brandSelection"></p> + <script> + App.Medicine.Modification.Select.brand(V.tempSlave, true) + </script> <</widget>> <<widget PiercTab>> diff --git a/src/cheats/mod_EditInfantCheatNew.tw b/src/cheats/mod_EditInfantCheatNew.tw index 0aaa53a152f25499f340577504e2362f84e90f94..7010d35de063ede6e334695a1ffd343a3acf3863 100644 --- a/src/cheats/mod_EditInfantCheatNew.tw +++ b/src/cheats/mod_EditInfantCheatNew.tw @@ -2758,136 +2758,11 @@ <</widget>> <<widget BrandTab>> - <br> - ''Branding: ''<<link "[No Branding]">><<set $tempSlave.brand =0>><<set $tempSlave.brandLocation = 0>><</link>> - <br> - <<if $tempSlave.brand == 0>> - ''$He has no Branding'' - <<else>> - ''@@.yellow;$He has $tempSlave.brand branded onto $his <<if $tempSlave.brandLocation == 0>>@@.red;[NEEDS TO BE SET]<<else>> $tempSlave.brandLocation <</if>>@@'' - <</if>> - <br><br> - ''Branding Location:'' - <br> - <<radiobutton "$tempSlave.brandLocation" "neck">> Neck - <<radiobutton "$tempSlave.brandLocation" "chest">> Chest - <<radiobutton "$tempSlave.brandLocation" "pubic mound">> Pubic mound - <<radiobutton "$tempSlave.brandLocation" "back">> On the back - <br> - ''Ears:'' - <<radiobutton "$tempSlave.brandLocation" "left ear">> Left ear - <<radiobutton "$tempSlave.brandLocation" "right ear">> Right ear - <<radiobutton "$tempSlave.brandLocation" "ears">> Both ears - <br> - ''Cheeks:'' - <<radiobutton "$tempSlave.brandLocation" "left cheek">> Left cheek - <<radiobutton "$tempSlave.brandLocation" "right cheek">> Right cheek - <<radiobutton "$tempSlave.brandLocation" "cheeks">> Both cheeks - <br> - ''Shoulders:'' - <<radiobutton "$tempSlave.brandLocation" "left shoulder">> Left shoulder - <<radiobutton "$tempSlave.brandLocation" "right shoulder">> Right shoulder - <<radiobutton "$tempSlave.brandLocation" "shoulders">> Both shoulders - <br> - ''Breasts:'' - <<radiobutton "$tempSlave.brandLocation" "left shoulder">> Left shoulder - <<radiobutton "$tempSlave.brandLocation" "right shoulder">> Right shoulder - <<radiobutton "$tempSlave.brandLocation" "shoulders">> Both shoulders - <br> - ''Upper Arms:'' - <<radiobutton "$tempSlave.brandLocation" "left upper arm">> Left upper arm - <<radiobutton "$tempSlave.brandLocation" "right upper arm">> Right upper arm - <<radiobutton "$tempSlave.brandLocation" "upper arms">> Both upper arms - <br> - ''Lower Arms:'' - <<radiobutton "$tempSlave.brandLocation" "left lower arm">> Left lower arm - <<radiobutton "$tempSlave.brandLocation" "right lower arm">> Right lower arm - <<radiobutton "$tempSlave.brandLocation" "lower arms">> Both lower arms - <br> - ''Wrist:'' - <<radiobutton "$tempSlave.brandLocation" "left wrist">> Left wrist - <<radiobutton "$tempSlave.brandLocation" "right wrist">> Right wrist - <<radiobutton "$tempSlave.brandLocation" "wrists">> Both wrists - <br> - ''Hand:'' - <<radiobutton "$tempSlave.brandLocation" "left hand">> Left hand - <<radiobutton "$tempSlave.brandLocation" "right hand">> Right hand - <<radiobutton "$tempSlave.brandLocation" "hands">> Both hands - <br> - ''Buttocks:'' - <<radiobutton "$tempSlave.brandLocation" "left buttock">> Left buttock - <<radiobutton "$tempSlave.brandLocation" "right buttock">> Right buttock - <<radiobutton "$tempSlave.brandLocation" "buttocks">> Both buttocks - <br> - ''Thighs:'' - <<radiobutton "$tempSlave.brandLocation" "left thigh">> Left thigh - <<radiobutton "$tempSlave.brandLocation" "right thigh">> Right thigh - <<radiobutton "$tempSlave.brandLocation" "thighs">> Both thighs - <br> - ''Calves:'' - <<radiobutton "$tempSlave.brandLocation" "left calf">> Left calf - <<radiobutton "$tempSlave.brandLocation" "right calf">> Right calf - <<radiobutton "$tempSlave.brandLocation" "calves">> Both calves - <br> - ''Ankles:'' - <<radiobutton "$tempSlave.brandLocation" "left ankle">> Left ankle - <<radiobutton "$tempSlave.brandLocation" "right ankle">> Right ankle - <<radiobutton "$tempSlave.brandLocation" "ankles">> Both ankles - <br> - ''Feet:'' - <<radiobutton "$tempSlave.brandLocation" "left foot">> Left foot - <<radiobutton "$tempSlave.brandLocation" "right foot">> Right foot - <<radiobutton "$tempSlave.brandLocation" "feet">> Both feet - <br><br> - ''Brand Design:'' - <br> - <<link "[your personal symbol]">><<set $tempSlave.brand = "your personal symbol">><</link>><<print " | ">> - <<link "[SLUT]">><<set $tempSlave.brand = "SLUT">><</link>><<print " | ">> - <<link "[WHORE]">><<set $tempSlave.brand = "WHORE">><</link>><<print " | ">> - <<link "[SLAVE]">><<set $tempSlave.brand = "SLAVE">><</link>><<print " | ">> - <<link "[COW]">><<set $tempSlave.brand = "COW">><</link>> - <br> - <<link "[MEAT]">><<set $tempSlave.brand = "MEAT">><</link>><<print " | ">> - <<link "[CUMDUMP]">><<set $tempSlave.brand = "CUMDUMP">><</link>><<print " | ">> - <<link "[LOVER]">><<set $tempSlave.brand = "LOVER">><</link>><<print " | ">> - <<link "[a pussy symbol]">><<set $tempSlave.brand = "a pussy symbol">><</link>><<print " | ">> - <<link "[an anus symbol]">><<set $tempSlave.brand = "an anus symbol">><</link>> - <br> - <<link "[a penis symbol]">><<set $tempSlave.brand = "a penis symbol">><</link>><<print " | ">> - <<link "[a lady silhouette]">><<set $tempSlave.brand = "a lady silhouette">><</link>><<print " | ">> - <<link "[a princess silhouette]">><<set $tempSlave.brand = "a princess silhouette">><</link>><<print " | ">> - <<link "[a queen silhouette]">><<set $tempSlave.brand = "a queen silhouette">><</link>><<print " | ">> - <<link "[an angel silhouette]">><<set $tempSlave.brand = "an angel silhouette">><</link>> - <br> - <<link "[a devil silhouette]">><<set $tempSlave.brand = "a devil silhouette">><</link>><<print " | ">> - <<link "[a racial slur]">><<set $tempSlave.brand = "a racial slur">><</link>><<print " | ">> - <<link "[the number of children $he has birthed]">><<set $tempSlave.brand = "the number of children "+$he+" has birthed">><</link>><<print " | ">> - <<link "[a gender symbol]">><<set $tempSlave.brand = "a gender symbol">><</link>><<print " | ">> - <<link "[$his own personal symbol]">><<set $tempSlave.brand = $his+" own personal symbol">><</link>><<print " | ">> - <br> - <<link "[a chain symbol]">><<set $tempSlave.brand = "a chain symbol">><</link>><<print " | ">> - <<link "[a Vitruvian man]">><<set $tempSlave.brand = "a Vitruvian man">><</link>><<print " | ">> - <<link "[a scalpel]">><<set $tempSlave.brand = "a scalpel">><</link>><<print " | ">> - <<link "[$his virginity status]">><<set $tempSlave.brand = $his+" virginity status">><</link>><<print " | ">> - <<link "[$his sexual skills]">><<set $tempSlave.brand = $his+" sexual skills">><</link>> - <br> - <<link "[$his absolute minimum breast size]">><<set $tempSlave.brand = $his+" absolute minimum breast size">><</link>><<print " | ">> - <<link "[$his absolute maximum breast size]">><<set $tempSlave.brand = $his+" absolute maximum breast size">><</link>><<print " | ">> - <<link "[$his highest weigh-in]">><<set $tempSlave.brand = $his+" highest weigh-in">><</link>><<print " | ">> - <<link "[a big helping of your personal refreshment]">><<set $tempSlave.brand = "a big helping of "+$PC.refreshment >><</link>><<print " | ">> - <<link "[$his body product quality]">><<set $tempSlave.brand = $his+" body product quality">><</link>> - <br> - <<link "[$his deadlift record]">><<set $tempSlave.brand = $his+" deadlift record">><</link>><<print " | ">> - <<link "[a religious symbol]">><<set $tempSlave.brand = "a religious symbol">><</link>><<print " | ">> - <<link "[the crest of your Republic]">><<set $tempSlave.brand = "the crest of your Republic">><</link>><<print " | ">> - <<link "[the symbol of the Aztec gods]">><<set $tempSlave.brand = "the symbol of the Aztec gods">><</link>><<print " | ">> - <<link "[the sigil of your Dynasty]">><<set $tempSlave.brand = "the sigil of your Dynasty">><</link>> - <br> - <<link "[the Shogunate's mon]">><<set $tempSlave.brand = "the Shogunate's mon">><</link>><<print " | ">> - <<link "[a symbol of the Caliphate]">><<set $tempSlave.brand = "a symbol of the Caliphate">><</link>><<print " | ">> - <<link "[your Imperial Seal]">><<set $tempSlave.brand = "your Imperial Seal">><</link>> - <br>''Custom brand design:'' <<textbox "$tempSlave.brand" $tempSlave.brand>> - <br> + ''Branding:'' + <p id="brandSelection"></p> + <script> + App.Medicine.Modification.Select.brand(V.tempSlave, true) + </script> <</widget>> <<widget PiercTab>> diff --git a/src/cheats/mod_editSlaveCheatNew.tw b/src/cheats/mod_editSlaveCheatNew.tw index b4ad3c40a2f1c88592c997eb0e77ba61725fed0c..c3a3e1dad083ce6b810f230635604e4c332b29b3 100644 --- a/src/cheats/mod_editSlaveCheatNew.tw +++ b/src/cheats/mod_editSlaveCheatNew.tw @@ -4269,136 +4269,11 @@ <</widget>> <<widget BrandTab>> - <br> - ''Branding: ''<<link "[No Branding]">><<set $tempSlave.brand =0>><<set $tempSlave.brandLocation = 0>><</link>> - <br> - <<if $tempSlave.brand == 0>> - ''$He has no Branding'' - <<else>> - ''@@.yellow;$He has $tempSlave.brand branded onto $his <<if $tempSlave.brandLocation == 0>>@@.red;[NEEDS TO BE SET]<<else>> $tempSlave.brandLocation <</if>>@@'' - <</if>> - <br><br> - ''Branding Location:'' - <br> - <<radiobutton "$tempSlave.brandLocation" "neck">> Neck - <<radiobutton "$tempSlave.brandLocation" "chest">> Chest - <<radiobutton "$tempSlave.brandLocation" "pubic mound">> Pubic mound - <<radiobutton "$tempSlave.brandLocation" "back">> On the back - <br> - ''Ears:'' - <<radiobutton "$tempSlave.brandLocation" "left ear">> Left ear - <<radiobutton "$tempSlave.brandLocation" "right ear">> Right ear - <<radiobutton "$tempSlave.brandLocation" "ears">> Both ears - <br> - ''Cheeks:'' - <<radiobutton "$tempSlave.brandLocation" "left cheek">> Left cheek - <<radiobutton "$tempSlave.brandLocation" "right cheek">> Right cheek - <<radiobutton "$tempSlave.brandLocation" "cheeks">> Both cheeks - <br> - ''Shoulders:'' - <<radiobutton "$tempSlave.brandLocation" "left shoulder">> Left shoulder - <<radiobutton "$tempSlave.brandLocation" "right shoulder">> Right shoulder - <<radiobutton "$tempSlave.brandLocation" "shoulders">> Both shoulders - <br> - ''Breasts:'' - <<radiobutton "$tempSlave.brandLocation" "left shoulder">> Left shoulder - <<radiobutton "$tempSlave.brandLocation" "right shoulder">> Right shoulder - <<radiobutton "$tempSlave.brandLocation" "shoulders">> Both shoulders - <br> - ''Upper Arms:'' - <<radiobutton "$tempSlave.brandLocation" "left upper arm">> Left upper arm - <<radiobutton "$tempSlave.brandLocation" "right upper arm">> Right upper arm - <<radiobutton "$tempSlave.brandLocation" "upper arms">> Both upper arms - <br> - ''Lower Arms:'' - <<radiobutton "$tempSlave.brandLocation" "left lower arm">> Left lower arm - <<radiobutton "$tempSlave.brandLocation" "right lower arm">> Right lower arm - <<radiobutton "$tempSlave.brandLocation" "lower arms">> Both lower arms - <br> - ''Wrist:'' - <<radiobutton "$tempSlave.brandLocation" "left wrist">> Left wrist - <<radiobutton "$tempSlave.brandLocation" "right wrist">> Right wrist - <<radiobutton "$tempSlave.brandLocation" "wrists">> Both wrists - <br> - ''Hand:'' - <<radiobutton "$tempSlave.brandLocation" "left hand">> Left hand - <<radiobutton "$tempSlave.brandLocation" "right hand">> Right hand - <<radiobutton "$tempSlave.brandLocation" "hands">> Both hands - <br> - ''Buttocks:'' - <<radiobutton "$tempSlave.brandLocation" "left buttock">> Left buttock - <<radiobutton "$tempSlave.brandLocation" "right buttock">> Right buttock - <<radiobutton "$tempSlave.brandLocation" "buttocks">> Both buttocks - <br> - ''Thighs:'' - <<radiobutton "$tempSlave.brandLocation" "left thigh">> Left thigh - <<radiobutton "$tempSlave.brandLocation" "right thigh">> Right thigh - <<radiobutton "$tempSlave.brandLocation" "thighs">> Both thighs - <br> - ''Calves:'' - <<radiobutton "$tempSlave.brandLocation" "left calf">> Left calf - <<radiobutton "$tempSlave.brandLocation" "right calf">> Right calf - <<radiobutton "$tempSlave.brandLocation" "calves">> Both calves - <br> - ''Ankles:'' - <<radiobutton "$tempSlave.brandLocation" "left ankle">> Left ankle - <<radiobutton "$tempSlave.brandLocation" "right ankle">> Right ankle - <<radiobutton "$tempSlave.brandLocation" "ankles">> Both ankles - <br> - ''Feet:'' - <<radiobutton "$tempSlave.brandLocation" "left foot">> Left foot - <<radiobutton "$tempSlave.brandLocation" "right foot">> Right foot - <<radiobutton "$tempSlave.brandLocation" "feet">> Both feet - <br><br> - ''Brand Design:'' - <br> - <<link "[your personal symbol]">><<set $tempSlave.brand = "your personal symbol">><</link>><<print " | ">> - <<link "[SLUT]">><<set $tempSlave.brand = "SLUT">><</link>><<print " | ">> - <<link "[WHORE]">><<set $tempSlave.brand = "WHORE">><</link>><<print " | ">> - <<link "[SLAVE]">><<set $tempSlave.brand = "SLAVE">><</link>><<print " | ">> - <<link "[COW]">><<set $tempSlave.brand = "COW">><</link>> - <br> - <<link "[MEAT]">><<set $tempSlave.brand = "MEAT">><</link>><<print " | ">> - <<link "[CUMDUMP]">><<set $tempSlave.brand = "CUMDUMP">><</link>><<print " | ">> - <<link "[LOVER]">><<set $tempSlave.brand = "LOVER">><</link>><<print " | ">> - <<link "[a pussy symbol]">><<set $tempSlave.brand = "a pussy symbol">><</link>><<print " | ">> - <<link "[an anus symbol]">><<set $tempSlave.brand = "an anus symbol">><</link>> - <br> - <<link "[a penis symbol]">><<set $tempSlave.brand = "a penis symbol">><</link>><<print " | ">> - <<link "[a lady silhouette]">><<set $tempSlave.brand = "a lady silhouette">><</link>><<print " | ">> - <<link "[a princess silhouette]">><<set $tempSlave.brand = "a princess silhouette">><</link>><<print " | ">> - <<link "[a queen silhouette]">><<set $tempSlave.brand = "a queen silhouette">><</link>><<print " | ">> - <<link "[an angel silhouette]">><<set $tempSlave.brand = "an angel silhouette">><</link>> - <br> - <<link "[a devil silhouette]">><<set $tempSlave.brand = "a devil silhouette">><</link>><<print " | ">> - <<link "[a racial slur]">><<set $tempSlave.brand = "a racial slur">><</link>><<print " | ">> - <<link "[the number of children $he has birthed]">><<set $tempSlave.brand = "the number of children $he has birthed">><</link>><<print " | ">> - <<link "[a gender symbol]">><<set $tempSlave.brand = "a gender symbol">><</link>><<print " | ">> - <<link "[$his own personal symbol]">><<set $tempSlave.brand = "$his own personal symbol">><</link>><<print " | ">> - <br> - <<link "[a chain symbol]">><<set $tempSlave.brand = "a chain symbol">><</link>><<print " | ">> - <<link "[a Vitruvian man]">><<set $tempSlave.brand = "a Vitruvian man">><</link>><<print " | ">> - <<link "[a scalpel]">><<set $tempSlave.brand = "a scalpel">><</link>><<print " | ">> - <<link "[$his virginity status]">><<set $tempSlave.brand = "$his virginity status">><</link>><<print " | ">> - <<link "[$his sexual skills]">><<set $tempSlave.brand = "$his sexual skills">><</link>> - <br> - <<link "[$his absolute minimum breast size]">><<set $tempSlave.brand = "$his absolute minimum breast size">><</link>><<print " | ">> - <<link "[$his absolute maximum breast size]">><<set $tempSlave.brand = "$his absolute maximum breast size">><</link>><<print " | ">> - <<link "[$his highest weigh-in]">><<set $tempSlave.brand = "$his highest weigh-in">><</link>><<print " | ">> - <<link "[a big helping of your personal refreshment]">><<set $tempSlave.brand = "a big helping of "+$PC.refreshment >><</link>><<print " | ">> - <<link "[$his body product quality]">><<set $tempSlave.brand = "$his body product quality">><</link>> - <br> - <<link "[$his deadlift record]">><<set $tempSlave.brand = "$his deadlift record">><</link>><<print " | ">> - <<link "[a religious symbol]">><<set $tempSlave.brand = "a religious symbol">><</link>><<print " | ">> - <<link "[the crest of your Republic]">><<set $tempSlave.brand = "the crest of your Republic">><</link>><<print " | ">> - <<link "[the symbol of the Aztec gods]">><<set $tempSlave.brand = "the symbol of the Aztec gods">><</link>><<print " | ">> - <<link "[the sigil of your Dynasty]">><<set $tempSlave.brand = "the sigil of your Dynasty">><</link>> - <br> - <<link "[the Shogunate's mon]">><<set $tempSlave.brand = "the Shogunate's mon">><</link>><<print " | ">> - <<link "[a symbol of the Caliphate]">><<set $tempSlave.brand = "a symbol of the Caliphate">><</link>><<print " | ">> - <<link "[your Imperial Seal]">><<set $tempSlave.brand = "your Imperial Seal">><</link>> - <br>''Custom brand design:'' <<textbox "$tempSlave.brand" $tempSlave.brand>> - <br> + ''Branding:'' + <p id="brandSelection"></p> + <script> + App.Medicine.Modification.Select.brand(V.tempSlave, true) + </script> <</widget>> <<widget PiercTab>> diff --git a/src/pregmod/managePersonalAffairs.tw b/src/pregmod/managePersonalAffairs.tw index 8a212bc09f387e17146aa93caeb98c42edb38c21..5fc4806a07030f7e6969af334d9e8cdabbd76497 100644 --- a/src/pregmod/managePersonalAffairs.tw +++ b/src/pregmod/managePersonalAffairs.tw @@ -72,7 +72,7 @@ <<if $PC.origHColor != "crimson">>| [[Crimson|Manage Personal Affairs][$PC.hColor = "crimson"]]<</if>> <<if $PC.origHColor != "dark blue">>| [[Dark Blue|Manage Personal Affairs][$PC.hColor = "dark blue"]]<</if>> <<if $PC.origHColor != "dark brown">>| [[Dark Brown|Manage Personal Affairs][$PC.hColor = "dark brown"]]<</if>> - <<if $PC.origHColor != "dark orchid">>| [[Blue-Violet|Manage Personal Affairs][$PC.hColor = "dark orchid"]]<</if>> + <<if $PC.origHColor != "dark orchid">>| [[Dark Orchid|Manage Personal Affairs][$PC.hColor = "dark orchid"]]<</if>> <<if $PC.origHColor != "ginger">>| [[Ginger|Manage Personal Affairs][$PC.hColor = "ginger"]]<</if>> <<if $PC.origHColor != "golden">>| [[Golden|Manage Personal Affairs][$PC.hColor = "golden"]]<</if>> <<if $PC.origHColor != "green">>| [[Green|Manage Personal Affairs][$PC.hColor = "green"]]<</if>> diff --git a/src/uncategorized/bodyModification.js b/src/uncategorized/bodyModification.js new file mode 100644 index 0000000000000000000000000000000000000000..2e136955d81e23e6027b79dc30db8aa8ba143586 --- /dev/null +++ b/src/uncategorized/bodyModification.js @@ -0,0 +1,351 @@ +App.Medicine.Modification.Select.brand = function(slave, cheat = false) { + const el = new DocumentFragment(); + let p = document.createElement('p'); + let div = document.createElement('div'); + const {his, His, him, He} = getPronouns(slave); + + p.classList.add("indent"); + for (const brandPlace in slave.brand) { + div = document.createElement('div'); + div.append(`${His} ${brandPlace} is marked with ${slave.brand[brandPlace]}`); + if (slave.brand[brandPlace] === V.brandDesign.official) { + div.append(`, your `); + div.append(App.UI.DOM.passageLink("official brand", "Universal Rules")); + } + div.append(": "); + if (!cheat) { + div.append( + App.UI.DOM.link( + "Remove Brand", + () => { + V.brandApplied = 0; + delete slave.brand[brandPlace]; + cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave); + V.degradation -= 10; + }, + [], + "Body Modification" + ) + ); + } else { + div.append( + App.UI.DOM.link( + "Remove Brand", + () => { + delete slave.brand[brandPlace]; + App.Medicine.Modification.Select.brand(slave, cheat); // Refresh display + }, + ) + ); + } + p.append(div); + } + + if (jQuery.isEmptyObject(slave.brand)) { + App.UI.DOM.appendNewElement("div", p, `${His} skin is unmarked.`); + } + + if (!(Object.values(slave.brand).includes(V.brandDesign.official))) { + div = document.createElement('div'); + div.append(`${He} lacks your `); + div.append(App.UI.DOM.passageLink("official brand", "Universal Rules")); + div.append(`, "${V.brandDesign.official}."`); + p.append(div); + } + + el.append(p); + p = document.createElement('p'); + p.classList.add("indent"); + + + div = document.createElement('div'); + div.append(`Use ''${V.brandDesign.local}'' or choose another brand: `); + div.append(symbolOptions("personal")); + p.append(div); + + p.append(symbolBlock("dirtyWord")); + p.append(symbolBlock("genitalSymbol")); + p.append(symbolBlock("silhouettes")); + p.append(symbolBlock("FS")); + + div = document.createElement('div'); + div.classList.add("indent"); + div.append(`Or design your own: `); + div.append( + App.UI.DOM.makeTextBox( + V.brandDesign.local, + v => { + V.brandDesign.local = v; + App.Medicine.Modification.Select.brand(slave, cheat); // Refresh display + }, + ) + ); + p.append(div); + el.append(p); + + p = document.createElement('p'); + p.classList.add("indent"); + App.UI.DOM.appendNewElement("div", p, "Choose a site for branding: "); + const body = slaveBody(); + p.append(partLinks(body.head)); + p.append(partLinks(body.torso)); + p.append(partLinks(body.arms)); + p.append(partLinks(body.legs)); + + div = document.createElement('div'); + div.classList.add("indent"); + div.append(`Or a custom site: `); + div.append( + App.UI.DOM.makeTextBox( + V.brandTarget.local, + v => { + V.brandTarget.local = v; + App.Medicine.Modification.Select.brand(slave, cheat); // Refresh display + }, + ) + ); + p.append(div); + el.append(p); + + p = document.createElement('p'); + p.classList.add("indent"); + + if (["ankle", "breast", "buttock", "calf", "cheek", "ear", "foot", "hand", "lower arm", "shoulder", "testicle", "thigh", "upper arm", "wrist"].includes(V.brandTarget.local)) { + const leftTarget = ("left " + V.brandTarget.local); + const rightTarget = ("right " + V.brandTarget.local); + if (slave.brand[leftTarget]) { + p.append(`${His} ${leftTarget} is already marked with ${slave.brand[leftTarget]}. `); + } + if (slave.brand[rightTarget]) { + p.append(`${His} ${rightTarget} is already marked with ${slave.brand[rightTarget]}. `); + } + p.append(`Brand ${him} now with ''${V.brandDesign.local}'' on the `); // todo: break out bold + let _left; + let _right; + if ( + !(["upper arm", "lower arm", "wrist", "hand"].includes(V.brandTarget.local) && getLeftArmID(slave) !== 1) && + !(["thigh", "calf", "ankle", "foot"].includes(V.brandTarget.local) && getLeftLegID(slave) !== 1) + ) { + _left = 1;// make next checks easier + if (!cheat) { + p.append( + App.UI.DOM.link( + "left", + () => { + V.brandApplied = 1; + slave.brand[leftTarget] = check(V.brandDesign.local); + cashX(forceNeg(V.modCost), "slaveMod", slave); + V.degradation += 10; + }, + [], + "Body Modification" + ) + ); + } else { + p.append( + App.UI.DOM.link( + "left", + () => { + slave.brand[leftTarget] = check(V.brandDesign.local); + }, + ) + ); + } + + if (!(["upper arm", "lower arm", "wrist", "hand"].includes(V.brandTarget.local) && getRightArmID(slave) !== 1) && !(["thigh", "calf", "ankle", "foot"].includes(V.brandTarget.local) && getRightLegID(slave) !== 1)) { + _right = 1; // make next checks easier + } + if (_left && _right) { + p.append(` ${V.brandTarget.local}, or the `); + } + if (_right) { + if (!cheat) { + p.append( + App.UI.DOM.link( + "right", + () => { + V.brandApplied = 1; + slave.brand[rightTarget] = check(V.brandDesign.local); + cashX(forceNeg(V.modCost), "slaveMod", slave); + V.degradation += 10; + }, + [], + "Body Modification" + ) + ); + } else { + p.append( + App.UI.DOM.link( + "right", + () => { + slave.brand[rightTarget] = check(V.brandDesign.local); + }, + ) + ); + } + } + p.append(`? `); + if (!_left || !_right) { + p.append(` ${V.brandTarget.local}`); + App.UI.DOM.appendNewElement("span", "p", `Branding will slightly reduce ${his} beauty but may slowly increase your reputation.`, "note"); + } + } + } else { + if (slave.brand[V.brandTarget.local] === V.brandDesign.local) { + p.append(`${He} already has ${V.brandDesign.local} on ${his} V.brandTarget.local.`); + } else { + if (!cheat) { + p.append( + App.UI.DOM.link( + "Brand", + () => { + V.brandApplied = 1; + slave.brand[V.brandTarget.local] = V.brandDesign.local; + cashX(forceNeg(V.modCost), "slaveMod", slave); + V.degradation += 10; + }, + [], + "Body Modification" + ) + ); + } else { + p.append( + App.UI.DOM.link( + "Brand", + () => { + slave.brand[V.brandTarget.local] = V.brandDesign.local; + }, + ) + ); + } + p.append(` with ${V.brandDesign.local} on the ${V.brandTarget.local}`); + if (slave.brand[V.brandTarget.local]) { + p.append(`, covering the "${slave.brand[V.brandTarget.local]}" that is already there? `); + } else { + p.append(`. `); + } + App.UI.DOM.appendNewElement("span", p, `Branding will slightly reduce ${his} beauty but may slowly increase your reputation.`, "note"); + } + } + el.append(p); + return jQuery('#brandSelection').empty().append(el); + + function symbolBlock(brandList) { + const div = document.createElement('div'); + div.classList.add("double-choices"); + div.style.textIndent = 0; + div.append(symbolOptions(brandList)); + return div; + } + + function symbolOptions(brandList) { + const frag = new DocumentFragment(); + const list = App.Medicine.Modification.Brands[brandList]; + let length = Object.keys(list).length; + for (const brand in list) { + if (!cheat && list[brand].hasOwnProperty("requirements")) { + if (!list[brand].requirements()) { + continue; + } + } + if (brandList === "FS") { + App.UI.DOM.appendNewElement("span", frag, "FS ", "note"); + } + frag.append( + App.UI.DOM.link( + list[brand].displayName, + () => { + V.brandDesign.local = check(brand); + App.Medicine.Modification.Select.brand(slave, cheat); // Refresh display + } + ) + ); + length--; + if (length > 0) { + frag.append(" | "); + } + } + return frag; + } + + function slaveBody() { + const body = {}; + // Sorted head to toe + // Head + body.head = {}; + if (slave.earShape !== "none") { + body.head.ears = "Ears"; + } + body.head.cheek = "Cheeks"; + body.head.neck = "Neck"; + + // Torso + body.torso = {}; + body.torso.chest = "Chest"; + body.torso.breast = "Breasts"; + body.torso.back = "Back"; + body.torso["lower back"] = "Lower Back"; + body.torso.belly = "Belly"; + body.torso["pubic mound"] = "Pubic Mound"; + + if (slave.dick > 0) { + body.torso.penis = "Penis"; + } + if (slave.balls > 0 && slave.scrotum > 0) { + body.torso.testicle = "Testicles"; + } + + // Arms + body.arms = {}; + body.arms.shoulder = "Shoulders"; + if (hasAnyNaturalArms(slave)) { + body.arms["upper arm"] = "Arm, upper"; + body.arms["lower arm"] = "Arm, lower"; + body.arms.wrist = "Wrists"; + body.arms.hand = "Hands"; + } + + // Legs + body.legs = {}; + body.legs.buttock = "Buttocks"; + if (hasAnyNaturalLegs(slave)) { + body.legs.thigh = "Thighs"; + body.legs.calf = "Calves"; + body.legs.ankle = "Ankles"; + body.legs.foot = "Feet"; + } + return body; + } + + function partLinks(bodyPartObj) { + const div = document.createElement("div"); + div.classList.add("double-choices"); + div.style.textIndent = 0; + let length = Object.keys(bodyPartObj).length; + for (const bp in bodyPartObj) { + div.append( + App.UI.DOM.link( + bodyPartObj[bp], + () => { + V.brandTarget.local = check(bp); + App.Medicine.Modification.Select.brand(slave, cheat); // Refresh display + } + ) + ); + length--; + if (length > 0) { + div.append(" | "); + } + } + return div; + } + + function check(brand) { + switch(brand) { + case "a big helping of your favorite food": + return "a big helping of " + V.PC.refreshment; + default: + return brand; + } + } +}; diff --git a/src/uncategorized/bodyModification.tw b/src/uncategorized/bodyModification.tw index fb09203737d4e2de441237532a86a4058adca0f3..244162c389f61bccfb6ca392f6c8631d21e369d3 100644 --- a/src/uncategorized/bodyModification.tw +++ b/src/uncategorized/bodyModification.tw @@ -649,256 +649,18 @@ /* Branding */ <h2>Branding</h2> -<div class="indent"> -<div style="padding-bottom:1em"> -<<for _brandName, _brand range getSlave($AS).brand>> - <div> - $His _brandName is marked with _brand<<if _brand == $brandDesign.official>>, your [[official brand|Universal Rules]]<</if>>: - <<capture _brandName>> - <<link "Remove Brand">> - <<set $brandApplied = 0>> - <<run delete getSlave($AS).brand[_brandName]>> - <<run cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS))>> - <<set $degradation -= 10>> - <<goto "Body Modification">> - <</link>> - <</capture>> - </div> -<</for>> -<<if (jQuery.isEmptyObject(getSlave($AS).brand))>> - <div> - $His skin is unmarked. - </div> -<</if>> - -<<if !(Object.values(getSlave($AS).brand).includes($brandDesign.official))>> - <div> - $He lacks your [[official brand|Universal Rules]], "$brandDesign.official." - </div> -<</if>> -</div> - -<div> -Use ''$brandDesign.local'' or choose another brand: -[[Your slaving emblem|Body Modification][$brandDesign.local = "your personal symbol"]] -| [[Your initials|Body Modification][$brandDesign.local = "your initials"]] -</div> -<div class="double-indent"> -<div> -[[SLUT|Body Modification][$brandDesign.local = "SLUT"]] -| [[WHORE|Body Modification][$brandDesign.local = "WHORE"]] -| [[SLAVE|Body Modification][$brandDesign.local = "SLAVE"]] -| [[COW|Body Modification][$brandDesign.local = "COW"]] -| [[MEAT|Body Modification][$brandDesign.local = "MEAT"]] -| [[CUMDUMP|Body Modification][$brandDesign.local = "CUMDUMP"]] -| [[LOVER|Body Modification][$brandDesign.local = "LOVER"]] -</div> -<div> -[[Pussy symbol|Body Modification][$brandDesign.local = "a pussy symbol"]] -| [[Anus symbol|Body Modification][$brandDesign.local = "an anus symbol"]] -| [[Penis symbol|Body Modification][$brandDesign.local = "a penis symbol"]] -</div> -<div> -[[Lady|Body Modification][$brandDesign.local = "a lady silhouette"]] -| [[Princess|Body Modification][$brandDesign.local = "a princess silhouette"]] -| [[Queen|Body Modification][$brandDesign.local = "a queen silhouette"]] -| [[Angel|Body Modification][$brandDesign.local = "an angel silhouette"]] -| [[Devil|Body Modification][$brandDesign.local = "a devil silhouette"]] -<<if ($arcologies[0].FSSupremacist != "unset") && (getSlave($AS).race != $arcologies[0].FSSupremacistRace)>> - | //FS// [[Racial Slur|Body Modification][$brandDesign.local = "a racial slur"]] -<</if>> -<<if ($arcologies[0].FSSubjugationist != "unset") && (getSlave($AS).race == $arcologies[0].FSSubjugationistRace)>> - | //FS// [[Racial Slur|Body Modification][$brandDesign.local = "a racial slur"]] -<</if>> -<<if ($arcologies[0].FSIntellectualDependency != "unset")>> - | //FS// [[Scores|Body Modification][$brandDesign.local = "how much sex $he needs per day"]] -<</if>> -<<if ($arcologies[0].FSSlaveProfessionalism != "unset")>> - | //FS// [[Scores|Body Modification][$brandDesign.local = "$his average slave aptitude test scores"]] -<</if>> -<<if ($arcologies[0].FSRepopulationFocus != "unset")>> - | //FS// [[Birth Count|Body Modification][$brandDesign.local = "the number of children $he has birthed"]] -<</if>> -<<if ($arcologies[0].FSGenderRadicalist != "unset") || ($arcologies[0].FSGenderFundamentalist != "unset")>> - | //FS// [[Gender Symbol|Body Modification][$brandDesign.local = "a gender symbol"]] -<</if>> -<<if ($arcologies[0].FSPaternalist != "unset")>> - | //FS// [[Personal Symbol|Body Modification][$brandDesign.local = "$his own personal symbol"]] -<</if>> -<<if ($arcologies[0].FSDegradationist != "unset")>> - | //FS// [[Chain Symbol|Body Modification][$brandDesign.local = "a chain symbol"]] -<</if>> -<<if ($arcologies[0].FSBodyPurist != "unset")>> - | //FS// [[Vitruvian Man|Body Modification][$brandDesign.local = "a Vitruvian man"]] -<</if>> -<<if ($arcologies[0].FSTransformationFetishist != "unset")>> - | //FS// [[Scalpel|Body Modification][$brandDesign.local = "a scalpel"]] -<</if>> -<<if ($arcologies[0].FSYouthPreferentialist != "unset")>> - | //FS// [[Virginity Status|Body Modification][$brandDesign.local = "$his virginity status"]] -<</if>> -<<if ($arcologies[0].FSMaturityPreferentialist != "unset")>> - | //FS// [[Sexual Skill Info|Body Modification][$brandDesign.local = "$his sexual skills"]] -<</if>> -<<if ($arcologies[0].FSPetiteAdmiration != "unset") || ($arcologies[0].FSStatuesqueGlorification != "unset")>> - | //FS// [[Current height|Body Modification][$brandDesign.local = "$his current height"]] -<</if>> -<<if ($arcologies[0].FSSlimnessEnthusiast != "unset")>> - | //FS// [[Breast Floor|Body Modification][$brandDesign.local = "$his absolute minimum breast size"]] -<</if>> -<<if ($arcologies[0].FSAssetExpansionist != "unset")>> - | //FS// [[Breast Ceiling|Body Modification][$brandDesign.local = "$his absolute maximum breast size"]] -<</if>> -<<if ($arcologies[0].FSHedonisticDecadence != "unset")>> - | //FS// [[Weight Record|Body Modification][$brandDesign.local = "$his highest weigh-in"]] -<</if>> -<<if ($arcologies[0].FSHedonisticDecadence != "unset") && $PC.refreshmentType == 2>> - | //FS// [[Favorite Food|Body Modification][$brandDesign.local = "a big helping of "+$PC.refreshment]] -<</if>> -<<if ($arcologies[0].FSPastoralist != "unset")>> - | //FS// [[Product Quality|Body Modification][$brandDesign.local = "$his body product quality"]] -<</if>> -<<if ($arcologies[0].FSPhysicalIdealist != "unset")>> - | //FS// [[Deadlift Info|Body Modification][$brandDesign.local = "$his deadlift record"]] -<</if>> -<<if ($arcologies[0].FSChattelReligionist != "unset")>> - | //FS// [[Religious Symbol|Body Modification][$brandDesign.local = "a religious symbol"]] -<</if>> -<<if ($arcologies[0].FSRomanRevivalist != "unset")>> - | //FS// [[Republican Crest|Body Modification][$brandDesign.local = "the crest of your Republic"]] -<</if>> -<<if ($arcologies[0].FSAztecRevivalist != "unset")>> - | //FS// [[Seven Serpents|Body Modification][$brandDesign.local = "the symbol of the Aztec gods"]] -<</if>> -<<if ($arcologies[0].FSEgyptianRevivalist != "unset")>> - | //FS// [[Dynastic Sigil|Body Modification][$brandDesign.local = "the sigil of your Dynasty"]] -<</if>> -<<if ($arcologies[0].FSEdoRevivalist != "unset")>> - | //FS// [[Mon|Body Modification][$brandDesign.local = "the Shogunate's mon"]] -<</if>> -<<if ($arcologies[0].FSArabianRevivalist != "unset")>> - | //FS// [[Caliphate Symbol|Body Modification][$brandDesign.local = "a symbol of the Caliphate"]] -<</if>> -<<if ($arcologies[0].FSChineseRevivalist != "unset")>> - | //FS// [[Imperial Seal|Body Modification][$brandDesign.local = "your Imperial Seal"]] -<</if>> -</div> -</div> /* double indent */ - -<div> -Or design your own: <<textbox "$brandDesign.local" $brandDesign.local "Body Modification">> -</div> - -<div> -Choose a site for branding: -/* Sorted head to toe */ -/* Head */ -<<if getSlave($AS).earShape != "none">>[[Ears|Body Modification][$brandTarget.local = "ear"]]<</if>> -| [[Cheeks|Body Modification][$brandTarget.local = "cheek"]] -| [[Neck|Body Modification][$brandTarget.local = "neck"]] - -/* Torso */ -| [[Chest|Body Modification][$brandTarget.local = "chest"]] -| [[Breasts|Body Modification][$brandTarget.local = "breast"]] -| [[Back|Body Modification][$brandTarget.local = "back"]] -| [[Lower Back|Body Modification][$brandTarget.local = "lower back"]] -| [[Belly|Body Modification][$brandTarget.local = "belly"]] -| [[Pubic Mound|Body Modification][$brandTarget.local = "pubic mound"]] -<<if getSlave($AS).dick > 0>> - | [[Penis|Body Modification][$brandTarget.local = "penis"]] -<</if>> -<<if getSlave($AS).balls > 0 && getSlave($AS).scrotum > 0>> - | [[Testicles|Body Modification][$brandTarget.local = "testicle"]] -<</if>> - -/* Arms*/ -| [[Shoulders|Body Modification][$brandTarget.local = "shoulder"]] -<<if hasAnyNaturalArms(getSlave($AS))>> - | [[Arm, upper|Body Modification][$brandTarget.local = "upper arm"]] - | [[Arm, lower|Body Modification][$brandTarget.local = "lower arm"]] - | [[Wrists|Body Modification][$brandTarget.local = "wrist"]] - | [[Hands|Body Modification][$brandTarget.local = "hand"]] -<</if>> - -/* Legs */ -| [[Buttocks|Body Modification][$brandTarget.local = "buttock"]] -<<if hasAnyNaturalLegs(getSlave($AS))>> - | [[Thighs|Body Modification][$brandTarget.local = "thigh"]] - | [[Calves|Body Modification][$brandTarget.local = "calf"]] - | [[Ankles|Body Modification][$brandTarget.local = "ankle"]] - | [[Feet|Body Modification][$brandTarget.local = "foot"]] -<</if>> -</div> - -/* Branding expansion contributed by Anon1888 */ +<span id="brandSelection"></span> +<script> + App.Medicine.Modification.Select.brand(getSlave(V.AS)) +</script> -<div> -Or a custom site: <<textbox "$brandTarget.local" $brandTarget.local "Body Modification">> -</div> - -<div> -<<if ["ankle", "breast", "buttock", "calf", "cheek", "ear", "foot", "hand", "lower arm", "shoulder", "testicle", "thigh", "upper arm", "wrist"].includes($brandTarget.local)>> - <<set _leftTarget = ("left " + $brandTarget.local)>> - <<set _rightTarget = ("right " + $brandTarget.local)>> - <<if getSlave($AS).brand[_leftTarget]>> - $His _leftTarget is already marked with <<print getSlave($AS).brand[_leftTarget]>>. - <</if>> - <<if getSlave($AS).brand[_rightTarget]>> - $His _rightTarget is already marked with <<print getSlave($AS).brand[_rightTarget]>>. - <</if>> - Brand $him now with ''$brandDesign.local'' on the - - <<if !(["upper arm", "lower arm", "wrist", "hand"].includes($brandTarget.local) && getLeftArmID(getSlave($AS)) !== 1) && !(["thigh", "calf", "ankle", "foot"].includes($brandTarget.local) && getLeftLegID(getSlave($AS)) !== 1)>> - <<set _left = 1>> /* make next checks easier */ - <<link "left">> - <<set $brandApplied = 1>> - <<set getSlave($AS).brand[_leftTarget] = $brandDesign.local>> - <<run cashX(forceNeg($modCost), "slaveMod", getSlave($AS))>> - <<set $degradation += 10>> - <<goto "Body Modification">> - <</link>> - <</if>> - <<if !(["upper arm", "lower arm", "wrist", "hand"].includes($brandTarget.local) && getRightArmID(getSlave($AS)) !== 1) && !(["thigh", "calf", "ankle", "foot"].includes($brandTarget.local) && getRightLegID(getSlave($AS)) !== 1)>> - <<set _right = 1>> /* make next checks easier */ - <</if>> - <<if _left && _right>> - $brandTarget.local, or the - <</if>> - <<if _right>> - <<link "right">> - <<set $brandApplied = 1>> - <<set getSlave($AS).brand[_rightTarget] = $brandDesign.local>> - <<run cashX(forceNeg($modCost), "slaveMod", getSlave($AS))>> - <<set $degradation += 10>> - <<goto "Body Modification">> - <</link>> - <</if>><<if !_left || !_right>> $brandTarget.local<</if>>? - - //Branding will slightly reduce $his beauty but may slowly increase your reputation.// -<<else>> - <<if getSlave($AS).brand[$brandTarget.local] === $brandDesign.local>> - $He already has $brandDesign.local on $his $brandTarget.local. - <<else>> - <<link "Brand">> - <<set $brandApplied = 1>> - <<set getSlave($AS).brand[$brandTarget.local] = $brandDesign.local>> - <<run cashX(forceNeg($modCost), "slaveMod", getSlave($AS))>> - <<set $degradation += 10>> - <<goto "Body Modification">> - <</link>> - with $brandDesign.local on the $brandTarget.local<<if getSlave($AS).brand[$brandTarget.local]>>, covering the "<<print getSlave($AS).brand[$brandTarget.local]>>" that is already there?<<else>>.<</if>> //Branding will slightly reduce $his beauty but may slowly increase your reputation.// - <</if>> -<</if>> -</div> <<if getSlave($AS).breedingMark == 1 && ($propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>> - <div> + <div class="indent"> $He has an intricate tattoo on $his lower belly that suggests $he was made to be bred. [[Remove it|Body Modification][getSlave($AS).breedingMark = 0]] </div> <</if>> -</div> /* indent */ - /* Scars */ <h2>Scars</h2>