diff --git a/src/005-passages/eventsPassages.js b/src/005-passages/eventsPassages.js index 4f4e79e0f40961468baba3cf1c655717c5534018..62c682c55054268d1eb83e0072fad84ca770377e 100644 --- a/src/005-passages/eventsPassages.js +++ b/src/005-passages/eventsPassages.js @@ -46,6 +46,15 @@ new App.DomPassage("Murder Attempt", } ); +new App.DomPassage("SE custom slave delivery", + () => { + V.nextButton = "Continue"; + V.nextLink = "Scheduled Event"; + V.returnTo = "Scheduled Event"; + return App.Events.customSlaveDelivery(); + } +); + /* ### Random Events ### */ new App.DomPassage("JS Random Event", diff --git a/src/events/scheduled/seCustomSlaveDelivery.js b/src/events/scheduled/seCustomSlaveDelivery.js new file mode 100644 index 0000000000000000000000000000000000000000..ba269fc4d117c616c17a1593cacb6584c4bf47eb --- /dev/null +++ b/src/events/scheduled/seCustomSlaveDelivery.js @@ -0,0 +1,256 @@ +App.Events.customSlaveDelivery = function() { + V.customSlaveOrdered = 0; + V.encyclopedia = "Enslaving People"; + const el = new DocumentFragment(); + const delivery = generateDelivery(); + const { + He, His, + he, him + } = getPronouns(delivery); + + const cost = slaveCost(delivery) * 2; + + App.UI.DOM.appendNewElement("p", el, "A slave dealer has submitted a slave to satisfy the order you posted."); + + App.UI.DOM.appendNewElement("p", el, "As usual, the asking price is quite high, to cover the costs of finding a slave to order. In compensation, you can freely decline the slave and keep the order open, or even modify it later.", "scene-intro"); + + App.UI.DOM.appendNewElement("p", el, App.Desc.longSlave(delivery, {market: "generic"})); + + App.UI.DOM.appendNewElement("p", el, `${His} price is ${cashFormat(cost)}.`); + + const result = App.UI.DOM.appendNewElement("p", el); + + if (V.cash >= cost) { + App.UI.DOM.appendNewElement("div", result, App.UI.DOM.link( + "Accept the offered slave", + () => { + cashX(forceNeg(cost), "slaveTransfer", delivery); + if (V.customSlaveOrderedReorder) { + delete V.customSlaveOrderedReorder; + } + jQuery(result).empty().append(`${He} has been reasonably broken by the dealer that offered ${him} to you. ${He} has also picked up on the fact that ${he} was specially selected, and is a little hopeful that this means ${he} may be treated well. ${He} is now awaiting your instructions.`, App.UI.newSlaveIntro(delivery)); + } + )); + } else { + App.UI.DOM.appendNewElement("div", result, App.UI.DOM.disabledLink("Accept the offered slave", [`You lack the necessary funds to accept the offered slave.`]), "note"); + } + App.UI.DOM.appendNewElement("div", result, App.UI.DOM.link( + "Reject this offer and place the same order again", + () => { + V.customSlaveOrdered = 1; + V.customSlaveOrderedReorder = 1; + }, + [], + V.nextLink + )); + return el; + + function generateDelivery() { + const pram = { + mature: 0, + nationality: (V.customSlave.nationality !== "Nationality is unimportant") ? V.customSlave.nationality : undefined, + ageOverridesPedoMode: 1 + }; + if (V.customSlave.age === 2) { + pram.minAge = V.minimumSlaveAge; + pram.maxAge = 2; + } else if (V.customSlave.age === 4) { + pram.minAge = 3; + pram.maxAge = 4; + } else if (V.customSlave.age === 6) { + pram.minAge = 5; + pram.maxAge = 6; + } else if (V.customSlave.age === 9) { + pram.minAge = 7; + pram.maxAge = 9; + } else if (V.customSlave.age === 12) { + pram.minAge = 10; + pram.maxAge = 12; + } else if (V.customSlave.age === 14) { + pram.minAge = 13; + pram.maxAge = 14; + } else if (V.customSlave.age === 17) { + pram.minAge = 15; + pram.maxAge = 17; + } else if (V.customSlave.age === 19) { + pram.minAge = 18; + pram.maxAge = 19; + } else if (V.customSlave.age === 20) { + pram.minAge = 20; + pram.maxAge = V.retirementAge - 1; + } else if (V.customSlave.age === 24) { + pram.minAge = 20; + pram.maxAge = 24; + } else if (V.customSlave.age === 25) { + pram.minAge = 25; + pram.maxAge = V.retirementAge - 1; + } else if (V.customSlave.age === 29) { + pram.minAge = 25; + pram.maxAge = 29; + } else if (V.customSlave.age === 30) { + pram.minAge = 30; + pram.maxAge = V.retirementAge - 1; + } else if (V.customSlave.age === 39) { + pram.minAge = 30; + pram.maxAge = 39; + } else if (V.customSlave.age === 40) { + pram.minAge = 40; + pram.maxAge = V.retirementAge - 1; + } else if (V.customSlave.age === 49) { + pram.minAge = 40; + pram.maxAge = 49; + } else if (V.customSlave.age === 50) { + pram.minAge = 50; + pram.maxAge = V.retirementAge - 1; + } else if (V.customSlave.age === 59) { + pram.minAge = 50; + pram.maxAge = 59; + } else if (V.customSlave.age === 60) { + pram.minAge = 60; + pram.maxAge = V.retirementAge - 1; + } else if (V.customSlave.age === 69) { + pram.minAge = 60; + pram.maxAge = 69; + } else if (V.customSlave.age === 70) { + pram.minAge = 70; + pram.maxAge = V.retirementAge - 1; + } else if (V.customSlave.age === 79) { + pram.minAge = 70; + pram.maxAge = 79; + } else if (V.customSlave.age === 80) { + pram.minAge = 80; + pram.maxAge = V.retirementAge - 1; + } else if (V.customSlave.age === 89) { + pram.minAge = 80; + pram.maxAge = 89; + } else if (V.customSlave.age === 90) { + pram.minAge = 90; + pram.maxAge = V.retirementAge - 1; + } else if (V.customSlave.age === 99) { + pram.minAge = 90; + pram.maxAge = 99; + } else if (V.customSlave.age === 100) { + pram.minAge = 100; + pram.maxAge = V.retirementAge - 1; + } else if (V.customSlave.age === 109) { + pram.minAge = 100; + pram.maxAge = 109; + } else if (V.customSlave.age === 110) { + pram.minAge = 110; + pram.maxAge = V.retirementAge - 1; + } else if (V.customSlave.age === 119) { + pram.minAge = 110; + pram.maxAge = 119; + } else if (V.customSlave.age === 120) { + pram.minAge = 120; + pram.maxAge = V.retirementAge - 1; + } else if (V.customSlave.age === 129) { + pram.minAge = 120; + pram.maxAge = 129; + } else { + pram.minAge = 130; + pram.maxAge = V.retirementAge - 1; + } + if (V.customSlave.race !== "ethnicity is unimportant") { + pram.race = V.customSlave.race; + } + + const delivery = GenerateNewSlave((V.customSlave.sex === 2) ? "XY" : "XX", pram); + + if (V.customSlave.sex === 2) { + delivery.dick = V.customSlave.dick; + delivery.balls = V.customSlave.balls; + delivery.scrotum = delivery.balls; + delivery.foreskin = delivery.dick; + } else { + if (V.customSlave.virgin === 0) { + delivery.vagina = V.customSlave.virgin; + } + delivery.labia = V.customSlave.labia; + delivery.vaginaLube = V.customSlave.vaginaLube; + delivery.skill.vaginal = V.customSlave.skills; + if (V.customSlave.sex === 3) { + delivery.dick = V.customSlave.dick; + delivery.balls = V.customSlave.balls; + delivery.scrotum = delivery.balls; + delivery.foreskin = delivery.dick; + if (delivery.dick === 0) { + delivery.clit = V.customSlave.clit; + delivery.foreskin = delivery.clit; + } + } else { + delivery.clit = V.customSlave.clit; + } + } + + /* I have no clue what I'm doing here */ + if (V.customSlave.heightMod === "greatly below average") { + delivery.height = Math.round(Height.random(delivery, {skew: -5, spread: 0.15, limitMult: [-5, -2]})); + } else if (V.customSlave.heightMod === "below average") { + delivery.height = Math.round(Height.random(delivery, {skew: -1, limitMult: [-2, 0]})); + } else if (V.customSlave.heightMod === "normal") { + delivery.height = Math.round(Height.random(delivery, {limitMult: [-1, 1]})); + } else if (V.customSlave.heightMod === "above average") { + delivery.height = Math.round(Height.random(delivery, {skew: 1, limitMult: [0, 2]})); + } else { + delivery.height = Math.round(Height.random(delivery, {skew: 5, spread: 0.15, limitMult: [2, 5]})); + } + + if (V.customSlave.intelligence === 3) { + delivery.intelligence = random(96, 100); + } else if (V.customSlave.intelligence === 2) { + delivery.intelligence = random(51, 95); + } else if (V.customSlave.intelligence === 1) { + delivery.intelligence = random(15, 50); + } else if (V.customSlave.intelligence === -1) { + delivery.intelligence = random(-50, -16); + } else if (V.customSlave.intelligence === -2) { + delivery.intelligence = random(-95, -51); + } else if (V.customSlave.intelligence === -3) { + delivery.intelligence = random(-100, -96); + } else { + delivery.intelligence = random(-15, 15); + } + delivery.intelligenceImplant = V.customSlave.intelligenceImplant; + + if (V.customSlave.analVirgin === 0) { + delivery.anus = V.customSlave.analVirgin; + } + if (V.customSlave.voice && V.customSlave.voice !== -1) { + delivery.voice = V.customSlave.voice; + } else { + delivery.voice = random(0, 3); + } + setHealth(delivery, V.customSlave.health * 80, 0, 0, 0, 0); + delivery.muscles = V.customSlave.muscles; + delivery.weight = V.customSlave.weight; + delivery.face = V.customSlave.face; + delivery.lips = V.customSlave.lips; + if (V.customSlave.skin !== "left natural") { + delivery.origSkin = V.customSlave.skin; + delivery.skin = getGeneticSkinColor(delivery); + } + delivery.boobs = V.customSlave.boobs; + delivery.butt = V.customSlave.butt; + delivery.skill.anal = V.customSlave.skills; + delivery.skill.oral = V.customSlave.skills; + delivery.skill.entertainment = V.customSlave.skill.whore; + delivery.skill.whoring = V.customSlave.skill.whore; + delivery.skill.combat = V.customSlave.skill.combat; + delivery.eye.left.vision = V.customSlave.eye.left.vision; + delivery.eye.right.vision = V.customSlave.eye.right.vision; + delivery.hears = V.customSlave.hears; + delivery.smells = V.customSlave.smells; + delivery.tastes = V.customSlave.tastes; + delivery.arm = V.customSlave.arm; + delivery.leg = V.customSlave.leg; + delivery.weekAcquired = V.week; + delivery.origin = "You purchased $him by special order."; + delivery.career = "a slave"; + delivery.sexualFlaw = either("none"); + delivery.behavioralFlaw = either("none"); + delivery.devotion = random(-10, 10); + delivery.trust = random(-10, 10); + return delivery; + } +}; diff --git a/src/js/CustomSlave.js b/src/js/CustomSlave.js index ef5f202cc65b69c4e88417575018dee593fc6909..8c88013928a04f9d111f491c437531a2b8ddba67 100644 --- a/src/js/CustomSlave.js +++ b/src/js/CustomSlave.js @@ -173,7 +173,7 @@ App.Entity.CustomSlaveOrder = class CustomSlaveOrder { /** hearing * Values as in SlaveState. - * @type {number} + * @type {FC.Hearing} */ this.hears = 0; diff --git a/src/uncategorized/seCustomSlaveDelivery.tw b/src/uncategorized/seCustomSlaveDelivery.tw deleted file mode 100644 index c5d938ad31bdfd7ad7d4958643d9b37b0e4ab47b..0000000000000000000000000000000000000000 --- a/src/uncategorized/seCustomSlaveDelivery.tw +++ /dev/null @@ -1,248 +0,0 @@ -:: SE custom slave delivery [nobr] - -<<set $customSlaveOrdered = 0, $nextButton = "Continue", $nextLink = "Scheduled Event", $returnTo = "Scheduled Event", $encyclopedia = "Enslaving People">> - -<<set _pram = {mature: 0, nationality: _nationality, ageOverridesPedoMode: 1}>> -<<if $customSlave.age == 2>> - <<set _pram.minAge = $minimumSlaveAge>> - <<set _pram.maxAge = 2>> -<<elseif $customSlave.age == 4>> - <<set _pram.minAge = 3>> - <<set _pram.maxAge = 4>> -<<elseif $customSlave.age == 6>> - <<set _pram.minAge = 5>> - <<set _pram.maxAge = 6>> -<<elseif $customSlave.age == 9>> - <<set _pram.minAge = 7>> - <<set _pram.maxAge = 9>> -<<elseif $customSlave.age == 12>> - <<set _pram.minAge = 10>> - <<set _pram.maxAge = 12>> -<<elseif $customSlave.age == 14>> - <<set _pram.minAge = 13>> - <<set _pram.maxAge = 14>> -<<elseif $customSlave.age == 17>> - <<set _pram.minAge = 15>> - <<set _pram.maxAge = 17>> -<<elseif $customSlave.age == 19>> - <<set _pram.minAge = 18>> - <<set _pram.maxAge = 19>> -<<elseif $customSlave.age == 20>> - <<set _pram.minAge = 20>> - <<set _pram.maxAge = $retirementAge-1>> -<<elseif $customSlave.age == 24>> - <<set _pram.minAge = 20>> - <<set _pram.maxAge = 24>> -<<elseif $customSlave.age == 25>> - <<set _pram.minAge = 25>> - <<set _pram.maxAge = $retirementAge-1>> -<<elseif $customSlave.age == 29>> - <<set _pram.minAge = 25>> - <<set _pram.maxAge = 29>> -<<elseif $customSlave.age == 30>> - <<set _pram.minAge = 30>> - <<set _pram.maxAge = $retirementAge-1>> -<<elseif $customSlave.age == 39>> - <<set _pram.minAge = 30>> - <<set _pram.maxAge = 39>> -<<elseif $customSlave.age == 40>> - <<set _pram.minAge = 40>> - <<set _pram.maxAge = $retirementAge-1>> -<<elseif $customSlave.age == 49>> - <<set _pram.minAge = 40>> - <<set _pram.maxAge = 49>> -<<elseif $customSlave.age == 50>> - <<set _pram.minAge = 50>> - <<set _pram.maxAge = $retirementAge-1>> -<<elseif $customSlave.age == 59>> - <<set _pram.minAge = 50>> - <<set _pram.maxAge = 59>> -<<elseif $customSlave.age == 60>> - <<set _pram.minAge = 60>> - <<set _pram.maxAge = $retirementAge-1>> -<<elseif $customSlave.age == 69>> - <<set _pram.minAge = 60>> - <<set _pram.maxAge = 69>> -<<elseif $customSlave.age == 70>> - <<set _pram.minAge = 70>> - <<set _pram.maxAge = $retirementAge-1>> -<<elseif $customSlave.age == 79>> - <<set _pram.minAge = 70>> - <<set _pram.maxAge = 79>> -<<elseif $customSlave.age == 80>> - <<set _pram.minAge = 80>> - <<set _pram.maxAge = $retirementAge-1>> -<<elseif $customSlave.age == 89>> - <<set _pram.minAge = 80>> - <<set _pram.maxAge = 89>> -<<elseif $customSlave.age == 90>> - <<set _pram.minAge = 90>> - <<set _pram.maxAge = $retirementAge-1>> -<<elseif $customSlave.age == 99>> - <<set _pram.minAge = 90>> - <<set _pram.maxAge = 99>> -<<elseif $customSlave.age == 100>> - <<set _pram.minAge = 100>> - <<set _pram.maxAge = $retirementAge-1>> -<<elseif $customSlave.age == 109>> - <<set _pram.minAge = 100>> - <<set _pram.maxAge = 109>> -<<elseif $customSlave.age == 110>> - <<set _pram.minAge = 110>> - <<set _pram.maxAge = $retirementAge-1>> -<<elseif $customSlave.age == 119>> - <<set _pram.minAge = 110>> - <<set _pram.maxAge = 119>> -<<elseif $customSlave.age == 120>> - <<set _pram.minAge = 120>> - <<set _pram.maxAge = $retirementAge-1>> -<<elseif $customSlave.age == 129>> - <<set _pram.minAge = 120>> - <<set _pram.maxAge = 129>> -<<else>> - <<set _pram.minAge = 130>> - <<set _pram.maxAge = $retirementAge-1>> -<</if>> -<<if $customSlave.nationality != "Nationality is unimportant">> - <<set _nationality = $customSlave.nationality>> -<</if>> -<<if $customSlave.race != "ethnicity is unimportant">> - <<set _pram.race = $customSlave.race>> -<</if>> -<<if $customSlave.sex == 2>> - <<set _delivery = GenerateNewSlave("XY", _pram)>> - <<set _delivery.dick = $customSlave.dick>> - <<set _delivery.balls = $customSlave.balls>> - <<set _delivery.scrotum = _delivery.balls>> - <<set _delivery.foreskin = _delivery.dick>> -<<else>> - <<set _delivery = GenerateNewSlave("XX", _pram)>> - <<if $customSlave.virgin == 0>> - <<set _delivery.vagina = $customSlave.virgin>> - <</if>> - <<set _delivery.labia = $customSlave.labia>> - <<set _delivery.vaginaLube = $customSlave.vaginaLube>> - <<set _delivery.skill.vaginal = $customSlave.skills>> - <<if $customSlave.sex == 3>> - <<set _delivery.dick = $customSlave.dick>> - <<set _delivery.balls = $customSlave.balls>> - <<set _delivery.scrotum = _delivery.balls>> - <<set _delivery.foreskin = _delivery.dick>> - <<if _delivery.dick == 0>> - <<set _delivery.clit = $customSlave.clit>> - <<set _delivery.foreskin = _delivery.clit>> - <</if>> - <<else>> - <<set _delivery.clit = $customSlave.clit>> - <</if>> -<</if>> - -/* I have no clue what I'm doing here */ -<<if $customSlave.heightMod == "greatly below average">> - <<set _delivery.height = Math.round(Height.random(_delivery, {skew: -5, spread: .15, limitMult: [-5, -2]}))>> -<<elseif $customSlave.heightMod == "below average">> - <<set _delivery.height = Math.round(Height.random(_delivery, {skew: -1, limitMult: [-2, 0]}))>> -<<elseif $customSlave.heightMod == "normal">> - <<set _delivery.height = Math.round(Height.random(_delivery, {limitMult: [-1, 1]}))>> -<<elseif $customSlave.heightMod == "above average">> - <<set _delivery.height = Math.round(Height.random(_delivery, {skew: 1, limitMult: [0, 2]}))>> -<<else>> - <<set _delivery.height = Math.round(Height.random(_delivery, {skew: 5, spread: .15, limitMult: [2, 5]}))>> -<</if>> - -<<if $customSlave.intelligence == 3>> - <<set _delivery.intelligence = random(96,100)>> -<<elseif $customSlave.intelligence == 2>> - <<set _delivery.intelligence = random(51,95)>> -<<elseif $customSlave.intelligence == 1>> - <<set _delivery.intelligence = random(15,50)>> -<<elseif $customSlave.intelligence == -1>> - <<set _delivery.intelligence = random(-50,-16)>> -<<elseif $customSlave.intelligence == -2>> - <<set _delivery.intelligence = random(-95,-51)>> -<<elseif $customSlave.intelligence == -3>> - <<set _delivery.intelligence = random(-100,-96)>> -<<else>> - <<set _delivery.intelligence = random(-15,15)>> -<</if>> -<<set _delivery.intelligenceImplant = $customSlave.intelligenceImplant>> - -<<if $customSlave.analVirgin == 0>> - <<set _delivery.anus = $customSlave.analVirgin>> -<</if>> -<<if (def $customSlave.voice) && ($customSlave.voice != -1)>> - <<set _delivery.voice = $customSlave.voice>> -<<else>> - <<set _delivery.voice = random(0,3)>> -<</if>> -<<run setHealth(_delivery, $customSlave.health * 80, 0, 0, 0, 0)>> -<<set _delivery.muscles = $customSlave.muscles>> -<<set _delivery.weight = $customSlave.weight>> -<<set _delivery.face = $customSlave.face>> -<<set _delivery.lips = $customSlave.lips>> -<<if $customSlave.skin != "left natural">> - <<set _delivery.origSkin = $customSlave.skin>> - <<set _delivery.skin = getGeneticSkinColor(_delivery)>> -<</if>> -<<set _delivery.boobs = $customSlave.boobs>> -<<set _delivery.butt = $customSlave.butt>> -<<set _delivery.skill.anal = $customSlave.skills>> -<<set _delivery.skill.oral = $customSlave.skills>> -<<set _delivery.skill.entertainment = $customSlave.skill.whore>> -<<set _delivery.skill.whoring = $customSlave.skill.whore>> -<<set _delivery.skill.combat = $customSlave.skill.combat>> -<<set _delivery.eye.left.vision = $customSlave.eye.left.vision>> -<<set _delivery.eye.right.vision = $customSlave.eye.right.vision>> -<<set _delivery.hears = $customSlave.hears>> -<<set _delivery.smells = $customSlave.smells>> -<<set _delivery.tastes = $customSlave.tastes>> -<<set _delivery.arm = $customSlave.arm>> -<<set _delivery.leg = $customSlave.leg>> -<<set _delivery.weekAcquired = $week>> -<<set _delivery.origin = "You purchased $him by special order.">> -<<set _delivery.career = "a slave">> -<<set _delivery.sexualFlaw = either("none")>> -<<set _delivery.behavioralFlaw = either("none")>> -<<set _delivery.devotion = random(-10,10)>> -<<set _delivery.trust = random(-10,10)>> - -<<set _slaveCost = slaveCost(_delivery)>> -<<set _slaveCost = _slaveCost*2>> -<<setLocalPronouns _delivery>> - -A slave dealer has submitted a slave to satisfy the order you posted. - -<br><br> - -//As usual, the asking price is quite high, to cover the costs of finding a slave to order. In compensation, you can freely decline the slave and keep the order open, or even modify it later.// - -<br><br> - -<<includeDOM App.Desc.longSlave(_delivery, {market: "generic"})>> - -<br><br> - -$His price is <<print cashFormat(_slaveCost)>>. - -<br><br> - -<span id="result"> -<<if $cash >= _slaveCost>> - <<link "Accept the offered slave">> - <<run cashX(forceNeg(_slaveCost), "slaveTransfer", _delivery)>> - <<replace "#result">> - $He has been reasonably broken by the dealer that offered $him to you. $He has also picked up on the fact that $he was specially selected, and is a little hopeful that this means $he may be treated well. $He is now awaiting your instructions. - <<includeDOM App.UI.newSlaveIntro(_delivery)>> - <<if def $customSlaveOrderedReorder>><<run delete $customSlaveOrderedReorder>><</if>> - <</replace>> - <</link>> -<<else>> - //You lack the necessary funds to accept the offered slave.// -<</if>> -<br> -<<link "Reject this offer and place the same order again">> - <<set $customSlaveOrdered = 1>> - <<set $customSlaveOrderedReorder = 1>> - <<goto $nextLink>> -<</link>> -</span>