diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt index faa53739fae7deb3f023dcd68824d5707ef817ba..678813314159f874d2ec5ecb96611c8fcaff5bfd 100644 --- a/devNotes/VersionChangeLog-Premod+LoliMod.txt +++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt @@ -2,7 +2,15 @@ 0.10.7.1-0.7.x -9/24/2018 +9/25/2018 + + 44 + -fixes + -added more options to the RA + + 43 + -fixes + -added nipple fuck interaction 42 -fixes diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt index f275a36d00cf2ee857c30db1596f8e695d03a5cc..0419f88831351a94c63eb393160c6a7de81fcffb 100644 --- a/devNotes/twine JS.txt +++ b/devNotes/twine JS.txt @@ -2686,6 +2686,9 @@ window.emptyDefaultRule = function emptyDefaultRule() { hLength: "no default setting", haircuts: "no default setting", hStyle: "no default setting", + eyebrowHColor: "no default setting", + eyebrowHStyle: "no default setting", + eyebrowFullness: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", @@ -14219,6 +14222,36 @@ window.DefaultRules = (function() { } } + if (rule.eyebrowHColor !== undefined && (rule.eyebrowHColor !== "no default setting")) { + if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") { + if ((slave.eyebrowHColor !== rule.eyebrowHColor)) { + slave.eyebrowHColor = rule.eyebrowHColor; + V.cash -= V.modCost; + r += `<br>${slave.slaveName}'s eyebrow hair, if present, has been dyed ${rule.eyebrowHColor}.`; + } + } + } + + if (rule.eyebrowHStyle !== undefined && (rule.eyebrowHStyle !== "no default setting")) { + if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") { + if ((slave.eyebrowHStyle !== rule.eyebrowHStyle)) { + slave.eyebrowHStyle = rule.eyebrowHStyle; + V.cash -= V.modCost; + r += `<br>${slave.slaveName}'s eyebrow hair has been restyled; they are now ${rule.eyebrowHStyle}.`; + } + } + } + + if (rule.eyebrowFullness !== undefined && (rule.eyebrowFullness !== "no default setting")) { + if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") { + if ((slave.eyebrowFullness !== rule.eyebrowFullness)) { + slave.eyebrowFullness = rule.eyebrowFullness; + V.cash -= V.modCost; + r += `<br>${slave.slaveName}'s eyebrow hair thickness has been adjusted; they are now ${rule.eyebrowFullness}.`; + } + } + } + if (rule.pubicHColor !== undefined && (rule.pubicHColor !== "no default setting")) { if (slave.pubicHStyle != "bald" && slave.pubicHStyle != "hairless") { if ((slave.pubicHColor !== rule.pubicHColor)) { @@ -15415,7 +15448,7 @@ window.rulesAssistantOptions = (function() { "intelligenceImplant": "Education level. 0: uneducated, 1: educated, (0, 1): incomplete education.", "intelligence": "From moronic to brilliant: [-3, 3]", "accent": "No accent: 0, Nice accent: 1, Bad accent: 2, Can't speak language: 3 and above", - "waist": "Masculine waist: (95, ∞), Ugly waist: (40, 95], Unattractive waist: (10, 40], Average waist: [-10, 10], Feminine waist: [-40, -10), Wasp waist: [-95, 40), Absurdly narrow: (-∞, -95)", + "waist": "Masculine waist: (95, ∞), Ugly waist: (40, 95], Unattractive waist: (10, 40], Average waist: [-10, 10], Feminine waist: [-40, -10), Wasp waist: [-95, -40), Absurdly narrow: (-∞, -95)", }[attribute] || " "); } } @@ -15679,6 +15712,9 @@ window.rulesAssistantOptions = (function() { this.appendChild(new HaircutsList()); this.appendChild(new HairColourList()); this.appendChild(new HairStyleList()); + this.appendChild(new EyebrowColorList()); + this.appendChild(new EyebrowStyleList()); + this.appendChild(new EyebrowFullnessList()); this.appendChild(new PubicHairColourList()); this.appendChild(new PubicHairStyleList()); this.appendChild(new ArmpitHairColourList()); @@ -16775,6 +16811,8 @@ window.rulesAssistantOptions = (function() { "pale-grey", "white", "pink", + "yellow", + "orange", "amber", "red" ].forEach(i => items.push(new OptionsItem(i, item => { @@ -16792,10 +16830,12 @@ window.rulesAssistantOptions = (function() { "no default setting", "catlike", "serpent-like", + "goat-like", "devilish", "demonic", "hypnotic", "heart-shaped", + "star-shaped", "wide-eyed", "almond-shaped", "bright", @@ -16849,7 +16889,11 @@ window.rulesAssistantOptions = (function() { ["color-coordinate with hair", 2], ["sharp and claw-like", 3], ["bright and glittery", 4], - ["hooker nails", 5] + ["hooker nails", 5], + ["neon colored", 6], + ["neon color-coordinate with hair", 7], + ["metallic painted", 8], + ["metallic color-coordinate with hair", 9] ].forEach(pair => this.appendChild(new ListItem(...pair))); this.setValue(current_rule.set.nails); this.onchange = (value) => current_rule.set.nails = value; @@ -16897,6 +16941,7 @@ window.rulesAssistantOptions = (function() { ["copper"], ["ginger"], ["red"], + ["deep red"], ["green"], ["blue"], ["pink"], @@ -16935,6 +16980,7 @@ window.rulesAssistantOptions = (function() { ["ponytail"], ["bun"], ["messy bun"], + ["messy"], ["curled"], ["permed"], ["luxurious"], @@ -16942,6 +16988,7 @@ window.rulesAssistantOptions = (function() { ["cornrows"], ["braided"], ["tails"], + ["eary"], ["afro"], ["strip"] ]; @@ -16951,6 +16998,83 @@ window.rulesAssistantOptions = (function() { } } + class EyebrowColorList extends List { + constructor() { + const pairs = [ + ["no default setting"], + ["blonde"], + ["golden"], + ["platinum blonde"], + ["strawerry-blonde"], + ["copper"], + ["ginger"], + ["red"], + ["deep red"], + ["green"], + ["blue"], + ["pink"], + ["dark brown"], + ["brown"], + ["auburn"], + ["burgundy"], + ["chocolate"], + ["chestnut"], + ["hazel"], + ["black"], + ["grey"], + ["silver"], + ["white"], + ["blue-violet"], + ["blazing red"], + ["neon green"], + ["neon blue"], + ["neon pink"] + ]; + super("Eyebrow hair color, when present", pairs); + this.setValue(current_rule.set.eyebrowHColor); + this.onchange = (value) => current_rule.set.eyebrowHColor = value; + } + } + + class EyebrowStyleList extends List { + constructor() { + const pairs = [ + ["no default setting"], + ["shaved"], + ["straight"], + ["rounded"], + ["natural"], + ["slanted inwards"], + ["slanted outwards"], + ["high-arched"], + ["elongated"], + ["shortened"], + ["curved"] + ]; + super("Eyebrow style", pairs); + this.setValue(current_rule.set.eyebrowHStyle); + this.onchange = (value) => current_rule.set.eyebrowHStyle = value; + } + } + + class EyebrowFullnessList extends List { + constructor() { + const pairs = [ + ["no default setting"], + ["pencil-thin"], + ["thin"], + ["threaded"], + ["natural"], + ["tapered"], + ["thick"], + ["bushy"] + ]; + super("Eyebrow fullness", pairs); + this.setValue(current_rule.set.eyebrowFullness); + this.onchange = (value) => current_rule.set.eyebrowFullness = value; + } + } + class PubicHairColourList extends List { constructor() { const pairs = [ @@ -16962,6 +17086,7 @@ window.rulesAssistantOptions = (function() { ["copper"], ["ginger"], ["red"], + ["deep red"], ["green"], ["blue"], ["pink"], @@ -17016,6 +17141,7 @@ window.rulesAssistantOptions = (function() { ["copper"], ["ginger"], ["red"], + ["deep red"], ["green"], ["blue"], ["pink"], @@ -17031,6 +17157,10 @@ window.rulesAssistantOptions = (function() { ["silver"], ["white"], ["blue-violet"], + ["blazing red"], + ["neon green"], + ["neon blue"], + ["neon pink"] ]; super("Underarm hair color, when present", pairs); this.setValue(current_rule.set.underArmHColor); diff --git a/src/js/DefaultRules.tw b/src/js/DefaultRules.tw index 9c8e822f156cbb3fb5536cb1f46741ef206e635d..95206588caee960eb3e14e9a05b70c579c392574 100644 --- a/src/js/DefaultRules.tw +++ b/src/js/DefaultRules.tw @@ -1932,6 +1932,36 @@ window.DefaultRules = (function() { } } + if (rule.eyebrowHColor !== undefined && (rule.eyebrowHColor !== "no default setting")) { + if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") { + if ((slave.eyebrowHColor !== rule.eyebrowHColor)) { + slave.eyebrowHColor = rule.eyebrowHColor; + V.cash -= V.modCost; + r += `<br>${slave.slaveName}'s eyebrow hair, if present, has been dyed ${rule.eyebrowHColor}.`; + } + } + } + + if (rule.eyebrowHStyle !== undefined && (rule.eyebrowHStyle !== "no default setting")) { + if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") { + if ((slave.eyebrowHStyle !== rule.eyebrowHStyle)) { + slave.eyebrowHStyle = rule.eyebrowHStyle; + V.cash -= V.modCost; + r += `<br>${slave.slaveName}'s eyebrow hair has been restyled; they are now ${rule.eyebrowHStyle}.`; + } + } + } + + if (rule.eyebrowFullness !== undefined && (rule.eyebrowFullness !== "no default setting")) { + if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") { + if ((slave.eyebrowFullness !== rule.eyebrowFullness)) { + slave.eyebrowFullness = rule.eyebrowFullness; + V.cash -= V.modCost; + r += `<br>${slave.slaveName}'s eyebrow hair thickness has been adjusted; they are now ${rule.eyebrowFullness}.`; + } + } + } + if (rule.pubicHColor !== undefined && (rule.pubicHColor !== "no default setting")) { if (slave.pubicHStyle != "bald" && slave.pubicHStyle != "hairless") { if ((slave.pubicHColor !== rule.pubicHColor)) { diff --git a/src/js/rulesAssistant.tw b/src/js/rulesAssistant.tw index 39362e97c8abd9bf57ff06b7f38d400089f6de38..8d8ef4c412f5f8a116183d9a5f83cfa9dcbfba4e 100644 --- a/src/js/rulesAssistant.tw +++ b/src/js/rulesAssistant.tw @@ -211,6 +211,9 @@ window.emptyDefaultRule = function emptyDefaultRule() { hLength: "no default setting", haircuts: "no default setting", hStyle: "no default setting", + eyebrowHColor: "no default setting", + eyebrowHStyle: "no default setting", + eyebrowFullness: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", diff --git a/src/js/rulesAssistantOptions.tw b/src/js/rulesAssistantOptions.tw index e628b7637722a9ca14e438ef004f9c5d062ad12d..2a669446e16c4e270b742222307d8147b155da90 100644 --- a/src/js/rulesAssistantOptions.tw +++ b/src/js/rulesAssistantOptions.tw @@ -728,7 +728,7 @@ window.rulesAssistantOptions = (function() { "intelligenceImplant": "Education level. 0: uneducated, 1: educated, (0, 1): incomplete education.", "intelligence": "From moronic to brilliant: [-3, 3]", "accent": "No accent: 0, Nice accent: 1, Bad accent: 2, Can't speak language: 3 and above", - "waist": "Masculine waist: (95, ∞), Ugly waist: (40, 95], Unattractive waist: (10, 40], Average waist: [-10, 10], Feminine waist: [-40, -10), Wasp waist: [-95, 40), Absurdly narrow: (-∞, -95)", + "waist": "Masculine waist: (95, ∞), Ugly waist: (40, 95], Unattractive waist: (10, 40], Average waist: [-10, 10], Feminine waist: [-40, -10), Wasp waist: [-95, -40), Absurdly narrow: (-∞, -95)", }[attribute] || " "); } } @@ -992,6 +992,9 @@ window.rulesAssistantOptions = (function() { this.appendChild(new HaircutsList()); this.appendChild(new HairColourList()); this.appendChild(new HairStyleList()); + this.appendChild(new EyebrowColorList()); + this.appendChild(new EyebrowStyleList()); + this.appendChild(new EyebrowFullnessList()); this.appendChild(new PubicHairColourList()); this.appendChild(new PubicHairStyleList()); this.appendChild(new ArmpitHairColourList()); @@ -2088,6 +2091,8 @@ window.rulesAssistantOptions = (function() { "pale-grey", "white", "pink", + "yellow", + "orange", "amber", "red" ].forEach(i => items.push(new OptionsItem(i, item => { @@ -2105,10 +2110,12 @@ window.rulesAssistantOptions = (function() { "no default setting", "catlike", "serpent-like", + "goat-like", "devilish", "demonic", "hypnotic", "heart-shaped", + "star-shaped", "wide-eyed", "almond-shaped", "bright", @@ -2162,7 +2169,11 @@ window.rulesAssistantOptions = (function() { ["color-coordinate with hair", 2], ["sharp and claw-like", 3], ["bright and glittery", 4], - ["hooker nails", 5] + ["hooker nails", 5], + ["neon colored", 6], + ["neon color-coordinate with hair", 7], + ["metallic painted", 8], + ["metallic color-coordinate with hair", 9] ].forEach(pair => this.appendChild(new ListItem(...pair))); this.setValue(current_rule.set.nails); this.onchange = (value) => current_rule.set.nails = value; @@ -2210,6 +2221,7 @@ window.rulesAssistantOptions = (function() { ["copper"], ["ginger"], ["red"], + ["deep red"], ["green"], ["blue"], ["pink"], @@ -2248,6 +2260,7 @@ window.rulesAssistantOptions = (function() { ["ponytail"], ["bun"], ["messy bun"], + ["messy"], ["curled"], ["permed"], ["luxurious"], @@ -2255,6 +2268,7 @@ window.rulesAssistantOptions = (function() { ["cornrows"], ["braided"], ["tails"], + ["eary"], ["afro"], ["strip"] ]; @@ -2264,6 +2278,83 @@ window.rulesAssistantOptions = (function() { } } + class EyebrowColorList extends List { + constructor() { + const pairs = [ + ["no default setting"], + ["blonde"], + ["golden"], + ["platinum blonde"], + ["strawerry-blonde"], + ["copper"], + ["ginger"], + ["red"], + ["deep red"], + ["green"], + ["blue"], + ["pink"], + ["dark brown"], + ["brown"], + ["auburn"], + ["burgundy"], + ["chocolate"], + ["chestnut"], + ["hazel"], + ["black"], + ["grey"], + ["silver"], + ["white"], + ["blue-violet"], + ["blazing red"], + ["neon green"], + ["neon blue"], + ["neon pink"] + ]; + super("Eyebrow hair color, when present", pairs); + this.setValue(current_rule.set.eyebrowHColor); + this.onchange = (value) => current_rule.set.eyebrowHColor = value; + } + } + + class EyebrowStyleList extends List { + constructor() { + const pairs = [ + ["no default setting"], + ["shaved"], + ["straight"], + ["rounded"], + ["natural"], + ["slanted inwards"], + ["slanted outwards"], + ["high-arched"], + ["elongated"], + ["shortened"], + ["curved"] + ]; + super("Eyebrow style", pairs); + this.setValue(current_rule.set.eyebrowHStyle); + this.onchange = (value) => current_rule.set.eyebrowHStyle = value; + } + } + + class EyebrowFullnessList extends List { + constructor() { + const pairs = [ + ["no default setting"], + ["pencil-thin"], + ["thin"], + ["threaded"], + ["natural"], + ["tapered"], + ["thick"], + ["bushy"] + ]; + super("Eyebrow fullness", pairs); + this.setValue(current_rule.set.eyebrowFullness); + this.onchange = (value) => current_rule.set.eyebrowFullness = value; + } + } + class PubicHairColourList extends List { constructor() { const pairs = [ @@ -2275,6 +2366,7 @@ window.rulesAssistantOptions = (function() { ["copper"], ["ginger"], ["red"], + ["deep red"], ["green"], ["blue"], ["pink"], @@ -2329,6 +2421,7 @@ window.rulesAssistantOptions = (function() { ["copper"], ["ginger"], ["red"], + ["deep red"], ["green"], ["blue"], ["pink"], @@ -2344,6 +2437,10 @@ window.rulesAssistantOptions = (function() { ["silver"], ["white"], ["blue-violet"], + ["blazing red"], + ["neon green"], + ["neon blue"], + ["neon pink"] ]; super("Underarm hair color, when present", pairs); this.setValue(current_rule.set.underArmHColor); diff --git a/src/pregmod/fNippleFuck.tw b/src/pregmod/fNippleFuck.tw index ee9e975c3cb97255228bd96c0210794848514109..9ba5fe445dec8e7b9013498a4662623520272382 100644 --- a/src/pregmod/fNippleFuck.tw +++ b/src/pregmod/fNippleFuck.tw @@ -24,7 +24,7 @@ Once $he seems comfortable, you turn your attention to $his chest. You start by It doesn’t take much stimulation before milk starts dribbling onto your tongue. <</if>> -<<if $activeSlave.devotion >= 20 || $activeSlave.trust >= 20>> +<<if $activeSlave.devotion > 20 || $activeSlave.trust > 20>> $He starts making soft noises of pleasure and luxuriates in your attentions. <<else>> $He fidgets at your ministrations, but doesn’t say anything. @@ -46,7 +46,7 @@ breast flesh grips you tightly. A few experimental pumps draws gasps from $him b <<else>> savors the sensations running through $his breast. <</if>> -<<elseif $activeSlave.devotion >= 20 || $activeSlave.trust >= 20>> +<<elseif $activeSlave.devotion > 20 || $activeSlave.trust > 20>> $He has a glassy eyed expression as $he <<if $activeSlave.amp != 1>> gropes $his breasts with one hand and furiously abuses $his clit with the other. @@ -61,7 +61,7 @@ As your orgasm begins to build, you roughly grasp $his shoulders and begin to pi <<if $activeSlave.fetish == "boobs" && $activeSlave.fetishKnown == 1>> As $he reaches $his climax, $his eyes roll back into $his head and $he quivers in delight at the intense breastgasm $he just sustained. -<<elseif $activeSlave.devotion >= 20 || $activeSlave.trust >= 20>> +<<elseif $activeSlave.devotion > 20 || $activeSlave.trust > 20>> $His moaning grows louder and higher in pitch, and $his self-molesting becomes furious and desperate, eager for release. <<else>> As $he reaches $his climax, $his body seems to tense and $he bites $his lip. diff --git a/src/uncategorized/pePitFight.tw b/src/uncategorized/pePitFight.tw index 024c647d9b1b5622a415d51ec833130e10683f1f..f329299d421939f99fc02c9de53bb686bfa0e3ee 100644 --- a/src/uncategorized/pePitFight.tw +++ b/src/uncategorized/pePitFight.tw @@ -143,42 +143,45 @@ Across the ring, $his opponent's owner nods civilly to you and examines $activeS Finally, $his opponent enters as well. -<<set _randomOpponent = random(1,100)>> -<<if _randomOpponent > 80>> +<<set _randomOpponent = random(1,120)>> +<<if _randomOpponent > 100>> + She is a hulking, musclebound girl with a wasp waist and immense rear. She seems nothing short of excited. + <<set _opponent = 6>> +<<elseif _randomOpponent > 80>> She is a huge, muscular Amazon filled with confidence. - <<set $opponent = 5>> + <<set _opponent = 5>> <<elseif _randomOpponent > 60>> She is a short but muscular shemale, trying to look confident. - <<set $opponent = 4>> + <<set _opponent = 4>> <<elseif _randomOpponent > 40>> She is a tall, thin woman covered in ropy muscle, trying to hide her terror. - <<set $opponent = 3>> + <<set _opponent = 3>> <<elseif _randomOpponent > 20>> She is a decent-looking slave, physically fit but obviously scared. - <<set $opponent = 2>> + <<set _opponent = 2>> <<else>> She is an average looking slave, so frightened there's urine running down her leg. She must have annoyed her master to earn this. - <<set $opponent = 1>> + <<set _opponent = 1>> <</if>> The umpire announces gravely that the fight is to the death and rings a bell. <br><br> -<<if $deadliness > ($opponent + 1)>> +<<if $deadliness > (_opponent + 1)>> $activeSlave.slaveName senses that $he is greatly superior, and decides to make a quick end before $his opponent can try something foolish. $He feints high and stabs low; $his enemy just manages to parry the low stab, but is so much weaker that $activeSlave.slaveName simply overpowers her, so that she falls onto her back with the force of the clash. $activeSlave.slaveName takes one step forward and runs $his sword through the prostrate slave's heart. This victory has @@.green;won you some renown@@ and @@.yellowgreen;a sum of money@@ from each of the spectators. <<set $rep += 500>> <<set $cash += 5000>> <<set $activeSlave.pitKills += 1>> <<set $pitKillsTotal += 1>> -<<elseif $deadliness > ($opponent)>> +<<elseif $deadliness > (_opponent)>> The combat is long and exhausting. $activeSlave.slaveName and $his opponent are closely matched in terms of skill, so neither takes foolish risks and a protracted, bloody fight results as both slaves take horrible but non-lifethreatening cuts. Finally, $activeSlave.slaveName's superior physical condition wins out and $his opponent falls from exhaustion and blood loss. $activeSlave.slaveName stumbles over to open her throat. This victory has @@.green;won you some renown@@ and @@.yellowgreen;a sum of money@@ from each of the spectators, though $activeSlave.slaveName is @@.red;badly hurt.@@ <<set $rep += 500>> <<set $cash += 5000>> <<set $activeSlave.health = -50>> <<set $activeSlave.pitKills += 1>> <<set $pitKillsTotal += 1>> -<<elseif $deadliness > ($opponent-1)>> +<<elseif $deadliness > (_opponent-1)>> The combat is long and exhausting. $activeSlave.slaveName and $his opponent are closely matched in terms of skill, so neither takes foolish risks and a protracted, bloody fight results as both slaves take horrible but non-lifethreatening cuts. Finally, $activeSlave.slaveName's inferior physical condition fails $him and $he falls from exhaustion and blood loss. As $he slumps $he catches your eye with a look of apology. $His opponent stumbles over to open $his throat. $activeSlave.slaveName @@.red;has been killed.@@ <<set $activeSlave.health -= 1000>> <<else>> diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw index 95e81af841eb9fdcc71d6de168139662fc67c500..a1f4e002566d92a0f5e2e01d0f34bfa66f08bdd6 100644 --- a/src/uncategorized/slaveInteract.tw +++ b/src/uncategorized/slaveInteract.tw @@ -89,6 +89,9 @@ | <<link "Pat $his head">><<replace "#miniscene">><<include "FPat">><br> <</replace>><</link>> <</if>> | <<link "Grope $his boobs">><<replace "#miniscene">><<include "FondleBoobs">><br> <</replace>><</link>> + <<if $activeSlave.nipples == "fuckable" && $PC.dick > 0>> + | <<link "Fuck $his nipples">><<replace "#miniscene">><<include "FNippleFuck">><br> <</replace>><</link>> + <</if>> <<if $activeSlave.lactation > 0 && $activeSlave.boobs >= 2000 && $activeSlave.belly < 60000>> | <<link "Drink $his milk">><<replace "#miniscene">><<include "FSuckle">><br> <</replace>><</link>> <</if>>