diff --git a/devNotes/legacy files/walkPast.txt b/devNotes/legacy files/walkPast.txt index 86815322cb783f7639119d665bc121098b7b60fd..ebb49e201b388dcd9645dffcddd0bd814ce83674 100644 --- a/devNotes/legacy files/walkPast.txt +++ b/devNotes/legacy files/walkPast.txt @@ -3540,7 +3540,7 @@ <<set _target = "FAnus">> <<elseif (_seed > 0)>> <<= App.Desc.face($activeSlave)>> - <<mouthDescription>> + <<= App.Desc.mouth($activeSlave)>> <<switch $activeSlave.collar>> <<case "a Fuckdoll suit">> Its suit is expressly designed to encourage use of its face hole. diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js index 635b1fcc947c9aa6e341094ae717daf55309d1ef..6cd79298ef745a60d0703b0df3036f66fdb6b32d 100644 --- a/src/interaction/main/walkPast.js +++ b/src/interaction/main/walkPast.js @@ -9140,7 +9140,9 @@ globalThis.walkPast = (function() { } = getPronouns(slave); t += App.Desc.face(slave); - t += ` <<mouthDescription>>`; + t += ` `; + t += App.Desc.mouth(slave); + t += ` `; switch (slave.collar) { case "uncomfortable leather": t += `${His} uncomfortable leather collar makes ${him} swallow and lick ${his} lips periodically, making it look like ${he}'s offering oral even though ${he}'s just trying to relieve the discomfort.`; diff --git a/src/npc/descriptions/mouth.js b/src/npc/descriptions/mouth.js new file mode 100644 index 0000000000000000000000000000000000000000..50f45594b00ac84e784d242834e70a15a7309265 --- /dev/null +++ b/src/npc/descriptions/mouth.js @@ -0,0 +1,157 @@ +App.Desc.mouth = function(slave) { + const r = []; + const { + he, him, his, hers, himself, boy, He, His + } = getPronouns(slave); + + r.push(`${He} has`); + if (slave.lips <= 10) { + r.push(`thin, unattractive lips.`); + } else if (slave.lips <= 20) { + r.push(`normal lips.`); + } else if (slave.lips <= 40) { + r.push(`full, attractive lips.`); + } else if (slave.lips <= 70) { + r.push(`plump, beestung lips.`); + } else if (slave.lips <= 95) { + r.push(`huge, obviously augmented lips.`); + } else { + r.push(`a facepussy: ${his} lips are so huge that they're always a bit parted in the middle, forming a moist, inviting`); + if (V.PC.dick !== 0) { + r.push(`hole for cock.`); + } else { + r.push(`hole.`); + } + } + + if (V.showImplantEffects === 1) { + if (V.arcologies[0].FSTransformationFetishist !== "unset") { + if (slave.lipsImplant > 0) { + r.push(`They are about ${Math.floor((slave.lipsImplant / slave.lips) * 100)}% implant.`); + } + if (V.arcologies[0].FSTransformationFetishist > 20) { + if (slave.lips > 70) { + if (slave.lipsImplant / slave.lips < .50) { + r.push(`${His} lips are huge and < span class="red" > disgustingly natural</span > for their size.`); + } else { + r.push(`${His} lips are huge and < span class="green" > obviously implants,</span > as they should be.`); + } + } + } + } + } + + if (slave.fuckdoll > 0) { + r.push(`${His} mouth is held open by the suit's oral insert.`); + } else if ((slave.assignment === "work in the dairy") && (V.dairyRestraintsSetting > 1)) { + if (V.dairyFeedersSetting > 1) { + r.push(`${His} milking machine has a phallus a long way down ${his} throat to rehydrate ${him}.`); + } else { + r.push(`${He}'s got ${his} mouth wrapped around a phallus provided by ${his} milking machine, and is sucking it off for hydration.`); + } + } else { + if (canTalk(slave)) { + if (slave.lips > 70) { + r.push(`${He} can barely enunciate past ${his} dick-sucking lips; '${WrittenMaster(slave)}' comes out as '${lispReplace(WrittenMaster(slave))}.'`); + } + } + if (slave.teeth !== "normal") { + if (slave.teeth === "crooked") { + r.push(`${His} teeth are <span class="yellow">crooked,</span> detracting from ${his} beauty whenever ${he} opens ${his} mouth.`); + } else if (slave.teeth === "straightening braces") { + r.push(`${He} has braces,`); + if (slave.visualAge > 35) { + r.push(`an amusing sight on such a mature ${woman}.`); + } else if ((slave.visualAge > 14) && (slave.visualAge < 18)) { + r.push(`a cute look on such a young ${girl}.`); + } else { + r.push(`and occasionally looks preoccupied with discomfort as they straighten ${his} teeth.`); + } + } else if (slave.teeth === "cosmetic braces") { + r.push(`${He}'s wearing braces despite ${his} straight teeth,`); + if (slave.visualAge > 35) { + r.push(`an amusing sight on such a mature ${woman}.`); + } else if ((slave.visualAge > 14) && (slave.visualAge < 18)) { + r.push(`a cute look on such a young ${girl}.`); + } else { + r.push(`just for appearances.`); + } + } else if (slave.teeth === "gapped") { + r.push(`${He} has a prominent gap between ${his} front`); + if (slave.faceShape === "cute") { + r.push(`teeth that suits ${his} cute face surprisingly well.`); + } else { + r.push(`teeth.`); + } + if (canTalk(slave)) { + r.push(`It also leaves ${him} with a slight lisp.`); + } + } else if (slave.teeth === "removable") { + r.push(`${His} teeth have been removed and replaced with high-quality dentures. It's difficult to tell anything's unusual until you take them out for gummy oral sex.`); + } else if (slave.teeth === "pointy") { + r.push(`${His} teeth have been replaced with realistic implants that mimic the dentition of a carnivore. ${His} smiles are frightening, and ${he} can bare them to become truly terrifying.`); + } else if (slave.teeth === "fangs") { + r.push(`${His} upper canine teeth have been replaced with realistic implants that mimic fangs. ${His} smiles are frightening, and ${he} can bare them to become truly terrifying.`); + } else if (slave.teeth === "fang") { + r.push(`One of ${his} upper canine teeth has been replaced with realistic implant shaped like a fang.`); + if (slave.faceShape === "cute") { + r.push(`It gives ${his} cute face an added`); + if (slave.lips <= 50) { + r.push(`charm, especially when it rests over ${his} lower lip.`); + } else { + r.push(`charm.`); + } + } else { + if (slave.lips <= 50) { + r.push(`It stands out when it rests over ${his} lower lip.`); + } else { + r.push(`It doesn't fit well in ${his} mouth and frequently prods ${his} fat lower lip.`); + } + } + } else if (slave.teeth === "baby") { + r.push(`${He} still has ${his} baby teeth.`); + } else if (slave.teeth === "mixed") { + r.push(`${He} is in the process of replacing ${his} baby teeth.`); + } + } + } + if (slave.tastes === -1) { + r.push(`${He} has no sense of taste, but this isn't immediately obvious just by looking at ${his} tongue.`); + } + + r.push(App.Desc.mods(slave, "lips")); + r.push(App.Desc.mods(slave, "tongue")); + + if (slave.fuckdoll > 0) { + if (V.PC.dick !== 0) { + r.push(`Sticking a dick`); + } else { + r.push(`Sliding a dildo`); + } + r.push(`into ${his}`); + if (slave.lips > 95) { + r.push(`facepussy`); + } else { + r.push(`mouth insert`); + } + if (slave.fuckdoll <= 45) { + r.push(`mostly results in gagging.`); + } else { + r.push(`offers its user a selection of delightful face hole massage options.`); + } + } else { + r.push(`${He} is`); + if (slave.skill.oral >= 100) { + r.push(`an <span class="aquamarine">oral sex master.</span>`); + } else if (slave.skill.oral > 60) { + r.push(`an <span class="aquamarine">expert at oral.</span>`); + } else if (slave.skill.oral > 30) { + r.push(`<span class="aquamarine">orally skilled.</span>`); + } else if (slave.skill.oral > 10) { + r.push(`<span class="aquamarine">capable of basic oral sex.</span>`); + } else { + r.push(`unskilled at oral sex.`); + } + } + return r.join(" "); +}; diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw index 8bbb9f9c97d0240c4ca2ade8ad37f43b317269af..7f532488d4704659f767d39abaa390135036455f 100644 --- a/src/uncategorized/longSlaveDescription.tw +++ b/src/uncategorized/longSlaveDescription.tw @@ -1910,7 +1910,7 @@ $He is <<= App.Desc.horns($activeSlave)>> <<= App.Desc.face($activeSlave)>> -<<mouthDescription>> +<<= App.Desc.mouth($activeSlave)>> <<if ($showClothing == 1) && ($saleDescription == 0)>> diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw index f402b7849ed723dac51141f861b6b5b3e8935fc0..5366bf49529eb1e96ec204656a0b94a90fadf721 100644 --- a/src/utility/descriptionWidgetsFlesh.tw +++ b/src/utility/descriptionWidgetsFlesh.tw @@ -1,129 +1,5 @@ :: flesh description widgets [widget nobr] -<<widget "mouthDescription">> - -$He has -<<if $activeSlave.lips <= 10>> - thin, unattractive lips. -<<elseif $activeSlave.lips <= 20>> - normal lips. -<<elseif $activeSlave.lips <= 40>> - full, attractive lips. -<<elseif $activeSlave.lips <= 70>> - plump, beestung lips. -<<elseif $activeSlave.lips <= 95>> - huge, obviously augmented lips. -<<else>> - a facepussy: $his lips are so huge that they're always a bit parted in the middle, forming a moist, inviting hole<<if $PC.dick != 0>> for cock<</if>>. -<</if>> - -<<if $showImplantEffects == 1>> - <<if $arcologies[0].FSTransformationFetishist != "unset">> - <<if $activeSlave.lipsImplant > 0>> - They are about <<print Math.floor(($activeSlave.lipsImplant/$activeSlave.lips)*100)>>% implant. - <</if>> - <<if ($arcologies[0].FSTransformationFetishist > 20)>> - <<if $activeSlave.lips > 70>> - <<if ($activeSlave.lipsImplant/$activeSlave.lips < .50)>> - $His lips are huge and @@.red;disgustingly natural@@ for their size. - <<else>> - $His lips are huge and @@.green;obviously implants,@@ as they should be. - <</if>> - <</if>> - <</if>> - <</if>> -<</if>> - -<<if $activeSlave.fuckdoll > 0>> - $His mouth is held open by the suit's oral insert. -<<elseif ($activeSlave.assignment == "work in the dairy") && ($dairyRestraintsSetting > 1)>> - <<if ($dairyFeedersSetting > 1)>> - $His milking machine has a phallus a long way down $his throat to rehydrate $him. - <<else>> - $He's got $his mouth wrapped around a phallus provided by $his milking machine, and is sucking it off for hydration. - <</if>> -<<else>> - <<if canTalk($activeSlave)>> - <<if $activeSlave.lips > 70>> - $He can barely enunciate past $his dick-sucking lips; '<<= WrittenMaster($activeSlave)>>' comes out as '<<= lispReplace(WrittenMaster($activeSlave))>>.' - <</if>> - <</if>> - <<if $activeSlave.teeth != "normal">> - <<if $activeSlave.teeth == "crooked">> - $His teeth are @@.yellow;crooked,@@ detracting from $his beauty whenever $he opens $his mouth. - <<elseif $activeSlave.teeth == "straightening braces">> - $He has braces, - <<if $activeSlave.visualAge > 35>> - an amusing sight on such a mature $woman. - <<elseif ($activeSlave.visualAge > 14) && ($activeSlave.visualAge < 18)>> - a cute look on such a young $girl. - <<else>> - and occasionally looks preoccupied with discomfort as they straighten $his teeth. - <</if>> - <<elseif $activeSlave.teeth == "cosmetic braces">> - $He's wearing braces despite $his straight teeth, - <<if $activeSlave.visualAge > 35>> - an amusing sight on such a mature $woman. - <<elseif ($activeSlave.visualAge > 14) && ($activeSlave.visualAge < 18)>> - a cute look on such a young $girl. - <<else>> - just for appearances. - <</if>> - <<elseif $activeSlave.teeth == "gapped">> - $He has a prominent gap between $his front teeth<<if $activeSlave.faceShape == "cute">> that suits $his cute face surprisingly well<</if>>. - <<if canTalk($activeSlave)>> - It also leaves $him with a slight lisp. - <</if>> - <<elseif $activeSlave.teeth == "removable">> - $His teeth have been removed and replaced with high-quality dentures. It's difficult to tell anything's unusual until you take them out for gummy oral sex. - <<elseif $activeSlave.teeth == "pointy">> - $His teeth have been replaced with realistic implants that mimic the dentition of a carnivore. $His smiles are frightening, and $he can bare them to become truly terrifying. - <<elseif $activeSlave.teeth == "fangs">> - $His upper canine teeth have been replaced with realistic implants that mimic fangs. $His smiles are frightening, and $he can bare them to become truly terrifying. - <<elseif $activeSlave.teeth == "fang">> - One of $his upper canine teeth has been replaced with realistic implant shaped like a fang. - <<if $activeSlave.faceShape == "cute">> - It gives $his cute face an added charm<<if $activeSlave.lips <= 50>>, especially when it rests over $his lower lip<</if>>. - <<else>> - <<if $activeSlave.lips <= 50>> - It stands out when it rests over $his lower lip. - <<else>> - It doesn't fit well in $his mouth and frequently prods $his fat lower lip. - <</if>> - <</if>> - <<elseif $activeSlave.teeth == "baby">> - $He still has $his baby teeth. - <<elseif $activeSlave.teeth == "mixed">> - $He is in the process of replacing $his baby teeth. - <</if>> - <</if>> -<</if>> -<<if $activeSlave.tastes == -1>> - $He has no sense of taste, but this isn't immediately obvious just by looking at $his tongue. -<</if>> - -<<= App.Desc.mods($activeSlave, "lips")>> -<<= App.Desc.mods($activeSlave, "tongue")>> - -<<if $activeSlave.fuckdoll > 0>> - <<if $PC.dick != 0>>Sticking a dick<<else>>Sliding a dildo<</if>> into $his <<if $activeSlave.lips > 95>>facepussy<<else>>mouth insert<</if>> - <<if $activeSlave.fuckdoll <= 45>> - mostly results in gagging. - <<else>> - offers its user a selection of delightful face hole massage options. - <</if>> -<<else>> - $He is - <<if $activeSlave.skill.oral >= 100>>an @@.aquamarine;oral sex master.@@ - <<elseif $activeSlave.skill.oral > 60>>an @@.aquamarine;expert at oral.@@ - <<elseif $activeSlave.skill.oral > 30>>@@.aquamarine;orally skilled.@@ - <<elseif $activeSlave.skill.oral > 10>>@@.aquamarine;capable of basic oral sex.@@ - <<else>>unskilled at oral sex. - <</if>> -<</if>> - -<</widget>> - <<widget "pregnancyDescription">> <<if $activeSlave.pregSource > 0>>