From c4f47e017e0313fbcde4c5a3f27eba6f4320ba5c Mon Sep 17 00:00:00 2001
From: klorpa <30924131+klorpa@users.noreply.github.com>
Date: Thu, 7 Mar 2019 14:02:40 -0600
Subject: [PATCH] SGirls

---
 slave variables documentation - Pregmod.txt | 15 ++++++++++++-
 src/cheats/PCCheatMenu.tw                   |  4 ++--
 src/cheats/mod_EditChildCheatNew.tw         | 11 +++++++++-
 src/cheats/mod_EditSlaveCheat.tw            |  7 ++++++
 src/cheats/mod_editSlaveCheatNew.tw         |  9 ++++++++
 src/events/intro/introSummary.tw            |  2 +-
 src/js/SlaveState.js                        |  6 ++++++
 src/js/datatypeCleanupJS.js                 |  4 ++++
 src/js/storyJS.js                           | 20 +++++++++++++++++
 src/npc/startingGirls/startingGirls.tw      | 24 +++++++++++++++++++--
 src/pregmod/fFeet.tw                        | 12 +++++------
 src/pregmod/forceFeeding.tw                 |  6 +++---
 src/pregmod/widgets/bodyswapWidgets.tw      |  2 ++
 src/uncategorized/RESS.tw                   |  2 +-
 src/uncategorized/saDiet.tw                 |  6 ++++++
 src/uncategorized/saLongTermEffects.tw      |  4 ++--
 src/uncategorized/slaveStats.tw             |  2 ++
 17 files changed, 117 insertions(+), 19 deletions(-)

diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index 8aafdbf84ab..3a62a921c74 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -1257,6 +1257,19 @@ kemonomimi ear color
 accepts hColor strings
 "hairless"
 
+smells:
+
+sense of smell
+-1 - no
+0 - yes
+
+tastes:
+
+sense of taste
+-1 - no
+0 - yes
+
+
 horn:
 
 horn type if any
@@ -3578,7 +3591,7 @@ How to set up your own hero slave.
 
 -The default slave template used:
 
-<<set $activeSlave = {slaveName: "blank", slaveSurname: 0, birthName: "blank", birthSurname: 0, genes: "XX", pronoun: "she", possessive: "her", possessivePronoun: "hers", objectReflexive: "herself", object: "her", noun: "girl", weekAcquired: 0, origin: 0, career: 0, ID: 0, prestige: 0, pornFeed: 0, pornFame: 0, pornFameSpending: 0, pornPrestige: 0, pornPrestigeDesc: 0, pornFameType: "none", pornFocus: "none", pornTypeGeneral: 0, pornTypeFuckdoll: 0, pornTypeRape: 0, pornTypePreggo: 0, pornTypeBBW: 0, pornTypeGainer: 0, pornTypeStud: 0, pornTypeLoli: 0, pornTypeDeepThroat: 0, pornTypeStruggleFuck: 0, pornTypePainal: 0, pornTypeTease: 0, pornTypeRomantic: 0, pornTypePervert: 0, pornTypeCaring: 0, pornTypeUnflinching: 0, pornTypeSizeQueen: 0, pornTypeNeglectful: 0, pornTypeCumAddict: 0, pornTypeAnalAddict: 0, pornTypeAttentionWhore: 0, pornTypeBreastGrowth: 0, pornTypeAbusive: 0, pornTypeMalicious: 0, pornTypeSelfHating: 0, pornTypeBreeder: 0, pornTypeSub: 0, pornTypeCumSlut: 0, pornTypeAnal: 0, pornTypeHumiliation: 0, pornTypeBoobs: 0, pornTypeDom: 0, pornTypeSadist: 0, pornTypeMasochist: 0, pornTypePregnancy: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, father: 0, mother: 0, daughters: 0, sisters: 0, canRecruit: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), actualAge: 18, visualAge: 18, physicalAge: 18, ovaryAge: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race: "white", origRace: "white", markings: "none", eyes: 1, eyeColor: "brown", origEye: "brown", pupil: "circular", sclerae: "white", eyewear: "none", hears: 0, earwear: "none", earImplant: 0, origHColor: "brown", hColor: "brown", pubicHColor: "brown", underArmHColor: "brown", eyebrowHColor: "brown", origSkin: "light", skin: "light", hLength: 60, eyebrowFullness: "natural", hStyle: "short", pubicHStyle: "neat", underArmHStyle: "neat", eyebrowHStyle: "natural", waist: 0, corsetPiercing: 0, PLimb: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute", nipplesPiercing: 0, nipplesAccessory: 0, areolae: 0, areolaePiercing: 0, areolaeShape: "circle", boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, pregAdaptation: 50, superfetation: 0, ovaImplant: 0, wombImplant: "none", broodmother: 0, broodmotherFetuses: 0, broodmotherOnHold: 0, broodmotherCountDown: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, prostate: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules: "restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", legAccessory: "none", buttplug: "none", buttplugAttachment: "none", intelligence: 0, intelligenceImplant: 0, energy: 50, need: 0, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, publicCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", customTitle: "", customTitleLisp: "", rudeTitle: 0, customImage: 0, currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, pregKnown: 0, pregWeek: 0, belly: 0, bellyPreg: 0, bellyFluid: 0, bellyImplant: -1, bellySag: 0, bellySagPreg: 0, bellyPain: 0, cervixImplant: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, scars: 0, breedingMark: 0, bodySwap: 0, HGExclude: 0, ballType: "human", eggType: "human", reservedChildren: 0, reservedChildrenNursery: 0, choosesOwnChastity: 0, pregControl: "none", readyLimbs: [], ageAdjust: 0, bald: 0, origBodyOwner: "", origBodyOwnerID: 0, death: "", hormoneBalance: 0, onDiet: 0, breastMesh: 0, slavesFathered: 0, PCChildrenFathered: 0, slavesKnockedUp: 0, PCKnockedUp: 0, prematureBirth: 0, premature: 0, origSkin: "white", vasectomy: 0, haircuts: 0, newGamePlus: 0, skillHG: 0, skillRC: 0, skillBG: 0, skillMD: 0, skillDJ: 0, skillNU: 0, skillTE: 0, skillAT: 0, skillMT: 0, skillST: 0, skillMM: 0, skillFA: 0, skillWA: 0, skillS: 0, skillE: 0, skillW: 0, tankBaby: 0, geneMods: {NCS: 0, rapidCellGrowth: 0}, NCSyouthening: 0, override_Race: 0, override_Skin: 0, override_Eye_Color: 0, override_H_Color: 0, override_Pubic_H_Color: 0, override_Arm_H_Color: 0, override_Brow_H_Color: 0, albinismOverride: 0, missingEyes: 0, missingArms: 0, missingLegs: 0, slaveCost: 0, lifetimeCashExpenses: 0, lifetimeCashIncome: 0, lastWeeksCashIncome: 0, lifetimeRepExpenses: 0, lifetimeRepIncome: 0, lastWeeksRepIncome: 0, chastityVagina = 0, chastityPenis = 0, chastityAnus = 0}>>
+<<set $activeSlave = {slaveName: "blank", slaveSurname: 0, birthName: "blank", birthSurname: 0, genes: "XX", pronoun: "she", possessive: "her", possessivePronoun: "hers", objectReflexive: "herself", object: "her", noun: "girl", weekAcquired: 0, origin: 0, career: 0, ID: 0, prestige: 0, pornFeed: 0, pornFame: 0, pornFameSpending: 0, pornPrestige: 0, pornPrestigeDesc: 0, pornFameType: "none", pornFocus: "none", pornTypeGeneral: 0, pornTypeFuckdoll: 0, pornTypeRape: 0, pornTypePreggo: 0, pornTypeBBW: 0, pornTypeGainer: 0, pornTypeStud: 0, pornTypeLoli: 0, pornTypeDeepThroat: 0, pornTypeStruggleFuck: 0, pornTypePainal: 0, pornTypeTease: 0, pornTypeRomantic: 0, pornTypePervert: 0, pornTypeCaring: 0, pornTypeUnflinching: 0, pornTypeSizeQueen: 0, pornTypeNeglectful: 0, pornTypeCumAddict: 0, pornTypeAnalAddict: 0, pornTypeAttentionWhore: 0, pornTypeBreastGrowth: 0, pornTypeAbusive: 0, pornTypeMalicious: 0, pornTypeSelfHating: 0, pornTypeBreeder: 0, pornTypeSub: 0, pornTypeCumSlut: 0, pornTypeAnal: 0, pornTypeHumiliation: 0, pornTypeBoobs: 0, pornTypeDom: 0, pornTypeSadist: 0, pornTypeMasochist: 0, pornTypePregnancy: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, father: 0, mother: 0, daughters: 0, sisters: 0, canRecruit: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), actualAge: 18, visualAge: 18, physicalAge: 18, ovaryAge: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race: "white", origRace: "white", markings: "none", eyes: 1, eyeColor: "brown", origEye: "brown", pupil: "circular", sclerae: "white", eyewear: "none", hears: 0, earwear: "none", earImplant: 0, origHColor: "brown", hColor: "brown", pubicHColor: "brown", underArmHColor: "brown", eyebrowHColor: "brown", origSkin: "light", skin: "light", hLength: 60, eyebrowFullness: "natural", hStyle: "short", pubicHStyle: "neat", underArmHStyle: "neat", eyebrowHStyle: "natural", waist: 0, corsetPiercing: 0, PLimb: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute", nipplesPiercing: 0, nipplesAccessory: 0, areolae: 0, areolaePiercing: 0, areolaeShape: "circle", boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, pregAdaptation: 50, superfetation: 0, ovaImplant: 0, wombImplant: "none", broodmother: 0, broodmotherFetuses: 0, broodmotherOnHold: 0, broodmotherCountDown: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, prostate: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules: "restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", legAccessory: "none", buttplug: "none", buttplugAttachment: "none", intelligence: 0, intelligenceImplant: 0, energy: 50, need: 0, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, publicCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", customTitle: "", customTitleLisp: "", rudeTitle: 0, customImage: 0, currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, pregKnown: 0, pregWeek: 0, belly: 0, bellyPreg: 0, bellyFluid: 0, bellyImplant: -1, bellySag: 0, bellySagPreg: 0, bellyPain: 0, cervixImplant: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, scars: 0, breedingMark: 0, bodySwap: 0, HGExclude: 0, ballType: "human", eggType: "human", reservedChildren: 0, reservedChildrenNursery: 0, choosesOwnChastity: 0, pregControl: "none", readyLimbs: [], ageAdjust: 0, bald: 0, origBodyOwner: "", origBodyOwnerID: 0, death: "", hormoneBalance: 0, onDiet: 0, breastMesh: 0, slavesFathered: 0, PCChildrenFathered: 0, slavesKnockedUp: 0, PCKnockedUp: 0, prematureBirth: 0, premature: 0, origSkin: "white", vasectomy: 0, haircuts: 0, newGamePlus: 0, skillHG: 0, skillRC: 0, skillBG: 0, skillMD: 0, skillDJ: 0, skillNU: 0, skillTE: 0, skillAT: 0, skillMT: 0, skillST: 0, skillMM: 0, skillFA: 0, skillWA: 0, skillS: 0, skillE: 0, skillW: 0, tankBaby: 0, geneMods: {NCS: 0, rapidCellGrowth: 0}, NCSyouthening: 0, override_Race: 0, override_Skin: 0, override_Eye_Color: 0, override_H_Color: 0, override_Pubic_H_Color: 0, override_Arm_H_Color: 0, override_Brow_H_Color: 0, albinismOverride: 0, missingEyes: 0, missingArms: 0, missingLegs: 0, slaveCost: 0, lifetimeCashExpenses: 0, lifetimeCashIncome: 0, lastWeeksCashIncome: 0, lifetimeRepExpenses: 0, lifetimeRepIncome: 0, lastWeeksRepIncome: 0, chastityVagina = 0, chastityPenis = 0, chastityAnus = 0, smells: 0, tastes: 0}>>
 
 Making your slave; add their name to the following, then go down the documentation adding in your changes.
 -each variable must be separated from the last by a comma followed by a space
diff --git a/src/cheats/PCCheatMenu.tw b/src/cheats/PCCheatMenu.tw
index 91ba348cc36..f8c2f8c9290 100644
--- a/src/cheats/PCCheatMenu.tw
+++ b/src/cheats/PCCheatMenu.tw
@@ -260,7 +260,7 @@ Sex: ''$tempSlave.genes''
 <<elseif $tempSlave.medicine >= -40>>
 	Gauze is your friend. Just keep wrapping.
 <<elseif $tempSlave.medicine >= -60>>
-	You know how to apply a bandaid.
+	You know how to apply a band-aid.
 <<elseif $tempSlave.medicine >= -80>>
 	Cure-alls are wonderful. Why aren't they sold in stores, though?
 <<else>>
@@ -275,7 +275,7 @@ Sex: ''$tempSlave.genes''
 <<radiobutton "$tempSlave.medicine" 0>> Basic medic
 <<radiobutton "$tempSlave.medicine" -10>> Can treat wounds
 <<radiobutton "$tempSlave.medicine" -30>> First-aid kit user
-<<radiobutton "$tempSlave.medicine" -50>> Band-aid applyer
+<<radiobutton "$tempSlave.medicine" -50>> Band-aid applier
 <<radiobutton "$tempSlave.medicine" -70>> MEDIC!
 <<radiobutton "$tempSlave.medicine" -90>> Give me another beer
 <br>
diff --git a/src/cheats/mod_EditChildCheatNew.tw b/src/cheats/mod_EditChildCheatNew.tw
index 36e3c059ae0..9f0b4270ef3 100644
--- a/src/cheats/mod_EditChildCheatNew.tw
+++ b/src/cheats/mod_EditChildCheatNew.tw
@@ -1375,7 +1375,7 @@
 
 	<br><br>
 
-	''Voice : ''
+	''Voice: ''
 	<<switch $tempSlave.voice>>
 	<<case 0>>@@.yellow;Mute@@
 	<<case 1>>@@.yellow;Deep@@
@@ -1401,6 +1401,15 @@
 	<<radiobutton "$tempSlave.accent" 3>> Barely Understands Language
 	<br>
 
+	''Sense of Taste: ''
+	<<switch $tempSlave.tastes>>
+	<<case 0>>@@.yellow;Normal@@
+	<<case -1>>@@.yellow;None@@
+	<br>
+	<<radiobutton "$tempSlave.tastes" 0>> Normal
+	<<radiobutton "$tempSlave.tastes" -1>> None
+	<br>
+
 <</widget>>
 
 <<widget BodyTab>>
diff --git a/src/cheats/mod_EditSlaveCheat.tw b/src/cheats/mod_EditSlaveCheat.tw
index 3c8652f564a..f81f4b9228a 100644
--- a/src/cheats/mod_EditSlaveCheat.tw
+++ b/src/cheats/mod_EditSlaveCheat.tw
@@ -507,6 +507,13 @@ Unskilled.
 <<radiobutton "$tempSlave.voice" 2>> Normal
 <<radiobutton "$tempSlave.voice" 3>> High
 
+<br>
+''Sense of Taste (0,-1): $tempSlave.tastes |''
+<<textbox "$tempSlave.tastes" $tempSlave.tastes>>
+<br>
+<<radiobutton "$tempSlave.tastes" 0>> Normal
+<<radiobutton "$tempSlave.tastes" -1>> None
+
 <br><br>
 
 ''Weight (-100 to 100):''
diff --git a/src/cheats/mod_editSlaveCheatNew.tw b/src/cheats/mod_editSlaveCheatNew.tw
index 24c39f3723d..a0c835d59db 100644
--- a/src/cheats/mod_editSlaveCheatNew.tw
+++ b/src/cheats/mod_editSlaveCheatNew.tw
@@ -2040,6 +2040,15 @@
 	<<radiobutton "$tempSlave.voiceImplant" 2>> Much Higher
 	<br>
 
+	''Sense of Taste: ''
+	<<switch $tempSlave.tastes>>
+	<<case 0>>@@.yellow;Normal@@
+	<<case -1>>@@.yellow;None@@
+	<br>
+	<<radiobutton "$tempSlave.tastes" 0>> Normal
+	<<radiobutton "$tempSlave.tastes" -1>> None
+	<br>
+
 <</widget>>
 
 <<widget BodyTab>>
diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw
index 662adbdc68b..3ffdf01ec24 100644
--- a/src/events/intro/introSummary.tw
+++ b/src/events/intro/introSummary.tw
@@ -730,7 +730,7 @@ __''Player Character''__
 			<<set _PCCreationCareer = "a member of the idle wealthy">>
 	<</switch>>
 	<br>
-	Before you came to the free cities, you were ''_PCCreationCareer'' and it is rumoured that you acquired your arcology through ''$PC.rumor''.
+	Before you came to the free cities, you were ''_PCCreationCareer'' and it is rumored that you acquired your arcology through ''$PC.rumor''.
 
 	<br>__Past career:__
 	<<if $PC.career != "arcology owner">>
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 5dc8c25d955..783e051e00a 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -333,6 +333,12 @@ App.Entity.SlaveState = class SlaveState {
 		/**kemonomimi ear color
 		* "hairless" */
 		this.earTColor = "hairless";
+		/** sense of smell
+		0 - yes, -1 - no */
+		this.smells = 0;
+		/** sense of taste
+		0 - yes, -1 - no */
+		this.tastes = 0;
 		/**horn type if any
 		 * "none", "curved succubus horns", "backswept horns", "cow horns", "one long oni horn", "two long oni horns", "small horns" */
 		this.horn = "none";
diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js
index 28e29af6d74..c3529323998 100644
--- a/src/js/datatypeCleanupJS.js
+++ b/src/js/datatypeCleanupJS.js
@@ -631,6 +631,8 @@ window.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		slave.indentureRestrictions = Math.clamp(+slave.indentureRestriction, 0, 2) || 0;
 		slave.tired = Math.clamp(+slave.tired, 0, 1) || 0;
 		slave.hears = Math.clamp(+slave.hears, -2, 0) || 0;
+		slave.smells = Math.clamp(+slave.smells, -1, 0) || 0;
+		slave.tastes = Math.clamp(+slave.tastes, -1, 0) || 0;
 		if (typeof slave.earwear !== "string") {
 			slave.earwear = "none";
 		}
@@ -1173,6 +1175,8 @@ window.childMiscellaneousDatatypeCleanup = function childMiscellaneousDatatypeCl
 	child.training = Math.clamp(+child.training, 0, 150) || 0;
 	child.tired = Math.clamp(+child.tired, 0, 1) || 0;
 	child.hears = Math.clamp(+child.hears, -2, 0) || 0;
+	child.smells = Math.clamp(+child.smells, -1, 0) || 0;
+	child.tastes = Math.clamp(+child.tastes, -1, 0) || 0;
 	if (typeof child.earwear !== "string") {
 		child.earwear = "none";
 	}
diff --git a/src/js/storyJS.js b/src/js/storyJS.js
index 71cf2dc29e3..fcc99af35f0 100644
--- a/src/js/storyJS.js
+++ b/src/js/storyJS.js
@@ -291,6 +291,26 @@ window.canHear = /** @param {App.Entity.SlaveState} slave */ function (slave) {
 	}
 };
 
+window.canSmell = /** @param {App.Entity.SlaveState} slave */ function (slave) {
+	if (!slave) {
+		return null;
+	} else if (slave.smells > -1) {
+		return true;
+	} else {
+		return false;
+	}
+};
+
+window.canTaste = /** @param {App.Entity.SlaveState} slave */ function (slave) {
+	if (!slave) {
+		return null;
+	} else if (slave.tastes > -1) {
+		return true;
+	} else {
+		return false;
+	}
+};
+
 window.canWalk = /** @param {App.Entity.SlaveState} slave */ function (slave) {
 	if (!slave) {
 		return null;
diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw
index 0d98ea8cb6c..a76c4ac5094 100644
--- a/src/npc/startingGirls/startingGirls.tw
+++ b/src/npc/startingGirls/startingGirls.tw
@@ -819,8 +819,8 @@ Her nationality is $activeSlave.nationality.
 	<<else>>Normal.
 	<</if>>
 <<else>>
-<<if $activeSlave.hears == -1>>Hard of hearing.
-<<else>>Normal.
+	<<if $activeSlave.hears == -1>>Hard of hearing.
+	<<else>>Normal.
 	<</if>>
 <</if>>
 </span>
@@ -831,6 +831,26 @@ Her nationality is $activeSlave.nationality.
 <<link "Deaf">><<set $activeSlave.hears = -2>><<replace "#hearing">>Deaf.<</replace>><<StartingGirlsCost>><</link>>
 <</if>>
 
+<<if $seeExtreme == 1>>
+<br>''Smell:''
+<span id="smell">
+	<<if $activeSlave.smells == -1>>None.
+	<<else>>Normal.
+	<</if>>
+</span>
+<<link "Normal">><<set $activeSlave.smells = 0>><<replace "#smell">>Normal.<</replace>><<StartingGirlsCost>><</link>> |
+<<link "None">><<set $activeSlave.smells = -1>><<replace "#smell">>None.<</replace>><<StartingGirlsCost>><</link>>
+
+<br>''Taste:''
+<span id="taste">
+	<<elseif $activeSlave.tastes == -1>>None.
+	<<else>>Normal.
+	<</if>>
+</span>
+<<link "Normal">><<set $activeSlave.tastes = 0>><<replace "#taste">>Normal.<</replace>><<StartingGirlsCost>><</link>> |
+<<link "None">><<set $activeSlave.tastes = -1>><<replace "#taste">>None.<</replace>><<StartingGirlsCost>><</link>>
+<</if>>
+
 <br><br>''Breasts:''
 <span id="boobs">
 <<if $activeSlave.boobs <= 200>>Flat.
diff --git a/src/pregmod/fFeet.tw b/src/pregmod/fFeet.tw
index 1dce3855d4c..2c5d7735b53 100644
--- a/src/pregmod/fFeet.tw
+++ b/src/pregmod/fFeet.tw
@@ -526,9 +526,9 @@ You call $activeSlave.slaveName to your office, telling $him to use $his feet to
 				<</if>>
 			<<else>>
 				<<if cumAmount($activeSlave) > 20>>
-					$he strokes $his _dick penis, swollen _balls testicles bulging between $his thighs, asshole clenching as $he's massive cumshot splashes noisily onto the floor.
+					$he strokes $his _dick penis, swollen _balls testicles bulging between $his thighs, asshole clenching as $his massive cumshot splashes noisily onto the floor.
 				<<else>>
-					$he strokes $his _dick penis, asshole clenching as $he's cum spurts onto the floor.
+					$he strokes $his _dick penis, asshole clenching as $his cum spurts onto the floor.
 				<</if>>
 			<</if>>
 		<<elseif $activeSlave.vagina >= 0>>
@@ -559,14 +559,14 @@ You call $activeSlave.slaveName to your office, telling $him to use $his feet to
 	<<if $PC.balls > 1>>
 		<<if $activeSlave.dick > 0>>
 			<<if cumAmount($activeSlave) > 20>>
-				$His _balls balls visibly throb as _dick dick unloads a massive amount of cum, adding $his own semen to $his body, resulting in a slave utterly plastered in spunk. $His eyes are held shut with a thick layer of cum, and judging by how <<if ($activeSlave.chastityPenis == 1)>>$he's dick is still shooting cum even in a cage with no stimulation,<<else>>furiously $he is masturbating,<</if>> $he couldn't be happier.
+				$His _balls balls visibly throb as _dick dick unloads a massive amount of cum, adding $his own semen to $his body, resulting in a slave utterly plastered in spunk. $His eyes are held shut with a thick layer of cum, and judging by how <<if ($activeSlave.chastityPenis == 1)>>$his dick is still shooting cum even in a cage with no stimulation,<<else>>furiously $he is masturbating,<</if>> $he couldn't be happier.
 			<<else>>
-				$His _dick dick unloads onto $his belly and $boobs chest, and $his giggles and gasps as it rains down with audible splats. $He is splattered in semen, face coated in your cum, and judging by $his nostrils desperately taking in the heady smell and how <<if ($activeSlave.chastityPenis == 1)>>$he's dick is still throbbing in orgasm even in a cage with no stimulation,<<else>>$he can't stop masturbating,<</if>> $he couldn't be happier.
+				$His _dick dick unloads onto $his belly and $boobs chest, and $his giggles and gasps as it rains down with audible splats. $He is splattered in semen, face coated in your cum, and judging by <<if canSmell($activeSlave)>>$his nostrils desperately taking in the heady smell and <</if>>how <<if ($activeSlave.chastityPenis == 1)>>$his dick is still throbbing in orgasm even in a cage with no stimulation,<<else>>$he can't stop masturbating,<</if>> $he couldn't be happier.
 			<</if>>
 		<<elseif $activeSlave.vagina >= 0>>
-			$He leans back and moans in pleasure, $his <<if $activeSlave.vaginaLube == 1>>wet <<elseif $activeSlave.vaginaLube == 2>>dripping wet <</if>>pussy and asshole clenching. $He is splattered in semen, face coated in your cum, and judging by $his nostrils desperately taking in your scent and how $he can't stop masturbating, $he couldn't be happier.
+			$He leans back and moans in pleasure, $his <<if $activeSlave.vaginaLube == 1>>wet <<elseif $activeSlave.vaginaLube == 2>>dripping wet <</if>>pussy and asshole clenching. $He is splattered in semen, face coated in your cum, and judging by <<if canSmell($activeSlave)>>$his nostrils desperately taking in your scent and <</if>>how $he can't stop masturbating, $he couldn't be happier.
 		<<else>>
-			$He leans back and moans in pleasure, asshole pulsating. $He is splattered in semen, face coated in your cum, and judging by $his nostrils desperately taking in your scent and how $he can't stop masturbating, $he couldn't be happier.
+			$He leans back and moans in pleasure, asshole pulsating. $He is splattered in semen, face coated in your cum, and judging by <<if canSmell($activeSlave)>>$his nostrils desperately taking in your scent and <</if>>how $he can't stop masturbating, $he couldn't be happier.
 		<</if>>
 	<<else>>
 		$activeSlave.slaveName leans down to wipe semen off $his feet, quickly bringing it into $his mouth with a blissful look as $he tastes your cum and sighs in pleasure.
diff --git a/src/pregmod/forceFeeding.tw b/src/pregmod/forceFeeding.tw
index 97a9be36b5e..ce4ee84cf84 100644
--- a/src/pregmod/forceFeeding.tw
+++ b/src/pregmod/forceFeeding.tw
@@ -23,15 +23,15 @@ buckets overflowing with slave food.
 $He is going to eat it all and you're going to enjoy $him as $he does it.
 
 <<if $activeSlave.inflation > 1 && $activeSlave.preg > 1>>
-	$He looks nauseated by the <<if canSee($activeSlave)>>sight<<else>>smell<</if>> of the food.
+	$He looks nauseated by the <<if canSee($activeSlave)>>sight<<elseif canSmell( $activeSlave)>>smell<<else>>very existence<</if>> of the food.
 <<elseif $activeSlave.fetish == "submissive" && $activeSlave.devotion >= -20>>
 	$He blushes at the thought of being forced to eat for another's amusement.
 <<elseif $activeSlave.behavioralFlaw == "gluttonous" && $activeSlave.devotion >= -20>>
 	$He's awestruck that you approve of $his gluttony enough to present $him a feast.
 <<elseif $activeSlave.behavioralFlaw == "gluttonous">>
-	$He's hesitant about your intent, but $he gives in as $his belly begins to growl at the <<if canSee($activeSlave)>>sight<<else>>smell<</if>> of $his waiting meal.
+	$He's hesitant about your intent, but $he gives in as $his belly begins to growl at the <<if canSee($activeSlave)>>sight<<elseif canSmell( $activeSlave)>>smell<<else>>anticipation<</if>> of $his waiting meal.
 <<elseif $activeSlave.behavioralFlaw == "anorexic">>
-	$He grimaces at the <<if canSee($activeSlave)>>sight<<else>>smell<</if>> of the food that will soon be going into $him. $He knows you won't let it come back up later.
+	$He grimaces at the <<if canSee($activeSlave)>>sight<<elseif canSmell( $activeSlave)>>smell<<else>>thought<</if>> of the food that will soon be going into $him. $He knows you won't let it come back up later.
 <</if>>
 
 <<if canWalk($activeSlave)>>
diff --git a/src/pregmod/widgets/bodyswapWidgets.tw b/src/pregmod/widgets/bodyswapWidgets.tw
index 8131801c5b9..1f1814b790f 100644
--- a/src/pregmod/widgets/bodyswapWidgets.tw
+++ b/src/pregmod/widgets/bodyswapWidgets.tw
@@ -74,6 +74,8 @@
 <<set $args[0].earShape = $args[1].earShape>>
 <<set $args[0].earT = $args[1].earT>>
 <<set $args[0].earTColor = $args[1].earTColor>>
+<<set $args[0].smells = $args[1].smells>>
+<<set $args[0].tastes = $args[1].tastes>>
 <<set $args[0].horn = $args[1].horn>>
 <<set $args[0].hornColor = $args[1].hornColor>>
 <<set $args[0].PTail = $args[1].PTail>>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 4b11b47efc9..9a0423324cc 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -8483,7 +8483,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<if $activeSlave.belly >= 600000>>
 		You struggle to heft $his overfilled body up, eliciting whimpers of joy at the impending relief and the pressure removed from $his body, and carefully secure $him with a few straps so $he can serve as your living cocksleeve. $He's attached to the front of your torso<<if $activeSlave.belly >= 5000>>, $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>stomach<</if>> forcing you to experience what it is like to carry $activeSlave.pregType children,<</if>> with your cock up inside $him, and the gentle motion of your member as you waddle outside brings $him to climax within a few steps. You carefully stroll around the nicer levels of the arcology, admiring the views and <<if canSee($activeSlave)>>showing $activeSlave.slaveName the sights $he now requires assistance to see<<else>>explaining the sights as $activeSlave.slaveName soaks in the sounds and smells $he now requires assistance to experience<</if>> and leaving a large wake as people make room for your gravid mass. @@.hotpink;$He has become more devoted to you.@@ The sight of you waddling around with a living fucktoy on your cock @@.green;certainly cements your reputation as an arcology owner who has everything,@@ once they figure out that the belly attached to you is, in fact, owned by a barely visible slavegirl.
 	<<elseif $activeSlave.belly >= 300000>>
-		You heft $his heavy body $him up, eliciting whimpers of joy at the impending relief, and carefully secure $him with a few straps so $he can serve as your living cocksleeve. $He's attached to the front of your torso<<if $activeSlave.belly >= 5000>>, $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>stomach<</if>> massively jutting out in front of you,<</if>> with your cock up inside $him, and the gentle motion of your member as you waddle outside brings $him to climax within a few steps. You carefully stroll around the nicer levels of the arcology, admiring the views and <<if canSee($activeSlave)>>showing $activeSlave.slaveName the sights $he now requires assistance to see<<else>>explaining the sights as $activeSlave.slaveName soaks in the sounds and smells $he now requires assistance to experience<</if>>. @@.hotpink;$He has become more devoted to you.@@ The sight of you waddling around with a living fucktoy on your cock @@.green;certainly cements your reputation as an arcology owner who has everything.@@
+		You heft $his heavy body $him up, eliciting whimpers of joy at the impending relief, and carefully secure $him with a few straps so $he can serve as your living cocksleeve. $He's attached to the front of your torso<<if $activeSlave.belly >= 5000>>, $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>stomach<</if>> massively jutting out in front of you,<</if>> with your cock up inside $him, and the gentle motion of your member as you waddle outside brings $him to climax within a few steps. You carefully stroll around the nicer levels of the arcology, admiring the views and <<if canSee($activeSlave)>>showing $activeSlave.slaveName the sights $he now requires assistance to see<<elseif canHear($activeSlave)>>explaining the sights as $activeSlave.slaveName soaks in the sounds <<if canSmell($activeSlave)>>and smells <</if>>$he now requires assistance to experience<<else>>explaining everything around $him as $he basks in the feeling of the fresh air on $his $activeSlave.skin skin<</if>>. @@.hotpink;$He has become more devoted to you.@@ The sight of you waddling around with a living fucktoy on your cock @@.green;certainly cements your reputation as an arcology owner who has everything.@@
 	<<else>>
 		You scoop $him up, eliciting whimpers of joy at the impending relief, and carefully secure $him with a few straps so $he can serve as your living cocksleeve. $He's attached to the front of your torso<<if $activeSlave.belly >= 5000>>, $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>stomach<</if>> jutting out in front of you,<</if>> with your cock up inside $him, and the gentle motion of your member as you walk outside brings $him to climax within a few steps. You take your time and stroll around the nicer levels of the arcology, admiring the views and <<if canSee($activeSlave)>>showing $activeSlave.slaveName the sights $he now requires assistance to see<<else>>explaining the sights as $activeSlave.slaveName soaks in the sounds and smells $he now requires assistance to experience<</if>>. @@.hotpink;$He has become more devoted to you.@@ The sight of you walking around with a living fucktoy on your cock @@.green;certainly cements your reputation as an arcology owner who has everything.@@
 	<</if>>
diff --git a/src/uncategorized/saDiet.tw b/src/uncategorized/saDiet.tw
index 90025b5c438..4adb389443c 100644
--- a/src/uncategorized/saDiet.tw
+++ b/src/uncategorized/saDiet.tw
@@ -770,6 +770,12 @@
 		<<if $slaves[$i].chem > 2>>
 			<<set $slaves[$i].chem -= 2>>
 		<</if>>
+	<<elseif !canSmell($slaves[$i]) && !canTaste($slaves[$i])>>
+		$His diet tastes and smells awful, but $he is incapable of recognizing it, allowing $him to feel nothing but its @@.green;significant restorative effect.@@
+		<<set $slaves[$i].trust++, $slaves[$i].health += 2>>
+		<<if $slaves[$i].chem > 2>>
+			<<set $slaves[$i].chem -= 2>>
+		<</if>>
 	<<elseif $slaves[$i].sexualFlaw == "self hating">>
 		$His diet @@.hotpink;tastes and smells awful,@@ the perfect meal for such a wretched creature as $himself. $He knows you are @@.green;preserving $his health@@ but doesn't understand why you'd waste time and credits on $him.
 		<<set $slaves[$i].devotion += 2, $slaves[$i].health += 2>>
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index e30373fc953..5cf2258b190 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -5041,11 +5041,11 @@
 			<<elseif $slaves[$i].devotion > 20>>
 				Since $he's blind, deaf and on the cusp of devotion, $he becomes @@.hotpink;more reliant@@ on you, but also begins to be @@.mediumaquamarine;less fearful@@ of the world around $him.
 				<<set $slaves[$i].devotion += 5, $slaves[$i].trust += 3>>
-			<<elseif ["please you", "be your Concubine", "serve in the master suite"].includes($slaves[$i].assignment)>>
+			<<elseif ["be your Concubine", "please you", "serve in the master suite"].includes($slaves[$i].assignment)>>
 				$He may be blind and deaf, but $he knows nobody would dare harm $him under your watch, @@.mediumaquamarine;building $his trust@@ in you.
 				<<set $slaves[$i].trust += 2>>
 			<<elseif $slaves[$i].devotion >= -20>>
-				$His blindness and deafness forces $him to @@.hotpink;entirely rely@@ on your mercy. However, it only @@.gold;amplifies $his fear@@ as $he has only the smell of arousal to warn of an impending threat.
+				$His blindness and deafness forces $him to @@.hotpink;entirely rely@@ on your mercy. However, it only @@.gold;amplifies $his fear@@ as $he has only <<if canSmell($slaves[$i])>>the smell of arousal<<else>>a stumbling sense of touch<</if>> to warn of an impending threat.
 				<<set $slaves[$i].devotion += 10, $slaves[$i].trust -= 30>>
 			<<else>>
 				Being blind and deaf forces $him to @@.hotpink;completely rely@@ on your mercy. It does nothing to stem @@.gold;the horror@@ $he faces being unable to sense the world around $him.
diff --git a/src/uncategorized/slaveStats.tw b/src/uncategorized/slaveStats.tw
index 8f30341551d..85e00ee250b 100644
--- a/src/uncategorized/slaveStats.tw
+++ b/src/uncategorized/slaveStats.tw
@@ -114,6 +114,8 @@ slaveName: $activeSlave.slaveName	   /* TODO: figure out why this is being inden
 <br>hears: $activeSlave.hears
 <br>earwear: $activeSlave.earwear
 <br>earImplant: $activeSlave.earImplant
+<br>smells: $activeSlave.smells
+<br>tastes: $activeSlave.tastes
 <br>origHColor: $activeSlave.origHColor
 <br>hColor: $activeSlave.hColor
 <br>pubicHColor: $activeSlave.pubicHColor
-- 
GitLab