diff --git a/src/js/slaveInteract.js b/src/js/slaveInteract.js index e305dc8789e65df09c8aecc4690c8f47f50dcda2..15146905c2bffe141bf895f22bee09c2c8adebc7 100644 --- a/src/js/slaveInteract.js +++ b/src/js/slaveInteract.js @@ -1,45 +1,104 @@ -App.UI.SlaveInteract = { - fucktoyPref: function() { - let res = ""; - /** @type {App.Entity.SlaveState} */ - const slave = State.variables.activeSlave; - const {his} = getPronouns(slave); - if ((slave.assignment === "please you") || (slave.assignment === "serve in the master suite") || (slave.assignment === "be your Concubine")) { - res += `<span class="story-label">Fucktoy use preference:</span> <span id = "hole" style="font-weight:bold">${slave.toyHole}.</span> `; - /** @type {string[]} */ - let links = []; - links.push('<<link "Mouth">><<set $activeSlave.toyHole = "mouth">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>'); - links.push('<<link "Tits">><<set $activeSlave.toyHole = "boobs">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>'); - if ((slave.vagina > 0) && canDoVaginal(slave)) { - links.push('<<link "Pussy">><<set $activeSlave.toyHole = "pussy">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>'); - } else if (slave.vagina === 0) { - links.push(App.UI.disabledLink("Pussy", - [`Take ${his} virginity before giving ${his} pussy special attention`])); +App.UI.SlaveInteract = {}; + +App.UI.SlaveInteract.fucktoyPref = function(slave) { + /** @type {App.Entity.SlaveState} */ + const {his} = getPronouns(slave); + let el = document.createElement('div'); + let links = []; + + if ((slave.assignment === "please you") || (slave.assignment === "serve in the master suite") || (slave.assignment === "be your Concubine")) { + let storyLabel = document.createElement('span'); + storyLabel.className = "story-label"; + storyLabel.textContent = `Fucktoy use preference:`; + el.appendChild(storyLabel); + + el.append(` `); + + let hole = document.createElement('span'); + hole.style.fontWeight = "bold"; + hole.textContent = `${slave.toyHole}. `; + el.appendChild(hole); + + /** @type {object} */ + + links.push({text: `Mouth`, toyHole: `mouth`}); + links.push({text: `Tits`, toyHole: `boobs`}); + if ((slave.vagina > 0) && canDoVaginal(slave)) { + links.push({text: `Pussy`, toyHole: `pussy`}); + } else if (slave.vagina === 0) { + links.push({text: `Pussy`, disabled: `Take ${his} virginity before giving ${his} pussy special attention`}); + } + if ((slave.anus > 0) && canDoAnal(slave)) { + links.push({text: `Ass`, toyHole: `ass`}); + } else { + links.push({text: `Ass`, disabled: `Take ${his} anal virginity before giving ${his} ass special attention`}); + } + if ((slave.dick > 0) && canPenetrate(slave)) { + links.push({text: `Dick`, toyHole: `dick`}); + } + links.push({text: `No Preference`, toyHole: `all ${his} holes`}); + } + el.appendChild(generateRows(links)); + + function generateRows(toyHoleArray) { + let row = document.createDocumentFragment(); + for (let i = 0; i < toyHoleArray.length; i++) { + let link; + const separator = document.createTextNode(` | `); + const keys = Object.keys(toyHoleArray[i]); + + // Test to see if there was a problem with the key + for (let j = 0; j < keys.length; j++) { + if (["text", "toyHole", "disabled"].includes(keys[j])) { + continue; + } else { + toyHoleArray[i].text += " ERROR, THIS SCENE WAS NOT ENTERED CORRECTLY"; + console.log("Trash found while generateRows() was running: " + keys[j] + ": " + toyHoleArray[i][keys[j]]); + break; + } } - if ((slave.anus > 0) && canDoAnal(slave)) { - links.push('<<link "Ass">><<set $activeSlave.toyHole = "ass">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>'); + // is it just text? + if (toyHoleArray[i].disabled) { + link = App.UI.DOM.disabledLink(toyHoleArray[i].text, [toyHoleArray[i].disabled]); + // Are they already on this toyHole? + } else if (toyHoleArray[i].toyHole === slave.toyHole) { + link = document.createTextNode(toyHoleArray[i].text); + // Set up the link } else { - links.push(App.UI.disabledLink("Ass", - [`Take ${his} anal virginity before giving ${his} ass special attention`])); + link = App.UI.DOM.link( + toyHoleArray[i].text, + () => { + slave.toyHole = toyHoleArray[i].toyHole, + App.UI.SlaveInteract.fucktoyPref(slave); + }, + ); + + // add a note node if required + if (toyHoleArray[i].note) { + let note = document.createTextNode(toyHoleArray[i].note); + note.className = "note"; + link.appendChild(note); + } } - if ((slave.dick > 0) && canPenetrate(slave)) { - links.push('<<link "Dick">><<set $activeSlave.toyHole = "dick">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>'); + row.appendChild(link); + if (i < toyHoleArray.length-1) { + row.appendChild(separator); } - links.push(`<<link "No Preference">><<set $activeSlave.toyHole = "all ${his} holes">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>`); - res += links.join(' | ') + '<br>'; } - App.UI.replace('#fucktoypref', res); - }, - assignmentBlock: function(blockId) { - let res = App.UI.jobLinks.assignments(-1, undefined, () => { - return `<<replace "#assign">>$activeSlave.assignment<</replace>><<replace "#${blockId}">><<= App.UI.SlaveInteract.assignmentBlock("${blockId}")>><<= App.UI.SlaveInteract.fucktoyPref()>><</replace>>`; - }); - if (State.variables.activeSlave.assignment !== "choose her own job") { - res += ' |  <<link "Stay on this assignment for another month">><<set $activeSlave.sentence += 4>><<replace "#assign">>$activeSlave.assignment($activeSlave.sentence weeks)<</replace>><</link>>'; - } - return res; + return row; + } + return jQuery('#fucktoypref').empty().append(el); +}; + +App.UI.SlaveInteract.assignmentBlock = function(blockId) { + let res = App.UI.jobLinks.assignments(-1, undefined, () => { + return `<<replace "#assign">>$activeSlave.assignment<</replace>><<replace "#${blockId}">><<= App.UI.SlaveInteract.assignmentBlock("${blockId}")>><<= App.UI.SlaveInteract.fucktoyPref()>><</replace>>`; + }); + if (State.variables.activeSlave.assignment !== "choose her own job") { + res += ' |  <<link "Stay on this assignment for another month">><<set $activeSlave.sentence += 4>><<replace "#assign">>$activeSlave.assignment($activeSlave.sentence weeks)<</replace>><</link>>'; } + return res; }; App.UI.SlaveInteract.drugs = function(slave) { @@ -82,76 +141,80 @@ App.UI.SlaveInteract.drugs = function(slave) { } if (slave.intelligence > -100 && slave.indentureRestrictions < 1) { drugOptions.push({text: `Psychosuppressants`, drug: `psychosuppressants`}); + } else if (slave.intelligence > -100) { + drugOptions.push({text: `Psychosuppressants`, disabled: `Cannot suppress indentured slave`}); + } else if (slave.indentureRestrictions < 1) { + drugOptions.push({text: `Psychosuppressants`, disabled: `Too stupid to supress`}); } else { - drugOptions.push({text: `Psychosuppressants`}); + drugOptions.push({text: `Psychosuppressants`, disabled: `Too stupid and indentured to supress`}); } if (V.arcologies[0].FSSlaveProfessionalismResearch === 1) { if (canImproveIntelligence(slave)) { drugOptions.push({text: `Psychostimulants`, drug: `psychostimulants`}); } else { - drugOptions.push({text: `Psychostimulants`}); + drugOptions.push({text: `Psychostimulants`, disabled: `Cannot improve intelligence`}); } } if (slave.boobs < 48000) { drugOptions.push({text: `Breasts`, drug: `breast injections`}); } else { - drugOptions.push({text: `Breasts`}); + drugOptions.push({text: `Breasts`, disabled: `Boobs are too large`}); } if (V.arcologies[0].FSAssetExpansionistResearch === 1) { if (slave.boobs < 25000) { drugOptions.push({text: `Hyper-Breasts`, drug: `hyper breast injections`}); } else { - drugOptions.push({text: `Hyper Breasts`}); + drugOptions.push({text: `Hyper Breasts`, disabled: `Boobs are too large`}); } } if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) { if ((slave.boobs - slave.boobsImplant - slave.boobsMilk) > 100) { drugOptions.push({text: `Breast reducers`, drug: `breast redistributors`}); } else { - drugOptions.push({text: `Breast reducers`}); + drugOptions.push({text: `Breast reducers`, disabled: `Boobs are too small`}); } if (slave.nipples === "huge" || slave.nipples === "puffy" || slave.nipples === "cute") { drugOptions.push({text: `Nipple reducers`, drug: `nipple atrophiers`}); } else { - drugOptions.push({text: `Nipple reducers`}); + drugOptions.push({text: `Nipple reducers`, disabled: `Nipples are ${slave.nipples}`}); } } if (slave.butt < 9) { drugOptions.push({text: `Buttocks`, drug: `butt injections`}); } else { - drugOptions.push({text: `Buttocks`}); + drugOptions.push({text: `Buttocks`, disabled: `Butt is too large`}); } if (V.arcologies[0].FSAssetExpansionistResearch === 1) { if (slave.butt < 20) { drugOptions.push({text: `Hyper-Buttocks`, drug: `hyper butt injections`}); } else { - drugOptions.push({text: `Hyper Buttocks`}); + drugOptions.push({text: `Hyper Buttocks`, disabled: `Butt is too large`}); } } if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) { if (slave.butt - slave.buttImplant > 0) { drugOptions.push({text: `Butt reducers`, drug: `butt redistributors`}); } else { - drugOptions.push({text: `Butt reducers`}); + drugOptions.push({text: `Butt reducers`, disabled: `Butt is too small`}); } } if (slave.lips <= 95 || (slave.lips <= 85 && V.seeExtreme !== 1)) { drugOptions.push({text: `Lips`, drug: `lip injections`}); } else { - drugOptions.push({text: `Lips`}); + drugOptions.push({text: `Lips`, disabled: `Lips are too large`}); } if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) { if (slave.lips-slave.lipsImplant > 0) { drugOptions.push({text: `Lip reducers`, drug: `lip atrophiers`}); } else { - drugOptions.push({text: `Lip reducers`}); + drugOptions.push({text: `Lip reducers`, disabled: `Lips are too small`}); } } if (V.growthStim === 1) { if (canImproveHeight(slave)) { drugOptions.push({text: `Growth Stimulants`, drug: `growth stimulants`}); } else { - drugOptions.push({text: `Growth Stimulants`}); + drugOptions.push({text: `Growth Stimulants`, disabled: `Cannot increase height further`}); } } drugOptions.push({text: `Fertility`, drug: `fertility drugs`}); @@ -162,13 +225,13 @@ App.UI.SlaveInteract.drugs = function(slave) { if (slave.dick < 10) { drugOptions.push({text: `Penis enhancement`, drug: `penis enhancement`}); } else { - drugOptions.push({text: `Penis enhancement`}); + drugOptions.push({text: `Penis enhancement`, disabled: `Dick is too large`}); } } else { if (slave.clit < 5) { drugOptions.push({text: `Clitoris enhancement`, drug: `penis enhancement`}); } else { - drugOptions.push({text: `Clitoris enhancement`}); + drugOptions.push({text: `Clitoris enhancement`, disabled: `Clit is too large`}); } } if (V.arcologies[0].FSAssetExpansionistResearch === 1) { @@ -176,13 +239,13 @@ App.UI.SlaveInteract.drugs = function(slave) { if (slave.dick < 31) { drugOptions.push({text: `Hyper penis enhancement`, drug: `hyper penis enhancement`}); } else { - drugOptions.push({text: `Hyper penis enhancement`}); + drugOptions.push({text: `Hyper penis enhancement`, disabled: `Dick is too large`}); } } else { if (slave.clit < 5) { drugOptions.push({text: `Hyper clitoris enhancement`, drug: `penis enhancement`}); } else { - drugOptions.push({text: `Hyper clitoris enhancement`}); + drugOptions.push({text: `Hyper clitoris enhancement`, disabled: `Clit is too large`}); } } } @@ -190,7 +253,7 @@ App.UI.SlaveInteract.drugs = function(slave) { if (slave.dick > 1) { drugOptions.push({text: `Penis reducers`, drug: `penis atrophiers`}); } else if (slave.dick === 1) { - drugOptions.push({text: `Penis reducers`}); + drugOptions.push({text: `Penis reducers`, disabled: `Dick is already at minimum size`}); } } if (slave.dick > 0 && slave.dick < 11 && !canAchieveErection(slave) && slave.chastityPenis !== 1) { @@ -206,7 +269,7 @@ App.UI.SlaveInteract.drugs = function(slave) { if (slave.balls > 1) { drugOptions.push({text: `Testicle reducers`, drug: `testicle atrophiers`}); } else if (slave.balls === 1) { - drugOptions.push({text: `Testicle reducers`}); + drugOptions.push({text: `Testicle reducers`, disabled: `Balls are already at minimum size`}); } if (slave.clit > 0) { drugOptions.push({text: `Clitoris reducers`, drug: `clitoris atrophiers`}); @@ -219,7 +282,7 @@ App.UI.SlaveInteract.drugs = function(slave) { if (slave.visualAge > 18) { drugOptions.push({text: `Anti-aging cream`, drug: `anti-aging cream`}); } else { - drugOptions.push({text: `Anti-aging cream`}); + drugOptions.push({text: `Anti-aging cream`, disabled: `Slave already looks young enough`}); } } drugOptions.push({text: `Steroids`, drug: `steroids`}); @@ -227,7 +290,7 @@ App.UI.SlaveInteract.drugs = function(slave) { if (slave.weight > -95) { drugOptions.push({text: `Weight loss pills`, drug: `appetite suppressors`}); } else { - drugOptions.push({text: `Weight loss pills`}); + drugOptions.push({text: `Weight loss pills`, disabled: `Slave is already at low weight`}); } } if (V.precociousPuberty === 1 && V.pubertyHormones === 1 && (slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) { @@ -268,7 +331,7 @@ App.UI.SlaveInteract.drugs = function(slave) { // Test to see if there was a problem with the key for (let j = 0; j < keys.length; j++) { - if (["text", "drug"].includes(keys[j])) { + if (["text", "drug", "disabled"].includes(keys[j])) { continue; } else { drugArray[i].text += " ERROR, THIS SCENE WAS NOT ENTERED CORRECTLY"; @@ -276,18 +339,12 @@ App.UI.SlaveInteract.drugs = function(slave) { break; } } - // is it just text? - if (keys.length === 1) { - if (drugArray[i].text) { - link = document.createTextNode(drugArray[i].text); - } else { - console.log(`expected 'text' only, got: ${drugArray[i]}`); - link = document.createTextNode("error, text not found"); - } + if (drugArray[i].disabled) { + link = App.UI.DOM.disabledLink(drugArray[i].text, [drugArray[i].disabled]); // Are they already on this drug? } else if (drugArray[i].drug === slave.drugs) { - link = document.createTextNode(drugArray[i].text); + link = App.UI.DOM.disabledLink(drugArray[i].text, [`${He} is already on this drug`]); // Set up the link } else { link = App.UI.DOM.link( @@ -361,7 +418,7 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) { sexOptions.push({text: `Fuck ${him} in your goo pool`, scene: `FPoolSex`}); } } else { - sexOptions.push({text: `Remove ${his} chastity belt if you wish to fuck ${him}`}); + sexOptions.push({text: `Fuck ${him}`, disabled: `Remove ${his} chastity belt if you wish to fuck ${him}`}); } } if (slave.bellyPreg >= 300000) { @@ -378,7 +435,7 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) { if (canDoAnal(slave)) { sexOptions.push({text: `Fuck ${his} ass`, scene: `FAnus`}); } else { - sexOptions.push({text: `Remove ${his} chastity belt if you wish to fuck ${his} ass`}); + sexOptions.push({text: `Fuck ${his} ass`, disabled: `Remove ${his} chastity belt if you wish to fuck ${his} ass`}); } sexOptions.push({text: `Use ${his} mouth`, scene: `FLips`}); sexOptions.push({text: `Kiss ${him}`, scene: `FKiss`}); @@ -423,7 +480,7 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) { } } } else { - sexOptions.push({text: `Remove ${his} dick chastity belt if you wish to play with ${his} cock`}); + sexOptions.push({text: `Use ${his} dick`, disabled: `Remove ${his} dick chastity belt if you wish to play with ${his} cock`}); } } @@ -450,7 +507,8 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) { } } } else { - sexOptions.push({text: `${V.dairyNameCaps} is not producing enough milk to pump through the pipes`}); + fillAssOptions.push({text: `Milk`, disabled: `${V.dairyNameCaps} is not producing enough milk to pump through the pipes`}); + fillFaceOptions.push({text: `Milk`, disabled: `${V.dairyNameCaps} is not producing enough milk to pump through the pipes`}); } if ((V.cumPipeline > 88 && V.cumPipeline !== 0) || V.arcologies[0].FSPastoralistLaw === 1) { if ((slave.inflation < 3 && slave.pregKnown === 0 && slave.bellyImplant < 1500) || slave.inflation < 1) { @@ -460,7 +518,8 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) { } } } else { - sexOptions.push({text: `${V.dairyNameCaps} is not producing enough cum to pump through the pipes`}); + fillAssOptions.push({text: `Cum`, disabled: `${V.dairyNameCaps} is not producing enough cum to pump through the pipes`}); + fillFaceOptions.push({text: `Cum`, disabled: `${V.dairyNameCaps} is not producing enough cum to pump through the pipes`}); } } /* dairyPiping === 1 */ if (V.enema === 1) { @@ -539,9 +598,9 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) { if (slave.daughters > 0) { if (availRelatives.daughters === 0) { if (slave.daughters === 1) { - sexOptions.push({text: `${His} ${availRelatives.oneDaughterRel} is unavailable`}); + sexOptions.push({text: `Fuck ${him} with ${his} daughter`, disabled: `${His} ${availRelatives.oneDaughterRel} is unavailable`}); } else { - sexOptions.push({text: `${His} daughters are unavailable`}); + sexOptions.push({text: `Fuck ${him} with one of ${his} daughters`, disabled: `${His} daughters are unavailable`}); } } else { if (slave.daughters === 1) { @@ -559,9 +618,9 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) { if (slave.sisters > 0) { if (availRelatives.sisters === 0) { if (slave.sisters === 1) { - sexOptions.push({text: `${His} ${availRelatives.oneSisterRel} is unavailable`}); + sexOptions.push({text: `Fuck ${him} with ${his} sister`, disabled: `${His} ${availRelatives.oneSisterRel} is unavailable`}); } else { - sexOptions.push({text: `${His} sisters are unavailable`}); + sexOptions.push({text: `Fuck ${him} with one of ${his} sisters`, disabled: `${His} sisters are unavailable`}); } } else { if (slave.sisters === 1) { @@ -594,7 +653,7 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) { sexOptions.push({text: `Fuck ${him} with ${his} twin`, scene: `FRelation`, update: {partner: "relation"}}); } } else { - sexOptions.push({text: `${assayedSlave.slaveName} is unavailable`}); + sexOptions.push({text: `Fuck ${him} with ${his} sibling`, disabled: `${assayedSlave.slaveName} is unavailable`}); } } } @@ -633,16 +692,16 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) { let ML = V.marrying.length; if ((V.MixedMarriage === 1 || V.cheatMode === 1) && slave.relationship !== 5 && slave.relationship !== -3) { if (V.marrying.includes(slave.ID)) { - sexOptions.push({text: `You are already marrying ${him} this weekend`}); + sexOptions.push({text: `Marry ${him}`, disabled: `You are already marrying ${him} this weekend`}); } else { if (ML < 2) { if (V.cheatMode === 1 || ML === 0) { sexOptions.push({text: `Marry ${him}`, goto: "FMarry"}); } else { - sexOptions.push({text: `You already have a wedding planned for this weekend`}); + sexOptions.push({text: `Marry ${him}`, disabled: `You already have a wedding planned for this weekend`}); } } else { - sexOptions.push({text: `You can only marry up to two slaves per week`}); + sexOptions.push({text: `Marry ${him}`, disabled: `You can only marry up to two slaves per week`}); } } } @@ -693,7 +752,7 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) { // Test to see if there was a problem with the key for (let j = 0; j < keys.length; j++) { - if (["text", "scene", "goto", "updateSlave", "update", "note"].includes(keys[j])) { + if (["text", "scene", "goto", "updateSlave", "update", "note", "disabled"].includes(keys[j])) { continue; } else { sexArray[i].text += " ERROR, THIS SCENE WAS NOT ENTERED CORRECTLY"; @@ -702,13 +761,8 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) { } } // is it just text? - if (keys.length === 1) { - if (sexArray[i].text) { - link = document.createTextNode(sexArray[i].text); - } else { - console.log(`expected 'text' only, got: ${sexArray[i]}`); - link = document.createTextNode("error, text not found"); - } + if (sexArray[i].disabled) { + link = App.UI.DOM.disabledLink(sexArray[i].text, [sexArray[i].disabled]); } else { let passage = ""; if (sexArray[i].goto) { diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw index 001f3e386bad83eb528f46562448a4d32b1c5ec7..dae1caf6d5d5fcbc1126156a8823a2d255cd024d 100644 --- a/src/uncategorized/slaveInteract.tw +++ b/src/uncategorized/slaveInteract.tw @@ -120,34 +120,6 @@ <br> -<span id="fucktoypref"> - <<if ($activeSlave.assignment == "please you") || ($activeSlave.assignment == "serve in the master suite") || ($activeSlave.assignment == "be your Concubine")>> - Fucktoy use preference: <span id="hole" style="font-weight:bold">$activeSlave.toyHole.</span> - <<link "Mouth">><<set $activeSlave.toyHole = "mouth">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>> - | <<link "Tits">><<set $activeSlave.toyHole = "boobs">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>> - <<if ($activeSlave.vagina > 0) && canDoVaginal($activeSlave)>> - | <<link "Pussy">><<set $activeSlave.toyHole = "pussy">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>> - <<elseif ($activeSlave.vagina > 0)>> - | //$His pussy is not available while in chastity// - <<elseif ($activeSlave.vagina == 0)>> - | //Take $his virginity before giving $his pussy special attention// - <</if>> - <<if ($activeSlave.anus > 0) && canDoAnal($activeSlave)>> - | <<link "Ass">><<set $activeSlave.toyHole = "ass">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>> - <<elseif ($activeSlave.anus > 0)>> - | //$His ass is not available while in chastity// - <<elseif ($activeSlave.anus == 0)>> - | //Take $his anal virginity before giving $his ass special attention// - <</if>> - /*check*/ - <<if ($activeSlave.dick > 0) && canPenetrate($activeSlave)>> - | <<link "Dick">><<set $activeSlave.toyHole = "dick">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>> - <</if>> - | <<link "No Preference">><<set $activeSlave.toyHole = "all her holes">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>> - <br> - <</if>> -</span> - <<switch $activeSlave.assignment>> <<case "recover from surgery">> //$He is recovering from surgery this week// @@ -183,6 +155,9 @@ /* CAN BE REASSIGNED */ + <div id="fucktoypref"></div> + <script>App.UI.SlaveInteract.fucktoyPref(V.activeSlave)</script> + Assignment: <span id="assign" font-weight="bold"> <<if $activeSlave.sentence>> @@ -194,6 +169,7 @@ <<if $assignmentRecords[$activeSlave.ID] && $assignmentRecords[$activeSlave.ID] != $activeSlave.assignment>> Previously: <<print $assignmentRecords[$activeSlave.ID]>> <</if>> + <span id="assignmentLinks"><<= App.UI.SlaveInteract.assignmentBlock("assignmentLinks")>></span> <<set _numFacilities = $brothel+$club+$dairy+$farmyard+$servantsQuarters+$masterSuite+$spa+$nursery+$clinic+$schoolroom+$cellblock+$arcade+$HGSuite>>