diff --git a/DoL Changelog.txt b/DoL Changelog.txt index 7b39411d32d6862f97906df6b63ffe2b77f18b90..d2c3afc53e5d34f4997b86bb240968299b181381 100644 Binary files a/DoL Changelog.txt and b/DoL Changelog.txt differ diff --git a/DolSettingsExport.json b/DolSettingsExport.json index 852ea194389facaf04d307b222e7adfdb573dd13..8c72648fe7848a42f23302ab229d49080fd5c975 100644 --- a/DolSettingsExport.json +++ b/DolSettingsExport.json @@ -50,7 +50,7 @@ DolSettingsExport = { "slimedisable":false, "voredisable":false, "tentacledisable":false, - "plantdisable":true, + "plantdisable":false, "analdisable":false, "analdoubledisable":false, "vaginaldoubledisable":false, diff --git a/README.md b/README.md index 6c4842d21f54bd90152d5f52cd37744037706772..4458ae7d566db6d5a555abc0fda689806cf7128f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Degrees of Lewdity -## How to build +## How to build ### Optional Prerequisites diff --git a/devTools/androidsdk/image/cordova/config.xml b/devTools/androidsdk/image/cordova/config.xml index fd624b594749281875a9d31eeb04e9871c8cc16f..8a5cc8a621af28fd447381eabf99de2ba3fbded8 100644 --- a/devTools/androidsdk/image/cordova/config.xml +++ b/devTools/androidsdk/image/cordova/config.xml @@ -1,7 +1,7 @@ <?xml version='1.0' encoding='utf-8'?> <widget id="dol" - version="0.3.5.4" + version="0.3.6.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" android-packageName="com.vrelnir.DegreesOfLewdity" diff --git a/game/00-framework-tools/00-namespace/namespace.js b/game/00-framework-tools/00-namespace/namespace.js index d0194b309988de6c68c3fc340f9be5777a73010f..bc04d45b5da30a2de5c919838b0e7a1e5451217a 100644 --- a/game/00-framework-tools/00-namespace/namespace.js +++ b/game/00-framework-tools/00-namespace/namespace.js @@ -24,6 +24,10 @@ window.DOL = { */ Versions: {}, Perflog: {}, + /** + * General purpose call stack containing the widget names as they are called. + */ + Stack: [], /** Patch to make javascript execution more consistent (see comment below) */ State: State, diff --git a/game/01-config/start.twee b/game/01-config/start.twee index 0a7f62399b7951f089f5056b1b4a54288d1b9893..a72999fa74be0d448d9ed432e44b8943623cbd8d 100644 --- a/game/01-config/start.twee +++ b/game/01-config/start.twee @@ -101,7 +101,7 @@ The new school year starts tomorrow at <<ampm 9 00>>. The bus service is the eas <<link [[Winter Start|Orphanage Intro]]>><<set $days to 92>><<set $yeardays to 92>><<set $monthday to 1>><<set $month to "december">><<set $season to "winter">><<set $weather to "snow">><</link>> (Begins the game at the start of winter. For testing.) <br> - <<link [[Christmas Start|Orphanage Intro]]>><<set $days to 115>><<set $yeardays to 115>><<set $monthday to 23>><<set $month to "december">><<set $season to "winter">><<set $weather to "snow">><<set $money += 50000>><</link>> (Begins the game two days before Christmas. For testing.) - <br> -<</if>> + <<link [[Christmas Start|Orphanage Intro]]>><<npc Kylar>><<person1>><<endevent>><<set $NPCName[$NPCNameList.indexOf("Kylar")].state to "active">><<set $days to 115>><<set $yeardays to 115>><<set $monthday to 23>><<set $month to "december">><<set $season to "winter">><<set $weather to "snow">><<set $money += 50000>><</link>> (Begins the game two days before Christmas. For testing.) + <br> +<</if>> \ No newline at end of file diff --git a/game/01-config/sugarcubeConfig.js b/game/01-config/sugarcubeConfig.js index fb85c396f0647a518dbedd0feb26c5dbfcf18a94..1ff2c0f9fa919ddaeada017aef9412d93a50d493 100644 --- a/game/01-config/sugarcubeConfig.js +++ b/game/01-config/sugarcubeConfig.js @@ -22,7 +22,7 @@ window.StartConfig = { "debug": false, "enableImages": true, "enableLinkNumberify": true, - "version": "0.3.5.4", + "version": "0.3.6.1", } window.StartConfig.version += " herm"; @@ -94,6 +94,7 @@ function widgetHandler(widgetName, contents) { let argsCache; trace('declaring fn', widgetName); return function () { + DOL.Stack.push(widgetName); const context = devOptions.invocationId ? `${State.passage}:${widgetName}:${uniqueInvocation++}` : `${State.passage}:${widgetName}`; @@ -160,6 +161,7 @@ function widgetHandler(widgetName, contents) { } finally { // Custom code + DOL.Stack.pop(); vStack.pop(); vContext.pop(); State.variables[VIRTUAL_CURRENT] = priorFrame diff --git a/game/02-CSS/base.css b/game/02-CSS/base.css index 3032ca644c1c971fb9a944bea2a78020f738392e..8f7b2a0546585139d368a39233c0c96b44c2976e 100644 --- a/game/02-CSS/base.css +++ b/game/02-CSS/base.css @@ -36,7 +36,7 @@ mouse.tooltip:hover span { bottom: -1px; border: 1px solid #aaa; background-color: #222; - z-index: 200; + z-index: 700; } #next a { diff --git a/game/03-JavaScript/EventDebug.js b/game/03-JavaScript/EventDebug.js new file mode 100644 index 0000000000000000000000000000000000000000..5f8c0565dca7c34c826746a0991c1034c3d459ba --- /dev/null +++ b/game/03-JavaScript/EventDebug.js @@ -0,0 +1,117 @@ +/* Jimmy: Blueprint for event structure, packaged for convenience. + * $event = { + * buffer = [] : EventNPC, refer to below + * schema = 1 : Integer, defines the current version on the save, useful for update tracking. + * } + * + * EventNPC = { + * slot: Where the NPC is positioned in NPCList. + * EG: 0 $NPCList[0] + * time: The time the NPC was generated. + * EG: 805 13:48 / 1:48pm + * area: Where it was generated. + * EG: ['::Alleyways', 'eventsstreet', 'eventday', 'street8'] + * Passage Widget 1 Widget 2 Widget 3 + * } + */ + +/** + * Handles event data for NPC objects for debugging. + * @module EventData + */ +class EventData { + constructor() { + this.disable = false; + } + + Push(passage, index, time) { + if (this.disable) return; + V.event = ensure(V.event, { + buffer: [], + schema: 1 + }); + V.event.buffer.push({ + slot: index, // TODO: Remove in favour of direct insertion. (Nvm) + time: time, + area: [passage, ...DOL.Stack.slice(0, -1)] + }); + } + + Pop(index) { + if (this.disable) return; + if (V.event) { + V.event.buffer = V.event.buffer.filter(e => e.slot !== index); // TODO: Splice backwards instead. + if (V.event.buffer.length === 0) { + this.Clear(); + } + } + } + + Get(index) { + if (V.event) { + return V.event.buffer.find(e => e.slot === index); + } + return undefined; + } + + GetEvery(index) { + if (V.event) { + return V.event.buffer.filter(e => e.slot === index); + } + return []; + } + + Clear() { + if (this.disable) return; + delete V.event; + } + + Update() { + if (V.event == undefined) { + return; + } + // Check if $event contains schema + switch (V.event.schema) { + case 1: + // No need for updates. + return; + default: + // Update to newer schema (1 atm). + // .event ['Farm Work', 'Farm Work', 'Farm Work', 'Farm Work'] + // .eventtime [497, 497, 497, 497] + // .eventslot [0, 1, 2, 3] + const event = [...V.event]; + V.event = { + buffer: [], + schema: 1 + }; + for (let i = 0; i < event.length; i++) { + this.Push(event[i], V.eventslot[i], V.eventtime[i]) + } + delete V.eventtime; + delete V.eventslot; + return; + } + } + + IsSlotTaken(index) { + if (V.event == undefined) return false; + return V.event.buffer.some(e => e.slot === index); + } + + get Disable() { + return this.disable; + } + + set Disable(value) { + if (typeof value === 'boolean') { + this.disable = value; + } else { + console.debug('EventData.disable set with unexpected data-type, requires boolean.'); + } + } +}; + +// Jimmy: Potentially flawed design style, static class basically. +// But ends up being just an extended function in reality. (Not actually tho) +window.EventSystem = new EventData(); diff --git a/game/03-JavaScript/UI.js b/game/03-JavaScript/UI.js index cc53a98df23b94c76ea70b42c4a0f0c4a697c921..63f76d8d790432b5f6288f5e858554b19254481a 100644 --- a/game/03-JavaScript/UI.js +++ b/game/03-JavaScript/UI.js @@ -401,11 +401,11 @@ window.settingsBodywriting = function () { }); } -window.settingsNamedNpcBreastSize = function () { +window.settingsNamedNpcBreastSize = function (id, persist) { const breastSizes = ["nipple","budding","tiny","small","pert","modest","full","large","ample","massive","huge","gigantic","enormous"]; let updateText = () => { - const npc = V.NPCName[T.npcId]; + const npc = persist ? V.per_npc[T.pNPCId] : V.NPCName[T.npcId]; const val = npc.breastsize; const text = breastSizes[val]; @@ -418,12 +418,12 @@ window.settingsNamedNpcBreastSize = function () { npc.breastsdesc = text + "s"; } - jQuery('#numberslider-value-npcname-npcidbreastsize').text(npc.breastsdesc); + jQuery('#numberslider-value-' + id).text(npc.breastsdesc); }; jQuery(document).ready(() => { updateText(); - jQuery('#numberslider-input-npcname-npcidbreastsize').on('input change', function (e) { updateText(); }); + jQuery('#numberslider-input-' + id).on('input change', function (e) { updateText(); }); }); } @@ -438,6 +438,18 @@ window.settingsNamedNpcGenderUpdate = function () { }); } +window.settingsPersistentNpcGenderUpdate = function () { + let updateButtonsActive = () => { + jQuery('[id*=radiobutton-' + Util.slugify('$per_npc[_pNPCId].penissize') + ']').prop("disabled", V.per_npc[T.pNPCId].gender == "f"); + jQuery('[id*=radiobutton-' + Util.slugify('$per_npc[_pNPCId].pronoun') + ']').prop("disabled", V.per_npc[T.pNPCId].pronoun == "i"); + }; + + jQuery(document).ready(() => { + updateButtonsActive(); + jQuery('[id*=radiobutton-' + Util.slugify('$per_npc[_pNPCId].gender') + ']').on('change', function (e) { updateButtonsActive(); }); + }); +} + window.settingsPCGenderUpdate = function () { let updateButtonsActive = () => { jQuery('[id*=radiobutton-penissize]').prop("disabled", V.player.gender == "f"); diff --git a/game/03-JavaScript/base-clothing.js b/game/03-JavaScript/base-clothing.js index a18aceb8e707f01728690b90d8b018927778411b..f12769e0bd27f783f1c80a7c57dbb4b69c1697c2 100644 --- a/game/03-JavaScript/base-clothing.js +++ b/game/03-JavaScript/base-clothing.js @@ -57,9 +57,9 @@ function debugColourContainerClasses(color) { window.debugColourContainerClasses = debugColourContainerClasses; // export function window.getClothingCost = function (item, slot) { - let cost = setup.clothes[slot][item.index].cost * V.clothesPrice; + let cost = setup.clothes[slot][clothesIndex(slot, item)].cost * V.clothesPrice; - if (setup.clothes.under_lower.findIndex(x => x.name == item.name) >= 0 || setup.clothes.under_upper.findIndex(x => x.name == item.name) >= 0) + if (setup.clothes.under_lower.findIndex(x => x.name == item.name && x.modder === item.modder) >= 0 || setup.clothes.under_upper.findIndex(x => x.name == item.name && x.modder === item.modder) >= 0) cost *= V.clothesPriceUnderwear; else if (item.type.includes('school')) cost *= V.clothesPriceSchool; diff --git a/game/03-JavaScript/base.js b/game/03-JavaScript/base.js index 63d8397db229b04cac7619d67799d44aa220b9ab..0e8b7d179baa53c6917d7152856d37e0851337d1 100644 --- a/game/03-JavaScript/base.js +++ b/game/03-JavaScript/base.js @@ -92,9 +92,9 @@ Macro.add('time', { } }); -window.ensureIsArray = function (x) { +window.ensureIsArray = function(x, check = false) { + if (check) x = ensure(x, []); if (Array.isArray(x)) return x; - return [x]; } @@ -346,7 +346,7 @@ window.outfitChecks = function(){ window.checkForExposedClothing = function(){ return ["over_upper", "upper", "under_upper", "over_lower", "lower", "under_lower"].some( clothingLayer => { let wetstage = V[clothingLayer.replace("_","") + "wetstage"]; - return (V.worn[clothingLayer].state !== setup.clothes[clothingLayer][V.worn[clothingLayer].index].state_base || wetstage >= 3); + return (V.worn[clothingLayer].state !== setup.clothes[clothingLayer][clothesIndex(clothingLayer, V.worn[clothingLayer])].state_base || wetstage >= 3); }) } diff --git a/game/03-JavaScript/canvasmodel-editor.js b/game/03-JavaScript/canvasmodel-editor.js index a6024e58028f0ffd32e3b61be27d7099f3002496..ffafbbd60e98258bb4d9dcb3a794109483c54b17 100644 --- a/game/03-JavaScript/canvasmodel-editor.js +++ b/game/03-JavaScript/canvasmodel-editor.js @@ -604,7 +604,7 @@ Macro.add('canvasModelEditor', { optionCategory("Hair"), selectOption("hair_colour", hairColourOptions), - selectOption("hair_sides_type", ["", "default", "braid left", "braid right", "flat ponytail", "loose", "messy", "pigtails", "ponytail", "short", "side tail left", "side tail right", "straight", "swept left", "twin braids", "twintails", "curl", "neat"]), + selectOption("hair_sides_type", ["", "default", "braid left", "braid right", "flat ponytail", "loose", "messy", "pigtails", "ponytail", "short", "side tail left", "side tail right", "straight", "swept left", "twin braids", "twintails", "curl", "defined curl", "neat"]), selectOption("hair_sides_length", ["short", "shoulder", "chest", "navel", "thighs", "feet"]), selectOption("hair_sides_position", ["front", "back"]), selectOption("hair_fringe_type", ["", "default", "thin flaps", "wide flaps", "hime", "loose", "messy", "overgrown", "ringlets", "split", "straight", "swept left", "back", "parted", "flat", "quiff", "straight curl", "ringlet curl", "curtain"]), diff --git a/game/03-JavaScript/clothing-shop-v2.js b/game/03-JavaScript/clothing-shop-v2.js index 2ffb36156aebc480e089ed1f9dc3251f51602a76..7aeee4f3567c3f17f6261391417a7e8cb6be2b08 100644 --- a/game/03-JavaScript/clothing-shop-v2.js +++ b/game/03-JavaScript/clothing-shop-v2.js @@ -51,7 +51,7 @@ window.getTrueWarmth = function (item) { // outfitPrimary looks like this {'lower': 'item_name', 'head': 'item_name'} warmth += Object.keys(item.outfitPrimary) // loop through secondary items list .filter(x => item.outfitPrimary[x] != "broken") // filter out broken pieces - .map(x => setup.clothes[x].find(z => z.name == item.outfitPrimary[x])) // find items in setup.clothes + .map(x => setup.clothes[x].find(z => z.name == item.outfitPrimary[x] && z.modder === item.modder)) // find items in setup.clothes .reduce((sum, x) => sum + (x.warmth || 0), 0); // calculate sum of their warmth field } @@ -62,7 +62,7 @@ window.getTrueWarmth = function (item) { // outfitSecondary looks like this ['upper', 'item_name', 'head', 'item_name'] item.outfitSecondary.forEach((x, i) => { if (i % 2 == 0 && item.outfitSecondary[i + 1] != "broken") { - warmth += setup.clothes[x].find(z => z.name == item.outfitSecondary[i + 1]).warmth || 0; + warmth += setup.clothes[x].find(z => z.name == item.outfitSecondary[i + 1] && z.modder === item.modder).warmth || 0; } }); } diff --git a/game/03-JavaScript/eventpool.js b/game/03-JavaScript/eventpool.js index 315fefd3946f0e19d4afbec5fe3eacf15d014547..5c44c598842e4e54d3572e04d5f4ed9d96d47ccc 100644 --- a/game/03-JavaScript/eventpool.js +++ b/game/03-JavaScript/eventpool.js @@ -113,13 +113,20 @@ Macro.add("addevent", { Macro.add("runeventpool", { skipArgs: true, handler: function () { - if(T.eventpool.includes(V.eventPoolOverride)){ - var pick = V.eventPoolOverride; + let pick = T.eventpool.find(e => e.name === V.eventPoolOverride); + if (pick) { delete V.eventPoolOverride; - }else{ - var pick = rollWeightedRandomFromArray(T.eventpool); + } else if (T.eventpool.includes(V.eventPoolOverride)) { + pick = V.eventPoolOverride; + delete V.eventPoolOverride; + } else { + pick = rollWeightedRandomFromArray(T.eventpool); } if (!pick) throw new Error("Event pool is empty"); + // Jimmy: For tracking where in the code you may be. + // E.G: ['eventAmbient', >>'autumn_anystreet_2'<<, 'generate1'] + DOL.Stack.push(pick.name); jQuery(this.output).wiki(pick.content); + DOL.Stack.pop(); } }); diff --git a/game/03-JavaScript/ingame.js b/game/03-JavaScript/ingame.js index 77370a612c6a0cc9b2251f1f3536b15b1c704b22..645cf8bda7c294570299bdb9a6e94a58ebb57231 100644 --- a/game/03-JavaScript/ingame.js +++ b/game/03-JavaScript/ingame.js @@ -785,7 +785,7 @@ window.transferClothing = function(slot, index, newWardrobe){ window.clothingData = function(slot, item, data){ if(item[data] !== undefined) return item[data]; - return setup.clothes[slot][item.index][data]; + return setup.clothes[slot][clothesIndex(slot,item)][data]; } window.clothesDataTrimmerLoop = function(){ @@ -893,6 +893,20 @@ window.clothesReturnLocation = function(item, type){ return "wardrobe"; } +//the 'modder' variable is specifically for modders name, should be kept as a short string +window.clothesIndex = function(slot, itemToIndex) { + if(!slot || !itemToIndex || !itemToIndex.name) { + console.log(`clothesIndex - slot or valid object not provided`); + return 0; + } + let index = setup.clothes[slot].findIndex((item) => item.variable === itemToIndex.variable && item.modder === itemToIndex.modder) + if(index === -1){ + console.log(`clothesIndex - ${slot} clothing item index not found for the '${itemToIndex.name}' with the modder set to '${itemToIndex.modder}'`); + return 0; + } + return index; +} + // Runs before a passage load, returning a string redirects to the new passage name. Config.navigation.override = function (dest) { switch (dest) { diff --git a/game/03-JavaScript/link-override.js b/game/03-JavaScript/link-override.js index 94fc353a91e4af0b144ccc478c10cdd087ec3504..db2c62dc10ac92d1429f346222e89957c4a226a7 100644 --- a/game/03-JavaScript/link-override.js +++ b/game/03-JavaScript/link-override.js @@ -77,8 +77,15 @@ Macro.add(['button', 'link'], { ? () => { if (!(passage && V.nextPassage)) {Wikifier.wikifyEval(this.payload[0].contents.trim())} } : null, passage != null // lazy equality for null - /* check V.nextPassage and redirect all links to it if present */ - ? () => { if (V.nextPassage){ V.nextPassageIntended = passage; passage = V.nextPassage; delete V.nextPassage }; Engine.play(passage) } + ? () => { + //check V.nextPassage and redirect all links to it if present + if (V.nextPassage){ V.nextPassageIntended = passage; passage = V.nextPassage; delete V.nextPassage }; + //save sidebar scrolling position + window.scroll_uibar = document.querySelector("#storyCaptionDiv").scrollTop; + //if passage hasn't changed (i.e. during combat), store scrolling position + window.scroll_main = (V.passage === V.passagePrev ? document.scrollingElement.scrollTop : 0); + //finally, play the passage + Engine.play(passage) } : null )) .appendTo(this.output); @@ -150,11 +157,16 @@ function createInternalLink(destination, passage, text, callback){ if (typeof callback === 'function') { callback(); } + //check V.nextPassage and redirect all links to it if present if (V.nextPassage){ V.nextPassageIntended = passage; passage = V.nextPassage; delete V.nextPassage; } + //save sidebar scrolling position + window.scroll_uibar = document.querySelector("#storyCaptionDiv").scrollTop; + //if passage hasn't changed (i.e. during combat), store scrolling position + window.scroll_main = (V.passage === V.passagePrev ? document.scrollingElement.scrollTop : 0); Engine.play(passage); }); } diff --git a/game/03-JavaScript/save.js b/game/03-JavaScript/save.js index 416fe8de85da2f00e63ed79ec21756013da64dac..98f69b993607257b8eae8a556ca5a41bc5422333 100644 --- a/game/03-JavaScript/save.js +++ b/game/03-JavaScript/save.js @@ -534,7 +534,6 @@ window.settingsObjects = function (type) { slimedisable: { boolLetter: true, bool: true }, voredisable: { boolLetter: true, bool: true }, tentacledisable: { boolLetter: true, bool: true }, - plantdisable: { boolLetter: true, bool: true }, analdisable: { boolLetter: true, bool: true }, analdoubledisable: { boolLetter: true, bool: true }, analingusdisablegiving: { boolLetter: true, bool: true }, diff --git a/game/03-JavaScript/scroll-bar.js b/game/03-JavaScript/scroll-bar.js index e3d6f6475815f174de81b07e97cd71dc799dcbf9..f927326ba58f335b99f4747068f50301a2370c21 100644 --- a/game/03-JavaScript/scroll-bar.js +++ b/game/03-JavaScript/scroll-bar.js @@ -1,6 +1,10 @@ //Sidebar scroll resetting fix //When a passage is finished loading: $(document).on(":passageend", function (event) { + //simplified fix, iteration 2 + if (window.scroll_uibar) document.querySelector("#storyCaptionDiv").scroll(0, window.scroll_uibar); + if (window.scroll_main) document.scrollingElement.scroll(0, window.scroll_main); + /*previous version //get sidebar dom element, assign it to variable for convenience let sidebar = document.querySelector("#storyCaptionDiv"); @@ -18,5 +22,6 @@ $(document).on(":passageend", function (event) { sidebar.addEventListener("scroll", function(){ setup.sidebarScrollY = sidebar.scrollTop; setup.sidebarIsAtBottom = ((sidebar.scrollHeight - sidebar.scrollTop) < sidebar.clientHeight+10); - }); -}); \ No newline at end of file + });*/ +}); + diff --git a/game/04-Variables/canvasmodel-main.js b/game/04-Variables/canvasmodel-main.js index d42c8efee64fff8fed29465cd0080a2233b6297d..7375d40f3f9b9d9fff36d6c44192afb9d48fa9ed 100644 --- a/game/04-Variables/canvasmodel-main.js +++ b/game/04-Variables/canvasmodel-main.js @@ -997,12 +997,12 @@ Renderer.CanvasModels["main"] = { z: ZIndices.fronthair, animation: "idle" }, - "hair_extra": { // Extra layer for thighs+ long hair in default style + "hair_extra": { // Extra layer for thighs+ long hair for certain styles srcfn(options) { - if (options.hair_sides_length === "thighs" && options.hair_sides_type === "default") { - return "img/hair/red/backhairthighsred.png" - } else if (options.hair_sides_length === "feet" && options.hair_sides_type === "default") { - return"img/hair/red/backhairfeetred.png" + if (options.hair_sides_length === "feet" && ["default","loose","straight","curl","defined curl","neat"].includes(options.hair_sides_type)) { + return "img/hair/back/" + options.hair_sides_type + '/' + "feet.png" + } else if (options.hair_sides_length === "thighs" && ["default","loose","curl","defined curl","neat"].includes(options.hair_sides_type)) { + return "img/hair/back/" + options.hair_sides_type + '/' + "thighs.png" } else { return "" } diff --git a/game/04-Variables/variables-passageHeader.twee b/game/04-Variables/variables-passageHeader.twee index bb63a0d1df4e2019561150bd9fcc106aa389ac95..4b7d90509f2618f4a53b110a7c204206c858f466 100644 --- a/game/04-Variables/variables-passageHeader.twee +++ b/game/04-Variables/variables-passageHeader.twee @@ -1,4 +1,5 @@ :: PassageHeader +<<set $passagePrev to $passage ? $passage : "none">> <<set $passage to passage()>><<set $tags to tags()>> <<if $passage isnot "Start" and $passage isnot "Start2">> diff --git a/game/04-Variables/variables-start2.twee b/game/04-Variables/variables-start2.twee index 5a9e71b8599bc8643c726ab25f7a64003d3d2c92..bd85d841c0c24718925e8520ba9a15974533108a 100644 --- a/game/04-Variables/variables-start2.twee +++ b/game/04-Variables/variables-start2.twee @@ -32,7 +32,7 @@ <</if>> <<set $per_npc to {}>> -<<set $perNPCFix to 2>> +<<set $perNPCFix to 3>> <<set $physique to ($physiquesize / 7) * 3>> <<set $beauty to ($beautymax / 7)>> @@ -283,4 +283,8 @@ <<set $rebuy_failure to []>> <<set $rebuy_success to []>> + +<<pbhairinit>> +<<resetLastOptions>> + <</widget>> diff --git a/game/04-Variables/variables-versionUpdate.twee b/game/04-Variables/variables-versionUpdate.twee index 144e84b6f7ac85f0a8f4ab90572f0e52074f82b1..234254df50c81d287999ed5708c9f1d26f93e3b6 100644 --- a/game/04-Variables/variables-versionUpdate.twee +++ b/game/04-Variables/variables-versionUpdate.twee @@ -1167,27 +1167,6 @@ }>> <</if>> -<!--PBHair extension START--> -<<if $pblevel lt 1 or $pblevel is undefined>> - <<set $pblevel to 1>> -<</if>> - -<<if $pbgrowth lt 1 or $pbgrowth is undefined>> - <<set $pbgrowth to 1>> -<</if>> - -<<if $pblevelballs lt 1 or $pblevelballs is undefined>> - <<set $pblevelballs to 1>> -<</if>> - -<<if $pbgrowthballs lt 1 or $pbgrowthballs is undefined>> - <<set $pbgrowthballs to 1>> -<</if>> - -<<if $pbstrip lt 0 or $pbstrip is undefined>> - <<set $pbstrip to 0>> -<</if>> - <<if $bodypart_number is undefined>> <<bodywriting_init>> <</if>> @@ -2659,11 +2638,14 @@ <!-- Jimmy: Reset NPC slots if necessary by checking .type === 0 Old versions prior to 3.4.* did not have empty slots properly set to baseNPC. --> <<for $_i = 0; $_i < $NPCList.length; $_i++>> - <<if $NPCList[$_i].type is 0>> - <<set $NPCList[$_i] to clone(setup.baseNPC)>> + <<if $combat isnot 1>> + <<if $NPCList[$_i].type is 0>> + <<set $NPCList[$_i] to clone(setup.baseNPC)>> + <</if>> + <<elseif $NPCList[$_i].active is "active">> + <<set $NPCList[$_i].type to (typeof $NPCList[$_i].type isnot "string" ? "human" : $NPCList[$_i].type)>> <</if>> <</for>> - <<unset $_i>> <<if $player.virginity.vaginal is "Harper" or $player.virginity.penile is "Harper">> <<earnFeat "Harper the Hypnotist">> @@ -2672,15 +2654,62 @@ <<earnFeat "Morgan the Lost">> <</if>> - <!-- DefaultActions JS routine for error correction. --> + <!-- Jimmy: DefaultActions JS routine for error correction. --> <<run - /* Test 1 - If regrab[0] is an object, there was a failure. */ - let temp = DefaultActions.get('rape', 'Everyone', 'regrab')[0]; - if (typeof temp === 'object') { - /* Reset everything as a final step, the error is consumed. */ - V.actionDefaults = temp; - V.actionDefaults = DefaultActions.check(DefaultActions.setup()) + /* Perform check for broken default action structures. */ + if ($actionDefaults != undefined) { + /* Test 1 - If regrab[0] is an object, there was a failure. */ + let temp = DefaultActions.get('rape', 'Everyone', 'regrab')[0]; + if (typeof temp === 'object') { + /* Reset everything as a final step, the error is consumed. */ + V.actionDefaults = temp; + V.actionDefaults = DefaultActions.check(DefaultActions.setup()) + } } >> + + <!-- Jimmy: Run updater for EventSystem. + Only runs if behind on schema, and if $event exists. --> + <<run EventSystem.Update()>> + + <!-- Jimmy: Updater for NNPCs that lack pronouns structures. + Based off of $perNPCFix located in VVU --> + <<if $pronounsNPCFix isnot 1>> + <<for $_npc range $NPCName>> + <<if $_npc.pronouns is undefined>> + <<generatePronouns $_npc>> + <</if>> + <</for>> + <<set $pronounsNPCFix = 1>> + <</if>> + + <!-- persistent npc fix v3 --> + <<if $perNPCFix isnot 3>> + <<set $perNPCFix to 3>> + <<set $_per_keys to Object.keys($per_npc)>> + <<for $_per_ctrl range $_per_keys>> + <<if !$per_npc[$_per_ctrl]>> + <!-- remove null and undefined --> + <<run delete $per_npc[$_per_ctrl]>> + <<elseif !$per_npc[$_per_ctrl].type>> + <!-- type fix --> + <<set $per_npc[$_per_ctrl].type to "human">> + <</if>> + <</for>> + + <!-- prison npcs --> + <<for $_npc range ["anxious_guard", "methodical_guard", "relaxed_guard", "veteran_guard", "scarred_inmate"]>> + <<if $per_npc[$_npc]>> + <<if $per_npc[$_npc].name_known>> + <<set $per_npc[$_npc].fullDescription to $per_npc[$_npc].name>> + <<else>> + <<set $per_npc[$_npc].fullDescription to $_npc.replace('_', ' ')>> + <</if>> + <</if>> + <</for>> + <</if>> + + /* v0.3.5.4: pubic hair was accidentally disabled on new saves bc it wasn't initialized properly. */ + <<pbhairinit>> <</widget>> diff --git a/game/base-clothing/canvasmodel-img.twee b/game/base-clothing/canvasmodel-img.twee index c41c3a8a13c081d97fb62a51a13dea9cea422abd..d04e9da5d1cc12989662e207cd12b744778f3e55 100644 --- a/game/base-clothing/canvasmodel-img.twee +++ b/game/base-clothing/canvasmodel-img.twee @@ -438,7 +438,7 @@ Set model options & filters for player clothes <<set _modeloptions.hair_fringe_length to "short">> <</if>> -<<set _modeloptions.upper_tucked to $upperTucked and !setup.clothes.upper[$worn.upper.index].notuck and $worn.upper.outfitPrimary is undefined>> +<<set _modeloptions.upper_tucked to $upperTucked and !setup.clothes.upper[clothesIndex('upper', $worn.upper)].notuck and $worn.upper.outfitPrimary is undefined>> <<twinescript>> let slots = [ @@ -466,7 +466,7 @@ Set model options & filters for player clothes case 3: _modeloptions['worn_'+slot+'_alpha'] = 0.5; break; default: _modeloptions['worn_'+slot+'_alpha'] = 1.0; break; } - _modeloptions['worn_'+slot] = worn.index; + _modeloptions['worn_'+slot] = clothesIndex(slot,worn); _modeloptions['worn_'+slot+'_integrity'] = integrityKeyword(worn,slot); _modeloptions['worn_'+slot+'_colour'] = worn.colour; if (worn.colour === 'custom') { diff --git a/game/base-clothing/captiontext.twee b/game/base-clothing/captiontext.twee index b7df5fec5ff56601524e49888c000958d6cd2ff0..3e9d90573cdcee9ae55f7b4946759ee4cba18ee1 100644 --- a/game/base-clothing/captiontext.twee +++ b/game/base-clothing/captiontext.twee @@ -54,7 +54,7 @@ <<if def $args[1]>> <<set $_output += $args[1] + " ">> <<else>> - <<set $_wornItemWord to setup.clothes[$args[0]][$_wornItem.index].word>> + <<set $_wornItemWord to setup.clothes[$args[0]][clothesIndex($args[0],$_wornItem)].word>> <<set $_output += ($_wornItemWord isnot "n" ? $_wornItemWord : "") + " ">> <</if>> @@ -171,7 +171,7 @@ /* One argument, a clothing article whose state you want to compare against its original state. Must be the ENTIRE variable, not .name! */ /* Returns the difference between the current and base states. Negative means it's pulled down, positive means it's pulled up. */ /* If the clothing was pulled to the side, this returns 0. It would also return 0 if the current state is the base state. */ - <<set _compare_result to _clothing_levels.indexOf($worn[$args[0]].state) - _clothing_levels.indexOf(setup.clothes[$args[0]][$worn[$args[0]].index].state_base)>> + <<set _compare_result to _clothing_levels.indexOf($worn[$args[0]].state) - _clothing_levels.indexOf(setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].state_base)>> <<if $worn[$args[0]].state is "totheside">><<set _compare_result to 0>><</if>> <</widget>> @@ -205,7 +205,7 @@ <<if $_wornClothing.type.includes("naked")>> <<set $_clothingRevealType[$_clothing] to "naked">> <<continue>> - <<elseif $_wornClothing.state isnot setup.clothes[$_clothing][$_wornClothing.index].state_base>> + <<elseif $_wornClothing.state isnot setup.clothes[$_clothing][clothesIndex($_clothing,$_wornClothing)].state_base>> <<clothingstatecompare $_clothing>> <<if _compare_result gte 1>> <<set $_clothingRevealType[$_clothing] to "up">> diff --git a/game/base-clothing/clothing-face.twee b/game/base-clothing/clothing-face.twee index 44967b0e008647499d4494b3e76f64dfa3773891..4c088e782fc4b20cb9b13fde8abf749b40d226d1 100644 --- a/game/base-clothing/clothing-face.twee +++ b/game/base-clothing/clothing-face.twee @@ -564,4 +564,13 @@ } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.face to []>> + +<<run setup.moddedClothes.face.forEach( (x,i) => x.index = setup.clothes.face.length + i )>> +<<run setup.clothes.face.push(...setup.moddedClothes.face)>> <</widget>> diff --git a/game/base-clothing/clothing-feet.twee b/game/base-clothing/clothing-feet.twee index 152b8170f7058749b9e40d53e3b566c5bff41d11..5cc7a59cb0006d7972d0bbd72e88915eead55d88 100644 --- a/game/base-clothing/clothing-feet.twee +++ b/game/base-clothing/clothing-feet.twee @@ -780,8 +780,46 @@ location: 0, iconFile: 0, accIcon: 0 +}, + + {index: 27, + name: "cowboy boots", + name_cap: "Cowboy boots", + variable: "cowboy", + integrity: 350, + integrity_max: 350, + fabric_strength: 40, + reveal: 1, + word: "n", + plural: 1, + colour: 0, + colour_options: [], + colour_combat:"brown", + type: ["normal", "riding"], + gender: "m", + femininity: -200, + warmth: 30, + cost: 8500, + description: "Spurs included.", + shop: ["clothing"], + accessory: 0, + accessory_colour: 0, + accessory_colour_options: [], + cursed: 0, + location: 0, + iconFile: "Cowboy boots.png", + accIcon: 0 } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.feet to []>> + +<<run setup.moddedClothes.feet.forEach( (x,i) => x.index = setup.clothes.feet.length + i )>> +<<run setup.clothes.feet.push(...setup.moddedClothes.feet)>> <</widget>> diff --git a/game/base-clothing/clothing-genitals.twee b/game/base-clothing/clothing-genitals.twee index 31bdfdbf33af332370c6dc19cae2891fd0387761..b33269cc65d2d060f4f59840380c6fcf822a3a27 100644 --- a/game/base-clothing/clothing-genitals.twee +++ b/game/base-clothing/clothing-genitals.twee @@ -161,4 +161,13 @@ } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.genitals to []>> + +<<run setup.moddedClothes.genitals.forEach( (x,i) => x.index = setup.clothes.genitals.length + i )>> +<<run setup.clothes.genitals.push(...setup.moddedClothes.genitals)>> <</widget>> diff --git a/game/base-clothing/clothing-hands.twee b/game/base-clothing/clothing-hands.twee index 5366001fcd5eb9b5028fb025218dd27522b2112a..55d3c2c3918c3adf124fa06915a26cc6b361e1ad 100644 --- a/game/base-clothing/clothing-hands.twee +++ b/game/base-clothing/clothing-hands.twee @@ -289,4 +289,13 @@ } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.hands to []>> + +<<run setup.moddedClothes.hands.forEach( (x,i) => x.index = setup.clothes.hands.length + i )>> +<<run setup.clothes.hands.push(...setup.moddedClothes.hands)>> <</widget>> \ No newline at end of file diff --git a/game/base-clothing/clothing-head.twee b/game/base-clothing/clothing-head.twee index dcd26ed70d68b866c09108681999833e70e4c42a..aa06aa6f60cf08f03b520f2a8eab24f010f52ea4 100644 --- a/game/base-clothing/clothing-head.twee +++ b/game/base-clothing/clothing-head.twee @@ -1144,7 +1144,48 @@ location: 0, iconFile: "Mini snowman.png", accIcon: 0 +}, + +{index: 38, + name: "cow onesie hood", + name_cap: "Cow onesie hood", + variable: "cowonesie", + integrity: 200, + integrity_max: 200, + fabric_strength: 30, + reveal: 100, + word: "a", + one_piece: 1, + plural: 0, + hood: 1, + mask_img: 1, + colour: 0, + colour_options: [], + type: ["sleep","costume"], + gender: "n", + warmth: 40, + cost: 0, + description: "Snug.", + shop: ["clothing"], + accessory: 0, + accessory_colour: 0, + accessory_colour_options: [], + back_img: 0, + cursed: 0, + location: 0, + iconFile: "", + outfitSecondary: ["upper","cow onesie"], + accIcon: 0 } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.head to []>> + +<<run setup.moddedClothes.head.forEach( (x,i) => x.index = setup.clothes.head.length + i )>> +<<run setup.clothes.head.push(...setup.moddedClothes.head)>> <</widget>> diff --git a/game/base-clothing/clothing-legs.twee b/game/base-clothing/clothing-legs.twee index d2974f2d0b80cd7a4745a431d2b8eb317270643c..13e769b9dbf3511ee1b28880075617fc0ea8ca42 100644 --- a/game/base-clothing/clothing-legs.twee +++ b/game/base-clothing/clothing-legs.twee @@ -495,4 +495,13 @@ } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.legs to []>> + +<<run setup.moddedClothes.legs.forEach( (x,i) => x.index = setup.clothes.legs.length + i )>> +<<run setup.clothes.legs.push(...setup.moddedClothes.legs)>> <</widget>> diff --git a/game/base-clothing/clothing-lower.twee b/game/base-clothing/clothing-lower.twee index 80a36c62b3adf6cd648619c63bd122aa3530948e..624628c7794d29a581d8da0891f9c1853835f349 100644 --- a/game/base-clothing/clothing-lower.twee +++ b/game/base-clothing/clothing-lower.twee @@ -1416,7 +1416,6 @@ plural: 1, colour: 0, colour_options: [], - colour_combat:"blue", exposed: 0, exposed_base: 0, vagina_exposed: 0, @@ -3027,8 +3026,8 @@ back_img: 0, cursed: 0, location: 0, - iconFile: "Moon pyjama bottoms.png", - accIcon: "Moon pyjama bottoms_acc.png" + iconFile: "Moon pyjamas bottoms.png", + accIcon: "Moon pyjamas bottoms_acc.png" }, {index: 67, @@ -3452,7 +3451,7 @@ plural: 1, colour: 0, colour_options: [], - colour_combat:"blue", + colour_combat : 0, exposed: 0, exposed_base: 0, vagina_exposed: 0, @@ -3612,7 +3611,105 @@ iconFile: 0, accIcon: 0, outfitSecondary: ["upper","patient gown"] +}, + + {index: 80, + name: "cow onesie bottoms", + name_cap: "Cow onesie bottoms", + variable: "cowonesie", + integrity: 300, + integrity_max: 300, + fabric_strength: 30, + reveal: 100, + rearresize: 0, + word: "a", + one_piece: 1, + skirt: 0, + skirt_down: 0, + short: 0, + state: "waist", + state_base: "waist", + plural: 0, + colour: 0, + colour_options: [], + exposed: 0, + exposed_base: 0, + vagina_exposed: 0, + vagina_exposed_base: 0, + anus_exposed: 0, + anus_exposed_base: 0, + type: ["sleep","costume"], + set: "lower", + gender: "n", + warmth: 70, + cost: 0, + description: "Snug.", + shop: ["clothing"], + accessory: 0, + accessory_colour: 0, + accessory_colour_options: [], + high_img: 0, + back_img: 0, + cursed: 0, + location: 0, + iconFile: "", + outfitSecondary: ["upper","cow onesie"], + accIcon: 0 +}, + + {index: 81, + name: "cow print chaps", + name_cap: "Cow print chaps", + variable: "cowchaps", + integrity: 200, + integrity_max: 200, + fabric_strength: 30, + reveal: 400, + rearresize: 0, + word: "n", + one_piece: 0, + skirt: 0, + skirt_down: 0, + short: 0, + state: "waist", + state_base: "waist", + plural: 1, + colour: 0, + colour_options: [], + colour_combat:"brown", + exposed: 0, + exposed_base: 0, + vagina_exposed: 0, + vagina_exposed_base: 0, + anus_exposed: 0, + anus_exposed_base: 0, + type: ["costume"], + set: "lower", + gender: "m", + femininity: -200, + warmth: 35, + cost: 6000, + description: "Ready for a hard day's work.", + shop: ["clothing"], + accessory: 0, + accessory_colour: 0, + accessory_colour_options: [], + high_img: 0, + back_img: 0, + cursed: 0, + location: 0, + iconFile: "Cow print chaps.png", + accIcon: 0 } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.lower to []>> + +<<run setup.moddedClothes.lower.forEach( (x,i) => x.index = setup.clothes.lower.length + i )>> +<<run setup.clothes.lower.push(...setup.moddedClothes.lower)>> <</widget>> diff --git a/game/base-clothing/clothing-neck.twee b/game/base-clothing/clothing-neck.twee index 52bd5f60c5a4aa6e7ebc8c0e052d9444c097ad3a..08e91c6718d52062f44fd24f94e7912f0c2837e7 100644 --- a/game/base-clothing/clothing-neck.twee +++ b/game/base-clothing/clothing-neck.twee @@ -712,4 +712,13 @@ } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.neck to []>> + +<<run setup.moddedClothes.neck.forEach( (x,i) => x.index = setup.clothes.neck.length + i )>> +<<run setup.clothes.neck.push(...setup.moddedClothes.neck)>> <</widget>> diff --git a/game/base-clothing/clothing-over_head.twee b/game/base-clothing/clothing-over_head.twee index 978f2158110bfc5033a0498c6ad0d1369ef00404..89170b5ee2f01a9516ce9d74a77bc621910d2b45 100644 --- a/game/base-clothing/clothing-over_head.twee +++ b/game/base-clothing/clothing-over_head.twee @@ -62,4 +62,13 @@ } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.over_head to []>> + +<<run setup.moddedClothes.over_head.forEach( (x,i) => x.index = setup.clothes.over_head.length + i )>> +<<run setup.clothes.over_head.push(...setup.moddedClothes.over_head)>> <</widget>> \ No newline at end of file diff --git a/game/base-clothing/clothing-over_lower.twee b/game/base-clothing/clothing-over_lower.twee index d62ed0ef6cc343ab5b66b819df600fcb99bce2b5..1d480214ca137a12f3a3946ff655bb88d4f79075 100644 --- a/game/base-clothing/clothing-over_lower.twee +++ b/game/base-clothing/clothing-over_lower.twee @@ -134,4 +134,13 @@ } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.over_lower to []>> + +<<run setup.moddedClothes.over_lower.forEach( (x,i) => x.index = setup.clothes.over_lower.length + i )>> +<<run setup.clothes.over_lower.push(...setup.moddedClothes.over_lower)>> <</widget>> \ No newline at end of file diff --git a/game/base-clothing/clothing-over_upper.twee b/game/base-clothing/clothing-over_upper.twee index d32656cf23f1633d3b3ab829eba35dc76e2cd848..24d55fff104e90e5cd1adc5c3760e1229dea81ee 100644 --- a/game/base-clothing/clothing-over_upper.twee +++ b/game/base-clothing/clothing-over_upper.twee @@ -132,4 +132,13 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.over_upper to []>> + +<<run setup.moddedClothes.over_upper.forEach( (x,i) => x.index = setup.clothes.over_upper.length + i )>> +<<run setup.clothes.over_upper.push(...setup.moddedClothes.over_upper)>> <</widget>> \ No newline at end of file diff --git a/game/base-clothing/clothing-sets.twee b/game/base-clothing/clothing-sets.twee index 6bc7813e23b412a97d3bc4d60d3bb82cb6d44862..dcc7d782125ecd50c7310a0cdcdd9b4e8778ae99 100644 --- a/game/base-clothing/clothing-sets.twee +++ b/game/base-clothing/clothing-sets.twee @@ -148,7 +148,7 @@ <<if _preventItemEquip is true>> <<if $outfit[$wear_outfit][_equip[_i]] is "naked">> - <<set _notEquipped[_equip[_i]] to {"name": setup.clothes[_equip[_i]][$worn[_equip[_i]].index].name_cap, "reason": "cursed unequip"}>> + <<set _notEquipped[_equip[_i]] to {"name": setup.clothes[_equip[_i]][clothesIndex(_equip[_i],$worn[_equip[_i]])].name_cap, "reason": "cursed unequip"}>> <<else>> <<set _notEquipped[_equip[_i]] to {"name": $outfit[$wear_outfit][_equip[_i]], "reason": "cursed slot"}>> <</if>> diff --git a/game/base-clothing/clothing-under-upper.twee b/game/base-clothing/clothing-under-upper.twee index 30310029474236ae6f72be99a692642f92c0c968..6854f401e12637d0fa39ea498bac5a4447caf74b 100644 --- a/game/base-clothing/clothing-under-upper.twee +++ b/game/base-clothing/clothing-under-upper.twee @@ -1185,4 +1185,13 @@ } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.under_upper to []>> + +<<run setup.moddedClothes.under_upper.forEach( (x,i) => x.index = setup.clothes.under_upper.length + i )>> +<<run setup.clothes.under_upper.push(...setup.moddedClothes.under_upper)>> <</widget>> diff --git a/game/base-clothing/clothing-under.twee b/game/base-clothing/clothing-under.twee index 75bd178445a4b62bd07a2bb77e0a0c067ce680ff..44677136ba3b07980bb2f8c90398d823ea5fae8f 100644 --- a/game/base-clothing/clothing-under.twee +++ b/game/base-clothing/clothing-under.twee @@ -1434,4 +1434,13 @@ } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.under_lower to []>> + +<<run setup.moddedClothes.under_lower.forEach( (x,i) => x.index = setup.clothes.under_lower.length + i )>> +<<run setup.clothes.under_lower.push(...setup.moddedClothes.under_lower)>> <</widget>> diff --git a/game/base-clothing/clothing-upper.twee b/game/base-clothing/clothing-upper.twee index 9305eb358d0999a3c6cdc1966a04635f1a685e6f..f5879e475290742b89c18566f06b87e1cfdb432d 100644 --- a/game/base-clothing/clothing-upper.twee +++ b/game/base-clothing/clothing-upper.twee @@ -963,8 +963,8 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur one_piece: 0, strap: 0, open: 0, - state: "waist", - state_base: "waist", + state: "midriff", + state_base: "midriff", state_top: "chest", state_top_base: "chest", plural: 0, @@ -3592,7 +3592,6 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur location: 0, iconFile: "Utility shirt.png", accIcon: "Utility shirt_acc.png", - accIcon: 0, notuck: 0 }, @@ -3851,7 +3850,59 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur iconFile: "Cropped hoodie.png", accIcon: 0, notuck: 1 +}, + + {index: 89, + name: "cow onesie", + name_cap: "Cow onesie", + variable: "cowonesie", + integrity: 300, + integrity_max: 300, + fabric_strength: 30, + reveal: 100, + bustresize: 0, + word: "a", + one_piece: 1, + strap: 0, + open: 0, + state: "waist", + state_base: "waist", + state_top: "chest", + state_top_base: "chest", + plural: 0, + colour: 0, + colour_options: [], + exposed: 0, + exposed_base: 0, + type: ["sleep", "costume"], + set: "upper", + gender: "n", + warmth: 70, + cost: 12000, + description: "Snug.", + shop: ["clothing"], + accessory: 0, + accessory_colour: 0, + accessory_colour_options: [], + sleeve_img: 1, + sleeve_acc_img: 0, + breast_img: 0, + cursed: 0, + location: 0, + iconFile: "Cow onesie.png", + accIcon: 0, + outfitPrimary:{lower:"cow onesie bottoms", head:"cow onesie hood"}, + notuck: 0 } ]>> + +<!-- + Clothes that modders add go into this array, this should be empty in the base game at all times. + These items should have a `modder` variable with a the modders name in a short string +--> +<<set setup.moddedClothes.upper to []>> + +<<run setup.moddedClothes.upper.forEach( (x,i) => x.index = setup.clothes.upper.length + i )>> +<<run setup.clothes.upper.push(...setup.moddedClothes.upper)>> <</widget>> diff --git a/game/base-clothing/danceWidgets.twee b/game/base-clothing/danceWidgets.twee index ad107af03b7312f02fdc28774e603a9e034f1944..793c1e1aefdea3ddd76b5daa9104f5f60626a7af 100644 --- a/game/base-clothing/danceWidgets.twee +++ b/game/base-clothing/danceWidgets.twee @@ -531,7 +531,7 @@ You gracefully remove your $worn.under_lower.name, exposing your <<genitals 1>>. <</if>> <</if>> <</if>> - <<if !$worn.lower.type.includes("naked") and ($worn.over_lower.type.includes("naked") or setup.clothes.over_lower[$worn.over_lower.index].skirt is 1)>> + <<if !$worn.lower.type.includes("naked") and ($worn.over_lower.type.includes("naked") or setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1)>> <<if $worn.over_lower.name isnot "naked">> <<set _danceExhibition.lower to clone(_exhibitionObject[3])>> <<elseif !$worn.under_lower.type.includes("naked")>> @@ -556,7 +556,7 @@ You gracefully remove your $worn.under_lower.name, exposing your <<genitals 1>>. <<set _danceExhibition.under_upper to clone(_exhibitionObject[1])>> <</if>> <</if>> - <<if $worn.under_lower.name isnot "naked" and ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 or $worn.over_lower.type.includes("naked")) and (setup.clothes.lower[$worn.lower.index].skirt is 1 or $worn.lower.type.includes("naked")))>> + <<if $worn.under_lower.name isnot "naked" and ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 or $worn.over_lower.type.includes("naked")) and (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 or $worn.lower.type.includes("naked")))>> <<if $worn.under_lower.type.includes("naked")>> <<set _danceExhibition.under_lower to clone(_exhibitionObject[3])>> <<elseif !$worn.lower.type.includes("naked") or !$worn.over_lower.type.includes("naked")>> @@ -733,7 +733,7 @@ You gracefully remove your $worn.under_lower.name, exposing your <<genitals 1>>. <<if _underOutfit>> <<if !$worn.lower.type.includes("naked") and !$worn.upper.type.includes("naked")>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $exhibitionism gte 35>> <label><span class="meek">Strip $worn.under_upper.name</span> <<combatexhibitionist3>> <<radiobutton "$danceaction" "underoutfitstripskirt">></label> | <</if>> @@ -780,7 +780,7 @@ You gracefully remove your $worn.under_lower.name, exposing your <<genitals 1>>. <</if>> <<if !$worn.under_lower.type.includes("naked") and _underOutfit is false>> - <<if !$worn.lower.type.includes("naked") and setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if !$worn.lower.type.includes("naked") and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $exhibitionism gte 35>> <label><span class="meek">Strip $worn.under_lower.name</span> <<combatexhibitionist3>> <<radiobutton "$danceaction" "understripskirt">></label> | <</if>> diff --git a/game/base-clothing/images.twee b/game/base-clothing/images.twee index f642648a5d1ffd15404d4a3749051fd377bd94da..a6386fbd9cba3acffb7be55a602ecfb5e45d80b7 100644 --- a/game/base-clothing/images.twee +++ b/game/base-clothing/images.twee @@ -445,10 +445,36 @@ <</if>> <img class="layer-fronthair colour-hair anim-idle-2f" @src="'img/hair/fringe/' + $fringetype + '/' + _fringelengthstage + '.png'"> - <<if _hairlengthstage is "thighs" and $hairtype is "default">> - <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/red/backhairthighsred.png"> - <<elseif _hairlengthstage is "feet" and $hairtype is "default">> - <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/red/backhairfeetred.png"> + <<if _hairlengthstage is "thighs">> + <<switch $hairtype>> + <<case "default">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/default/thighs.png"> + <<case "loose">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/loose/thighs.png"> + <<case "curl">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/curl/thighs.png"> + <<case "defined curl">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/defined curl/thighs.png"> + <<case "neat">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/neat/thighs.png"> + <<default>> + <</switch>> + <<elseif _hairlengthstage is "feet">> + <<switch $hairtype>> + <<case "default">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/default/feet.png"> + <<case "loose">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/loose/feet.png"> + <<case "straight">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/straight/feet.png"> + <<case "curl">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/curl/feet.png"> + <<case "defined curl">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/defined curl/feet.png"> + <<case "neat">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/neat/feet.png"> + <<default>> + <</switch>> <</if>> <<upperimg>> @@ -666,11 +692,11 @@ <img @class="'layer-sexlower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/head/minisnowman/active.png"> <</if>> -<<if $worn.upper.set is $worn.lower.set and setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if $worn.upper.set is $worn.lower.set and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.upper.state is "waist">> - <<if setup.clothes.lower[$worn.lower.index].skirt_down is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt_down is 1>> <img @class="'layer-sexlower colour-upper anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/dress/doggyactive_dress_thighs.png" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> - <<elseif setup.clothes.lower[$worn.lower.index].skirt_down is 0>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt_down is 0>> <img @class="'layer-sexlower colour-upper anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/dress/doggyactive_dress_hips.png" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> <</if>> <<elseif $worn.upper.state is "midriff">> @@ -697,9 +723,37 @@ <<elseif $worn.lower.state is "ankles">> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/gymbloomers/doggyactive_shorts_ankles.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <</if>> +<<elseif $worn.lower.name is "denim shorts">> + <<if $worn.lower.state is "waist">> + <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/denimshorts/ankles.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<elseif $worn.lower.state is "thighs">> + <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/denimshorts/thighs.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<elseif $worn.lower.state is "knees">> + <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/denimshorts/knees.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<elseif $worn.lower.state is "ankles">> + <<if _feet_pos is "footjob_">> + <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/denimshorts/ankles.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<else>> + <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/denimshorts/footjob_ankles.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <</if>> + <</if>> +<<elseif $worn.lower.name is "booty jorts">> + <<if $worn.lower.state is "waist">> + <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/bootyjorts/ankles.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<elseif $worn.lower.state is "thighs">> + <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/bootyjorts/thighs.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<elseif $worn.lower.state is "knees">> + <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/bootyjorts/knees.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<elseif $worn.lower.state is "ankles">> + <<if _feet_pos is "footjob_">> + <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/bootyjorts/footjob_ankles.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<else>> + <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/bootyjorts/ankles.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <</if>> + <</if>> <<elseif !$worn.lower.type.includes("naked") and $worn.upper.set isnot $worn.lower.set>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> - <<if setup.clothes.lower[$worn.lower.index].short is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <<if $worn.lower.skirt_down is 0 and $worn.lower.state is "waist">> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/skirt/doggyactive_skirt_waist.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <<elseif $worn.lower.vagina_exposed is 1>> @@ -727,7 +781,7 @@ <<elseif $worn.lower.state is "waist">> <<if $worn.lower.name is "jeans">> <img @class="'layer-sexlower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/jeans/' + _feet_pos + 'waist.png'"> - <<elseif setup.clothes.lower[$worn.lower.index].short is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/shorts/' + _feet_pos + 'waist.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <<else>> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/trousers/' + _feet_pos + 'waist.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> @@ -735,7 +789,7 @@ <<elseif $worn.lower.state is "thighs">> <<if $worn.lower.name is "jeans">> <img @class="'layer-sexlower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/jeans/' + _feet_pos + 'thighs.png'"> - <<elseif setup.clothes.lower[$worn.lower.index].short is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/shorts/' + _feet_pos + 'thighs.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <<else>> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/trousers/' + _feet_pos + 'thighs.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> @@ -743,7 +797,7 @@ <<elseif $worn.lower.state is "knees">> <<if $worn.lower.name is "jeans">> <img @class="'layer-sexlower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/jeans/' + _feet_pos + 'knees.png'"> - <<elseif setup.clothes.lower[$worn.lower.index].short is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/shorts/' + _feet_pos + 'knees.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <<else>> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/trousers/' + _feet_pos + 'knees.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> @@ -751,7 +805,7 @@ <<elseif $worn.lower.state is "ankles">> <<if $worn.lower.name is "jeans">> <img @class="'layer-sexlower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/jeans/' + _feet_pos + 'ankles.png'"> - <<elseif setup.clothes.lower[$worn.lower.index].short is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/shorts/' + _feet_pos + 'ankles.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <<else>> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/trousers/' + _feet_pos + 'ankles.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> @@ -836,8 +890,21 @@ <<elseif $worn.upper.name is "sweater" or $worn.upper.name is "girl's sweater">> <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/sweater/' + $worn.upper.state + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> -<<elseif $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper" or $worn.upper.name is "turtleneck">> - <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/turtleneck/' + $worn.upper.state + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> +<<elseif $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper">> + <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/long turtleneck/' + $worn.upper.state + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> +<<elseif $worn.upper.name is "turtleneck">> + <<switch $player.perceived_breastsize>> + <<case 8 9 10 11 12>> + <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/turtleneck/' + $worn.upper.state + ($worn.upper.state is 'chest' ? ('_' + '4') : '') + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> + <<case 5 6 7>> + <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/turtleneck/' + $worn.upper.state + ($worn.upper.state is 'chest' ? ('_' + '3') : '') + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> + <<case 3 4>> + <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/turtleneck/' + $worn.upper.state + ($worn.upper.state is 'chest' ? ('_' + '2') : '') + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> + <<case 1 2>> + <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/turtleneck/' + $worn.upper.state + ($worn.upper.state is 'chest' ? ('_' + '1') : '') + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> + <<case 0>> + <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/turtleneck/' + $worn.upper.state + ($worn.upper.state is 'chest' ? ('_' + '0') : '') + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> + <</switch>> <<elseif !$worn.upper.type.includes("naked") and $worn.upper.set isnot $worn.lower.set>> <<if $leftarm isnot "bound" and $leftarm isnot "grappled" and $leftarm isnot "behind">> <<if $worn.upper.state is "waist">> @@ -854,8 +921,10 @@ <</if>> <</if>> -<<if setup.clothes.upper[$worn.upper.index].sleeve_img is 1 and $worn.upper.name isnot "t-shirt">> - <<if $worn.upper.name is "sweater" or $worn.upper.name is "girl's sweater" or $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper" or $worn.upper.name is "turtleneck">> +<<if setup.clothes.upper[clothesIndex('upper', $worn.upper)].sleeve_img is 1 and $worn.upper.name isnot "t-shirt">> + <<if $worn.upper.name is "turtleneck">> + <<set _sleeves to "turtleneck">> + <<elseif $worn.upper.name is "sweater" or $worn.upper.name is "girl's sweater" or $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper">> <<set _sleeves to "sweatersleeves">> <<else>> <<set _sleeves to "sleeves">> @@ -1032,7 +1101,7 @@ <<else>> <<set _feetjob to "rest">> <</if>> - <<if $worn.legs.state is setup.clothes.legs[$worn.legs.index].state_base>> + <<if $worn.legs.state is setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base>> <<set _feetposition to "full">> <<else>> <<set _feetposition to "knees">> @@ -1044,10 +1113,10 @@ <<set _legAccColour to $worn.legs.accessory_colourCustom>> <</if>> - <<if setup.clothes.legs[$worn.legs.index].state_base is "waist">> + <<if setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "waist">> <img @class="'layer-sexlegs colour-legs anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/legs/' + $worn.legs.variable + '/' + _feetposition + _feetjob + '.png'" @style="_legColour"> - <<elseif setup.clothes.legs[$worn.legs.index].state_base is "ankles">> + <<elseif setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "ankles">> <img @class="'layer-sexlegs colour-legs anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/legs/' + $worn.legs.variable + '/' + _feetjob + '.png'" @style="_legColour"> <<else>> @@ -1057,10 +1126,10 @@ + $worn.legs.variable + '/' + _feetposition + _feetjob + 'right' + '.png'" @style="_legColour"> <</if>> <<if $worn.legs.accessory>> - <<if setup.clothes.legs[$worn.legs.index].state_base is "waist">> + <<if setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "waist">> <img @class="'layer-sexlegsacc colour-legs_acc anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/legs/' + $worn.legs.variable + '/' + _feetposition + _feetjob + 'acc.png'" @style="_legAccColour"> - <<elseif setup.clothes.legs[$worn.legs.index].state_base is "ankles">> + <<elseif setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "ankles">> <img @class="'layer-sexlegsacc colour-legs_acc anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/legs/' + $worn.legs.variable + '/' + _feetjob + 'acc.png'" @style="_legAccColour"> <<else>> @@ -1084,7 +1153,7 @@ <img class="layer-sexlower anim-idle-2f" src="img/sex/doggy/active/head/minisnowman/idle.png"> <</if>> -<<if $worn.upper.set is $worn.lower.set and setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if $worn.upper.set is $worn.lower.set and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.upper.state is "waist">> <<if $worn.lower.skirt_down is 1>> <img class="layer-sexlower colour-upper anim-idle-2f" src="img/sex/doggy/active/dress/doggyactive_dress_thighs.png" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> @@ -1105,7 +1174,7 @@ <</if>> <<if $worn.lower.name is "towel skirt">> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.lower.skirt_down is 0 and $worn.lower.state is "waist">> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.lower.skirt_down is 0 and $worn.lower.state is "waist">> <img class="layer-sexlower colour-lower anim-idle-2f" @src="'img/sex/doggy/active/lowertowel/doggyactive_towel_skirtup.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <<else>> @@ -1122,6 +1191,34 @@ <<elseif $worn.lower.state is "ankles">> <img class="layer-sexlower colour-lower anim-idle-2f" src="img/sex/doggy/active/gymbloomers/doggyactive_shorts_ankles.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <</if>> +<<elseif $worn.lower.name is "denim shorts">> + <<if $worn.lower.state is "waist">> + <img class="layer-sexlower colour-lower anim-idle-2f" src="img/sex/doggy/active/denimshorts/waist.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<elseif $worn.lower.state is "thighs">> + <img class="layer-sexlower colour-lower anim-idle-2f" src="img/sex/doggy/active/denimshorts/thighs.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<elseif $worn.lower.state is "knees">> + <img class="layer-sexlower colour-lower anim-idle-2f" src="img/sex/doggy/active/denimshorts/knees.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<elseif $worn.lower.state is "ankles">> + <<if _feet_pos is "footjob_">> + <img class="layer-sexlower colour-lower anim-idle-2f" src="img/sex/doggy/active/denimshorts/footjob_ankles.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<else>> + <img class="layer-sexlower colour-lower anim-idle-2f" src="img/sex/doggy/active/denimshorts/ankles.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <</if>> + <</if>> +<<elseif $worn.lower.name is "booty jorts">> + <<if $worn.lower.state is "waist">> + <img class="layer-sexlower colour-lower anim-idle-2f" src="img/sex/doggy/active/bootyjorts/waist.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<elseif $worn.lower.state is "thighs">> + <img class="layer-sexlower colour-lower anim-idle-2f" src="img/sex/doggy/active/bootyjorts/thighs.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<elseif $worn.lower.state is "knees">> + <img class="layer-sexlower colour-lower anim-idle-2f" src="img/sex/doggy/active/bootyjorts/knees.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<elseif $worn.lower.state is "ankles">> + <<if _feet_pos is "footjob_">> + <img class="layer-sexlower colour-lower anim-idle-2f" src="img/sex/doggy/active/bootyjorts/footjob_ankles.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <<else>> + <img class="layer-sexlower colour-lower anim-idle-2f" src="img/sex/doggy/active/bootyjorts/ankles.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> + <</if>> + <</if>> <<elseif $worn.lower.name is "micro pleated skirt">> <<switch $worn.lower.state>> <<case "waist">> @@ -1143,8 +1240,8 @@ @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <</switch>> <<elseif !$worn.lower.type.includes("naked") and $worn.upper.set isnot $worn.lower.set>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> - <<if setup.clothes.lower[$worn.lower.index].short is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <<if $worn.lower.skirt_down is 0 and $worn.lower.state is "waist">> <img class="layer-sexlower colour-lower anim-idle-2f" src="img/sex/doggy/active/skirt/doggyactive_skirt_waist.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <<elseif $worn.lower.vagina_exposed is 1>> @@ -1172,7 +1269,7 @@ <<elseif $worn.lower.state is "waist">> <<if $worn.lower.name is "jeans">> <img class="layer-sexlower anim-idle-2f" @src="'img/sex/doggy/active/jeans/' + _feet_pos + 'waist.png'"> - <<elseif setup.clothes.lower[$worn.lower.index].short is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <img class="layer-sexlower colour-lower anim-idle-2f" @src="'img/sex/doggy/active/shorts/' + _feet_pos + 'waist.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <<else>> <img class="layer-sexlower colour-lower anim-idle-2f" @src="'img/sex/doggy/active/trousers/' + _feet_pos + 'waist.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> @@ -1180,7 +1277,7 @@ <<elseif $worn.lower.state is "thighs">> <<if $worn.lower.name is "jeans">> <img class="layer-sexlower anim-idle-2f" @src="'img/sex/doggy/active/jeans/' + _feet_pos + 'thighs.png'"> - <<elseif setup.clothes.lower[$worn.lower.index].short is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <img class="layer-sexlower colour-lower anim-idle-2f" @src="'img/sex/doggy/active/shorts/' + _feet_pos + 'thighs.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <<else>> <img class="layer-sexlower colour-lower anim-idle-2f" @src="'img/sex/doggy/active/trousers/' + _feet_pos + 'thighs.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> @@ -1188,7 +1285,7 @@ <<elseif $worn.lower.state is "knees">> <<if $worn.lower.name is "jeans">> <img class="layer-sexlower anim-idle-2f" @src="'img/sex/doggy/active/jeans/' + _feet_pos + 'knees.png'"> - <<elseif setup.clothes.lower[$worn.lower.index].short is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <img class="layer-sexlower colour-lower anim-idle-2f" @src="'img/sex/doggy/active/shorts/' + _feet_pos + 'knees.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <<else>> <img class="layer-sexlower colour-lower anim-idle-2f" @src="'img/sex/doggy/active/trousers/' + _feet_pos + 'knees.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> @@ -1196,7 +1293,7 @@ <<elseif $worn.lower.state is "ankles">> <<if $worn.lower.name is "jeans">> <img class="layer-sexlower anim-idle-2f" @src="'img/sex/doggy/active/jeans/' + _feet_pos + 'ankles.png'"> - <<elseif setup.clothes.lower[$worn.lower.index].short is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <img class="layer-sexlower colour-lower anim-idle-2f" @src="'img/sex/doggy/active/shorts/' + _feet_pos + 'ankles.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <<else>> <img class="layer-sexlower colour-lower anim-idle-2f" @src="'img/sex/doggy/active/trousers/' + _feet_pos + 'ankles.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> @@ -1279,8 +1376,21 @@ <</if>> <<elseif $worn.upper.name is "sweater" or $worn.upper.name is "girl's sweater">> <img class="layer-sexupper colour-upper anim-idle-2f" @src="'img/sex/doggy/active/sweater/' + $worn.upper.state + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> -<<elseif $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper" or $worn.upper.name is "turtleneck">> - <img class="layer-sexupper colour-upper anim-idle-2f" @src="'img/sex/doggy/active/turtleneck/' + $worn.upper.state + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> +<<elseif $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper">> + <img class="layer-sexupper colour-upper anim-idle-2f" @src="'img/sex/doggy/active/long turtleneck/' + $worn.upper.state + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> +<<elseif $worn.upper.name is "turtleneck">> + <<switch $player.perceived_breastsize>> + <<case 8 9 10 11 12>> + <img class="layer-sexupper colour-upper anim-idle-2f" @src="'img/sex/doggy/active/turtleneck/' + $worn.upper.state + ($worn.upper.state is 'chest' ? ('_' + '4') : '') + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> + <<case 5 6 7>> + <img class="layer-sexupper colour-upper anim-idle-2f" @src="'img/sex/doggy/active/turtleneck/' + $worn.upper.state + ($worn.upper.state is 'chest' ? ('_' + '3') : '') + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> + <<case 3 4>> + <img class="layer-sexupper colour-upper anim-idle-2f" @src="'img/sex/doggy/active/turtleneck/' + $worn.upper.state + ($worn.upper.state is 'chest' ? ('_' + '2') : '') + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> + <<case 1 2>> + <img class="layer-sexupper colour-upper anim-idle-2f" @src="'img/sex/doggy/active/turtleneck/' + $worn.upper.state + ($worn.upper.state is 'chest' ? ('_' + '1') : '') + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> + <<case 0>> + <img class="layer-sexupper colour-upper anim-idle-2f" @src="'img/sex/doggy/active/turtleneck/' + $worn.upper.state + ($worn.upper.state is 'chest' ? ('_' + '0') : '') + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> + <</switch>> <<elseif $worn.upper.name is "tie-front top">> <<if $worn.upper.state is "waist">> <<switch $player.perceived_breastsize>> @@ -1318,8 +1428,10 @@ <</if>> <</if>> -<<if setup.clothes.upper[$worn.upper.index].sleeve_img is 1 and $worn.upper.name isnot "t-shirt">> - <<if $worn.upper.name is "sweater" or $worn.upper.name is "girl's sweater" or $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper" or $worn.upper.name is "turtleneck">> +<<if setup.clothes.upper[clothesIndex('upper', $worn.upper)].sleeve_img is 1 and $worn.upper.name isnot "t-shirt">> + <<if $worn.upper.name is "turtleneck">> + <<set _sleeves to "turtleneck">> + <<elseif $worn.upper.name is "sweater" or $worn.upper.name is "girl's sweater" or $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper">> <<set _sleeves to "sweatersleeves">> <<else>> <<set _sleeves to "sleeves">> @@ -1487,7 +1599,7 @@ <<else>> <<set _feetjob to "rest">> <</if>> - <<if $worn.legs.state is setup.clothes.legs[$worn.legs.index].state_base>> + <<if $worn.legs.state is setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base>> <<set _feetposition to "full">> <<else>> <<set _feetposition to "knees">> @@ -1499,10 +1611,10 @@ <<set _legAccColour to $worn.legs.accessory_colourCustom>> <</if>> - <<if setup.clothes.legs[$worn.legs.index].state_base is "waist">> + <<if setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "waist">> <img class="layer-sexlegs colour-legs anim-doggy-2f" @src="'img/sex/doggy/active/legs/' + $worn.legs.variable + '/' + _feetposition + _feetjob + '.png'" @style="_legColour"> - <<elseif setup.clothes.legs[$worn.legs.index].state_base is "ankles">> + <<elseif setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "ankles">> <img class="layer-sexlegs colour-legs anim-doggy-2f" @src="'img/sex/doggy/active/legs/' + $worn.legs.variable + '/' + _feetjob + '.png'" @style="_legColour"> <<else>> @@ -1512,10 +1624,10 @@ + $worn.legs.variable + '/' + _feetposition + _feetjob + 'right' + '.png'" @style="_legColour"> <</if>> <<if $worn.legs.accessory>> - <<if setup.clothes.legs[$worn.legs.index].state_base is "waist">> + <<if setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "waist">> <img class="layer-sexlegsacc colour-legs_acc anim-doggy-2f" @src="'img/sex/doggy/active/legs/' + $worn.legs.variable + '/' + _feetposition + _feetjob + 'acc.png'" @style="_legAccColour"> - <<elseif setup.clothes.legs[$worn.legs.index].state_base is "ankles">> + <<elseif setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "ankles">> <img class="layer-sexlegsacc colour-legs_acc anim-doggy-2f" @src="'img/sex/doggy/active/legs/' + $worn.legs.variable + '/' + _feetjob + 'acc.png'" @style="_legAccColour"> <<else>> @@ -1543,7 +1655,9 @@ <<if !$worn.upper.type.includes("naked") and $worn.upper.name isnot "gym shirt" and $worn.upper.name isnot "tube top" and $worn.upper.name isnot "towel top">> - <<if $player.perceived_breastsize is 0>> + <<if $worn.upper.name is "turtleneck" and $worn.upper.state is "chest">> + + <<elseif $player.perceived_breastsize is 0>> <img class="layer-sexupper colour-upper anim-idle-2f" src="img/sex/missionary/idle/breastcover/none.png" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> <<elseif $player.perceived_breastsize lte 2>> <img class="layer-sexupper colour-upper anim-idle-2f" src="img/sex/missionary/idle/breastcover/tiny.png" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> @@ -1556,8 +1670,9 @@ <</if>> <</if>> -<<if !$worn.under_upper.type.includes("naked") and $worn.under_upper.state_top is setup.clothes.under_upper[$worn.under_upper.index].state_top_base and $worn.under_upper.name isnot "chest wrap" and $worn.under_upper.name isnot "mesh shirt" and $worn.under_upper.name isnot "tape">> - <<if $player.perceived_breastsize is 0>> +<<if !$worn.under_upper.type.includes("naked") and $worn.under_upper.state_top is setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_top_base and $worn.under_upper.name isnot "chest wrap" and $worn.under_upper.name isnot "mesh shirt" and $worn.under_upper.name isnot "tape">> + <<if $worn.upper.name is "turtleneck" and $worn.upper.state is "midriff">> + <<elseif $player.perceived_breastsize is 0>> <img class="layer-sexunder colour-under_upper anim-idle-2f" src="img/sex/missionary/idle/breastcover/none.png" @style="($worn.under_upper.colour is 'custom'? $worn.under_upper.colourCustom + _underUpperOpacity : '')"> <<elseif $player.perceived_breastsize lte 2>> <img class="layer-sexunder colour-under_upper anim-idle-2f" src="img/sex/missionary/idle/breastcover/tiny.png" @style="($worn.under_upper.colour is 'custom'? $worn.under_upper.colourCustom + _underUpperOpacity : '')"> @@ -1570,7 +1685,7 @@ <</if>> <</if>> -<<if $worn.upper.set is $worn.lower.set and setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if $worn.upper.set is $worn.lower.set and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.upper.state is "waist">> <<if $worn.lower.skirt_down is 1>> <<if $anususe is "penis" or _leg_position is "up">> @@ -1646,8 +1761,10 @@ <</if>> <<elseif $worn.upper.name is "sweater" or $worn.upper.name is "girl's sweater">> <img class="layer-sexupper colour-upper anim-idle-2f" @src="'img/sex/missionary/active/sweater/' + $worn.upper.state + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> -<<elseif $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper" or $worn.upper.name is "turtleneck">> - <img class="layer-sexupper colour-upper anim-idle-2f" @src="'img/sex/missionary/active/turtleneck/' + $worn.upper.state + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> +<<elseif $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper">> + <img class="layer-sexupper colour-upper anim-idle-2f" @src="'img/sex/missionary/active/long turtleneck/' + $worn.upper.state + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> +<<elseif $worn.upper.name is "turtleneck">> + <img class="layer-sexupper colour-upper anim-idle-2f" @src="'img/sex/missionary/active/turtleneck/' + $worn.upper.state + ($worn.upper.state is 'chest' and $player.perceived_breastsize >= 8 ? '_huge' : '') + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> <<elseif $worn.upper.name is "tube top" or $worn.upper.name is "towel top">> <<if $worn.upper.state_top is "chest">> <<if $player.perceived_breastsize is 0>> @@ -1682,8 +1799,10 @@ <</if>> <</if>> -<<if setup.clothes.upper[$worn.upper.index].sleeve_img is 1 and $worn.upper.name isnot "t-shirt">> - <<if $worn.upper.name is "sweater" or $worn.upper.name is "girl's sweater" or $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper" or $worn.upper.name is "turtleneck">> +<<if setup.clothes.upper[clothesIndex('upper', $worn.upper)].sleeve_img is 1 and $worn.upper.name isnot "t-shirt">> + <<if $worn.upper.name is "turtleneck">> + <<set _sleeves to "turtleneck">> + <<elseif $worn.upper.name is "sweater" or $worn.upper.name is "girl's sweater" or $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper">> <<set _sleeves to "sweatersleeves">> <<else>> <<set _sleeves to "sleeves">> @@ -1700,7 +1819,7 @@ <img @class="'layer-sexsleeve colour-upper anim-doggy-2f-'+_animspeed" @src="'img/sex/missionary/active/' + _sleeves + '/right_sleeve_bound.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> <<elseif $enemytype is "beast" and $monster isnot 1 and _stanceCheck is "top" and $leftarm isnot "bound" and $leftarm isnot "grappled" and $leftarm isnot "behind">> <img @class="'layer-sexsleeve colour-upper anim-doggy-2f-'+_animspeed" @src="'img/sex/missionary/active/' + _sleeves + '/right_sleeve_stroke.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> - <<elseif $leftarm isnot "bound" and $leftarm isnot "grappled" and $leftarm isnot "behind">> + <<else>> <img @class="'layer-sexsleeve colour-upper anim-doggy-2f-'+_animspeed" @src="'img/sex/missionary/active/' + _sleeves + '/right_sleeve.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> <</if>> <</if>> @@ -1754,8 +1873,12 @@ <img class="layer-sexlower colour-lower anim-idle-2f" src="img/sex/missionary/active/gymbloomers/ankledown.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <</if>> <</if>> -<<elseif !$worn.lower.type.includes("naked") and $worn.upper.set isnot $worn.lower.set and setup.clothes.lower[$worn.lower.index].skirt is 1>> - <<if setup.clothes.lower[$worn.lower.index].short is 1>> +<<elseif $worn.lower.name is "denim shorts">> + <img class="layer-sexlower anim-idle-2f" @src="'img/sex/missionary/active/denimshorts/' + $worn.lower.state + _feet_pos + '.png'"> +<<elseif $worn.lower.name is "booty jorts">> + <img class="layer-sexlower anim-idle-2f" @src="'img/sex/missionary/active/bootyjorts/' + $worn.lower.state + _feet_pos + '.png'"> +<<elseif !$worn.lower.type.includes("naked") and $worn.upper.set isnot $worn.lower.set and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <<if $worn.lower.state is "waist">> <<if $worn.lower.skirt_down is 1>> <<if $anususe is "penis" or _leg_position is "up">> @@ -1783,7 +1906,7 @@ <<elseif !$worn.lower.type.includes("naked") and $worn.upper.set isnot $worn.lower.set>> <<if $worn.lower.name is "jeans">> <img class="layer-sexlower anim-idle-2f" @src="'img/sex/missionary/active/jeans/' + $worn.lower.state + _feet_pos + '.png'"> - <<elseif setup.clothes.lower[$worn.lower.index].short is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <img class="layer-sexlower colour-lower anim-idle-2f" @src="'img/sex/missionary/active/shorts/' + $worn.lower.state + _feet_pos + '.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <<else>> <img class="layer-sexlower colour-lower anim-idle-2f" @src="'img/sex/missionary/active/trousers/' + $worn.lower.state + _feet_pos + '.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> @@ -1951,7 +2074,7 @@ <<else>> <<set _feetjob to "down">> <</if>> - <<if $worn.legs.state is setup.clothes.legs[$worn.legs.index].state_base>> + <<if $worn.legs.state is setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base>> <<set _feetposition to "full">> <<else>> <<set _feetposition to "knees">> @@ -1963,10 +2086,10 @@ <<set _legAccColour to $worn.legs.accessory_colourCustom>> <</if>> - <<if setup.clothes.legs[$worn.legs.index].state_base is "waist">> + <<if setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "waist">> <img class="layer-sexlegs colour-legs anim-missionary-2f" @src="'img/sex/missionary/active/legs/' + $worn.legs.variable + '/' + _feetposition + _feetjob + '.png'" @style="_legColour"> - <<elseif setup.clothes.legs[$worn.legs.index].state_base is "ankles">> + <<elseif setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "ankles">> <<if _feetjob is "feetjob">> <img class="layer-sexlegs colour-legs anim-missionary-2f" @src="'img/sex/missionary/active/legs/' + $worn.legs.variable + '/' + _feetjob + 'left' + '.png'" @style="_legColour"> @@ -1988,10 +2111,10 @@ <</if>> <</if>> <<if $worn.legs.accessory>> - <<if setup.clothes.legs[$worn.legs.index].state_base is "waist">> + <<if setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "waist">> <img class="layer-sexlegsbackacc colour-legs_acc anim-missionary-2f" @src="'img/sex/missionary/active/legs/' + $worn.legs.variable + '/' + _feetposition + _feetjob + 'acc.png'" @style="_legAccColour"> - <<elseif setup.clothes.legs[$worn.legs.index].state_base is "ankles">> + <<elseif setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "ankles">> <img class="layer-sexlegsacc colour-legs_acc anim-missionary-2f" @src="'img/sex/missionary/active/legs/' + $worn.legs.variable + '/' + _feetjob + 'acc.png'" @style="_legAccColour"> <<else>> @@ -2012,12 +2135,13 @@ <<if $worn.head.name is "mini snowman">> <img class="layer-sexupper anim-idle-2f" src="img/sex/missionary/active/head/minisnowman/active.png"> -<</if>> +<</if>> <<if !$worn.upper.type.includes("naked") and $worn.upper.name isnot "gym shirt" and $worn.upper.name isnot "tube top" and $worn.upper.name isnot "towel top">> - <<if $player.perceived_breastsize is 0>> + <<if $worn.upper.name is "turtleneck" and $worn.upper.state is "chest">> + <<elseif $player.perceived_breastsize is 0>> <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/breastcover/none.png" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> <<elseif $player.perceived_breastsize lte 2>> <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/breastcover/tiny.png" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> @@ -2030,8 +2154,9 @@ <</if>> <</if>> -<<if !$worn.under_upper.type.includes("naked") and $worn.under_upper.state_top is setup.clothes.under_upper[$worn.under_upper.index].state_top_base and $worn.under_upper.name isnot "chest wrap" and $worn.under_upper.name isnot "mesh shirt" and $worn.under_upper.name isnot "tape">> - <<if $player.perceived_breastsize is 0>> +<<if !$worn.under_upper.type.includes("naked") and $worn.under_upper.state_top is setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_top_base and $worn.under_upper.name isnot "chest wrap" and $worn.under_upper.name isnot "mesh shirt" and $worn.under_upper.name isnot "tape">> + <<if $worn.upper.name is "turtleneck" and $worn.upper.state is "midriff">> + <<elseif $player.perceived_breastsize is 0>> <img @class="'layer-sexunder colour-under_upper anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/breastcover/none.png" @style="($worn.under_upper.colour is 'custom'? $worn.under_upper.colourCustom + _underUpperOpacity : '')"> <<elseif $player.perceived_breastsize lte 2>> <img @class="'layer-sexunder colour-under_upper anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/breastcover/tiny.png" @style="($worn.under_upper.colour is 'custom'? $worn.under_upper.colourCustom + _underUpperOpacity : '')"> @@ -2044,7 +2169,7 @@ <</if>> <</if>> -<<if $worn.upper.set is $worn.lower.set and setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if $worn.upper.set is $worn.lower.set and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.upper.state is "waist">> <<if $worn.lower.skirt_down is 1>> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/skirt/waist.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> @@ -2097,8 +2222,10 @@ <<elseif $worn.upper.name is "sweater" or $worn.upper.name is "girl's sweater">> <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/sweater/' + $worn.upper.state + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> -<<elseif $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper" or $worn.upper.name is "turtleneck">> - <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/turtleneck/' + $worn.upper.state + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> +<<elseif $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper">> + <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/long turtleneck/' + $worn.upper.state + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> +<<elseif $worn.upper.name is "turtleneck">> + <img @class="'layer-sexupper colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/turtleneck/' + $worn.upper.state + ($worn.upper.state is 'chest' and $player.perceived_breastsize >= 8 ? '_huge' : '') + '.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> <<elseif $worn.upper.name is "tube top" or $worn.upper.name is "towel top">> <<if $worn.upper.state_top is "chest">> <<if $player.perceived_breastsize is 0>> @@ -2132,8 +2259,10 @@ <</if>> -<<if setup.clothes.upper[$worn.upper.index].sleeve_img is 1 and $worn.upper.name isnot "t-shirt">> - <<if $worn.upper.name is "sweater" or $worn.upper.name is "girl's sweater" or $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper" or $worn.upper.name is "turtleneck">> +<<if setup.clothes.upper[clothesIndex('upper', $worn.upper)].sleeve_img is 1 and $worn.upper.name isnot "t-shirt">> + <<if $worn.upper.name is "turtleneck">> + <<set _sleeves to "turtleneck">> + <<elseif $worn.upper.name is "sweater" or $worn.upper.name is "girl's sweater" or $worn.upper.name is "cable knit turtleneck" or $worn.upper.name is "turtleneck jumper">> <<set _sleeves to "sweatersleeves">> <<else>> <<set _sleeves to "sleeves">> @@ -2150,7 +2279,7 @@ <img @class="'layer-sexsleeve colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/' + _sleeves + '/right_sleeve_bound.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> <<elseif $enemytype is "beast" and $monster isnot 1 and _stanceCheck is "top" and $leftarm isnot "bound" and $leftarm isnot "grappled" and $leftarm isnot "behind">> <img @class="'layer-sexsleeve colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/' + _sleeves + '/right_sleeve_stroke.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> - <<elseif $leftarm isnot "bound" and $leftarm isnot "grappled" and $leftarm isnot "behind">> + <<else>> <img @class="'layer-sexsleeve colour-upper anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/' + _sleeves + '/right_sleeve.png'" @style="($worn.upper.colour is 'custom' ? $worn.upper.colourCustom + _upperOpacity : '')"> <</if>> <</if>> @@ -2198,8 +2327,12 @@ <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/gymbloomers/ankle.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <</if>> <</if>> -<<elseif !$worn.lower.type.includes("naked") and $worn.upper.set isnot $worn.lower.set and setup.clothes.lower[$worn.lower.index].skirt is 1>> - <<if setup.clothes.lower[$worn.lower.index].short is 1>> +<<elseif $worn.lower.name is "denim shorts">> + <img @class="'layer-sexlower anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/denimshorts/' + $worn.lower.state + _feet_pos + '.png'"> +<<elseif $worn.lower.name is "booty jorts">> + <img @class="'layer-sexlower anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/bootyjorts/' + $worn.lower.state + _feet_pos + '.png'"> +<<elseif !$worn.lower.type.includes("naked") and $worn.upper.set isnot $worn.lower.set and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <<if $worn.lower.state is "waist">> <<if $worn.lower.skirt_down is 1>> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/skirt/waist.png" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> @@ -2223,7 +2356,7 @@ <<elseif !$worn.lower.type.includes("naked") and $worn.upper.set isnot $worn.lower.set>> <<if $worn.lower.name is "jeans">> <img @class="'layer-sexlower anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/jeans/' + $worn.lower.state + _feet_pos + '.png'"> - <<elseif setup.clothes.lower[$worn.lower.index].short is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].short is 1>> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/shorts/' + $worn.lower.state + _feet_pos + '.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> <<else>> <img @class="'layer-sexlower colour-lower anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/trousers/' + $worn.lower.state + _feet_pos + '.png'" @style="($worn.lower.colour is 'custom'? $worn.lower.colourCustom + _lowerOpacity : '')"> @@ -2393,7 +2526,7 @@ <<set _legl to 'down'>> <<set _legr to 'down'>> <</if>> - <<if $worn.legs.state is setup.clothes.legs[$worn.legs.index].state_base>> + <<if $worn.legs.state is setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base>> <<set _feetposition to "full">> <<else>> <<set _feetposition to "knees">> @@ -2405,10 +2538,10 @@ <<set _legAccColour to $worn.legs.accessory_colourCustom>> <</if>> - <<if setup.clothes.legs[$worn.legs.index].state_base is "waist">> + <<if setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "waist">> <img @class="'layer-sexlegs colour-legs anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/legs/' + $worn.legs.variable + '/' + _feetposition + _legr + '.png'" @style="_legColour"> - <<elseif setup.clothes.legs[$worn.legs.index].state_base is "ankles">> + <<elseif setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "ankles">> <<if _legr is "feetjob">> <img @class="'layer-sexlegs colour-legs anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/legs/' + $worn.legs.variable + '/' + _legr + '.png'" @style="_legColour"> @@ -2432,10 +2565,10 @@ <</if>> <</if>> <<if $worn.legs.accessory>> - <<if setup.clothes.legs[$worn.legs.index].state_base is "waist">> + <<if setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "waist">> <img @class="'layer-sexlegsacc colour-legs_acc anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/legs/' + $worn.legs.variable + '/' + _feetposition + _legr + 'acc.png'" @style="_legAccColour"> - <<elseif setup.clothes.legs[$worn.legs.index].state_base is "ankles">> + <<elseif setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base is "ankles">> <<if _legr is "feetjob">> <img @class="'layer-sexlegsbackacc colour-legs_acc anim-doggy-4f-'+_animspeed" @src="'img/sex/missionary/active/legs/' + $worn.legs.variable + '/' + _legr + 'acc.png'" @style="_legAccColour"> @@ -2572,7 +2705,7 @@ <<if $worn.under_upper.mainImage isnot 0>> <img @class="_class" @src="'img/clothes/under_upper/' + $worn.under_upper.variable + '/' + _imgName + '.png'" @style="_style"> <</if>> - <<if setup.clothes.under_upper[$worn.under_upper.index].breast_img is 1>> + <<if setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].breast_img is 1>> <img @class="_class" @src="'img/clothes/under_upper/' + $worn.under_upper.variable + '/' + (Math.min(_breastSize, 5)) + '.png'" @style="_style"> <</if>> <<if $worn.under_upper.accessory is 1>> @@ -2774,7 +2907,7 @@ <<case 3>><<set _upperWetness to " clothes-drenshed">> <<default>><<set _upperWetness to "">> <</switch>> - <<set _tucked = $upperTucked and !setup.clothes.upper[$worn.upper.index].notuck and $worn.upper.outfitPrimary is undefined ? " tucked" : "">> + <<set _tucked = $upperTucked and !setup.clothes.upper[clothesIndex('upper', $worn.upper)].notuck and $worn.upper.outfitPrimary is undefined ? " tucked" : "">> <div @class="'clothes-div layer-upper' + _tucked + _upperWetness"> <<if $worn.upper.mainImage isnot 0>> <<if $worn.upper.integrity lte (clothingData('upper',$worn.upper,'integrity_max') / 10) * 2>> @@ -2788,7 +2921,7 @@ <</if>> <img @class="_class" @src="'img/clothes/upper/' + $worn.upper.variable + '/' + _imgName + '.png'" @style="_style"> <</if>> - <<if setup.clothes.upper[$worn.upper.index].breast_img is 1>> + <<if setup.clothes.upper[clothesIndex('upper', $worn.upper)].breast_img is 1>> <img @class="_class" @src="'img/clothes/upper/' + $worn.upper.variable + '/' + (Math.min(_breastSize, 5)) + '.png'" @style="_style"> <</if>> <<if $worn.upper.accessory is 1>> @@ -2804,7 +2937,7 @@ "no": "", "secondary": _classAcc }[$worn.upper.sleeve_colour||""]>> - <<if _coverRight isnot undefined and setup.clothes.upper[$worn.upper.index].sleeve_img is 1>> + <<if _coverRight isnot undefined and setup.clothes.upper[clothesIndex('upper', $worn.upper)].sleeve_img is 1>> <div @class="'clothes-div layer-rightarmclothes' + _upperWetness"> <<if _coverRight is true>> <img @class="_sleeveClass" @src="'img/clothes/upper/' + $worn.upper.variable + '/' + 'right_cover.png'" @style="_style"> @@ -2813,7 +2946,7 @@ <</if>> </div> <</if>> - <<if _coverLeft isnot undefined and setup.clothes.upper[$worn.upper.index].sleeve_img is 1>> + <<if _coverLeft isnot undefined and setup.clothes.upper[clothesIndex('upper', $worn.upper)].sleeve_img is 1>> <div @class="'clothes-div layer-leftarmclothes' + _upperWetness"> <<if _coverLeft is true>> <img @class="_sleeveClass" @src="'img/clothes/upper/' + $worn.upper.variable + '/' + 'left_cover.png'" @style="_style"> @@ -2841,7 +2974,7 @@ <<if $worn.over_upper.mainImage isnot 0>> <img @class="_class" @src="'img/clothes/over_upper/' + $worn.over_upper.variable + '/' + _imgName + '.png'" @style="_style"> <</if>> - <<if setup.clothes.over_upper[$worn.over_upper.index].breast_img is 1>> + <<if setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].breast_img is 1>> <img @class="_class" @src="'img/clothes/over_upper/' + $worn.over_upper.variable + '/' + (Math.min(_breastSize, 5)) + '.png'" @style="_style"> <</if>> <<if $worn.over_upper.accessory is 1>> @@ -2854,7 +2987,7 @@ "no": "", "secondary": _classAcc }[$worn.over_upper.sleeve_colour||""]>> - <<if _coverRight isnot undefined and setup.clothes.over_upper[$worn.over_upper.index].sleeve_img is 1>> + <<if _coverRight isnot undefined and setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].sleeve_img is 1>> <div class="layer-rightarmoverclothes"> <<if _coverRight is true>> <img @class="_sleeveClass" @src="'img/clothes/over_upper/' + $worn.over_upper.variable + '/' + 'right_cover.png'" @style="_style"> @@ -2863,7 +2996,7 @@ <</if>> </div> <</if>> - <<if _coverLeft isnot undefined and setup.clothes.over_upper[$worn.over_upper.index].sleeve_img is 1>> + <<if _coverLeft isnot undefined and setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].sleeve_img is 1>> <div class="layer-leftarmoverclothes"> <<if _coverLeft is true>> <img @class="_sleeveClass" @src="'img/clothes/over_upper/' + $worn.over_upper.variable + '/' + 'left_cover.png'" @style="_style"> @@ -3066,11 +3199,37 @@ <</if>> <img class="layer-fronthair colour-hair" @src="'img/hair/fringe/' + $fringetype + '/' + $fringelengthstage + '.png'"> - <<if $hairlengthstage is "thighs" and $hairtype is "default">> - <img class="layer-backhair colour-hair" src="img/hair/red/backhairthighsred.png"> - <<elseif $hairlengthstage is "feet" and $hairtype is "default">> - <img class="layer-backhair colour-hair" src="img/hair/red/backhairfeetred.png"> - <</if>> + <<if $hairlengthstage is "thighs">> + <<switch $hairtype>> + <<case "default">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/default/thighs.png"> + <<case "loose">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/loose/thighs.png"> + <<case "curl">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/curl/thighs.png"> + <<case "defined curl">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/defined curl/thighs.png"> + <<case "neat">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/neat/thighs.png"> + <<default>> + <</switch>> + <<elseif $hairlengthstage is "feet">> + <<switch $hairtype>> + <<case "default">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/default/feet.png"> + <<case "loose">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/loose/feet.png"> + <<case "straight">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/straight/feet.png"> + <<case "curl">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/curl/feet.png"> + <<case "defined curl">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/defined curl/feet.png"> + <<case "neat">> + <img class="layer-backhair colour-hair anim-idle-2f" src="img/hair/back/neat/feet.png"> + <<default>> + <</switch>> + <</if>> <<if $neverNudeMenus>> /* If player doesn't want to see nude character in menus, render the default breifs or bra + panties on their body */ diff --git a/game/base-clothing/init.twee b/game/base-clothing/init.twee index 777287a2f530f3026933b73c0890a6cd2cb5e168..ed4efddba25990cc26159ef1f2601a7b73aa9629 100644 --- a/game/base-clothing/init.twee +++ b/game/base-clothing/init.twee @@ -2,6 +2,7 @@ <<widget "clothing_data">> <<set setup.clothes to {}>> +<<set setup.moddedClothes to {}>> <<init_over_upper>> <<init_over_lower>> <<init_upper>> diff --git a/game/base-clothing/storeActions.twee b/game/base-clothing/storeActions.twee index d1e71a5b3b46205c6f0a39454e5d5d9b6bd7201a..b4c780ec1ceb1291c2591022b15eb0d58570a5b2 100644 --- a/game/base-clothing/storeActions.twee +++ b/game/base-clothing/storeActions.twee @@ -256,9 +256,9 @@ <!-- set up the checks --> <<set _over_upper_protected to $worn.over_upper.exposed lt 2 or $player.gender_appearance_without_overwear isnot "f"; - _over_lower_protected to $worn.over_lower.exposed lt 2 and !setup.clothes.over_lower[$worn.over_lower.index].skirt; + _over_lower_protected to $worn.over_lower.exposed lt 2 and !setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt; _upper_protected to $worn.upper.exposed lt 2 or $player.gender_appearance_without_overwear isnot "f"; - _lower_protected to $worn.lower.exposed lt 2 and !setup.clothes.lower[$worn.lower.index].skirt; + _lower_protected to $worn.lower.exposed lt 2 and !setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt; _under_upper_protected to !$worn.under_upper.exposed or $player.gender_appearance_without_overwear isnot "f"; _under_lower_protected to !$worn.under_lower.exposed; >> diff --git a/game/base-clothing/update.twee b/game/base-clothing/update.twee index 6511f7389dffa3f4e159b687d328a9deb157e55c..e9b05dd9bbcfb3fe0b02c677fa425e38cc60946c 100644 --- a/game/base-clothing/update.twee +++ b/game/base-clothing/update.twee @@ -7,7 +7,7 @@ <<for _i to 0; _i lt _equip.length; _i++>> <<set _worn to $worn[_equip[_i]]>> - <<set _default to setup.clothes[_equip[_i]][_worn.index]>> + <<set _default to setup.clothes[_equip[_i]][clothesIndex(_equip[_i],_worn)]>> <<set _keys to Object.keys(_default)>> <<for _j to 0; _j lt _keys.length; _j++>> <<if _skip.includes(_keys[_j])>> @@ -55,7 +55,7 @@ <</if>> <<set _carried to $carried[_equip[_i]]>> - <<set _default to setup.clothes[_equip[_i]][_carried.index]>> + <<set _default to setup.clothes[_equip[_i]][clothesIndex(_equip[_i],_carried)]>> <<set _keys to Object.keys(_default)>> <<for _j to 0; _j lt _keys.length; _j++>> <<if _skip.includes(_keys[_j])>> @@ -100,7 +100,7 @@ <</if>> <<for _j to 0; _j lt $wardrobe[_equip[_i]].length; _j++>> <<set _wardrobe to $wardrobe[_equip[_i]][_j]>> - <<set _default to setup.clothes[_equip[_i]][_wardrobe.index]>> + <<set _default to setup.clothes[_equip[_i]][clothesIndex(_equip[_i],_wardrobe)]>> <<set _keys to Object.keys(_default)>> <<for _k to 0; _k lt _keys.length; _k++>> <<if _skip.includes(_keys[_k])>> diff --git a/game/base-clothing/wardrobes.twee b/game/base-clothing/wardrobes.twee index a75360a4cf4f9a5a114d1a5eef1a7868ee425536..0e04866fa5d7af27953c63f23c3a9df4b272058f 100644 --- a/game/base-clothing/wardrobes.twee +++ b/game/base-clothing/wardrobes.twee @@ -633,7 +633,7 @@ Type: <label>Everyday <<radiobutton "$outfit_type" 0 checked>></label> | <label> Currently equipped: <<if $worn[_wardrobe_list].name isnot "naked">> <<set _wornItem to $worn[_wardrobe_list]>> - <<set _wornItemData to setup.clothes[_wardrobe_list][_wornItem.index]>> + <<set _wornItemData to setup.clothes[_wardrobe_list][clothesIndex(_wardrobe_list,_wornItem)]>> <<clothingicon _wornItem _wardrobe_list>> <<print _wornItemData.name_cap>> <<if _wornItem.colour isnot 0>> @@ -731,7 +731,7 @@ Type: <label>Everyday <<radiobutton "$outfit_type" 0 checked>></label> | <label> <<for _i to 0; _i lt _selectedWardrobe[_wardrobe_list].length; _i++>> <<set _item to _selectedWardrobe[_wardrobe_list][_i]>> - <<set _itemData to setup.clothes[_wardrobe_list][_item.index]>> + <<set _itemData to setup.clothes[_wardrobe_list][clothesIndex(_wardrobe_list,_item)]>> <<if _item.outfitSecondary isnot undefined>> <<if _item.outfitSecondary[1] isnot "broken">> <<continue>> @@ -846,7 +846,7 @@ Type: <label>Everyday <<radiobutton "$outfit_type" 0 checked>></label> | <label> <<widget "oldWardrobeListDisplay">> <<wardrobeClothingOptions>> -<<if $worn.lower.name isnot "naked" and $worn.upper.outfitPrimary is undefined and !setup.clothes.upper[$worn.upper.index].notuck>> +<<if $worn.lower.name isnot "naked" and $worn.upper.outfitPrimary is undefined and !setup.clothes.upper[clothesIndex('upper', $worn.upper)].notuck>> <<if $upperTucked>> <<link [["Untuck " + $worn.upper.name|$passage]]>><<set $upperTucked = 0>><</link>> <<else>> @@ -939,7 +939,7 @@ __<<print _wardrobe_list[0].toUpperCase() + _wardrobe_list.substring(1) + (_show <<if (_item.outfitPrimary isnot undefined and _showType is "non-outfits") or (_item.outfitPrimary is undefined and _showType is "outfits")>> <<continue>> <</if>> - <li class="no-numberify">/*<<clothingicon _item>>*/<<wearlink_norefresh setup.clothes[_wardrobe_list][_item.index].name_cap _i _wear>> + <li class="no-numberify">/*<<clothingicon _item>>*/<<wearlink_norefresh setup.clothes[_wardrobe_list][clothesIndex(_wardrobe_list,_item)].name_cap _i _wear>> <<if _selectedWardrobe[_wardrobe_list][_i].colour isnot 0>> <span @class="_selectedWardrobe[_wardrobe_list][_i].colour">(_item.colour)</span> <</if>> @@ -1549,7 +1549,7 @@ to the crate and send them to be sold? Might be best to go shopping shortly afte <<set _value to 0>> <<for _label, _items range $wardrobe>> <<for _i to 0; _i lt _items.length; _i++>> - <<if setup.clothes[_label][_items[_i].index].shop.length is 0>> + <<if setup.clothes[_label][clothesIndex(_label,_items[_i])].shop.length is 0>> <<continue>> <</if>> <<if _items[_i].outfitSecondary isnot undefined>> @@ -1578,7 +1578,7 @@ It will earn you <<printmoney `_value + 5000`>>. <<for $_i to 0; $_i lt _equip.length; $_i++>> <<set _toDelete to []>> <<for $_j to 0; $_j lt $wardrobe[_equip[$_i]].length; $_j++>> - <<if setup.clothes[_equip[$_i]][$wardrobe[_equip[$_i]][$_j].index].shop.length is 0>> + <<if setup.clothes[_equip[$_i]][clothesIndex(_equip[$_i],$wardrobe[_equip[$_i]][$_j])].shop.length is 0>> <<continue>> <</if>> <<if $wardrobe[_equip[$_i]][$_j].outfitSecondary isnot undefined>> @@ -1667,7 +1667,7 @@ It will cost you <<set $wardrobeRepair[_equip[$_i]] to []>> <</if>> <<set _itemStats to [ - clone($wardrobe[_equip[$_i]][$_j].index), + clone(clothesIndex(_equip[$_i],$wardrobe[_equip[$_i]][$_j])), clone($wardrobe[_equip[$_i]][$_j].colour), clone($wardrobe[_equip[$_i]][$_j].colourCustom), clone($wardrobe[_equip[$_i]][$_j].accessory_colour), diff --git a/game/base-clothing/widgets.twee b/game/base-clothing/widgets.twee index dbf9c6e3c4b24520ba535bd30fb6d4fa28efa862..fd0f7098efc148a6e9b4e78b0ff7a53f41bef67a 100644 --- a/game/base-clothing/widgets.twee +++ b/game/base-clothing/widgets.twee @@ -411,7 +411,7 @@ <<generalStrip "feet">> <</widget>> -<!-- Returns all carried clothes back to the wardrobe --> +/*Returns all carried clothes back to the wardrobe*/ <<widget "returnCarried">> <<set _skip to ["naked","towel top","large towel","towel skirt","large towel bottom","plant skirt","plant top"]>> @@ -475,8 +475,8 @@ <<underlowerruined>> <</widget>> -<!-- $args[0] = slot name --> -<!-- $args[1] = true for ruin all pieces of an outfit --> +/*$args[0] = slot name*/ +/*$args[1] = true for ruin all pieces of an outfit*/ <<widget "generalRuined">> <<if $args[0]>> <<set $eventskipoverrule to 1>> @@ -494,50 +494,12 @@ <</switch>> /*Re-buy*/ - <<if $args[0] isnot "genitals">> - <<if $carried[$args[0]].name isnot "naked" and $clothingrebuy is 1 and $carried[$args[0]].one_piece isnot "broken" and setup.clothes[$args[0]][$carried[$args[0]].index].shop.length gt 0>> - <<if $carried[$args[0]].colourCustom isnot undefined>><<set _colourCustom to $carried[$args[0]].colourCustom>><</if>> - <<if $carried[$args[0]].accessory_colourCustom isnot undefined>><<set _accessory_colourCustom to $carried[$args[0]].accessory_colourCustom>><</if>> - <<set $_return to clothesReturnLocation($carried[$args[0]],"rebuy")>> - <<if $carried[$args[0]].outfitSecondary isnot undefined>> - <<set _outfitSecondaryRebuy to $carried[$args[0]].outfitSecondary>> - <<if $money gte Math.trunc(getClothingCost($carried[_outfitSecondaryRebuy[0]],_outfitSecondaryRebuy[0]) * 1.5)>> - <<generalSend $_return _outfitSecondaryRebuy[0] $carried[_outfitSecondaryRebuy[0]].index $carried[_outfitSecondaryRebuy[0]].colour $carried[_outfitSecondaryRebuy[0]].accessory_colour>> - <<set $money -= Math.trunc(getClothingCost($carried[_outfitSecondaryRebuy[0]],_outfitSecondaryRebuy[0]) * 1.5)>> - <<set $effectsmessage to 1>><<run $rebuy_success.push([clone($carried[_outfitSecondaryRebuy[0]].name),$_return])>> - <<else>> - <<set $effectsmessage to 1>><<run $rebuy_failure.push(clone($carried[_outfitSecondaryRebuy[0]].name))>> - <</if>> - <<unset _outfitSecondaryRebuy>> - <<elseif $money gte Math.trunc(getClothingCost($carried[$args[0]],$args[0]) * 1.5)>> - <<generalSend `clothesReturnLocation($carried[$args[0]],"rebuy")` $args[0] $carried[$args[0]].index $carried[$args[0]].colour $carried[$args[0]].accessory_colour>> - <<set $money -= Math.trunc(getClothingCost($carried[$args[0]],$args[0]) * 1.5)>> - <<set $effectsmessage to 1>><<run $rebuy_success.push([clone($carried[$args[0]].name), $_return])>> - <<else>> - <<set $effectsmessage to 1>><<run $rebuy_failure.push(clone($carried[$args[0]].name))>> - <</if>> - <<elseif $clothingrebuy is 1 and $worn[$args[0]].one_piece isnot "broken" and setup.clothes[$args[0]][$worn[$args[0]].index].shop.length gt 0>> - <<if $worn[$args[0]].colourCustom isnot undefined>><<set _colourCustom to $worn[$args[0]].colourCustom>><</if>> - <<if $worn[$args[0]].accessory_colourCustom isnot undefined>><<set _accessory_colourCustom to $worn[$args[0]].accessory_colourCustom>><</if>> - <<if $worn[$args[0]].outfitSecondary isnot undefined>> - <<set _outfitSecondaryRebuy to $worn[$args[0]].outfitSecondary>> - <<if $money gte Math.trunc(getClothingCost($worn[_outfitSecondaryRebuy[0]],_outfitSecondaryRebuy[0]) * 1.5)>> - <<set $_return to clothesReturnLocation($worn[_outfitSecondaryRebuy[0]],"rebuy")>> - <<generalSend $_return _outfitSecondaryRebuy[0] $worn[_outfitSecondaryRebuy[0]].index $worn[_outfitSecondaryRebuy[0]].colour $worn[_outfitSecondaryRebuy[0]].accessory_colour>> - <<set $money -= Math.trunc(getClothingCost($worn[_outfitSecondaryRebuy[0]],_outfitSecondaryRebuy[0]) * 1.5)>> - <<set $effectsmessage to 1>><<run $rebuy_success.push([clone($worn[_outfitSecondaryRebuy[0]].name),$_return])>> - <<else>> - <<set $effectsmessage to 1>><<run $rebuy_failure.push(clone($worn[_outfitSecondaryRebuy[0]].name))>> - <</if>> - <<unset _outfitSecondaryRebuy>> - <<elseif $money gte Math.trunc(getClothingCost($worn[$args[0]],$args[0]) * 1.5)>> - <<set $_return to clothesReturnLocation($worn[$args[0]],"rebuy")>> - <<generalSend $_return $args[0] $worn[$args[0]].index $worn[$args[0]].colour $worn[$args[0]].accessory_colour>> - <<set $money -= Math.trunc(getClothingCost($worn[$args[0]],$args[0]) * 1.5)>> - <<set $effectsmessage to 1>><<run $rebuy_success.push([clone($worn[$args[0]].name),$_return])>> - <<else>> - <<set $effectsmessage to 1>><<run $rebuy_failure.push(clone($worn[$args[0]].name))>> - <</if>> + <<if $args[0] isnot "genitals" and $clothingrebuy is 1>> + <<if $carried[$args[0]].name isnot "naked">> + <<generalRuinedRebuy $args[0] $carried>> + <</if>> + <<if $worn[$args[0]].name isnot "naked">> + <<generalRuinedRebuy $args[0] $worn>> <</if>> <</if>> @@ -619,6 +581,38 @@ <</if>> <</widget>> +/*$args[0] - slot, $args[1] - $worn or $carried*/ +<<widget "generalRuinedRebuy">> +<<if $args[0] and $args[1]>> + <<set $_slot to $args[0]>> + <<set $_item to $args[1][$_slot]>> + <<set $_setupItem to setup.clothes[$_slot][clothesIndex($_slot,$_item)]>> + <<set $_return to clothesReturnLocation($_item,"rebuy")>> + + <<if $_setupItem.shop.length isnot 0>> + /*If item is half of an outfit, rebuy the primary half instead by redefining the variables defined above*/ + <<if $_item.outfitSecondary isnot undefined and $_item.outfitSecondary[1] isnot "broken">> + <<set $_slot to $_item.outfitSecondary[0]>> + <<set $_item to $args[1][$_slot]>> + <<set $_setupItem to setup.clothes[$_slot][clothesIndex($_slot,$_item)]>> + <</if>> + + <<set $_cost to Math.trunc(getClothingCost($_item, $_slot) * 1.5)>> + + <<if $_item.outfitSecondary isnot undefined and $_item.outfitSecondary[1] is "broken">> + <<elseif $money gte $_cost>> + <<generalSend $_return $_slot $_setupItem.index $_item.colour $_item.accessory_colour>> + <<set $money -= $_cost>> + <<run $rebuy_success.push([clone($_item.name), $_return])>> + <<set $effectsmessage to 1>> + <<else>> + <<run $rebuy_failure.push(clone($_item.name))>> + <<set $effectsmessage to 1>> + <</if>> + <</if>> +<</if>> +<</widget>> + <<widget "overupperruined">> <<generalRuined "over_upper">> <</widget>> @@ -750,32 +744,32 @@ /*Resets status of existing clothing*/ <<if _slots.includes("upper") or _onSlot is "upper">> - <<set $worn.upper.exposed to setup.clothes.upper[$worn.upper.index].exposed_base>> - <<set $worn.upper.state to setup.clothes.upper[$worn.upper.index].state_base>> - <<set $worn.upper.state_top to setup.clothes.upper[$worn.upper.index].state_top_base>> + <<set $worn.upper.exposed to setup.clothes.upper[clothesIndex('upper', $worn.upper)].exposed_base>> + <<set $worn.upper.state to setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_base>> + <<set $worn.upper.state_top to setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_top_base>> <</if>> <<if _slots.includes("lower") or _onSlot is "lower">> - <<set $worn.lower.exposed to setup.clothes.lower[$worn.lower.index].exposed_base>> - <<set $worn.lower.vagina_exposed to setup.clothes.lower[$worn.lower.index].vagina_exposed_base>> - <<set $worn.lower.anus_exposed to setup.clothes.lower[$worn.lower.index].anus_exposed_base>> - <<set $worn.lower.state to setup.clothes.lower[$worn.lower.index].state_base>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<set $worn.lower.exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].exposed_base>> + <<set $worn.lower.vagina_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].vagina_exposed_base>> + <<set $worn.lower.anus_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].anus_exposed_base>> + <<set $worn.lower.state to setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<set $worn.lower.skirt_down to 1>> <</if>> <</if>> <<if _slots.includes("under_upper") or _onSlot is "under_upper">> - <<set $worn.under_upper.exposed to setup.clothes.under_upper[$worn.under_upper.index].exposed_base>> - <<set $worn.under_upper.state to setup.clothes.under_upper[$worn.under_upper.index].state_base>> - <<set $worn.under_upper.state_top to setup.clothes.under_upper[$worn.under_upper.index].state_top_base>> + <<set $worn.under_upper.exposed to setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].exposed_base>> + <<set $worn.under_upper.state to setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_base>> + <<set $worn.under_upper.state_top to setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_top_base>> <</if>> <<if _slots.includes("under_lower") or _onSlot is "under_lower">> - <<set $worn.under_lower.state to setup.clothes.under_lower[$worn.under_lower.index].state_base>> - <<set $worn.under_lower.exposed to setup.clothes.under_lower[$worn.under_lower.index].exposed_base>> - <<set $worn.under_lower.vagina_exposed to setup.clothes.under_lower[$worn.under_lower.index].vagina_exposed_base>> - <<set $worn.under_lower.anus_exposed to setup.clothes.under_lower[$worn.under_lower.index].anus_exposed_base>> + <<set $worn.under_lower.state to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].state_base>> + <<set $worn.under_lower.exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].exposed_base>> + <<set $worn.under_lower.vagina_exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].vagina_exposed_base>> + <<set $worn.under_lower.anus_exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].anus_exposed_base>> <</if>> <<if _slots.includes("legs") or _onSlot is "legs">> - <<set $worn.legs.state to setup.clothes.legs[$worn.legs.index].state_base>> + <<set $worn.legs.state to setup.clothes.legs[clothesIndex('legs', $worn.legs)].state_base>> <</if>> <</if>> <</widget>> @@ -783,20 +777,20 @@ <<widget "overupperon">> <<generalOn "over_upper">> <<if $worn.over_upper.name isnot "naked">> - <<set $worn.over_upper.exposed to setup.clothes.over_upper[$worn.over_upper.index].exposed_base>> - <<set $worn.over_upper.state to setup.clothes.over_upper[$worn.over_upper.index].state_base>> - <<set $worn.over_upper.state_top to setup.clothes.over_upper[$worn.over_upper.index].state_top_base>> + <<set $worn.over_upper.exposed to setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].exposed_base>> + <<set $worn.over_upper.state to setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_base>> + <<set $worn.over_upper.state_top to setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_top_base>> <</if>> <</widget>> <<widget "overloweron">> <<generalOn "over_lower">> <<if $worn.over_lower.name isnot "naked">> - <<set $worn.over_lower.exposed to setup.clothes.over_lower[$worn.over_lower.index].exposed_base>> - <<set $worn.over_lower.vagina_exposed to setup.clothes.over_lower[$worn.over_lower.index].vagina_exposed_base>> - <<set $worn.over_lower.anus_exposed to setup.clothes.over_lower[$worn.over_lower.index].anus_exposed_base>> - <<set $worn.over_lower.state to setup.clothes.over_lower[$worn.over_lower.index].state_base>> - <<if setup.clothes.over_lower[$worn.over_lower.index].skirt is 1>> + <<set $worn.over_lower.exposed to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].exposed_base>> + <<set $worn.over_lower.vagina_exposed to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].vagina_exposed_base>> + <<set $worn.over_lower.anus_exposed to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].anus_exposed_base>> + <<set $worn.over_lower.state to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].state_base>> + <<if setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1>> <<set $worn.over_lower.skirt_down to 1>> <</if>> <</if>> @@ -805,20 +799,20 @@ <<widget "upperon">> <<generalOn "upper">> <<if $worn.upper.name isnot "naked">> - <<set $worn.upper.exposed to setup.clothes.upper[$worn.upper.index].exposed_base>> - <<set $worn.upper.state to setup.clothes.upper[$worn.upper.index].state_base>> - <<set $worn.upper.state_top to setup.clothes.upper[$worn.upper.index].state_top_base>> + <<set $worn.upper.exposed to setup.clothes.upper[clothesIndex('upper', $worn.upper)].exposed_base>> + <<set $worn.upper.state to setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_base>> + <<set $worn.upper.state_top to setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_top_base>> <</if>> <</widget>> <<widget "loweron">> <<generalOn "lower">> <<if $worn.lower.name isnot "naked">> - <<set $worn.lower.exposed to setup.clothes.lower[$worn.lower.index].exposed_base>> - <<set $worn.lower.vagina_exposed to setup.clothes.lower[$worn.lower.index].vagina_exposed_base>> - <<set $worn.lower.anus_exposed to setup.clothes.lower[$worn.lower.index].anus_exposed_base>> - <<set $worn.lower.state to setup.clothes.lower[$worn.lower.index].state_base>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<set $worn.lower.exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].exposed_base>> + <<set $worn.lower.vagina_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].vagina_exposed_base>> + <<set $worn.lower.anus_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].anus_exposed_base>> + <<set $worn.lower.state to setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<set $worn.lower.skirt_down to 1>> <</if>> <</if>> @@ -827,19 +821,19 @@ <<widget "underupperon">> <<generalOn "under_upper">> <<if $worn.under_upper.name isnot "naked">> - <<set $worn.under_upper.exposed to setup.clothes.under_upper[$worn.under_upper.index].exposed_base>> - <<set $worn.under_upper.state to setup.clothes.under_upper[$worn.under_upper.index].state_base>> - <<set $worn.under_upper.state_top to setup.clothes.under_upper[$worn.under_upper.index].state_top_base>> + <<set $worn.under_upper.exposed to setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].exposed_base>> + <<set $worn.under_upper.state to setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_base>> + <<set $worn.under_upper.state_top to setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_top_base>> <</if>> <</widget>> <<widget "underloweron">> <<generalOn "under_lower">> <<if $worn.under_lower.name isnot "naked">> - <<set $worn.under_lower.state to setup.clothes.under_lower[$worn.under_lower.index].state_base>> - <<set $worn.under_lower.exposed to setup.clothes.under_lower[$worn.under_lower.index].exposed_base>> - <<set $worn.under_lower.vagina_exposed to setup.clothes.under_lower[$worn.under_lower.index].vagina_exposed_base>> - <<set $worn.under_lower.anus_exposed to setup.clothes.under_lower[$worn.under_lower.index].anus_exposed_base>> + <<set $worn.under_lower.state to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].state_base>> + <<set $worn.under_lower.exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].exposed_base>> + <<set $worn.under_lower.vagina_exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].vagina_exposed_base>> + <<set $worn.under_lower.anus_exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].anus_exposed_base>> <</if>> <</widget>> @@ -1672,23 +1666,23 @@ <<widget "resetClothingState">> <<if $args[0] and $args[0] isnot "genitals">> - <<if setup.clothes[$args[0]][$worn[$args[0]].index].state_base>> - <<set $worn[$args[0]].state to setup.clothes[$args[0]][$worn[$args[0]].index].state_base>> + <<if setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].state_base>> + <<set $worn[$args[0]].state to setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].state_base>> <</if>> - <<if setup.clothes[$args[0]][$worn[$args[0]].index].state_top_base>> - <<set $worn[$args[0]].state_top to setup.clothes[$args[0]][$worn[$args[0]].index].state_top_base>> + <<if setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].state_top_base>> + <<set $worn[$args[0]].state_top to setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].state_top_base>> <</if>> - <<if setup.clothes[$args[0]][$worn[$args[0]].index].exposed_base>> - <<set $worn[$args[0]].exposed to setup.clothes[$args[0]][$worn[$args[0]].index].exposed_base>> + <<if setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].exposed_base>> + <<set $worn[$args[0]].exposed to setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].exposed_base>> <</if>> - <<if setup.clothes[$args[0]][$worn[$args[0]].index].skirt>> + <<if setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].skirt>> <<set $worn[$args[0]].skirt_down to 1>> <</if>> - <<if setup.clothes[$args[0]][$worn[$args[0]].index].vagina_exposed_base>> - <<set $worn[$args[0]].vagina_exposed to setup.clothes[$args[0]][$worn[$args[0]].index].vagina_exposed_base>> + <<if setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].vagina_exposed_base>> + <<set $worn[$args[0]].vagina_exposed to setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].vagina_exposed_base>> <</if>> - <<if setup.clothes[$args[0]][$worn[$args[0]].index].anus_exposed_base>> - <<set $worn[$args[0]].anus_exposed to setup.clothes[$args[0]][$worn[$args[0]].index].anus_exposed_base>> + <<if setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].anus_exposed_base>> + <<set $worn[$args[0]].anus_exposed to setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].anus_exposed_base>> <</if>> <</if>> <</widget>> \ No newline at end of file diff --git a/game/base-combat/actions-anus.twee b/game/base-combat/actions-anus.twee index 479e5dcef3ae57645c03aaaf1a4c7e1224374f3c..9a448e017e0fe02b463c23b81fb83f342a3c8def 100644 --- a/game/base-combat/actions-anus.twee +++ b/game/base-combat/actions-anus.twee @@ -136,11 +136,11 @@ <<if $vaginause is 0 and !$worn.genitals.type.includes("chastity")>> <<set _anusaction["Offer your pussy instead"] to "penispussy">> <</if>> -<<if $awareness gt 300 and $vaginause is "penis" and $NPCList[$vaginatarget].penissize gte 2 and $NPCList[$anustarget].penissize gte 2>> +<<if $vaginaldoubledisable is "f" and $awareness gt 300 and $vaginause is "penis" and $NPCList[$vaginatarget].penissize gte 2 and $NPCList[$anustarget].penissize gte 2 and !$worn.genitals.type.includes("chastity")>> <<set _anusaction["Offer double vaginal instead"] to "penispussydouble">> <</if>> <<set _anusaction["Tease the tip"] to "penistease">> -<<if _secondtarget is true and ($vaginause is 0 or ($vaginause isnot 0 and $vaginause isnot "penisdouble")) and $awareness gte 300>> +<<if $analdoubledisable is "f" and _secondtarget is true and ($vaginause is 0 or ($vaginause isnot 0 and $vaginause isnot "penisdouble")) and $awareness gte 300>> <<if $npc.includes($NPCList[$anusdoubletarget].fullDescription)>> <<set _anusaction["Straddle " + $NPCList[$anusdoubletarget].fullDescription + "'s " + $NPCList[$anusdoubletarget].penisdesc] to "anustopenisdouble">> <<else>> diff --git a/game/base-combat/actions-hands.twee b/game/base-combat/actions-hands.twee index 9f9514e3d71e419794782d368950f944766ea5c5..8e7ed1572371157a826fd64f41fadb46fd7a6686 100644 --- a/game/base-combat/actions-hands.twee +++ b/game/base-combat/actions-hands.twee @@ -116,7 +116,7 @@ <!-- Deprecated, not in use. See "leftclothesnew"--> <<widget "leftclothes">> -<<if $worn.upper.state is setup.clothes.upper[$worn.upper.index].state_base and $worn.upper.state_top is setup.clothes.upper[$worn.upper.index].state_top_base and !$worn.upper.type.includes("naked")>> +<<if $worn.upper.state is setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_base and $worn.upper.state_top is setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_top_base and !$worn.upper.type.includes("naked")>> <<if $leftactiondefault is "upper">> | <label>Displace your $worn.upper.name <<radiobutton "$leftaction" "upper" checked>></label> <<else>> @@ -124,7 +124,7 @@ <</if>> <</if>> -<<if $worn.under_upper.state is setup.clothes.under_upper[$worn.under_upper.index].state_base and $worn.under_upper.state_top is setup.clothes.under_upper[$worn.under_upper.index].state_top_base and !$worn.under_upper.type.includes("naked")>> +<<if $worn.under_upper.state is setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_base and $worn.under_upper.state_top is setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_top_base and !$worn.under_upper.type.includes("naked")>> <<if $leftactiondefault is "under_upper">> | <label>Displace your $worn.under_upper.name <<radiobutton "$leftaction" "under_upper" checked>></label> <<else>> @@ -132,13 +132,13 @@ <</if>> <</if>> -<<if $worn.lower.state is setup.clothes.lower[$worn.lower.index].state_base and setup.clothes.lower[$worn.lower.index].skirt isnot 1 and !$worn.lower.type.includes("naked")>> +<<if $worn.lower.state is setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt isnot 1 and !$worn.lower.type.includes("naked")>> <<if $leftactiondefault is "lower">> | <label>Displace your $worn.lower.name <<radiobutton "$leftaction" "lower" checked>></label> <<else>> | <label>Displace your $worn.lower.name <<radiobutton "$leftaction" "lower">></label> <</if>> -<<elseif setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.lower.skirt_down is 1>> +<<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.lower.skirt_down is 1>> <<if $leftactiondefault is "lower">> | <label>Displace your $worn.lower.name <<radiobutton "$leftaction" "lower" checked>></label> <<else>> @@ -146,8 +146,8 @@ <</if>> <</if>> -<<if $worn.under_lower.state is setup.clothes.under_lower[$worn.under_lower.index].state_base and !$worn.under_lower.type.includes("naked")>> - <<if $worn.lower.state isnot setup.clothes.lower[$worn.lower.index].state_base or setup.clothes.lower[$worn.lower.index].skirt is 1 or $worn.lower.type.includes("naked")>> +<<if $worn.under_lower.state is setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].state_base and !$worn.under_lower.type.includes("naked")>> + <<if $worn.lower.state isnot setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base or setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 or $worn.lower.type.includes("naked")>> <<if $leftactiondefault is "under">> | <label>Pull down your $worn.under_lower.name <<radiobutton "$leftaction" "under" checked>></label> <<else>> @@ -160,32 +160,32 @@ <<widget "leftclothesnew">> <<if $lefttarget is "self" or $targetYourself is false or _targetnumber is 1>> - <<if $worn.over_upper.state is setup.clothes.over_upper[$worn.over_upper.index].state_base and $worn.over_upper.state_top is setup.clothes.over_upper[$worn.over_upper.index].state_top_base and !$worn.over_upper.type.includes("naked")>> + <<if $worn.over_upper.state is setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_base and $worn.over_upper.state_top is setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_top_base and !$worn.over_upper.type.includes("naked")>> <<set _leftaction["Displace your "+$worn.over_upper.name] to "over_upper">> <</if>> - <<if $worn.upper.state is setup.clothes.upper[$worn.upper.index].state_base and $worn.upper.state_top is setup.clothes.upper[$worn.upper.index].state_top_base and !$worn.upper.type.includes("naked")>> + <<if $worn.upper.state is setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_base and $worn.upper.state_top is setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_top_base and !$worn.upper.type.includes("naked")>> <<set _leftaction["Displace your "+$worn.upper.name] to "upper">> <</if>> - <<if $worn.under_upper.state is setup.clothes.under_upper[$worn.under_upper.index].state_base and $worn.under_upper.state_top is setup.clothes.under_upper[$worn.under_upper.index].state_top_base and !$worn.under_upper.type.includes("naked")>> + <<if $worn.under_upper.state is setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_base and $worn.under_upper.state_top is setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_top_base and !$worn.under_upper.type.includes("naked")>> <<set _leftaction["Displace your "+$worn.under_upper.name] to "under_upper">> <</if>> - <<if $worn.over_lower.state is setup.clothes.over_lower[$worn.over_lower.index].state_base and setup.clothes.over_lower[$worn.over_lower.index].skirt isnot 1 and !$worn.over_lower.type.includes("naked")>> + <<if $worn.over_lower.state is setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].state_base and setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt isnot 1 and !$worn.over_lower.type.includes("naked")>> <<set _leftaction["Displace your "+$worn.over_lower.name] to "over_lower">> - <<elseif setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.over_lower.skirt_down is 1>> + <<elseif setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.over_lower.skirt_down is 1>> <<set _leftaction["Displace your "+$worn.over_lower.name] to "over_lower">> <</if>> - <<if $worn.lower.state is setup.clothes.lower[$worn.lower.index].state_base and setup.clothes.lower[$worn.lower.index].skirt isnot 1 and !$worn.lower.type.includes("naked")>> + <<if $worn.lower.state is setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt isnot 1 and !$worn.lower.type.includes("naked")>> <<set _leftaction["Displace your "+$worn.lower.name] to "lower">> - <<elseif setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.lower.skirt_down is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.lower.skirt_down is 1>> <<set _leftaction["Displace your "+$worn.lower.name] to "lower">> <</if>> - <<if $worn.under_lower.state is setup.clothes.under_lower[$worn.under_lower.index].state_base and !$worn.under_lower.type.includes("naked")>> - <<if $worn.lower.state isnot setup.clothes.lower[$worn.lower.index].state_base or setup.clothes.lower[$worn.lower.index].skirt is 1 or $worn.lower.type.includes("naked")>> + <<if $worn.under_lower.state is setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].state_base and !$worn.under_lower.type.includes("naked")>> + <<if $worn.lower.state isnot setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base or setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 or $worn.lower.type.includes("naked")>> <<set _leftaction["Displace your "+$worn.under_lower.name] to "under">> <</if>> <</if>> @@ -257,7 +257,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <<widget "leftpenwhacknew">> <<if $lefttarget isnot "self">> - <<if $NPCList[$lefttarget].lefthand is "pen" or $NPCList[$lefttarget].righthand is "pen">> + <<if (typeof($NPCList[$lefttarget].lefthand) is "string" and $NPCList[$lefttarget].lefthand.includes("pen")) or (typeof($NPCList[$lefttarget].righthand) is "string" and $NPCList[$lefttarget].righthand.includes("pen"))>> <<set _leftaction["Whack the writing tool away"] to "penwhack">> <</if>> <</if>> @@ -327,7 +327,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <</if>> <</if>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.lower.skirt_down is 0>> <<if $worn.lower.state is "waist">> <<set _leftaction["Cover your crotch with your " + $worn.lower.name] to "leftskirtpull">> @@ -337,33 +337,33 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <<if $worn.lower.name isnot "naked">> <<if $worn.upper.set is $worn.lower.set>> - <<if $worn.lower.state isnot setup.clothes.lower[$worn.lower.index].state_base and $worn.upper.state is setup.clothes.upper[$worn.upper.index].state_base and $worn.upper.state_top is setup.clothes.upper[$worn.upper.index].state_top_base>> + <<if $worn.lower.state isnot setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base and $worn.upper.state is setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_base and $worn.upper.state_top is setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_top_base>> <<set _leftaction["Fix your " + $worn.lower.name] to "leftlowerpull">> <</if>> - <<elseif $worn.lower.state isnot setup.clothes.lower[$worn.lower.index].state_base>> + <<elseif $worn.lower.state isnot setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base>> <<set _leftaction["Fix your " + $worn.lower.name] to "leftlowerpull">> <</if>> <</if>> <<if $worn.over_lower.name isnot "naked">> <<if $worn.over_upper.set is $worn.over_lower.set>> - <<if $worn.over_lower.state isnot setup.clothes.over_lower[$worn.over_lower.index].state_base and $worn.over_upper.state is setup.clothes.over_upper[$worn.over_upper.index].state_base and $worn.over_upper.state_top is setup.clothes.over_upper[$worn.over_upper.index].state_top_base>> + <<if $worn.over_lower.state isnot setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].state_base and $worn.over_upper.state is setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_base and $worn.over_upper.state_top is setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_top_base>> <<set _leftaction["Fix your " + $worn.over_lower.name] to "leftoverlowerpull">> <</if>> - <<elseif $worn.over_lower.state isnot setup.clothes.over_lower[$worn.over_lower.index].state_base>> + <<elseif $worn.over_lower.state isnot setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].state_base>> <<set _leftaction["Fix your " + $worn.over_lower.name] to "leftoverlowerpull">> <</if>> <</if>> <<if $worn.upper.name isnot "naked">> - <<if $worn.upper.state isnot setup.clothes.upper[$worn.upper.index].state_base or $worn.upper.state_top isnot setup.clothes.upper[$worn.upper.index].state_top_base>> + <<if $worn.upper.state isnot setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_base or $worn.upper.state_top isnot setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_top_base>> <<set _leftaction["Fix your " + $worn.upper.name] to "leftupperpull">> <</if>> <</if>> <<if $worn.over_upper.name isnot "naked">> - <<if $worn.over_upper.state isnot setup.clothes.over_upper[$worn.over_upper.index].state_base or $worn.over_upper.state_top isnot setup.clothes.over_upper[$worn.over_upper.index].state_top_base>> + <<if $worn.over_upper.state isnot setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_base or $worn.over_upper.state_top isnot setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_top_base>> <<set _leftaction["Fix your " + $worn.over_upper.name] to "leftoverupperpull">> <</if>> <</if>> @@ -523,7 +523,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <!-- Deprecated, not in use. See "rightclothesnew"--> <<widget "rightclothes">> -<<if $worn.upper.state is setup.clothes.upper[$worn.upper.index].state_base and $worn.upper.state_top is setup.clothes.upper[$worn.upper.index].state_top_base and !$worn.upper.type.includes("naked")>> +<<if $worn.upper.state is setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_base and $worn.upper.state_top is setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_top_base and !$worn.upper.type.includes("naked")>> <<if $rightactiondefault is "upper">> | <label>Displace your $worn.upper.name <<radiobutton "$rightaction" "upper" checked>></label> <<else>> @@ -531,7 +531,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <</if>> <</if>> -<<if $worn.under_upper.state is setup.clothes.under_upper[$worn.under_upper.index].state_base and $worn.under_upper.state_top is setup.clothes.under_upper[$worn.under_upper.index].state_top_base and !$worn.under_upper.type.includes("naked")>> +<<if $worn.under_upper.state is setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_base and $worn.under_upper.state_top is setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_top_base and !$worn.under_upper.type.includes("naked")>> <<if $rightactiondefault is "under_upper">> | <label>Displace your $worn.under_upper.name <<radiobutton "$rightaction" "under_upper" checked>></label> <<else>> @@ -539,13 +539,13 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <</if>> <</if>> -<<if $worn.lower.state is setup.clothes.lower[$worn.lower.index].state_base and setup.clothes.lower[$worn.lower.index].skirt isnot 1 and !$worn.lower.type.includes("naked")>> +<<if $worn.lower.state is setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt isnot 1 and !$worn.lower.type.includes("naked")>> <<if $rightactiondefault is "lower">> | <label>Displace your $worn.lower.name <<radiobutton "$rightaction" "lower" checked>></label> <<else>> | <label>Displace your $worn.lower.name <<radiobutton "$rightaction" "lower">></label> <</if>> -<<elseif setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.lower.skirt_down is 1>> +<<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.lower.skirt_down is 1>> <<if $rightactiondefault is "lower">> | <label>Displace your $worn.lower.name <<radiobutton "$rightaction" "lower" checked>></label> <<else>> @@ -553,8 +553,8 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <</if>> <</if>> -<<if $worn.under_lower.state is setup.clothes.under_lower[$worn.under_lower.index].state_base and !$worn.under_lower.type.includes("naked")>> - <<if $worn.lower.state isnot setup.clothes.lower[$worn.lower.index].state_base or setup.clothes.lower[$worn.lower.index].skirt is 1 or $worn.lower.type.includes("naked")>> +<<if $worn.under_lower.state is setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].state_base and !$worn.under_lower.type.includes("naked")>> + <<if $worn.lower.state isnot setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base or setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 or $worn.lower.type.includes("naked")>> <<if $rightactiondefault is "under">> | <label>Pull down your $worn.under_lower.name <<radiobutton "$rightaction" "under" checked>></label> <<else>> @@ -567,32 +567,32 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <<widget "rightclothesnew">> <<if $righttarget is "self" or $targetYourself is false or _targetnumber is 1>> - <<if $worn.over_upper.state is setup.clothes.over_upper[$worn.over_upper.index].state_base and $worn.over_upper.state_top is setup.clothes.over_upper[$worn.over_upper.index].state_top_base and !$worn.over_upper.type.includes("naked")>> + <<if $worn.over_upper.state is setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_base and $worn.over_upper.state_top is setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_top_base and !$worn.over_upper.type.includes("naked")>> <<set _rightaction["Displace your "+$worn.over_upper.name] to "over_upper">> <</if>> - <<if $worn.upper.state is setup.clothes.upper[$worn.upper.index].state_base and $worn.upper.state_top is setup.clothes.upper[$worn.upper.index].state_top_base and !$worn.upper.type.includes("naked")>> + <<if $worn.upper.state is setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_base and $worn.upper.state_top is setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_top_base and !$worn.upper.type.includes("naked")>> <<set _rightaction["Displace your "+$worn.upper.name] to "upper">> <</if>> - <<if $worn.under_upper.state is setup.clothes.under_upper[$worn.under_upper.index].state_base and $worn.under_upper.state_top is setup.clothes.under_upper[$worn.under_upper.index].state_top_base and !$worn.under_upper.type.includes("naked")>> + <<if $worn.under_upper.state is setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_base and $worn.under_upper.state_top is setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_top_base and !$worn.under_upper.type.includes("naked")>> <<set _rightaction["Displace your "+$worn.under_upper.name] to "under_upper">> <</if>> - <<if $worn.over_lower.state is setup.clothes.over_lower[$worn.over_lower.index].state_base and setup.clothes.over_lower[$worn.over_lower.index].skirt isnot 1 and !$worn.over_lower.type.includes("naked")>> + <<if $worn.over_lower.state is setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].state_base and setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt isnot 1 and !$worn.over_lower.type.includes("naked")>> <<set _rightaction["Displace your "+$worn.over_lower.name] to "over_lower">> - <<elseif setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.over_lower.skirt_down is 1>> + <<elseif setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.over_lower.skirt_down is 1>> <<set _rightaction["Displace your "+$worn.over_lower.name] to "over_lower">> <</if>> - <<if $worn.lower.state is setup.clothes.lower[$worn.lower.index].state_base and setup.clothes.lower[$worn.lower.index].skirt isnot 1 and !$worn.lower.type.includes("naked")>> + <<if $worn.lower.state is setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt isnot 1 and !$worn.lower.type.includes("naked")>> <<set _rightaction["Displace your "+$worn.lower.name] to "lower">> - <<elseif setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.lower.skirt_down is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.lower.skirt_down is 1>> <<set _rightaction["Displace your "+$worn.lower.name] to "lower">> <</if>> - <<if $worn.under_lower.state is setup.clothes.under_lower[$worn.under_lower.index].state_base and !$worn.under_lower.type.includes("naked")>> - <<if $worn.lower.state isnot setup.clothes.lower[$worn.lower.index].state_base or setup.clothes.lower[$worn.lower.index].skirt is 1 or $worn.lower.type.includes("naked")>> + <<if $worn.under_lower.state is setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].state_base and !$worn.under_lower.type.includes("naked")>> + <<if $worn.lower.state isnot setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base or setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 or $worn.lower.type.includes("naked")>> <<set _rightaction["Displace your "+$worn.under_lower.name] to "under">> <</if>> <</if>> @@ -667,7 +667,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <<widget "rightpenwhacknew">> <<if $righttarget isnot "self">> - <<if $NPCList[$righttarget].lefthand is "pen" or $NPCList[$righttarget].righthand is "pen">> + <<if (typeof($NPCList[$righttarget].lefthand) is "string" and $NPCList[$righttarget].lefthand.includes("pen")) or (typeof($NPCList[$righttarget].righthand) is "string" and $NPCList[$righttarget].righthand.includes("pen"))>> <<set _rightaction["Whack the writing tool away"] to "penwhack">> <</if>> <</if>> @@ -737,7 +737,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <</if>> <</if>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.lower.skirt_down is 0>> <<if $worn.lower.state is "waist">> <<set _rightaction["Cover your crotch with your " + $worn.lower.name] to "rightskirtpull">> @@ -747,32 +747,32 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <<if $worn.lower.name isnot "naked">> <<if $worn.upper.set is $worn.lower.set>> - <<if $worn.lower.state isnot setup.clothes.lower[$worn.lower.index].state_base and $worn.upper.state is setup.clothes.upper[$worn.upper.index].state_base and $worn.upper.state_top is setup.clothes.upper[$worn.upper.index].state_top_base>> + <<if $worn.lower.state isnot setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base and $worn.upper.state is setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_base and $worn.upper.state_top is setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_top_base>> <<set _rightaction["Fix your " + $worn.lower.name] to "rightlowerpull">> <</if>> - <<elseif $worn.lower.state isnot setup.clothes.lower[$worn.lower.index].state_base>> + <<elseif $worn.lower.state isnot setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base>> <<set _rightaction["Fix your " + $worn.lower.name] to "rightlowerpull">> <</if>> <</if>> <<if $worn.over_lower.name isnot "naked">> <<if $worn.over_upper.set is $worn.over_lower.set>> - <<if $worn.over_lower.state isnot setup.clothes.over_lower[$worn.over_lower.index].state_base and $worn.over_upper.state is setup.clothes.over_upper[$worn.over_upper.index].state_base and $worn.over_upper.state_top is setup.clothes.over_upper[$worn.over_upper.index].state_top_base>> + <<if $worn.over_lower.state isnot setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].state_base and $worn.over_upper.state is setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_base and $worn.over_upper.state_top is setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_top_base>> <<set _rightaction["Fix your " + $worn.over_lower.name] to "rightoverlowerpull">> <</if>> - <<elseif $worn.over_lower.state isnot setup.clothes.over_lower[$worn.over_lower.index].state_base>> + <<elseif $worn.over_lower.state isnot setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].state_base>> <<set _rightaction["Fix your " + $worn.over_lower.name] to "rightoverlowerpull">> <</if>> <</if>> <<if $worn.upper.name isnot "naked">> - <<if $worn.upper.state isnot setup.clothes.upper[$worn.upper.index].state_base or $worn.upper.state_top isnot setup.clothes.upper[$worn.upper.index].state_top_base>> + <<if $worn.upper.state isnot setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_base or $worn.upper.state_top isnot setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_top_base>> <<set _rightaction["Fix your " + $worn.upper.name] to "rightupperpull">> <</if>> <</if>> <<if $worn.over_upper.name isnot "naked">> - <<if $worn.over_upper.state isnot setup.clothes.over_upper[$worn.over_upper.index].state_base or $worn.over_upper.state_top isnot setup.clothes.over_upper[$worn.over_upper.index].state_top_base>> + <<if $worn.over_upper.state isnot setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_base or $worn.over_upper.state_top isnot setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_top_base>> <<set _rightaction["Fix your " + $worn.over_upper.name] to "rightoverupperpull">> <</if>> <</if>> @@ -1051,7 +1051,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <<set $worn.lower.vagina_exposed to 1>><<set $worn.lower.anus_exposed to 1>><<set $worn.lower.exposed to 2>> <<if $worn.lower.name is "naked">> You clutch the tattered remains of your clothing. - <<elseif setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<set $worn.lower.skirt_down to 0>> You lift up your $worn.lower.name, <span class="lewd">exposing your <<undies>>.</span> <<else>> @@ -1063,7 +1063,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <<set $leftaction to 0>><<set $leftactiondefault to "rest">><<set $worn.lower.anus_exposed to 1>><<set $worn.lower.vagina_exposed to 1>><<set $worn.lower.exposed to 2>> <<if $worn.lower.name is "naked">> You clutch the tattered remains of your clothing. - <<elseif setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<set $worn.lower.skirt_down to 0>> You lift up your $worn.lower.name, <span class="lewd">exposing your <<undies>>.</span> <<else>> @@ -1075,7 +1075,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <<set $rightaction to 0>><<set $rightactiondefault to "rest">><<set $worn.lower.anus_exposed to 1>><<set $worn.lower.vagina_exposed to 1>><<set $worn.lower.exposed to 2>> <<if $worn.lower.name is "naked">> You clutch the tattered remains of your clothing. - <<elseif setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<set $worn.lower.skirt_down to 0>> You lift up your $worn.lower.name, <span class="lewd">exposing your <<undies>>.</span> <<else>> @@ -1335,10 +1335,11 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <</widget>> <<widget "effectspenwhack">> +<!--todo: maybe add some botched tattoos if pen is too close --> <<if $leftaction is "penwhack">> <<set $leftaction to 0>> <<set $_target to $NPCList[$lefttarget]>> - <<if $_target.lefthand is "pen">> + <<if typeof($_target.lefthand) is "string" and $_target.lefthand.includes("pen")>> You whack the <<print $_target.lefttool>> from the <<personselect $lefttarget>><<persons>> hand. <<if $_target.fullDescription is "Sydney" or ($_target.fullDescription is "Kylar" and $NPCName[$NPCNameList.indexOf("Kylar")].rage lte 35) or $_target.type is "plant">> <<He>> pouts at you. @@ -1348,7 +1349,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <<brat 5 $lefttarget>> <</if>> <<brat 5 $lefttarget>><<set $_target.lefthand to 0>><<set $_target.lefttool to 0>> - <<elseif $_target.righthand is "pen">> + <<elseif typeof($_target.righthand) is "string" and $_target.righthand.includes("pen")>> You whack the <<print $_target.righttool>> from the <<personselect $lefttarget>><<persons>> hand. <<if $_target.fullDescription is "Sydney" or ($_target.fullDescription is "Kylar" and $NPCName[$NPCNameList.indexOf("Kylar")].rage lte 35) or $_target.type is "plant">> <<He>> pouts at you. @@ -1364,7 +1365,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <<if $rightaction is "penwhack">> <<set $rightaction to 0>> <<set $_target to $NPCList[$righttarget]>> - <<if $_target.lefthand is "pen">> + <<if typeof($_target.lefthand) is "string" and $_target.lefthand.includes("pen")>> You whack the <<print $_target.lefttool>> from the <<personselect $righttarget>><<persons>> hand. <<if $_target.fullDescription is "Sydney" or ($_target.fullDescription is "Kylar" and $NPCName[$NPCNameList.indexOf("Kylar")].rage lte 35) or $_target.type is "plant">> <<He>> pouts at you. @@ -1374,7 +1375,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <<brat 5 $righttarget>> <</if>> <<brat 5 $righttarget>><<set $_target.lefthand to 0>><<set $_target.lefttool to 0>> - <<elseif $_target.righthand is "pen">> + <<elseif typeof($_target.righthand) is "string" and $_target.righthand.includes("pen")>> You whack the <<print $_target.righttool>> from the <<personselect $righttarget>><<persons>> hand. <<if $_target.fullDescription is "Sydney" or ($_target.fullDescription is "Kylar" and $NPCName[$NPCNameList.indexOf("Kylar")].rage lte 35) or $_target.type is "plant">> <<He>> pouts at you. @@ -1451,8 +1452,9 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">> <<selectNpcWithPartInPosition "penis" "mouthotheranus">> <</if>> - <<willpowerdifficulty $drugged $willpowermax "silent">> - <<if (($mouthuse is "facesit" and $mouthstate is "vagina") or ["nipple","breasts"].includes($mouthstate)) and $NPCList[0].type is "plant" and !$willpowerSuccess>> + <<set _nectarDifficulty to Math.clamp($drugged, 0, 500) + Math.clamp($nectar_addiction, 0, 500)>> + <<willpowerdifficulty _nectarDifficulty $willpowermax "silent">> + <<if (($mouthuse is "facesit" and $mouthstate is "vagina") or ["nipple","breasts"].includes($mouthstate)) and ($NPCList[$lefttarget].type is "plant" or $NPCList[$righttarget].type is "plant") and !$willpowerSuccess>> <span class="red">but you can't tear yourself from the sweet nectar.</span> <<if $mouthstate is "nipple">> You desperately suck their $NPCList[0].breastdesc. diff --git a/game/base-combat/actions-mouth.twee b/game/base-combat/actions-mouth.twee index c1b6efe56641948d806ea902000995f69477007f..fbba194e883b4e4c01a31c5b6302075a9a80b2f9 100644 --- a/game/base-combat/actions-mouth.twee +++ b/game/base-combat/actions-mouth.twee @@ -1,71 +1,27 @@ :: Widgets Actions Mouth FlavorText [widget] <<widget "breastFlavorText">> -<<if $combattype is "train">> - <<set _end to $enemyno-1>> -<<else>> - <<set _end to 0>> -<</if>> - -<<for _j = $enemyno-1; _j gte _end; _j-->> - <<if $NPCList[_j].chest is "mouthentrance">> - Your head is pressed <<print ($NPCList[_j].breastsize gte 6?"between":"against")>> - <<if $enemyno gte 2>> - <<if _j is 0>> - the <<person1>><<persons>> - <<elseif _j is 1>> - the <<person2>><<persons>> - <<elseif _j is 2>> - the <<person3>><<persons>> - <<elseif _j is 3>> - the <<person4>><<persons>> - <<elseif _j is 4>> - the <<person5>><<persons>> - <<elseif _j is 5>> - the <<person6>><<persons>> - <</if>> - <<else>> - <<person1>><<his>> - <</if>> - $NPCList[_j].breastsdesc. - <<break>> + <<set _j to ($NPCList.findIndex(x => x.chest is "mouthentrance"))>><<personselect _j>> + Your head is pressed <<print ($NPCList[_j].breastsize gte 6?"between":"against")>> + <<if $enemyno gte 2>> + the <<persons>> + <<else>> + <<his>> <</if>> -<</for>> + $NPCList[_j].breastsdesc. <</widget>> <<widget "nippleFlavorText">> -<<if $combattype is "train">> - <<set _end to $enemyno-1>> -<<else>> - <<set _end to 0>> -<</if>> - -<<for _j = $enemyno-1; _j gte _end; _j-->> - <<if $NPCList[_j].chest is "mouth">> - Your head is pressed against - <<if $enemyno gte 2>> - <<if _j is 0>> - the <<person1>><<persons>> - <<elseif _j is 1>> - the <<person2>><<persons>> - <<elseif _j is 2>> - the <<person3>><<persons>> - <<elseif _j is 3>> - the <<person4>><<persons>> - <<elseif _j is 4>> - the <<person5>><<persons>> - <<elseif _j is 5>> - the <<person6>><<persons>> - <</if>> - <<else>> - <<person1>><<his>> - <</if>> - <<if $NPCList[_j].lactation is 1 and $breastfeedingdisable is "f">> - leaking - <</if>> - $NPCList[_j].breastdesc. - <<break>> + <<set _j to ($NPCList.findIndex(x => x.chest is "mouth"))>><<personselect _j>> + Your head is pressed against + <<if $enemyno gte 2>> + the <<persons>> + <<else>> + <<his>> + <</if>> + <<if $NPCList[_j].lactation is 1 and $breastfeedingdisable is "f">> + leaking <</if>> -<</for>> + $NPCList[_j].breastdesc. <</widget>> <<widget "facesitFlavorText">> diff --git a/game/base-combat/actions-penis.twee b/game/base-combat/actions-penis.twee index f6a712978cf94806f2aae2ed4b4f29337e6f597b..7f6cec8714e73c4edf6e17e75380ad15e67f1675 100644 --- a/game/base-combat/actions-penis.twee +++ b/game/base-combat/actions-penis.twee @@ -47,7 +47,7 @@ <<widget "actionspenistopenisfucknew">> <<set $_target to $NPCList[$penistarget]>> <<if $_target.penis is "penisentrance" or $_target.penis is "penisimminent">> - <<if $consensual is 1 and (($enemytype is "man" ? $promiscuity : $deviancy) lte 74 and !$promiscuityIgnore) or $_target.chastity.penis.includes("chastity")>> + <<if $consensual is 1 and (($enemytype is "man" ? $promiscuity : $deviancy) lte 54 and !$promiscuityIgnore) or $_target.chastity.penis.includes("chastity")>> <!-- Do Nothing --> <<else>> <<set _pp to "">> @@ -70,7 +70,7 @@ <<widget "actionspenistopenis">> <<set $_target to $NPCList[$penistarget]>> <<if $_target.penis is 0>> - <<if $consensual is 1 and ($enemytype is "man" ? $promiscuity : $deviancy) lte 74 and !$promiscuityIgnore>> + <<if $consensual is 1 and ($enemytype is "man" ? $promiscuity : $deviancy) lte 54 and !$promiscuityIgnore>> <!-- Do Nothing --> <<elseif $_target.stance isnot "topface" and ($enemytype isnot "man" or ($_target.location.genitals is 0 and $_target.location.head isnot "genitals"))>> <<if $_target.chastity.penis.includes("chastity")>> diff --git a/game/base-combat/actions-text.twee b/game/base-combat/actions-text.twee index 4b38d771fbdf482bc88134b6ab9cd168763aed9d..335b0c60595cc4e672781d915e01e90aeb104851 100644 --- a/game/base-combat/actions-text.twee +++ b/game/base-combat/actions-text.twee @@ -3709,7 +3709,7 @@ You <<feettext>> press your feet against <<their $args[0]>> pelvis and fondle << <<widget "actionspeniskiss">> You <<oraltext>> kiss the tip of <<their $args[0]>> penis. -<<if $NPCList[0].type is "plant">> +<<if $NPCList[$mouthtarget].type is "plant">> <span class="pink">You lap up sweet nectar with your tongue.</span> <<nectarfed 8>> <</if>> @@ -3717,7 +3717,7 @@ You <<oraltext>> kiss the tip of <<their $args[0]>> penis. <<widget "actionspenislick">> You <<oraltext>> lick <<their $args[0]>> penis. -<<if $NPCList[0].type is "plant">> +<<if $NPCList[$mouthtarget].type is "plant">> <span class="pink">You lap up sweet nectar with your tongue.</span> <<nectarfed 8>> <</if>> @@ -3741,7 +3741,7 @@ You <<oraltext>> lick <<their $args[0]>> penis. You <<oraltext>> suck the penis penetrating your mouth. <</if>> <</if>> -<<if $NPCList[0].type is "plant">> +<<if $NPCList[$mouthtarget].type is "plant">> <span class="pink">Sweet nectar drips into your mouth.</span> <<nectarfed 12>> <</if>> @@ -3755,7 +3755,7 @@ You <<oraltext>> lick <<their $args[0]>> penis. <<else>> You <<oraltext>> lick the pussy pressing against your mouth. <</if>> -<<if $NPCList[0].type is "plant">> +<<if $NPCList[$mouthtarget].type is "plant">> <span class="pink">You lap up sweet nectar with your tongue.</span> <<nectarfed 8>> <</if>> @@ -3805,13 +3805,13 @@ You <<oraltext>> lick <<their $args[0]>> penis. <<else>> You kiss them back, parting their lips with your tongue. <</if>> - <<if $NPCList[0].type is "plant">> + <<if $NPCList[$mouthtarget].type is "plant">> <span class="pink">Sweet nectar drips from <<his>> tongue and fills your mouth.</span> <<nectarfed 20>> <</if>> <<elseif $mouthstate is "kiss">> You kiss them back, caressing their tongue with your own. - <<if $NPCList[0].type is "plant">> + <<if $NPCList[$mouthtarget].type is "plant">> <span class="pink">Sweet nectar drips from <<his>> tongue and fills your mouth.</span> <<nectarfed 20>> <</if>> diff --git a/game/base-combat/actions-vagina.twee b/game/base-combat/actions-vagina.twee index 2b49cf65806c27a6b5e8f94ac2ee1c7d80d1372f..ca6af4360648e4d260874d3a6ba3f6494ca42d0a 100644 --- a/game/base-combat/actions-vagina.twee +++ b/game/base-combat/actions-vagina.twee @@ -203,7 +203,7 @@ <</if>> <</if>> <<set _vaginaaction["Tease the tip"] to "penistease">> -<<if _secondtarget is true and ($anususe is 0 or ($anususe isnot 0 and $anususe isnot "penisdouble")) and $awareness gte 300>> +<<if $vaginaldoubledisable is "f" and _secondtarget is true and ($anususe is 0 or ($anususe isnot 0 and $anususe isnot "penisdouble")) and $awareness gte 300>> <<if $npc.includes($NPCList[$vaginadoubletarget].fullDescription)>> <<set _vaginaaction["Straddle " + $NPCList[$vaginadoubletarget].fullDescription + "'s " + $NPCList[$vaginadoubletarget].penisdesc] to "vaginatopenisdouble">> <<else>> @@ -239,7 +239,7 @@ <<if ($consensual is 0 or ($promiscuity gte 55 and $enemytype is "man") or ($deviancy gte 55 and $enemytype isnot "man")) and $vaginalskill gte 800>> <<set _vaginaaction["Edging"] to "penisEdging">> <</if>> -<<if _secondtarget is true and ($anusause is 0 or ($anusause isnot 0 and $anusause isnot "penisdouble")) and $awareness gte 300>> +<<if $vaginaldoubledisable is "f" and _secondtarget is true and ($anususe is 0 or ($anususe isnot 0 and $anususe isnot "penisdouble")) and $awareness gte 300>> <<if $npc.includes($NPCList[$vaginadoubletarget].fullDescription)>> <<set _vaginaaction["Straddle " + $NPCList[$vaginadoubletarget].fullDescription + "'s " + $NPCList[$vaginadoubletarget].penisdesc] to "vaginatopenisdouble">> <<else>> diff --git a/game/base-combat/actions.twee b/game/base-combat/actions.twee index 2d5bb1f27075d459c02a37a3fb15dd514819266b..1cb8cd207902dcc5d92ca020e94a4a48e67d28b8 100644 --- a/game/base-combat/actions.twee +++ b/game/base-combat/actions.twee @@ -63,7 +63,7 @@ <<combatstate>> <<carryblock>> -<<if $trance lte 0 and $panicparalysis is 0 and ($panicviolence is 0 or $position is "stalk")>> +<<if $trance lte 0 and $panicparalysis is 0 and ($panicviolence is 0 or $position is "stalk") and !$possessed>> <<if $dissociation lte 1 and $orgasmdown lte 0 and ($pain lt 100 or $willpowerpain is undefined)>> <<if $images is 1 and $consensual is 1 and $position_lock isnot 1>> <<if $position is "doggy">> diff --git a/game/base-combat/actionsGeneration.twee b/game/base-combat/actionsGeneration.twee index b648ea84d34213cf94086e7df0acf7a8ca5ddc73..8a9f04656e313c7a2e756df805351ae36a2ca427 100644 --- a/game/base-combat/actionsGeneration.twee +++ b/game/base-combat/actionsGeneration.twee @@ -1512,10 +1512,10 @@ <<if $dissociation lte 1 and $orgasmdown lte 0 and ($pain lt 100 or $willpowerpain is undefined)>> <<if $bottomuse is "mouth">> <<set _anusOptions to "faceAgainstAnus">><<selectNpcWithPartInPosition "mouth" "bottom">><<set $anustarget to _j>> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')">You press your <<bottom>> against <<combatpersons>> face.</span> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')">You press your <<bottom>> against <<combatpersons>> face.</span> <<elseif $bottomuse is "penis">> - <<set _anusOptions to "penisAgainstAnus">> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')"><<selectNpcWithPartInPosition "penis" "cheeks">><<set $anustarget to _j>>You hold <<combatpersons>> <<npcPenis _j>> between your buttocks.</span> + <<set _anusOptions to "penisAgainstAnus">><<selectNpcWithPartInPosition "penis" "cheeks">><<set $anustarget to _j>> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')">You hold <<combatpersons>> <<npcPenis _j>> between your buttocks.</span> <<else>> <<switch $anusstate>> <<case 0>> @@ -1527,7 +1527,7 @@ </span> <</if>> <<set _anusOptions to "free">> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')">Your <<bottom>> is free.</span> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')">Your <<bottom>> is free.</span> <<if $combatControls is "radio" and _targetnumber gt 1>><br> Target: <span onchange="actionsreplace('anus')"> <<listbox "$anustarget" autoselect>> @@ -1540,16 +1540,16 @@ <</if>> <<case "othermouthentrance">> <<set _anusOptions to "mouthEntrance">><<selectNpcWithPartInPosition "mouth" "anusentrance">><<set $anustarget to _j>> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')">You feel breath on your <<bottom>>.</span> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')">You feel breath on your <<bottom>>.</span> <<case "othermouthimminent">> <<set _anusOptions to "mouthImminent">><<selectNpcWithPartInPosition "mouth" "anusimminent">><<set $anustarget to _j>> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')"><<combatPerson>>'s lips press against your anus.</span> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s lips press against your anus.</span> <<case "othermouth">> <<set _anusOptions to "mouthPenetration">><<selectNpcWithPartInPosition "mouth" "anus">><<set $anustarget to _j>> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')"><<combatPerson>>'s tongue penetrates your <<bottom>>.</span> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s tongue penetrates your <<bottom>>.</span> <<case "entrance">> - <<set _anusOptions to "penisEntrance">> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')"><<selectNpcWithPartInPosition "penis" "anusentrance">><<set $anustarget to _j>><<combatPerson>>'s <<npcPenis _j>> hovers near your <<bottom>>.</span> + <<set _anusOptions to "penisEntrance">><<selectNpcWithPartInPosition "penis" "anusentrance">><<set $anustarget to _j>> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s <<npcPenis _j>> hovers near your <<bottom>>.</span> <<if $analdoubledisable is "f">> <<getDoubleTargetList>> <</if>> @@ -1565,11 +1565,11 @@ </span> <</if>> <<case "imminent">> - <<set _anusOptions to "penisImminent">> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')"><<selectNpcWithPartInPosition "penis" "anusimminent">><<set $anustarget to _j>><<combatPerson>>'s <<npcPenis _j>> presses against your anus.</span> + <<set _anusOptions to "penisImminent">><<selectNpcWithPartInPosition "penis" "anusimminent">><<set $anustarget to _j>> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s <<npcPenis _j>> presses against your anus.</span> <<case "penetrated">> - <<set _anusOptions to "penisPenetration">> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')"><<selectNpcWithPartInPosition "penis" "anus">><<set $anustarget to _j>><<combatPerson>>'s penis penetrates your anus.</span> + <<set _anusOptions to "penisPenetration">><<selectNpcWithPartInPosition "penis" "anus">><<set $anustarget to _j>> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s penis penetrates your anus.</span> <<if $analdoubledisable is "f">> <<getDoubleTargetList>> <</if>> @@ -1587,31 +1587,30 @@ <<case "doubleentrance">> <<set _anusOptions to "penisDoubleEntrance">> <<if $NPCList[$anustarget].penis is "anusdoubleentrance" and $NPCList[$anusdoubletarget].penis is "anusdoubleentrance">> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')">Their cocks hover near your <<bottom>>.</span> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')">Their cocks hover near your <<bottom>>.</span> <<elseif ($NPCList[$anustarget].penis is "anusdouble" and $NPCList[$anusdoubletarget].penis is "anusdoubleentrance") or ($NPCList[$anustarget].penis is "anusdoubleentrance" and $NPCList[$anusdoubletarget].penis is "anusdouble")>> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')"> - <<selectNpcWithPartInPosition "penis" "anusdouble">><<combatPerson>>'s penis penetrates your anus while the other penis hovers nearby. - </span> + <<selectNpcWithPartInPosition "penis" "anusdouble">> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s penis penetrates your anus while the other penis hovers nearby.</span> <<else>> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')">Their cocks hover near your <<bottom>>.</span> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')">Their cocks hover near your <<bottom>>.</span> <</if>> <<case "doubleimminent">> <<set _anusOptions to "penisDoubleImminent">> <<if $NPCList[$anustarget].penis is "anusdoubleimminent" and $NPCList[$anusdoubletarget].penis is "anusdoubleimminent">> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')">Their cocks press against your anus.</span> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')">Their cocks press against your anus.</span> <<elseif ($NPCList[$anustarget].penis is "anusdouble" and $NPCList[$anusdoubletarget].penis is "anusdoubleimminent") or ($NPCList[$anustarget].penis is "anusdoubleimminent" and $NPCList[$anusdoubletarget].penis is "anusdouble")>> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')"> - <<selectNpcWithPartInPosition "penis" "anusdouble">><<combatPerson>>'s penis penetrates your anus while the other penis presses against the entrance. - </span> + <<selectNpcWithPartInPosition "penis" "anusdouble">> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s penis penetrates your anus while the other penis presses against the entrance.</span> <<else>> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')">Their cocks press against your anus.</span> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')">Their cocks press against your anus.</span> <</if>> <<case "doublepenetrated">> <<set _anusOptions to "penisDoublePenetration">> <<if $NPCList[$anustarget].penis is "anusdouble" and $NPCList[$anusdoubletarget].penis is "anusdouble">> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')">Their cocks penetrate your anus.</span> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')">Their cocks penetrate your anus.</span> <<else>> - <span @class="($lastOptions.anus isnot _anusOptions or _anusGold is true ?'gold':'')"><<selectNpcWithPartInPosition "penis" "anus">><<combatPerson>>'s cock penetrates your anus while the other hovers nearby.</span> + <<selectNpcWithPartInPosition "penis" "anus">> + <span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s cock penetrates your anus while the other hovers nearby.</span> <</if>> <<case "tentacleentrance" "tentacleimminent" "tentacle" "tentacledeep" "tentaclerub">> <<set $_changetype to true>><<anusActionInitTentacle>> @@ -1923,12 +1922,12 @@ <</if>> <</if>> <<if $machine isnot undefined>> - <<set _targetlistall["The machine"] to "machine">><<set _targetnumber += 1>> + <<set _targetlistall["Machine"] to "machine">><<set _targetnumber += 1>> <</if>> <<set _targetlistarms to clone(_targetlistall)>> <<if $vorecreature isnot 0>> <<if $vorestage gt 0>> - <<set _targetlistarms["The "+ $vorecreature.toUpperFirst()] to "vore">><<set _targetnumber += 1>> + <<set _targetlistarms["the "+ $vorecreature.toUpperFirst()] to "vore">><<set _targetnumber += 1>> <</if>> <</if>> <</silently>><</widget>> @@ -1956,21 +1955,23 @@ <</silently>><</widget>> <<widget "targetrepeatcontroller">> +<<set _smollertext to _smoltext>> <<for _repeatnamecontroller = 0; _repeatnamecontroller lte _namecontroller; _repeatnamecontroller++>> - <<if _repeatcontroller[_repeatnamecontroller] is _smoltext>> - <<if Object(_smoltext).includes("fifth") is true>> - <<set _smoltext to "last "+_smoltext>> - <<elseif Object(_smoltext).includes("fourth") is true>> - <<set _smoltext to "fifth "+_smoltext>> - <<elseif Object(_smoltext).includes("third") is true>> - <<set _smoltext to "fourth "+_smoltext>> - <<elseif Object(_smoltext).includes("second") is true>> - <<set _smoltext to "third "+_smoltext>> + <<if _repeatcontroller[_repeatnamecontroller] is _smollertext>> + <<if _smollertext.includes("fifth") is true>> + <<set _smollertext to "last "+_smoltext>> + <<elseif _smollertext.includes("fourth") is true>> + <<set _smollertext to "fifth "+_smoltext>> + <<elseif _smollertext.includes("third") is true>> + <<set _smollertext to "fourth "+_smoltext>> + <<elseif _smollertext.includes("second") is true>> + <<set _smollertext to "third "+_smoltext>> <<else>> - <<set _smoltext to "second "+_smoltext>> + <<set _smollertext to "second "+_smoltext>> <</if>> <</if>> <</for>> +<<set _smoltext to _smollertext>> <</widget>> <<widget "leftActionInitSelf">> diff --git a/game/base-combat/beast-generation.twee b/game/base-combat/beast-generation.twee index 3143d1be6f0b3780d5af43c04d3ec156451b4ff3..0cb7a3cf04101ba36b99e328fbea327324080494 100644 --- a/game/base-combat/beast-generation.twee +++ b/game/base-combat/beast-generation.twee @@ -4,10 +4,9 @@ <!-- Example: <<generateBEAST 1 dog m>> would generate NPC 1 as male dog --> <!-- Example: <<generateBEAST 2 wolf f>> would generate NPC 2 as female wolf --> -<!-- Checks if endevent was properly used after the last event --> -<<checkEventNPC `$args[0] - 1`>> - <<set _n to $args[0]-1>> +<!-- Checks if endevent was properly used after the last event --> +<<checkEventNPC _n>> <<set _type to $args[1]>> <<set _gen to $args[2]>> <<set _beast_genitals to $args[3]>> @@ -49,7 +48,7 @@ <<beastattribute _n _type>> -<<pushEventNPC _n>> +<<run EventSystem.Push($passage, _n, $time)>> <</widget>> <<widget "beastattribute">> diff --git a/game/base-combat/beast.twee b/game/base-combat/beast.twee index 8304b8803231bd4a0401a416b80e6ae0c2bfb4e2..46d4f2f5c6d02e74924563b843856e6b83c80f0f 100644 --- a/game/base-combat/beast.twee +++ b/game/base-combat/beast.twee @@ -1344,10 +1344,10 @@ <<beastlick>> <<elseif $enemyanger + $rng lte 160>> <<if $worn.over_lower.name isnot "naked" or $worn.lower.name isnot "naked">> - <<if setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.over_lower.skirt_down is 1>> + <<if setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.over_lower.skirt_down is 1>> <span class="blue"><<bHe>> lifts up your $worn.over_lower.name with <<bhis>> <<beast_teeth_text>>.</span> <<set $worn.lower.skirt_down to 0>><<set $worn.over_lower.vagina_exposed to 1>><<set $worn.over_lower.anus_exposed to 1>><<set $worn.over_lower.exposed to 2>><<set $worn.over_lower.integrity -= 10>> - <<elseif setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.lower.skirt_down is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.lower.skirt_down is 1>> <span class="blue"><<bHe>> lifts up your $worn.lower.name with <<bhis>> <<beast_teeth_text>>.</span> <<set $worn.lower.skirt_down to 0>><<set $worn.lower.vagina_exposed to 1>><<set $worn.lower.anus_exposed to 1>><<set $worn.lower.exposed to 2>><<set $worn.lower.integrity -= 10>> <<elseif $worn.over_lower.exposed isnot 2>> @@ -2062,7 +2062,7 @@ <span class="blue"><<bHe>> releases your $worn.under_lower.name from <<bhis>> mouth.</span> <<set $NPCList[_n].mouth to 0>> <<elseif $rng lte 90>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.under_lower.state is "waist">> <<bHe>> pulls your $worn.under_lower.name down your thighs, <span class="lewd">revealing your <<genitals>>.</span> <<set $worn.under_lower.state to "thighs">><<neutral 5>><<set $worn.under_lower.vagina_exposed to 1>><<set $worn.under_lower.anus_exposed to 1>><<set $worn.under_lower.exposed to 1>><<set $speechgenitals to 1>> diff --git a/game/base-combat/effects-disabled.twee b/game/base-combat/effects-disabled.twee index 905f7ea9e46d7423ad7faff825eda8d97bcab601..e6354a08cf73eb60593657c37efcb5f431d2d427 100644 --- a/game/base-combat/effects-disabled.twee +++ b/game/base-combat/effects-disabled.twee @@ -403,4 +403,303 @@ <<meek 1>> <</if>> -<</widget>> \ No newline at end of file +<</widget>> + +:: Widgets Actions Possessed [widget] +<<widget "actionspossessed">> + <<if !$leftactiondefault>> + <<set $leftactiondefault to "leftaccept">> + <</if>> + <<if !$rightactiondefault>> + <<set $rightactiondefault to "rightaccept">> + <</if>> + <<if !$feetactiondefault>> + <<set $feetactiondefault to "accept">> + <</if>> + <<if !$mouthactiondefault>> + <<set $mouthactiondefault to "accept">> + <</if>> +<<if $leftarm is 0>> + Your left arm is free, <span class="pink">but not under your control</span>. + <br> + <<if $leftactiondefault is "leftaccept">> + | <label><span class="wraith">Accept it</span> <<radiobutton "$leftaction" "leftaccept" checked>></label> + <<else>> + | <label><span class="wraith">Accept it</span> <<radiobutton "$leftaction" "leftaccept">></label> + <</if>> + <<if $leftactiondefault is "leftresist">> + | <label><span class="brat">Hold it still</span> <<radiobutton "$leftaction" "leftresist" checked>></label> + <<else>> + | <label><span class="brat">Hold it still</span> <<radiobutton "$leftaction" "leftresist">></label> + <</if>> + <br> +<<elseif $leftarm is "grappled">> + Your left arm writhes in their grip, unbidden. + <br> + <<set $leftactiondefault to $leftactiondefault is "leftaccept" ? "leftstruggle" : "leftstill">> + <<if $leftactiondefault is "leftstruggle">> + | <label><span class="wraith">Struggle</span> <<radiobutton "$leftaction" "leftstruggle" checked>></label> + <<else>> + | <label><span class="wraith">Struggle</span> <<radiobutton "$leftaction" "leftstruggle">></label> + <</if>> + <<if $leftactiondefault is "leftstill">> + | <label><span class="brat">Hold it still</span> <<radiobutton "$leftaction" "leftstill" checked>></label> + <<else>> + | <label><span class="brat">Hold it still</span> <<radiobutton "$leftaction" "leftstill">></label> + <</if>> + <br> +<<elseif $leftarm is "bound">> + Your left arm writhes in its bounds, unbidden. + <br> +<</if>> + +<<if $rightarm is 0>> + <br> + Your right arm is free, <span class="pink">but not under your control</span>. + <br> + <<if $rightactiondefault is "rightaccept">> + | <label><span class="wraith">Accept it</span> <<radiobutton "$rightaction" "rightaccept" checked>></label> + <<else>> + | <label><span class="wraith">Accept it</span> <<radiobutton "$rightaction" "rightaccept">></label> + <</if>> + <<if $rightactiondefault is "rightresist">> + | <label><span class="brat">Hold it still</span> <<radiobutton "$rightaction" "rightresist" checked>></label> + <<else>> + | <label><span class="brat">Hold it still</span> <<radiobutton "$rightaction" "rightresist">></label> + <</if>> + <br> +<<elseif $rightarm is "grappled">> + <br> + Your right arm writhes in their grip, unbidden. + <br> + <<set $rightactiondefault to $rightactiondefault is "rightaccept" ? "rightstruggle" : "rightstill">> + <<if $rightactiondefault is "rightstruggle">> + | <label><span class="wraith">Struggle</span> <<radiobutton "$rightaction" "rightstruggle" checked>></label> + <<else>> + | <label><span class="wraith">Struggle</span> <<radiobutton "$rightaction" "rightstruggle">></label> + <</if>> + <<if $rightactiondefault is "rightstill">> + | <label><span class="brat">Hold it still</span> <<radiobutton "$rightaction" "rightstill" checked>></label> + <<else>> + | <label><span class="brat">Hold it still</span> <<radiobutton "$rightaction" "rightstill">></label> + <</if>> + <br> +<<elseif $rightarm is "bound">> + <br> + Your right arm writhes in its bounds, unbidden. + <br> +<</if>> + +<<if $feetuse is 0>> + <br> + Your legs are free, <span class="pink">but you can't feel them beneath you</span>. + <br> + <<if $feetactiondefault is "accept">> + | <label><span class="wraith">Accept it</span> <<radiobutton "$feetaction" "accept" checked>></label> + <<else>> + | <label><span class="wraith">Accept it</span> <<radiobutton "$feetaction" "accept">></label> + <</if>> + <<if $feetactiondefault is "resist">> + | <label><span class="brat">Hold them still</span> <<radiobutton "$feetaction" "resist" checked>></label> + <<else>> + | <label><span class="brat">Hold them still</span> <<radiobutton "$feetaction" "resist">></label> + <</if>> + <br> +<<elseif $feetuse is "bound">> + <br> + Your legs thrash in their shackles, unbidden. + <br> +<</if>> + +<<if $mouthuse is 0>> + <br> + Your mouth is free, <span class="pink">but unfamiliar words spill from your tongue</span>. + <br> + <<if $mouthactiondefault is "accept">> + | <label><span class="wraith">Accept it</span> <<radiobutton "$mouthaction" "accept" checked>></label> + <<else>> + | <label><span class="wraith">Accept it</span> <<radiobutton "$mouthaction" "accept">></label> + <</if>> + <<if $mouthactiondefault is "resist">> + | <label><span class="brat">Clamp your mouth shut</span> <<radiobutton "$mouthaction" "resist" checked>></label> + <<else>> + | <label><span class="brat">Clamp your mouth shut</span> <<radiobutton "$mouthaction" "resist">></label> + <</if>> +<<elseif $mouthuse is "lefthand" or $mouthuse is "righthand">> + <br> + Your mouth is blocked, muffling the foreign words that well up within you. + <br> + <<set $mouthactiondefault to $mouthactiondefault is "accept" ? "handbite" : "handclose">> + <<if $mouthactiondefault is "handbite">> + | <label><span class="wraith">Bite</span> <<radiobutton "$mouthaction" "handbite" checked>></label> + <<else>> + | <label><span class="wraith">Bite</span> <<radiobutton "$mouthaction" "handbite">></label> + <</if>> + <<if $mouthactiondefault is "handclose">> + | <label><span class="brat">Clamp your mouth shut</span> <<radiobutton "$mouthaction" "handclose" checked>></label> + <<else>> + | <label><span class="brat">Clamp your mouth shut</span> <<radiobutton "$mouthaction" "handclose">></label> + <</if>> +<</if>> +<</widget>> + +:: Widgets Effects Possessed [widget] +<<widget "effectspossessed">> +<<set $enemyanger to 200>><<set $willpowerSuccess to 0>> +<<dynamicblock id=control-caption>> + <<controlcaption>> +<</dynamicblock>> + +<<if $combatBegun is 1>> + <<set _resist to 0>> + <<if $leftaction isnot "leftresist" and $rightaction isnot "rightresist" and $feetaction isnot "resist" and $mouthaction isnot "resist">> + <span class="pink">You let it take you.</span> + <<pain -2>><<stress -12>><<set $submissive += 2>><<lpain>><<llstress>><<set $wraith.will += 30>> + <<else>> + <<if $leftaction is "leftresist" and $rightaction is "rightresist" and $feetaction is "resist">> + <<set _resist to 3>> + <<elseif $leftaction is "leftresist" and $rightaction is "rightresist" + or $leftaction is "leftresist" and $feetaction is "resist" + or $rightaction is "rightresist" and $feetaction is "resist">> + <<set _resist to 2>> + <<else>> + <<set _resist to 1>> + <</if>> + <<set _wraithWill to Math.floor(1 + $wraith.will)>> + <<willpowerdifficulty 1 _wraithWill true>> + <<if $willpowerSuccess>> + <<set _resistSuccess to 1>> + <span class="green"> + You fight for control. + <<if ($leftaction is "leftresist" or $leftaction is "leftstill") and ($rightaction is "rightresist" or $rightaction is "rightstill") and $feetaction is "resist">> + Your body locks up. + <<elseif $feetaction is "resist" and ($leftaction is "leftresist" or $leftaction is "leftstill" or $rightaction is "rightresist" or $rightaction is "rightstill")>> + Your arm and legs lock up. + <<elseif ($leftaction is "leftresist" or $leftaction is "leftstill") and ($rightaction is "rightresist" or $rightaction is "rightstill")>> + Your arms lock up. + <<elseif $feetaction is "resist">> + Your legs lock up. + <<elseif $leftaction is "leftresist" or $leftaction is "leftstill" or $rightaction is "rightresist" or $rightaction is "rightstill">> + Your arm locks up. + <</if>> + <<if $mouthaction is "handclose">> + You clamp your mouth shut. + <</if>> + </span> + <<if $mouthaction is "resist">> + <<set $willpowerSuccess to 0>> + <<silently>><<willpowerdifficulty _wraithWill/3 _wraithWill*1.2>><</silently>> + <<if $willpowerSuccess>> + <<set _mouthSuccess to 1>><<set _resist++>> + <span class="green">You clamp your mouth shut.</span> + <<else>> + <span class="purple">You can't stop the stream of words coming from your mouth, though.</span> + <</if>> + <</if>> + <<pain _resist>><<stress _resist>><<trauma _resist>><<set $submissive -= 2>><<gpain>><<gtrauma>><<gstress>><<gcontrol>><<set $wraith.will -= Math.floor($willpower / 24)*_resist>> + <<set $control += Math.floor($willpower / 24)*_resist>> + <<else>> + <span class="red">Your body does not obey.</span> + <<stress 6>><<trauma 6>><<willpower 1>><<set $submissive -= 1>><<gtrauma>><<gstress>><<gwillpower>><<set $wraith.will -= Math.floor($willpower / 40)*_resist>> + <</if>> + <</if>> + <br><br> +<<else>> + <<set $combatBegun to 1>> +<</if>> + +<<if $leftaction is "leftresist" and $rightaction is "rightresist" and _resistSuccess>> + <<set $leftaction to 0>><<set $rightaction to 0>><<set $leftactiondefault to "leftresist">><<set $rightactiondefault to "rightresist">> + You hold your arms firm to your side. +<</if>> + +<<if $leftaction is "leftaccept" or $leftaction is "leftresist" and !_resistSuccess>> + <<set $leftactiondefault to $leftaction>><<set $leftaction to 0>><<set _target to random(1,$enemyno)-1>> + You <<print either("punch","slap","scratch","claw","chop","strike")>> with your left hand. + <<defiance 1 _target>> +<</if>> + +<<if $leftaction is "leftresist" and _resistSuccess>> + <<set $leftaction to 0>><<set $leftactiondefault to "leftresist">> + You hold your left arm firm to your side. +<</if>> + +<<if $leftaction is "leftstruggle" or $rightaction is "rightstruggle" or (($leftaction is "leftresist" or $rightaction is "rightresist") and !_resistSuccess)>> + <<set $leftaction to 0>><<set $leftactiondefault to "leftstruggle">><<set $rightaction to 0>><<set $leftactiondefault to "leftstruggle">> + You struggle to free your arms. + <<set $speechstruggle to 1>> + <<if $physique gte random(1, 64000)>> + <span class="pink">You manage to wrench your arms free.</span> + <<set $leftarm to 0>><<set $rightarm to 0>> + <<for _s = 0; _s lt $NPCList.length; _s++>> + <<if $NPCList[_s].lefthand is "arms">> + <<set $NPCList[_s].lefthand to 0>> + <</if>> + <<if $NPCList[_s].righthand is "arms">> + <<set $NPCList[_s].righthand to 0>> + <</if>> + <</for>> + <<else>> + <span class="lblue">Your arms remain grasped.</span> + <</if>> +<</if>> + +<<if $leftaction is "leftstill" and $rightaction is "rightstill" and _resistSuccess>> + You hold your arms as still as you can in their grasp. +<</if>> + +<<if $rightaction is "rightaccept" or $rightaction is "rightresist" and !_resistSuccess>> + <<set $rightactiondefault to $rightaction>><<set $rightaction to 0>><<set _target to random(1,$enemyno)-1>> + You <<print either("punch","slap","scratch","claw","chop","strike")>> with your right hand. + <<defiance 1 _target>> +<</if>> + +<<if $rightaction is "rightresist" and _resistSuccess>> + <<set $rightaction to 0>><<set $rightactiondefault to "rightresist">> + You hold your right arm firm to your side. +<</if>> + +<<if $feetaction is "accept" or $feetaction is "resist" and !_resistSuccess>> + <<set $feetactiondefault to $feetaction>><<set $feetaction to 0>><<set _target to random(1,$enemyno)-1>> + You <<print either("awkwardly","viciously","rapidly","jerkily","cruelly","<<feettext>>")>> lash out with your feet. + <<defiance 1 _target>> +<</if>> + +<<if $feetaction is "resist" and _resistSuccess>> + <<set $feetaction to 0>><<set $feetactiondefault to "resist">> + You plant your legs into the ground. +<</if>> + +<<if $mouthaction is "accept" or $mouthaction is "resist" and !_mouthSuccess>> + <<set $mouthactiondefault to $mouthaction>><<set $mouthaction to 0>> + <<speechWraith>> + <<defiance 1>> +<</if>> + +<<if $mouthaction is "resist" and _mouthSuccess>> + <<set $mouthaction to 0>><<set $mouthactiondefault to "resist">> + Words well up in your mouth, but you swallow them down. +<</if>> + +<<if $mouthaction is "handbite" or $mouthaction is "handclose" and !_resistSuccess>> + <<set $mouthactiondefault to $mouthaction>><<set $mouthaction to 0>> + <<actionshandbite>> + <<for _s = 0; _s lt $NPCList.length; _s++>> + <<if $NPCList[_s].lefthand is "mouth">> + <<set $NPCList[_s].lefthand to 0>> + <</if>> + <<if $NPCList[_s].righthand is "mouth">> + <<set $NPCList[_s].righthand to 0>> + <</if>> + <span class="teal"><<He _s>> flinches away in pain, freeing your mouth.</span> + <<defiance 1 _s>> + <<break>> + <</for>> + <<set $mouthuse to 0>> +<</if>> + +<<if $mouthaction is "handclose" and _resistSuccess>> + <<set $mouthaction to 0>><<set $mouthactiondefault to "handclose">> + You keep your mouth closed against the hand pressing against it. +<</if>> +<</widget>> diff --git a/game/base-combat/effects.twee b/game/base-combat/effects.twee index af4bf09f3b472961ebf3ccee89543b5542459def..9c8d663ef44932a17d7eec5e22140012c8ca9de2 100644 --- a/game/base-combat/effects.twee +++ b/game/base-combat/effects.twee @@ -79,6 +79,9 @@ <<effectspain>> <<effectsorgasm>> <<effectsdissociation>> +<<if $possessed>> + <<effectspossessed>> +<</if>> <<effectsspray>> <<effectshandsclothes>> @@ -277,7 +280,7 @@ <<if $rightaction is "behind">> <<set $rightaction to 0>><<set $rightactiondefault to "behind">> - You hold your left arm behind your back in a compliant gesture. + You hold your right arm behind your back in a compliant gesture. <<meek 1>><<set $rightarm to "behind">> <</if>> @@ -681,7 +684,7 @@ <<set $rightactiondefault to "rightclit">><<set $NPCList[$righttarget].vagina to "rightarm">><<set $rightarm to "othervagina">><<personselect $righttarget>> <span class="lblue">You <<handtext>> grab <<hisselect $righttarget>> pussy<<if $NPCList[$righttarget].chastity.vagina.includes("chastity")>> through <<his>> $NPCList[$righttarget].chastity.vagina<</if>> with your right hand.</span> <<else>> - <span class="blue">You try to grab <<hisselect $righttarget>> pussy with your left hand, but the entrance is already occupied.</span> + <span class="blue">You try to grab <<hisselect $righttarget>> pussy with your right hand, but the entrance is already occupied.</span> <</if>> <<else>> You try to grab <<hisselect $righttarget>> pussy with your right hand, but <<he>> moves it away. @@ -711,9 +714,9 @@ <<elseif $worn.under_lower.state is "thighs">> <<if $vaginause is 0 and $anususe is 0>> You pull your $worn.under_lower.name up to your waist. - <<set $worn.under_lower.state to "waist">><<set $worn.under_lower.exposed to setup.clothes.under_lower[$worn.under_lower.index].exposed_base>> - <<set $worn.under_lower.vagina_exposed to setup.clothes.under_lower[$worn.under_lower.index].vagina_exposed_base>> - <<set $worn.under_lower.anus_exposed to setup.clothes.under_lower[$worn.under_lower.index].anus_exposed_base>> + <<set $worn.under_lower.state to "waist">><<set $worn.under_lower.exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].exposed_base>> + <<set $worn.under_lower.vagina_exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].vagina_exposed_base>> + <<set $worn.under_lower.anus_exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].anus_exposed_base>> <<else>> You try to pull up your $worn.under_lower.name, but something is in the way. <</if>> @@ -737,9 +740,9 @@ <<elseif $worn.under_lower.state is "thighs">> <<if $vaginause is 0 and $anususe is 0>> You pull your $worn.under_lower.name up to your waist. - <<set $worn.under_lower.state to "waist">><<set $worn.under_lower.exposed to setup.clothes.under_lower[$worn.under_lower.index].exposed_base>> - <<set $worn.under_lower.vagina_exposed to setup.clothes.under_lower[$worn.under_lower.index].vagina_exposed_base>> - <<set $worn.under_lower.anus_exposed to setup.clothes.under_lower[$worn.under_lower.index].anus_exposed_base>> + <<set $worn.under_lower.state to "waist">><<set $worn.under_lower.exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].exposed_base>> + <<set $worn.under_lower.vagina_exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].vagina_exposed_base>> + <<set $worn.under_lower.anus_exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].anus_exposed_base>> <<else>> You try to pull up your $worn.under_lower.name, but something is in the way. <</if>> @@ -766,9 +769,9 @@ <<elseif $worn.under_lower.state is "thighs">> <<if $vaginause is 0 and $anususe is 0>> You pull your $worn.under_lower.name up to your waist. - <<set $worn.under_lower.state to "waist">><<set $worn.under_lower.exposed to setup.clothes.under_lower[$worn.under_lower.index].exposed_base>> - <<set $worn.under_lower.vagina_exposed to setup.clothes.under_lower[$worn.under_lower.index].vagina_exposed_base>> - <<set $worn.under_lower.anus_exposed to setup.clothes.under_lower[$worn.under_lower.index].anus_exposed_base>> + <<set $worn.under_lower.state to "waist">><<set $worn.under_lower.exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].exposed_base>> + <<set $worn.under_lower.vagina_exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].vagina_exposed_base>> + <<set $worn.under_lower.anus_exposed to setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].anus_exposed_base>> <<else>> You try to pull up your $worn.under_lower.name, but one hand won't be enough. <</if>> @@ -786,8 +789,8 @@ You clutch the tattered remains of your clothing. <<else>> You pull your $worn.lower.name down with both hands, covering your crotch. - <<set $worn.lower.skirt_down to 1>><<set $worn.lower.vagina_exposed to setup.clothes.lower[$worn.lower.index].vagina_exposed_base>> - <<set $worn.lower.anus_exposed to setup.clothes.lower[$worn.lower.index].anus_exposed_base>><<set $worn.lower.exposed to setup.clothes.lower[$worn.lower.index].exposed_base>> + <<set $worn.lower.skirt_down to 1>><<set $worn.lower.vagina_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].vagina_exposed_base>> + <<set $worn.lower.anus_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].anus_exposed_base>><<set $worn.lower.exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].exposed_base>> <</if>> <</if>> @@ -797,8 +800,8 @@ You clutch the tattered remains of your clothing. <<else>> You pull your $worn.lower.name back down, covering your crotch. - <<set $worn.lower.skirt_down to 1>><<set $worn.lower.vagina_exposed to setup.clothes.lower[$worn.lower.index].vagina_exposed_base>> - <<set $worn.lower.anus_exposed to setup.clothes.lower[$worn.lower.index].anus_exposed_base>><<set $worn.lower.exposed to setup.clothes.lower[$worn.lower.index].exposed_base>> + <<set $worn.lower.skirt_down to 1>><<set $worn.lower.vagina_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].vagina_exposed_base>> + <<set $worn.lower.anus_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].anus_exposed_base>><<set $worn.lower.exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].exposed_base>> <</if>> <</if>> @@ -808,8 +811,8 @@ You clutch the tattered remains of your clothing. <<else>> You pull your $worn.lower.name back down, covering your crotch. - <<set $worn.lower.skirt_down to 1>><<set $worn.lower.vagina_exposed to setup.clothes.lower[$worn.lower.index].vagina_exposed_base>> - <<set $worn.lower.anus_exposed to setup.clothes.lower[$worn.lower.index].anus_exposed_base>><<set $worn.lower.exposed to setup.clothes.lower[$worn.lower.index].exposed_base>> + <<set $worn.lower.skirt_down to 1>><<set $worn.lower.vagina_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].vagina_exposed_base>> + <<set $worn.lower.anus_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].anus_exposed_base>><<set $worn.lower.exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].exposed_base>> <</if>> <</if>> @@ -859,10 +862,10 @@ <<else>> $worn.lower.name. <</if>> - <<brat 5>><<set $worn.lower.state to setup.clothes.lower[$worn.lower.index].state_base>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>><<set $worn.lower.skirt_down to 1>><</if>> - <<set $worn.lower.vagina_exposed to setup.clothes.lower[$worn.lower.index].vagina_exposed_base>> - <<set $worn.lower.anus_exposed to setup.clothes.lower[$worn.lower.index].anus_exposed_base>><<set $worn.lower.exposed to setup.clothes.lower[$worn.lower.index].exposed_base>> + <<brat 5>><<set $worn.lower.state to setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>><<set $worn.lower.skirt_down to 1>><</if>> + <<set $worn.lower.vagina_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].vagina_exposed_base>> + <<set $worn.lower.anus_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].anus_exposed_base>><<set $worn.lower.exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].exposed_base>> <</if>> <</if>> <</if>> @@ -915,10 +918,10 @@ <<else>> $worn.over_lower.name. <</if>> - <<brat 5>><<set $worn.over_lower.state to setup.clothes.over_lower[$worn.over_lower.index].state_base>> - <<if setup.clothes.over_lower[$worn.over_lower.index].skirt is 1>><<set $worn.over_lower.skirt_down to 1>><</if>> - <<set $worn.over_lower.vagina_exposed to setup.clothes.over_lower[$worn.over_lower.index].vagina_exposed_base>> - <<set $worn.over_lower.anus_exposed to setup.clothes.over_lower[$worn.over_lower.index].anus_exposed_base>><<set $worn.over_lower.exposed to setup.clothes.over_lower[$worn.over_lower.index].exposed_base>> + <<brat 5>><<set $worn.over_lower.state to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].state_base>> + <<if setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1>><<set $worn.over_lower.skirt_down to 1>><</if>> + <<set $worn.over_lower.vagina_exposed to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].vagina_exposed_base>> + <<set $worn.over_lower.anus_exposed to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].anus_exposed_base>><<set $worn.over_lower.exposed to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].exposed_base>> <</if>> <</if>> <</if>> @@ -970,14 +973,14 @@ <<else>> $worn.upper.name. <</if>> - <<brat 5>><<set $worn.upper.state to setup.clothes.upper[$worn.upper.index].state_base>><<set $worn.upper.state_top to setup.clothes.upper[$worn.upper.index].state_top_base>> - <<set $worn.upper.exposed to setup.clothes.upper[$worn.upper.index].exposed_base>><<set $worn.lower.state to setup.clothes.lower[$worn.lower.index].state_base>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>><<set $worn.lower.skirt_down to 1>><</if>><<set $worn.lower.vagina_exposed to setup.clothes.lower[$worn.lower.index].vagina_exposed_base>> - <<set $worn.lower.anus_exposed to setup.clothes.lower[$worn.lower.index].anus_exposed_base>><<set $worn.lower.exposed to setup.clothes.lower[$worn.lower.index].exposed_base>> + <<brat 5>><<set $worn.upper.state to setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_base>><<set $worn.upper.state_top to setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_top_base>> + <<set $worn.upper.exposed to setup.clothes.upper[clothesIndex('upper', $worn.upper)].exposed_base>><<set $worn.lower.state to setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>><<set $worn.lower.skirt_down to 1>><</if>><<set $worn.lower.vagina_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].vagina_exposed_base>> + <<set $worn.lower.anus_exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].anus_exposed_base>><<set $worn.lower.exposed to setup.clothes.lower[clothesIndex('lower', $worn.lower)].exposed_base>> <<else>> You fix your $worn.upper.name, concealing your <<breasts>>. - <<brat 5>><<set $worn.upper.state to setup.clothes.upper[$worn.upper.index].state_base>> - <<set $worn.upper.state_top to setup.clothes.upper[$worn.upper.index].state_top_base>><<set $worn.upper.exposed to setup.clothes.upper[$worn.upper.index].exposed_base>> + <<brat 5>><<set $worn.upper.state to setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_base>> + <<set $worn.upper.state_top to setup.clothes.upper[clothesIndex('upper', $worn.upper)].state_top_base>><<set $worn.upper.exposed to setup.clothes.upper[clothesIndex('upper', $worn.upper)].exposed_base>> <</if>> <</if>> <</if>> @@ -1028,14 +1031,14 @@ <<else>> $worn.over_upper.name. <</if>> - <<brat 5>><<set $worn.over_upper.state to setup.clothes.over_upper[$worn.over_upper.index].state_base>><<set $worn.over_upper.state_top to setup.clothes.over_upper[$worn.over_upper.index].state_top_base>> - <<set $worn.over_upper.exposed to setup.clothes.over_upper[$worn.over_upper.index].exposed_base>><<set $worn.over_lower.state to setup.clothes.over_lower[$worn.over_lower.index].state_base>> - <<if setup.clothes.over_lower[$worn.over_lower.index].skirt is 1>><<set $worn.over_lower.skirt_down to 1>><</if>><<set $worn.over_lower.vagina_exposed to setup.clothes.over_lower[$worn.over_lower.index].vagina_exposed_base>> - <<set $worn.over_lower.anus_exposed to setup.clothes.over_lower[$worn.over_lower.index].anus_exposed_base>><<set $worn.over_lower.exposed to setup.clothes.over_lower[$worn.over_lower.index].exposed_base>> + <<brat 5>><<set $worn.over_upper.state to setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_base>><<set $worn.over_upper.state_top to setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_top_base>> + <<set $worn.over_upper.exposed to setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].exposed_base>><<set $worn.over_lower.state to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].state_base>> + <<if setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1>><<set $worn.over_lower.skirt_down to 1>><</if>><<set $worn.over_lower.vagina_exposed to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].vagina_exposed_base>> + <<set $worn.over_lower.anus_exposed to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].anus_exposed_base>><<set $worn.over_lower.exposed to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].exposed_base>> <<else>> You fix your $worn.over_upper.name<<if $worn.upper.exposed gt 0>>, concealing your <<breasts>><</if>>. - <<brat 5>><<set $worn.over_upper.state to setup.clothes.over_upper[$worn.over_upper.index].state_base>> - <<set $worn.over_upper.state_top to setup.clothes.over_upper[$worn.over_upper.index].state_top_base>><<set $worn.over_upper.exposed to setup.clothes.over_upper[$worn.over_upper.index].exposed_base>> + <<brat 5>><<set $worn.over_upper.state to setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_base>> + <<set $worn.over_upper.state_top to setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].state_top_base>><<set $worn.over_upper.exposed to setup.clothes.over_upper[clothesIndex('over_upper', $worn.over_upper)].exposed_base>> <</if>> <</if>> <</if>> @@ -1626,6 +1629,7 @@ You dive down a thin alley, and take cover behind a dumpster. You peek around the side. You don't see anyone. <</switch>> <span class="red">Then you feel a presence.</span> + <<set $mouthaction to 0>><<set $mouthactiondefault to "rest">> <<events_stalk>> <<else>> <<switch $location>> @@ -1842,10 +1846,11 @@ <</if>> <<if $mouthaction is "breastpull">> - <<set $mouthaction to 0>><<set $mouthactiondefault to "breastpull">> + <<set $mouthaction to 0>><<set $mouthactiondefault to "breastpull">><<personselect $mouthtarget>> You try to pull your head away from the chest pressing against your face. <<oralskilluse>><<brat 1 $mouthtarget>> - <<willpowerdifficulty $drugged $willpowermax "silent">> + <<set _nectarDifficulty to Math.clamp($drugged, 0, 500) + Math.clamp($nectar_addiction, 0, 500)>> + <<willpowerdifficulty _nectarDifficulty $willpowermax "silent">> <<if $NPCList[$mouthtarget].type is "plant" and !$willpowerSuccess>> <span class="red">However, you can't tear yourself from the sweet nectar.</span> <<if $mouthstate is "nipple">> @@ -1859,7 +1864,7 @@ <<set $mouthstate to 0>><<set $mouthuse to 0>> <<set $NPCList[$mouthtarget].chest to 0>> <<set $NPCList[$mouthtarget].location.head to 0>> - <span class="green"><<He `$mouthtarget + 1`>> doesn't stop you.</span> + <span class="green"><<He>> doesn't stop you.</span> <<if $NPCList[$mouthtarget].lefthand is "head_breasts" or $NPCList[$mouthtarget].lefthand is "head_nipples">> <<set $NPCList[$mouthtarget].lefthand to 0>> <</if>> @@ -1872,9 +1877,9 @@ <</if>> <<violence 1>> <<if $mouthstate is "breasts">> - <span class="red">However, <<personselect $mouthtarget>><<he>> refuses to allow it,</span> instead pushing your head back against their chest. + <span class="red">However, <<he>> refuses to allow it,</span> instead pushing your head back against their chest. <<elseif $mouthstate is "nipple">> - <span class="red">However, <<personselect $mouthtarget>><<he>> refuses to allow it,</span> instead pushing your head back against their chest. + <span class="red">However, <<he>> refuses to allow it,</span> instead pushing your head back against their chest. <</if>> <</if>> <</if>> @@ -2054,11 +2059,12 @@ <</if>> <<if $mouthaction is "pullaway">> - <<set $mouthaction to 0>><<set $mouthactiondefault to "pullaway">> + <<set $mouthaction to 0>><<set $mouthactiondefault to "pullaway">><<personselect $mouthtarget>> You try to pull your head away from the penis threatening your mouth. <<oralskilluse>><<brat 1 $mouthtarget>> - <<willpowerdifficulty $drugged $willpowermax "silent">> - <<if $NPCList[0].type is "plant" and $mouthstate is "penetrated" and !$willpowerSuccess>> + <<set _nectarDifficulty to Math.clamp($drugged, 0, 500) + Math.clamp($nectar_addiction, 0, 500)>> + <<willpowerdifficulty _nectarDifficulty $willpowermax "silent">> + <<if $NPCList[$mouthtarget].type is "plant" and $mouthstate is "penetrated" and !$willpowerSuccess>> <span class="red">However, you can't tear yourself from the sweet nectar.</span> You desperately suck on the penis invading your mouth. <<willpower 1>> @@ -2066,12 +2072,12 @@ <<if (1000 - ($rng * 10) - ($enemytrust * 10) - $oralskill + $enemyanger) lte (($enemyarousalmax / ($enemyarousal + 1)) * 100)>> <<set $pullaway to 1>> <<if $NPCList[$mouthtarget].penis is "mouth">> - <<set $NPCList[$mouthtarget].penis to "mouthimminent">><<set $mouthstate to "imminent">><span class="green"><<He `$mouthtarget + 1`>> doesn't stop you.</span> + <<set $NPCList[$mouthtarget].penis to "mouthimminent">><<set $mouthstate to "imminent">><span class="green"><<He>> doesn't stop you.</span> <<elseif $NPCList[$mouthtarget].penis is "mouthimminent">> - <<set $NPCList[$mouthtarget].penis to "mouthentrance">><<set $mouthstate to "entrance">><span class="green"><<He `$mouthtarget + 1`>> doesn't stop you.</span> + <<set $NPCList[$mouthtarget].penis to "mouthentrance">><<set $mouthstate to "entrance">><span class="green"><<He>> doesn't stop you.</span> <<elseif $NPCList[$mouthtarget].penis is "mouthentrance">> <<set $NPCList[$mouthtarget].penis to 0>><<set $mouthstate to 0>><<set $mouthuse to 0>><<set $mouthstate to 0>><<set $NPCList[$mouthtarget].location.genitals to 0>> - <span class="green"><<He `$mouthtarget + 1`>> doesn't stop you.</span> + <span class="green"><<He>> doesn't stop you.</span> <</if>> <<else>> <<if $consensual is 1>> @@ -2079,18 +2085,18 @@ <</if>> <<violence 1>> <<if $mouthstate is "penetrated">> - <span class="red">However, <<personselect $mouthtarget>><<he>> refuses to allow it,</span> forcing the phallus back into your mouth. + <span class="red">However, <<he>> refuses to allow it,</span> forcing the phallus back into your mouth. <<elseif $mouthstate is "imminent">> - <span class="red">However, <<personselect $mouthtarget>><<he>> refuses to allow it,</span> instead pushing the penis against your lips. + <span class="red">However, <<he>> refuses to allow it,</span> instead pushing the penis against your lips. <<elseif $mouthstate is "entrance">> - <span class="red">However, <<personselect $mouthtarget>><<he>> refuses to allow it,</span> instead pushing the penis against your lips. + <span class="red">However, <<he>> refuses to allow it,</span> instead pushing the penis against your lips. <</if>> <</if>> <</if>> <</if>> <<if $mouthaction is "pullawayvagina">> - <<set $mouthaction to 0>><<set $mouthactiondefault to "pullawayvagina">> + <<set $mouthaction to 0>><<set $mouthactiondefault to "pullawayvagina">><<personselect $mouthtarget>> <<if $consensual is 1>> You try to move your head away from the pussy. <<oralskilluse>><<brat 1 $mouthtarget>> @@ -2099,14 +2105,15 @@ <<oralskilluse>><<brat 1 $mouthtarget>> <</if>> <<oralskilluse>><<brat 1 $mouthtarget>> - <<willpowerdifficulty $drugged $willpowermax "silent">> - <<if $NPCList[0].type is "plant" and !$willpowerSuccess>> + <<set _nectarDifficulty to Math.clamp($drugged, 0, 500) + Math.clamp($nectar_addiction, 0, 500)>> + <<willpowerdifficulty _nectarDifficulty $willpowermax "silent">> + <<if $NPCList[$mouthtarget].type is "plant" and !$willpowerSuccess>> <span class="red">However, you can't tear yourself from the sweet nectar.</span> You desperately lick the pussy pressing against your mouth. <<willpower 1>> <<else>> <<if (1000 - ($rng * 10) - ($enemytrust * 10) - $oralskill + $enemyanger) lte (($enemyarousalmax / ($enemyarousal + 1)) * 100)>> <<set $mouthuse to 0>><<set $mouthstate to 0>><<set $pullaway to 1>> - <<set $NPCList[$mouthtarget].vagina to 0>><span class="green"><<He `$mouthtarget + 1`>> doesn't stop you.</span> + <<set $NPCList[$mouthtarget].vagina to 0>><span class="green"><<He>> doesn't stop you.</span> <<set $NPCList[$mouthtarget].location.genitals to 0>> <<else>> <<if $consensual is 1>> @@ -2145,10 +2152,11 @@ <</if>> <<if $mouthaction is "pullawaykiss">> - <<set $mouthaction to 0>><<set $mouthactiondefault to "pullawaykiss">> + <<set $mouthaction to 0>><<set $mouthactiondefault to "pullawaykiss">><<personselect $mouthtarget>> You try to pull your head away from their lips. <<oralskilluse>><<brat 1 $mouthtarget>> - <<willpowerdifficulty $drugged $willpowermax "silent">> + <<set _nectarDifficulty to Math.clamp($drugged, 0, 500) + Math.clamp($nectar_addiction, 0, 500)>> + <<willpowerdifficulty _nectarDifficulty $willpowermax "silent">> <<if $NPCList[$mouthtarget].type is "plant" and $mouthstate isnot "kissentrance" and !$willpowerSuccess>> <span class="red">However, you can't tear yourself from the sweet nectar.</span> <<if $mouthstate is "kissimminent">> @@ -2160,16 +2168,16 @@ <<else>> <<if (1000 - ($rng * 10) - ($enemytrust * 10) - $oralskill + $enemyanger) lte (($enemyarousalmax / ($enemyarousal + 1)) * 100)>> <<set $mouthuse to 0>><<set $mouthstate to 0>> - <<set $NPCList[$mouthtarget].mouth to 0>><span class="green"><<He `$mouthtarget + 1`>> doesn't stop you.</span> + <<set $NPCList[$mouthtarget].mouth to 0>><span class="green"><<He>> doesn't stop you.</span> <<set $NPCList[$mouthtarget].location.head to 0>> <<else>> <<if $consensual is 1>> <<set $consensual to 0>><<molested>><<controlloss>> <</if>> <<if $mouthstate is "kissentrance">> - <span class="red">However, <<personselect $mouthtarget>><<he>> refuses to allow it,</span> preventing you from moving away from their face. + <span class="red">However, <<he>> refuses to allow it,</span> preventing you from moving away from their face. <<else>> - <span class="red">However, <<personselect $mouthtarget>><<he>> refuses to allow it,</span> kissing you more firmly. + <span class="red">However, <<he>> refuses to allow it,</span> kissing you more firmly. <</if>> <<violence 1>> <</if>> @@ -2191,7 +2199,7 @@ <<set $rng to random(1, 100)>> <<if $mouthaction is "handbite">> - <<set $mouthaction to 0>><<set $mouthactiondefault to "handbite">> + <<set $mouthaction to 0>><<set $mouthactiondefault to "handbite">><<personselect $mouthtarget>> <<actionshandbite $mouthtarget>> <<if $wolfgirl gte 2 or $cat gte 2>> <<defiance 6 $mouthtarget>> @@ -2203,12 +2211,12 @@ <<if $NPCList[$mouthtarget].lefthand is "mouth">> <<set $NPCList[$mouthtarget].lefthand to 0>> <<control 15>> - <span class="teal"><<He `$mouthtarget + 1`>> flinches away in pain, freeing your mouth.</span> + <span class="teal"><<He>> flinches away in pain, freeing your mouth.</span> <</if>> <<if $NPCList[$mouthtarget].righthand is "mouth">> <<set $NPCList[$mouthtarget].righthand to 0>> <<control 15>> - <span class="teal"><<He `$mouthtarget + 1`>> flinches away in pain, freeing your mouth.</span> + <span class="teal"><<He>> flinches away in pain, freeing your mouth.</span> <</if>> <<else>> <<control -5>> @@ -2224,6 +2232,10 @@ You quickly rear back and headbutt <<him>>. <</if>> <<He>> <<if $enemytype is "beast">>yelps and backs off<<else>>yells and stumbles back, clutching <<his>> head<</if>>. + <<if ($description is "faithful" or $description is "fallen") and $sydney.glasses is "glasses">> + <<set $sydney.glasses to "playerbroken">> + <span class="purple"><<His>> glasses shatter.</span> + <</if>> <<defiance 10 $mouthtarget>><<attackstat>><<set $mouthuse to 0>><<set $mouthstate to 0>> <<if $cow gte 2 and $demon gte 2>> <<defiance 10 $mouthtarget>><<defiance 10 $mouthtarget>> @@ -2327,7 +2339,7 @@ <</if>> <<else>> <<set $consensual to 0>> - <<if $NPCList[0].type is "plant">> + <<if $NPCList[$mouthtarget].type is "plant">> <<He>> scoffs. <span class="red">"Are you kidding? That's the fun part!"</span> <<else>> They pause a moment before responding, <span class="red">"Stupid slut, you think you can tell me what to do?"</span> @@ -2359,7 +2371,7 @@ <</if>> <<else>> <<set $consensual to 0>> - <<if $NPCList[0].type is "plant">> + <<if $NPCList[$mouthtarget].type is "plant">> <<He>> scoffs. <span class="red">"Are you kidding? That's the fun part!"</span> <<else>> They pause a moment before responding, <span class="red">"Stupid slut, you think you can tell me what to do?"</span> @@ -2405,7 +2417,7 @@ <</if>> <<else>> <<set $consensual to 0>> - <<if $NPCList[0].type is "plant">> + <<if $NPCList[$mouthtarget].type is "plant">> <<He>> scoffs. <span class="red">"Are you kidding? That's the fun part!"</span> <<else>> They pause a moment before responding, <span class="red">"Stupid slut, you think you can tell me what to do?"</span> @@ -2452,7 +2464,7 @@ <</for>> <<else>> <<set $consensual to 0>> - <<if $NPCList[0].type is "plant">> + <<if $NPCList[$mouthtarget].type is "plant">> <<He>> scoffs. <span class="red">"Are you kidding? That's the fun part!"</span> <<else>> They pause a moment before responding, <span class="red">"Stupid slut, you think you can tell me what to do?"</span> @@ -2484,7 +2496,7 @@ <</if>> <<else>> <<set $consensual to 0>> - <<if $NPCList[0].type is "plant">> + <<if $NPCList[$mouthtarget].type is "plant">> <<He>> scoffs. <<if $NPCList[0].lefthand is 0 or $NPCList[0].righthand is 0>> <span class="red">Are you kidding? That's the fun part! Here, look!"</span> diff --git a/game/base-combat/end.twee b/game/base-combat/end.twee index a69bb0800864f8de536ea61879ac4a0ea1b0a07e..a77bef4a6e0281b0e92355b17ce3ef3ae97b54dd 100644 --- a/game/base-combat/end.twee +++ b/game/base-combat/end.twee @@ -101,6 +101,7 @@ <<unset $feet_planted>> <<unset $speechspraycycleplant>> <<unset $newlyWritten>> +<<unset $combatBegun>> <<switch $player.gender>> <<case "f">> @@ -461,9 +462,7 @@ <<set $npcnum.splice(0)>> <<set $npcrow.splice(0)>> <<if $endeventerror is undefined>> - <<unset $event>> - <<unset $eventslot>> - <<unset $eventtime>> + <<run EventSystem.Clear()>> <</if>> <</widget>> @@ -483,21 +482,14 @@ <<set $NPCList[_i] to clone(setup.baseNPC)>> <<if $enemyno gt 0>> <<set $enemyno -= 1>> - <<set $enemynomax -= 1>> <</if>> <<if $endeventerror is undefined>> - <<if $eventslot.indexOf(_i) isnot -1>> - <<set $event.splice($eventslot.indexOf(_i), 1)>> - <<set $eventtime.splice($eventslot.indexOf(_i), 1)>> - <<set $eventslot.splice($eventslot.indexOf(_i), 1)>> - <</if>> + <<run EventSystem.Pop(_i)>> <</if>> -<<if $enemynomax is 0>> +<<if $enemyno is 0>> <<set $pronoun to 0>> <<if $endeventerror is undefined>> - <<unset $event>> - <<unset $eventslot>> - <<unset $eventtime>> + <<run EventSystem.Clear()>> <</if>> <</if>> <</widget>> diff --git a/game/base-combat/images.twee b/game/base-combat/images.twee index 4fdc34e0d06fac44a7eea7c43bbd175d294e0164..7bb6314987ab86bd2e733c31f3cda908187a478e 100644 --- a/game/base-combat/images.twee +++ b/game/base-combat/images.twee @@ -366,7 +366,7 @@ Mouth is closed in idle frames here. activeclosedmouth can be used in active, th <<if $leftarm isnot "bound" and $leftarm isnot "grappled" and $leftarm isnot "behind">> <img class="layer-sexbasefront anim-idle-2f" @src="_img.doggyactivebaseleftarm" @style="'filter: '+_filters.body"> - <<elseif $worn.upper.set is $worn.lower.set and setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<elseif $worn.upper.set is $worn.lower.set and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <img class="layer-sexaboveclothes anim-idle-2f" @src="_img.doggyactiveleftarmbound" @style="'filter: '+_filters.body"> <<else>> <img class="layer-sexbase anim-idle-2f" @src="_img.doggyactiveleftarmbound" @style="'filter: '+_filters.body"> @@ -473,18 +473,34 @@ Eyelids disabled during idle frames. <</if>> <</if>> -<<if $hairlength gte 900>> - <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/doggyidlefeet.png"> -<<elseif $hairlength gte 700>> - <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/doggyidlethighs.png"> -<<elseif $hairlength gte 600>> - <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/doggyidlenavel.png"> -<<elseif $hairlength gte 400>> - <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/doggyidlechest.png"> -<<elseif $hairlength gte 200>> - <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/doggyidleshoulder.png"> +<<if $fringetype is "hime">> + <<if $hairlength gte 900>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/hime/doggyidlefeet.png"> + <<elseif $hairlength gte 700>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/hime/doggyidlethighs.png"> + <<elseif $hairlength gte 600>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/hime/doggyidlenavel.png"> + <<elseif $hairlength gte 400>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/hime/doggyidlechest.png"> + <<elseif $hairlength gte 200>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/hime/doggyidleshoulder.png"> + <<else>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/hime/doggyidleshort.png"> + <</if>> <<else>> - <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/doggyidleshort.png"> + <<if $hairlength gte 900>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/doggyidlefeet.png"> + <<elseif $hairlength gte 700>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/doggyidlethighs.png"> + <<elseif $hairlength gte 600>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/doggyidlenavel.png"> + <<elseif $hairlength gte 400>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/doggyidlechest.png"> + <<elseif $hairlength gte 200>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/doggyidleshoulder.png"> + <<else>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/doggy/active/hair/doggyidleshort.png"> + <</if>> <</if>> <!-- Below is active hair forced into two frames, which resulted in no hair animation while idle. @@ -953,24 +969,40 @@ Lashes held in place during idle frames, and 4-frame hair overlay that didn't an <</if>> <</if>> -<<if $hairlength gte 900>> - <img @class="'layer-sexhair colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/doggyactivefeet.png"> - /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/edge/chest.png">*/ -<<elseif $hairlength gte 700>> - <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/doggyactivethighs.png"> - /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/edge/chest.png">*/ -<<elseif $hairlength gte 600>> - <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/doggyactivenavel.png"> - /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/edge/chest.png">*/ -<<elseif $hairlength gte 400>> - <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/doggyactivechest.png"> - /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/edge/chest.png">*/ -<<elseif $hairlength gte 200>> - <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/doggyactiveshoulder.png"> - /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/edge/shoulder.png">*/ +<<if $fringetype is "hime">> + <<if $hairlength gte 900>> + <img @class="'layer-sexhair colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/hime/doggyactivefeet.png"> + <<elseif $hairlength gte 700>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/hime/doggyactivethighs.png"> + <<elseif $hairlength gte 600>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/hime/doggyactivenavel.png"> + <<elseif $hairlength gte 400>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/hime/doggyactivechest.png"> + <<elseif $hairlength gte 200>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/hime/doggyactiveshoulder.png"> + <<else>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/hime/doggyactiveshort.png"> + <</if>> <<else>> - <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/doggyactiveshort.png"> - /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/edge/short.png">*/ + <<if $hairlength gte 900>> + <img @class="'layer-sexhair colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/doggyactivefeet.png"> + /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/edge/chest.png">*/ + <<elseif $hairlength gte 700>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/doggyactivethighs.png"> + /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/edge/chest.png">*/ + <<elseif $hairlength gte 600>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/doggyactivenavel.png"> + /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/edge/chest.png">*/ + <<elseif $hairlength gte 400>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/doggyactivechest.png"> + /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/edge/chest.png">*/ + <<elseif $hairlength gte 200>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/doggyactiveshoulder.png"> + /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/edge/shoulder.png">*/ + <<else>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/doggyactiveshort.png"> + /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/edge/short.png">*/ + <</if>> <</if>> <img @class="'colour-hair layer-sexlashes anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/hair/doggyactivelashes.png"> @@ -1152,13 +1184,14 @@ and _stanceCheck isnot "top">> <<elseif $vaginastate is "doublepenetrated">> <div @class="_vagClass" @id="_vagID"> <<if $NPCList[$vaginatarget].penis is "vaginadouble" and $NPCList[$vaginadoubletarget].penis is "vaginadouble">> + <<xraycumdouble>> <<if $NPCList[$vaginatarget].skincolour is "black">> <img @class="'anim-xray-8f-'+_animspeed" src="img/sex/black/xrayvaginaldoubleblack.png"> <<else>> <img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xrayvaginaldouble.png"> <</if>> <<else>> - <<xraycum>> + <<xraycumdouble>> <<if $vaginatarget isnot undefined and $NPCList[$vaginatarget].skincolour is "black">> <img @class="'anim-xray-8f-'+_animspeed" src="img/sex/black/xrayvaginal.png"> <<else>> @@ -1339,6 +1372,15 @@ and _stanceCheck isnot "top">> <img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xrayvaginalcum.png"> </div> <</if>> + <<if $condomVaginalImg and $vaginastate is "doublepenetrated">> + <div class="i256" @id="_vagID"> + <img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xrayvaginaldouble.png"> + </div> + <<elseif $vaginastate is "doublepenetrated">> + <div class="i256" @id="_vagID"> + <img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xrayvaginaldoublecum.png"> + </div> + <</if>> <<if $condomAnalImg and $anusstate is "penetrated">> <div class="i256" @id="_anusID"> <img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xrayanal.png"> @@ -1377,6 +1419,17 @@ and _stanceCheck isnot "top">> <</widget>> +<<widget "xraycumdouble">> + +<<if setup.bodyliquid.combined("vagina") gte 1>> + <<set _src to "img/sex/xraydoublecum" + Math.clamp(setup.bodyliquid.combined("vagina"),1,5) + ".png">> + <div class="i256" id="xrayvaginaldoublecum"> + <img @class="'anim-xray-8f-'+_animspeed" @src="_src"> + </div> +<</if>> + +<</widget>> + :: Widgets Close Img [widget] <<widget "closeimg">> <<set _filters to $skinColor.current>> diff --git a/game/base-combat/init.twee b/game/base-combat/init.twee index d71b053021d5457c8d6f3f455289aee0aa52c96c..77e9f1dc75aa26bdab43171cd45993143630fc37 100644 --- a/game/base-combat/init.twee +++ b/game/base-combat/init.twee @@ -24,7 +24,14 @@ <<if $dissociation gte 1>> <<set $enemytrust -= 40>> <</if>> -<<set $enemytype to "man">> +<<if $args[0]>> + <<set $enemytype to $args[0]>> +<<else>> + <<set $enemytype to "man">> +<</if>> +<<if $args[0] is "plant">> + <<set $enemyno to 1>> +<</if>> <<set $rapeavoid to 1>> <<set $orgasmdown to 0>> @@ -203,37 +210,11 @@ <span class="red">ERROR: beastNEWinit unknown type</span> <</if>> -<!-- Jimmy: Loops over _nn (How many beasts you plan to initiate) - Then loops over the NPCList, currently size of 6. - If a slot does not define .type (WIP: Plan to make this standard), - generate the beast in that slot ID and break the NPCList loop. - Variables: - $_i is the current iteration of how many beasts to generate. - $_j is the NPCList slot index that is being selected for insertion. ---> -<<set $_j to 0>> -<!-- Loop from 0 to the number of beasts to create. --> -<<for $_i = 0; $_i < _nn; $_i++>> - <!-- Attempt to insert each NPC into a slot of NPCList --> - <<for $_j = $_j; $_j < 6; $_j++>> - <<if $NPCList[$_j].type is undefined>> - <<set $_j += 1>> - <<generateBEAST $_j _tpe _gnn _beast_genitals _beast_monster>> - <<break>> - <</if>> - <</for>> -<</for>> - -<!-- Jimmy: Old iterator code. - This was replaced with above because people could insert NPCs before beasts at higher positions. - Typically because the beast has to be by itself in encounter combat (For now) -<<set _offset to $enemyno + 1>> -<<for _xx = _offset; _xx < _nn + _offset; _xx++>> +<<for _xx = 1; _xx < _nn+1; _xx++>> <<generateBEAST _xx _tpe _gnn _beast_genitals _beast_monster>> <</for>> -<<unset _offset>> ---> +<<set $enemyno to _nn>> <<set $enemytype to "beast">> <!-- NG This means if Beast 1 is a monster, they are all monsters --> diff --git a/game/base-combat/man-combat.twee b/game/base-combat/man-combat.twee index ddda9ed78c9acb4a8568ea5a2009c3e8bda60a85..dadf7496d00d04eb101b2d918513c816e4aebebf 100644 --- a/game/base-combat/man-combat.twee +++ b/game/base-combat/man-combat.twee @@ -279,7 +279,7 @@ <<He>> releases <<his>> hand from your $worn.over_lower.name. <<combat-reset-hand $args[0]>> <<elseif $rng lte 100>> - <<if setup.clothes.over_lower[$worn.over_lower.index].skirt is 1>> + <<if setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1>> <<if $worn.over_lower.skirt_down is 1>> <<He>> lifts up your skirt, exposing your <<if $worn.lower.state is "waist">> @@ -470,7 +470,7 @@ <span class="blue"><<He>> releases <<his>> hand from your $worn.under_lower.name.</span> <<combat-reset-hand $args[0]>> <<elseif $rng lte 100>> - <<if ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.type.includes("naked")))>> + <<if ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.type.includes("naked")))>> <<if $worn.under_lower.state is "waist">> <<if $combatgoal is "strip" or $rng gt 20 or $worn.under_lower.no_aside>> <<He>> pulls your $worn.under_lower.name down your thighs, <span class="lewd">revealing your <<genitals>>.</span> @@ -533,7 +533,7 @@ <span class="lblue"><<He>> releases <<his>> hand from your $worn.lower.name.</span> <<combat-reset-hand $args[0]>> <<elseif $rng lte 100>> - <<if ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.type.includes("naked")))>> + <<if ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.type.includes("naked")))>> <<if $worn.lower.skirt_down is 1>> <<He>> lifts up your skirt, exposing your <<if $worn.under_lower.state is "waist">> @@ -743,7 +743,7 @@ <</if>> <<elseif _overOutfit>> <<if $worn.over_upper.open is 1>> - <<if $worn.over_lower.state is $worn.over_upper.state_top and $worn.over_lower.state is $worn.over_upper.state and setup.clothes.over_lower[$worn.over_lower.index].skirt is 1>> + <<if $worn.over_lower.state is $worn.over_upper.state_top and $worn.over_lower.state is $worn.over_upper.state and setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1>> <<if $position is "wall" and $walltype isnot "front">> <<He>> tugs at your $worn.over_upper.name, tearing <<overupperit>> before <span class="blue">letting go.</span> <<combat-reset-hand $args[0]>><<set $worn.over_upper.integrity -= 10>><<neutral 1 _n>> @@ -892,7 +892,7 @@ <</if>> <<elseif _middleOutfit>> <<if $worn.upper.open is 1>> - <<if $worn.lower.state is $worn.upper.state_top and $worn.lower.state is $worn.upper.state and setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if $worn.lower.state is $worn.upper.state_top and $worn.lower.state is $worn.upper.state and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $position is "wall" and $walltype isnot "front">> <<He>> tugs at your $worn.upper.name, tearing <<upperit>> before <span class="blue">letting go.</span> <<combat-reset-hand $args[0]>><<set $worn.upper.integrity -= 10>><<neutral 1 _n>> @@ -1028,7 +1028,7 @@ <</if>> <<elseif _underOutfit>> <<if $worn.under_upper.open is 1>> - <<if $worn.under_lower.state is $worn.under_upper.state_top and $worn.under_lower.state is $worn.under_upper.state and setup.clothes.under_lower[$worn.under_lower.index].skirt is 1>> + <<if $worn.under_lower.state is $worn.under_upper.state_top and $worn.under_lower.state is $worn.under_upper.state and setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].skirt is 1>> <<if $position is "wall" and $walltype isnot "front">> <<He>> tugs at your $worn.under_upper.name, tearing <<underupperit>> before <span class="blue">letting go.</span> <<combat-reset-hand $args[0]>><<set $worn.under_upper.integrity -= 10>><<neutral 1 _n>> @@ -1416,7 +1416,7 @@ <<neutral 2 _n>> <<else>> <<set $handtarget to 0>> - <<if ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.type.includes("naked")))>> + <<if ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.type.includes("naked")))>> <<if $worn.under_lower.name isnot "naked" and $worn.under_lower.state isnot "totheside">> <span class="purple"><<He>> grasps your $worn.under_lower.name with <<his>> $args[0] hand.</span> <<set $handtarget to "underclothes">><<neutral 1 _n>> @@ -1456,7 +1456,7 @@ <<neutral 2 _n>> <<else>> <<set $handtarget to 0>> - <<if ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.type.includes("naked")))>> + <<if ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.type.includes("naked")))>> <<if $worn.under_lower.name isnot "naked" and $worn.under_lower.state isnot "totheside">> <span class="purple"><<He>> grasps your $worn.under_lower.name with <<his>> $args[0] hand.</span> <<set $handtarget to "underclothes">><<neutral 1 _n>> @@ -1579,15 +1579,15 @@ <<neutral 2 _n>> <<else>> <<set $speechbottom to 1>> - <<if $worn.over_lower.state is "waist" and setup.clothes.over_lower[$worn.over_lower.index].skirt is 0>> - <<if $worn.lower.state is "waist" and setup.clothes.lower[$worn.lower.index].skirt is 0>> + <<if $worn.over_lower.state is "waist" and setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 0>> + <<if $worn.lower.state is "waist" and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0>> <<He>> tries to grope your <<bottom>> through your $worn.over_lower.name, but you're wearing too much to really feel it. <<neutral 1 _n>> <<else>> <<He>> gropes your <<bottom>> through your $worn.over_lower.name. <<neutral 5 _n>> <</if>> - <<elseif $worn.lower.state is "waist" and setup.clothes.lower[$worn.lower.index].skirt is 0>> + <<elseif $worn.lower.state is "waist" and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0>> <<He>> gropes your <<bottom>> through your $worn.lower.name. <<neutral 2 _n>> <<elseif $worn.under_lower.state is "waist">> @@ -1637,15 +1637,15 @@ <</if>> <<elseif $enemyanger + $rng lte 100 and $walltype isnot "front">> <<if $worn.genitals.type.includes("chastity")>> - <<if $worn.over_lower.state is "waist" and setup.clothes.over_lower[$worn.over_lower.index].skirt is 0>> - <<if $worn.lower.state is "waist" and setup.clothes.lower[$worn.lower.index].skirt is 0>> + <<if $worn.over_lower.state is "waist" and setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 0>> + <<if $worn.lower.state is "waist" and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0>> <<He>> tries to fondle you around your $worn.genitals.name through your $worn.over_lower.name, but you're wearing too much to really feel it. <<neutral 1 _n>> <<else>> <<He>> fondles and <<strokes>> you around your $worn.genitals.name through your $worn.over_lower.name. <<neutral 5 _n>> <</if>> - <<elseif $worn.lower.state is "waist" and setup.clothes.lower[$worn.lower.index].skirt is 0>> + <<elseif $worn.lower.state is "waist" and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0>> <<He>> fondles and <<strokes>> around your $worn.genitals.name through your $worn.lower.name. <<neutral 5 _n>> <<elseif $worn.under_lower.state is "waist">> @@ -1664,15 +1664,15 @@ <<bodypart_admire_chance right_thigh>> <</if>> <<elseif $player.penisExist and (!$player.vaginaExist or random(0,100) gte 50)>> - <<if $worn.over_lower.state is "waist" and setup.clothes.over_lower[$worn.over_lower.index].skirt is 0>> - <<if $worn.lower.state is "waist" and setup.clothes.lower[$worn.lower.index].skirt is 0>> + <<if $worn.over_lower.state is "waist" and setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 0>> + <<if $worn.lower.state is "waist" and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0>> <<He>> tries to grope your <<penis>> through your $worn.over_lower.name, but you're wearing too much to really feel it. <<neutral 1 _n>> <<else>> <<He>> gropes and <<strokes>> your <<penis>> through your $worn.over_lower.name. <<neutral 5 _n>> <</if>> - <<elseif $worn.lower.state is "waist" and setup.clothes.lower[$worn.lower.index].skirt is 0>> + <<elseif $worn.lower.state is "waist" and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0>> <<He>> gropes and <<strokes>> your <<penis>> through your $worn.lower.name. <<neutral 5 _n>> <<elseif $worn.under_lower.state is "waist">> @@ -1690,15 +1690,15 @@ <</if>> <<bodypart_admire_chance pubic>> <<elseif $player.vaginaExist>> - <<if $worn.over_lower.state is "waist" and setup.clothes.over_lower[$worn.over_lower.index].skirt is 0>> - <<if $worn.lower.state is "waist" and setup.clothes.lower[$worn.lower.index].skirt is 0>> + <<if $worn.over_lower.state is "waist" and setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 0>> + <<if $worn.lower.state is "waist" and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0>> <<He>> tries to grope your labia through your $worn.over_lower.name, but you're wearing too much to really feel it. <<neutral 1 _n>> <<else>> <<He>> gropes and <<strokes>> your labia through your $worn.over_lower.name. <<neutral 5 _n>> <</if>> - <<elseif $worn.lower.state is "waist" and setup.clothes.lower[$worn.lower.index].skirt is 0>> + <<elseif $worn.lower.state is "waist" and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0>> <<He>> gropes and <<strokes>> your labia through your $worn.lower.name. <<neutral 5 _n>> <<elseif $worn.under_lower.state is "waist">> @@ -1726,7 +1726,7 @@ <<He>> pinches your shaft. <<neutral 10 _n>><<bruise penis>> <</if>> - <<elseif $player.vaginaExist>> + <<elseif $player.vaginaExist and !$worn.genitals.type.includes("chastity")>> <<He>> pinches your clitoris. <<neutral 15 _n>><<bruise vagina>><<set $speechclit to 1>> <</if>> @@ -1764,7 +1764,7 @@ <</if>> <</if>> <<elseif $enemyanger + $rng lte 125 and $walltype isnot "front">> - <<if ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.type.includes("naked")))>> + <<if ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.type.includes("naked")))>> <<if $worn.under_lower.name isnot "naked" and $worn.under_lower.state isnot "totheside">> <span class="purple"><<He>> grasps your $worn.under_lower.name with <<his>> $args[0] hand.</span> <<combat-set-hand-target $args[0] "underclothes">><<neutral 1 _n>> @@ -1803,7 +1803,7 @@ <<bodypart_admire_chance right_bottom>> <</if>> <<elseif $enemyanger + $rng lte 130 and $walltype isnot "front">> - <<if ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.type.includes("naked")))>> + <<if ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.type.includes("naked")))>> <<if $worn.under_lower.name isnot "naked" and $worn.under_lower.state isnot "totheside">> <span class="purple"><<He>> grasps your $worn.under_lower.name with <<his>> $args[0] hand.</span> <<combat-set-hand-target $args[0] "underclothes">><<neutral 1 _n>> @@ -1862,7 +1862,7 @@ <<violence 2>><<combat-set-hand-target $args[0] "throat">><<set $neckuse to "hand">> <<elseif $leftarm isnot "bound" and $rightarm isnot "bound" and $leftarm isnot "grappled" and $rightarm isnot "grappled" and $NPCList[_n].lefthand isnot "arms" and $NPCList[_n].righthand isnot "arms">> <span class="purple"><<He>> pins down your arms.</span> - <<combat-set-hand-target $args[0] "arms">><<set $leftarm to "grappled">><<set $rightarm to "grappled">><<set $lefttarget to _n>><<set $righttarget to _n>><<disablearms>><<violence 2>><<bruise leftarm>><<bruise rightarm>><<set $speecharms to 1>> + <<combat-set-hand-target $args[0] "arms">><<disablearms>><<set $leftarm to "grappled">><<set $rightarm to "grappled">><<set $lefttarget to _n>><<set $righttarget to _n>><<violence 2>><<bruise leftarm>><<bruise rightarm>><<set $speecharms to 1>> <<if $vaginause is "cover">> <<set $vaginause to 0>> <</if>> @@ -1960,7 +1960,7 @@ <span class="purple"><<He>> grasps your $worn.feet.name.</span> <<combat-set-hand-target $args[0] "shoes">> <<neutral 3 _n>> - <<elseif $enemytype is "man" and $NPCList[_n].fullDescription isnot "Ivory Wraith" and !$abomination>> + <<elseif $enemytype is "man" and $NPCList[_n].fullDescription isnot "Ivory Wraith" and !$abomination and !$possessed>> <span class="pink"><<He>> produces a pair of menacing metal shackles.</span> <<combat-set-hand-target $args[0] "shackle_entrance">> <<neutral 4 _n>> @@ -2080,6 +2080,7 @@ <<elseif $debugdisable is "f">> <span class="red">ERROR: Unexpected $$NPCList[_n].pronoun: [$NPCList[_n].pronoun]</span> <</if>> +<<personselect _n>> <<switch _n>> <<case 0>> <<manspeech _n>> @@ -2377,13 +2378,13 @@ <<if $NPCList[_n].penis is "vaginadouble">> <!-- Notes for how double functions work are found in the NPC action select section --> <<set _dvp to 0>> - <<set _npcA to $vaginatarget>> - <<set _npcB to $vaginadoubletarget>> - <<if $NPCList[_npcA] is $NPCList[_n]>> /* State 1 is out of sync, state 2 is in sync */ - <<set _dvp to ($NPCList[_npcB].penis isnot "vaginadouble" ? 1 : 2)>> - <<elseif $NPCList[_npcB] is $NPCList[_n]>> - <<set _dvp to ($NPCList[_npcA].penis isnot "vaginadouble" ? 1 : 2)>> - <</if>> + <<set _npcA to $vaginatarget>> + <<set _npcB to $vaginadoubletarget>> + <<if $NPCList[_npcA] is $NPCList[_n]>> /* State 1 is out of sync, state 2 is in sync */ + <<set _dvp to ($NPCList[_npcB].penis isnot "vaginadouble" ? 1 : 2)>> + <<elseif $NPCList[_npcB] is $NPCList[_n]>> + <<set _dvp to ($NPCList[_npcA].penis isnot "vaginadouble" ? 1 : 2)>> + <</if>> <<if $rng gte 101>> <span class="purple"><<He>> slides <<his>> $NPCList[_n].penisdesc out of your <<pussy>>.</span> @@ -2453,13 +2454,13 @@ <<set $rng to random(1, 100)>> <<if $NPCList[_n].penis is "vaginadoubleimminent">> <<set _dvp to 0>> - <<set _npcA to (_n is $vaginatarget ? $vaginatarget : $vaginadoubletarget)>> - <<set _npcB to (_n is $vaginatarget ? $vaginadoubletarget : $vaginatarget)>> - <<if _npcA is _n>> /* State 1 is out of sync, state 2 is in sync */ - <<set _dvp to ($NPCList[_npcB].penis isnot "anusdouble" ? 1 : 2)>> - <<elseif _npcB is _n>> - <<set _dvp to ($NPCList[_npcA].penis isnot "anusdouble" ? 1 : 2)>> - <</if>> + <<set _npcA to (_n is $vaginatarget ? $vaginatarget : $vaginadoubletarget)>> + <<set _npcB to (_n is $vaginatarget ? $vaginadoubletarget : $vaginatarget)>> + <<if _npcA is _n>> /* State 1 is out of sync, state 2 is in sync */ + <<set _dvp to ($NPCList[_npcB].penis isnot "anusdouble" ? 1 : 2)>> + <<elseif _npcB is _n>> + <<set _dvp to ($NPCList[_npcA].penis isnot "anusdouble" ? 1 : 2)>> + <</if>> <<if $rng gte 101>> <span class="blue"><<He>> stops pressing <<his>> $NPCList[_n].penisdesc against your pussy.</span> @@ -4902,6 +4903,9 @@ <</if>> <</if>> <</if>> +<<if $possessed>> + <span class="blue">You barely feel a thing.</span> +<</if>> <<if $stalk and _stripped>>/*NPC can run off with clothes, and trigger a chase sequence. */ <<stalk_flight>> <<set $position to "stalk">> @@ -5082,7 +5086,7 @@ <<if $NPCList[_n].type is "plant" and $NPCList[_n].penissize gte 4>> <span class="red">Something about it scares you.</span> <</if>> - <<neutral 5>><<set $anususe to "penis">><<set $NPCList[_n].penis to "anusentrance">><<set $anusstate to "entrance">><<set $speechanusentrance to 1>> + <<neutral 5>><<set $anususe to "penis">><<set $NPCList[_n].penis to "anusentrance">><<set $anusstate to "entrance">><<set $speechanusentrance to 1>><<set $anustarget to _n>> <<set $NPCList[_n].location.genitals = "genitals">> <<elseif $analdisable is "f" and $analdoubledisable is "f" and ($awareness lt 300 ? random(0,1) is 0 : random(0,3) isnot 0) and $vaginause isnot "penisdouble" and $bottomuse isnot "penis" and $anususe is "penis" and $anususe isnot "penisdouble" and $NPCList[_n].penissize gte 2 and $NPCList[$anustarget].penissize gte 2>> @@ -5196,7 +5200,10 @@ <span class="green"><<He>> slips a condom on <<his>> penis.</span> <</if>> <<if $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1>> - <<if $worn.under_lower.vagina_exposed is 1 and !$worn.genitals.type.includes("chastity")>> + <<if $worn.under_lower.vagina_exposed is 1 and !$worn.genitals.type.includes("chastity") and $NPCList[_n].chastity.penis.includes("chastity")>> + <span class="purple"><<He>> presses <<his>> $NPCList[_n].penisdesc against your <<pussy>>.</span> + <<sex 5 _n>><<set $vaginause to "penis">><<set $NPCList[_n].penis to "vaginaentrance">><<set $vaginastate to "entrance">><<set $speechvaginaentrance to 1>><<set $vaginatarget to _n>> + <<elseif $worn.under_lower.vagina_exposed is 1 and !$worn.genitals.type.includes("chastity")>> <span class="purple"><<He>> presses <<his>> $NPCList[_n].penisdesc against your <<pussy>>, preparing to penetrate.</span> <<sex 5 _n>><<set $vaginause to "penis">><<set $NPCList[_n].penis to "vaginaimminent">><<set $vaginastate to "imminent">><<set $speechvaginaimminent to 1>><<set $vaginatarget to _n>> <<elseif $worn.under_lower.vagina_exposed is 0>> @@ -5219,7 +5226,10 @@ <span class="green"><<He>> slips a condom on <<his>> penis.</span> <</if>> <<if $worn.lower.anus_exposed is 1 and $worn.over_lower.anus_exposed is 1>> - <<if $worn.under_lower.anus_exposed is 1 and $worn.genitals.anus_exposed is 1>> + <<if $worn.under_lower.anus_exposed is 1 and $worn.genitals.anus_exposed is 1 and $NPCList[_n].chastity.penis.includes("chastity")>> + <span class="purple"><<He>> presses <<his>> $NPCList[_n].penisdesc against your anus.</span> + <<neutral 5>><<set $anususe to "penis">><<set $NPCList[_n].penis to "anusentrance">><<set $anusstate to "entrance">><<set $speechanusentrance to 1>><<set $anustarget to _n>> + <<elseif $worn.under_lower.anus_exposed is 1 and $worn.genitals.anus_exposed is 1>> <span class="purple"><<He>> presses <<his>> $NPCList[_n].penisdesc against your anus, preparing to penetrate.</span> <<sex 5 _n>><<set $anususe to "penis">><<set $NPCList[_n].penis to "anusimminent">><<set $anusstate to "imminent">><<set $speechanusimminent to 1>><<set $anustarget to _n>> <<elseif $worn.under_lower.anus_exposed is 0>> @@ -5325,13 +5335,18 @@ <span class="blue"><<He>> moves <<his>> pussy close to yours.</span> <<set $NPCList[_n].location.genitals = "genitals">><<set $speechtribentrance to 1>> <<elseif $enemyanger + $rng lte 120 and $penisuse is 0 and $player.penisExist and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals" and !$worn.genitals.type.includes("chastity") and $walltype isnot "front">> - <<set $penisuse to "othervagina">><<set $NPCList[_n].vagina to "penisimminent">><<set $penisstate to "imminent">><<set $penistarget to _n>> <<if $condomUse is false>> <<elseif $condomUse is true and !$player.condom and $parasite.penis.name is undefined>> <<equipCondom>> <span class="green"><<He>> slips a condom on your <<penis>>.</span> <</if>> - <span class="purple"><<He>> wraps <<his>> legs around your pelvis, pressing <<his>> pussy against your <<genitals>>.</span> + <<if $NPCList[_n].chastity.vagina.includes("chastity")>> + <<set $penisuse to "othervagina">><<set $NPCList[_n].vagina to "penisentrance">><<set $penisstate to "entrance">><<set $penistarget to _n>> + <span class="blue"><<He>> straddles you, <<his>> pussy hovering close to your <<penis>>.</span> + <<else>> + <<set $penisuse to "othervagina">><<set $NPCList[_n].vagina to "penisimminent">><<set $penisstate to "imminent">><<set $penistarget to _n>> + <span class="purple"><<He>> wraps <<his>> legs around your pelvis, pressing <<his>> pussy against your <<genitals>>.</span> + <</if>> <<set $NPCList[_n].location.genitals = "genitals">> <<elseif $enemyanger + $rng lte 120 and $vaginause is 0 and $player.vaginaExist and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals" and $walltype isnot "front">> <<set $vaginause to "othervagina">><<set $vaginastate to "othervaginaimminent">><<set $NPCList[_n].vagina to "vaginaimminent">><<sex 20 _n>><<set $vaginatarget to _n>> diff --git a/game/base-combat/missionary-images.twee b/game/base-combat/missionary-images.twee index e23eed07c40ffc73daa7c02da2c0f64c48fa5bff..4406a3f852a2b5d3c96c84749752569595e99cc7 100644 --- a/game/base-combat/missionary-images.twee +++ b/game/base-combat/missionary-images.twee @@ -280,18 +280,34 @@ This image is the eyelids, commented out so the player's eyes stay open in idle <</if>> <</if>> -<<if $hairlength gte 900>> - <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/activefeet.png"> -<<elseif $hairlength gte 700>> - <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/activethighs.png"> -<<elseif $hairlength gte 600>> - <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/activenavel.png"> -<<elseif $hairlength gte 400>> - <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/activechest.png"> -<<elseif $hairlength gte 200>> - <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/activeshoulder.png"> +<<if $fringetype is "hime">> + <<if $hairlength gte 900>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/hime/activefeet.png"> + <<elseif $hairlength gte 700>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/hime/activethighs.png"> + <<elseif $hairlength gte 600>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/hime/activenavel.png"> + <<elseif $hairlength gte 400>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/hime/activechest.png"> + <<elseif $hairlength gte 200>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/hime/activeshoulder.png"> + <<else>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/hime/activeshort.png"> + <</if>> <<else>> - <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/activeshort.png"> + <<if $hairlength gte 900>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/activefeet.png"> + <<elseif $hairlength gte 700>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/activethighs.png"> + <<elseif $hairlength gte 600>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/activenavel.png"> + <<elseif $hairlength gte 400>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/activechest.png"> + <<elseif $hairlength gte 200>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/activeshoulder.png"> + <<else>> + <img class="layer-sexhair colour-hair anim-idle-2f" src="img/sex/missionary/active/hair/activeshort.png"> + <</if>> <</if>> <!-- @@ -755,24 +771,40 @@ Same as above, but with eyelashes. <</if>> <</if>> -<<if $hairlength gte 900>> - <img @class="'layer-sexhair colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/activefeet.png"> - /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/edge/chest.png">*/ -<<elseif $hairlength gte 700>> - <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/activethighs.png"> - /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/edge/chest.png">*/ -<<elseif $hairlength gte 600>> - <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/activenavel.png"> - /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/edge/chest.png">*/ -<<elseif $hairlength gte 400>> - <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/activechest.png"> - /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/edge/chest.png">*/ -<<elseif $hairlength gte 200>> - <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/activechest.png"> - /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/edge/chest.png">*/ +<<if $fringetype is "hime">> + <<if $hairlength gte 900>> + <img @class="'layer-sexhair colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/hime/activefeet.png"> + <<elseif $hairlength gte 700>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/hime/activethighs.png"> + <<elseif $hairlength gte 600>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/hime/activenavel.png"> + <<elseif $hairlength gte 400>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/hime/activechest.png"> + <<elseif $hairlength gte 200>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/hime/activechest.png"> + <<else>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/hime/activeshort.png"> + <</if>> <<else>> - <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/activeshort.png"> - /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/edge/short.png">*/ + <<if $hairlength gte 900>> + <img @class="'layer-sexhair colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/activefeet.png"> + /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/edge/chest.png">*/ + <<elseif $hairlength gte 700>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/activethighs.png"> + /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/edge/chest.png">*/ + <<elseif $hairlength gte 600>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/activenavel.png"> + /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/edge/chest.png">*/ + <<elseif $hairlength gte 400>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/activechest.png"> + /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/edge/chest.png">*/ + <<elseif $hairlength gte 200>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/activechest.png"> + /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/edge/chest.png">*/ + <<else>> + <img @class="'colour-hair layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/activeshort.png"> + /*<img @class="'layer-sextears colour-hair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/edge/short.png">*/ + <</if>> <</if>> <img @class="'colour-hair layer-sexlashes anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/hair/activelashes.png"> diff --git a/game/base-combat/npc-behaviour.twee b/game/base-combat/npc-behaviour.twee index 3989e5b1e6afe28ab603d1de58dbd22a32c20334..140ff5aaa72ecfb8ac6cc6a4a67c4ad7b63fdb52 100644 --- a/game/base-combat/npc-behaviour.twee +++ b/game/base-combat/npc-behaviour.twee @@ -189,11 +189,11 @@ <</widget>> <<widget "npchand">> -<<if $NPCList[0].penis isnot "none">> -<<set $leftarm to "penis">><<set $NPCList[0].penis to "leftarm">> -<<else>> -<<set $leftarm to "othervagina">><<set $NPCList[0].vagina to "leftarm">> -<</if>> + <<if $NPCList[0].penis isnot "none">> + <<set $leftarm to "penis">><<set $NPCList[0].penis to "leftarm">> + <<else>> + <<set $leftarm to "othervagina">><<set $NPCList[0].vagina to "leftarm">> + <</if>> <</widget>> <<widget "npcidlegenitals">> @@ -208,7 +208,7 @@ <</widget>> <<widget "npckiss">> -<<set $NPCList[0].mouth to "kiss">><<set $mouthstate to "kiss">><<set $mouthuse to "kiss">><<set $mouthtarget to 0>> + <<set $NPCList[0].mouth to "kiss">><<set $mouthstate to "kiss">><<set $mouthuse to "kiss">><<set $mouthtarget to 0>> <</widget>> <<widget "npcexpose">> @@ -224,12 +224,12 @@ <<widget "npcgrapplestripall">> <<if $rightarm is 0>> -<<set $rightarm to "grappled">> -<<set $NPCList[0].lefthand to "arms">> + <<set $rightarm to "grappled">> + <<set $NPCList[0].lefthand to "arms">> <</if>> <<if $leftarm is 0>> -<<set $leftarm to "grappled">> -<<set $NPCList[0].lefthand to "arms">> + <<set $leftarm to "grappled">> + <<set $NPCList[0].lefthand to "arms">> <</if>> <<set $NPCList[0].righthand to 0>> <<set $position to "missionary">> @@ -310,7 +310,8 @@ <<widget "npc_submissive">> <<if $NPCList[0].penis isnot "none">> <<set $NPCList[0].penis to "clothed">> -<<else>> +<</if>> +<<if $NPCList[0].vagina isnot "none">> <<set $NPCList[0].vagina to "clothed">> <</if>> <<set $NPCList[0].lefthand to "idle">> diff --git a/game/base-combat/npc-damage.twee b/game/base-combat/npc-damage.twee index 707547e9ae9ddf920f913c4eec7550b50a1f1dad..e250d4bc411b6304309857e9694063e5ebc6ee75 100644 --- a/game/base-combat/npc-damage.twee +++ b/game/base-combat/npc-damage.twee @@ -15,7 +15,7 @@ <<set _i to $args[0]>> <<personselect _i>> -<span class="blue">The <<person>> staggers back, defeated.</span> +<span class="blue"><<combatPerson>> staggers back, defeated.</span> <<llpain>><<llstress>><<lltrauma>> <br><br> @@ -174,12 +174,11 @@ <<set $enemyhealth += $NPCList[_returnHP].health>> <</if>> <</for>> +<!-- Give PC stats uptick. --> +<<violence -10>> <<if $newtarget is undefined>> <<set $newtarget to $oldtarget>> <</if>> -<!-- Give PC stats uptick. Could be replaced with <<violence -xx>> call --> -<<set $pain to 0>> -<<stress -18>><<trauma -6>> <</widget>> diff --git a/game/base-combat/npc-generation.twee b/game/base-combat/npc-generation.twee index 1535177e8f8a3c7fcb49846302ce81b177ce1585..7b0c996496916216007926e68c45959a662c1194 100644 --- a/game/base-combat/npc-generation.twee +++ b/game/base-combat/npc-generation.twee @@ -6,46 +6,35 @@ <!-- Example: <<generateNPC 1 a f h 20>> would generate NPC 1 as adult female/herm "demon" monster type--> <!-- Latter two examples can only be called via this widget; they are not autogenerated --> -<!-- Checks if endevent was properly used after the last event --> -<<checkEventNPC `$args[0] - 1`>> <<set _n to $args[0]-1>> -<<set _stat to $args[1]>> -<<set _pro to $args[2]>> -<<set _gen to $args[3]>> +<!-- Checks if endevent was properly used after the last event --> +<<checkEventNPC _n>> +<<set _status to $args[1]>> /* "t" for teen or "a" for adult */ +<<set _pronoun to $args[2]>> +<<set _gender to $args[3]>> <<set _lvl to $args[4]>> -<<if _pro is "m" or _pro is "f">> - <<set $NPCList[_n].pronoun to _pro>> +<<if _pronoun is "m" or _pronoun is "f">> + <<set $NPCList[_n].pronoun to _pronoun>> <<else>> <<set $rng to random(1, 100)>> <<if _generate_victim is 1>> <<unset _generate_victim>> - <<if $malevictimchance lt $rng>> - <<set $NPCList[_n].gender to "f">><<set $NPCList[_n].pronoun to "f">> - <<else>> - <<set $NPCList[_n].gender to "m">><<set $NPCList[_n].pronoun to "m">> - <</if>> + <<set $NPCList[_n].pronoun to ($rng lte $malevictimchance ? "m" : "f")>> <<elseif _generate_partner is 1>> <<unset _generate_partner>> - <<if $homochance lt random(1, 100)>> - <<if $NPCList[0].gender is "f">> - <<set $NPCList[_n].gender to "m">><<set $NPCList[_n].pronoun to "m">> - <<else>> - <<set $NPCList[_n].gender to "f">><<set $NPCList[_n].pronoun to "f">> - <</if>> - <<else>> - <<set $NPCList[_n].gender to $NPCList[0].gender>><<set $NPCList[_n].pronoun to $NPCList[0].pronoun>> - <</if>> + <!-- This uses NPCList[0] to determine if the couple is homo or not. Maybe change it to be n-1? What if the partners are in slots 1 and 2? --> + <<set $NPCList[_n].pronoun to ($rng lte $homochance ? $NPCList[0].pronoun : ($NPCList[0].pronoun is "f" ? "m" : "f"))>> <<else>> - <<if $malechance lt $rng>> - <<set $NPCList[_n].gender to "f">><<set $NPCList[_n].pronoun to "f">> - <<else>> - <<set $NPCList[_n].gender to "m">><<set $NPCList[_n].pronoun to "m">> - <</if>> + <<set $NPCList[_n].pronoun to ($rng lte $malechance ? "m" : "f")>> <</if>> <</if>> +<!-- This doesn't need to be set here, but that's how it's been done in the past, so we'll set it just in case. --> +<!-- NPC gender gets properly set according to player settings in the npcattribute widget. --> +<<set $NPCList[_n].gender to $NPCList[_n].pronoun>> + <<set $NPCList[_n].lefthand to 0>> <<set $NPCList[_n].righthand to 0>> <<set $NPCList[_n].mouth to 0>> @@ -53,34 +42,13 @@ <<set $NPCList[_n].location.head to 0>> <<set $NPCList[_n].location.genitals to 0>> <<set $NPCList[_n].bold to 0>> -<<if $NPCList[_n].pronoun is "f">> - <<set $NPCList[_n].name to $NPC_names_f.random()>> -<<else>> - <<set $NPCList[_n].name to $NPC_names_m.random()>> -<</if>> +<<set $NPCList[_n].name to ($NPCList[_n].pronoun is "f" ? $NPC_names_f.random() : $NPC_names_m.random())>> -<<set $NPCList[_n].chastity to {penis:"", vagina:"", anus:""}>> <<generatePronouns $NPCList[_n]>> -<<if _npcChastity is 1>> - <<set _graceCheck to ($grace ? $grace : 25)>> - <<if random(-100, 120) lte _graceCheck>> - <<if $NPCList[_n].gender is "f">> - <<set $NPCList[_n].chastity.vagina to "chastity belt">> - <<else>> - <<if random (1, 3) is 1>> - <<set $NPCList[_n].chastity.penis to "chastity belt">> - <<else>> - <<set $NPCList[_n].chastity.penis to "chastity cage">> - <</if>> - <</if>> - <<if $analdisable is "f" and random(-100, 150) lte _graceCheck and ($NPCList[_n].chastity.penis is "chastity belt" or $NPCList[_n].chastity.vagina is "chastity belt")>> - <<set $NPCList[_n].chastity.anus to "anal shield">> - <</if>> - <</if>> -<</if>> - -<<if _stat is "t">> +<!-- TODO: remove either .teen or .adult; all adults are not teens, and all teens are not adults. --> +<!-- Having two separate variables means having twice as much code to accomplish the same thing, and STILL possibly introducing bugs if you do it wrong. --> +<<if _status is "t">> <<set $NPCList[_n].teen to 1>> <<set $NPCList[_n].adult to 0>> <<else>> @@ -93,9 +61,53 @@ <<if $enemyno lt 6>><<set $enemyno += 1>><</if>> -<<npcattribute _n _gen _lvl>> +<<npcattribute _n _gender _lvl>> + +<<run EventSystem.Push($passage, _n, $time)>> +<</widget>> + +<<widget "generateRole">> + <!-- Argument 1: The slot the new NPC should fill in $NPCList. Slot one would be "0" --> + <!-- Argument 2: The description of the NPC. To generate a default description, use 0 + To make a description that changes based on NPC gender, split the male/female descriptions with "/"--> + <!-- Argument 3: The role of the NPC. To generate with no role, use 0. Do not set role to "normal" + To make a role that changes based on NPC gender, split the male/female roles with "/"--> + <!-- Argument 4: The status of the NPC. Defaults to adult; use "t" for student --> + <!-- Example: <<generateRole 0 "curious" "scientist">> would generate the first NPC as adult "curious scientist" --> + <!-- Example: <<generateRole 1 "arrogant" 0 t>> would generate the second NPC as "arrogant boy" or "arrogant girl"--> + <!-- Example: <<generateRole 2 "starstruck" "fanboy/fangirl">> would generate the third NPC as adult "starstruck fanboy" or "starstruck fangirl" --> + <<set _slot to $args[0]>> + <<set _desc to $args[1] ? $args[1] : 0>> + <<set _role to $args[2] ? $args[2] : 0>> + <<set _status to $args[3] is "t" ? "t" : "a">> + + <<generateNPC _slot+1 _status>> + + <<if _desc>> + <<if _desc.includes("/")>> + <<set [_descM, _descF] to _desc.split("/")>> + <<set $NPCList[_slot].description to $NPCList[_slot].pronoun is "m" ? _descM : _descF>> + <<else>> + <<set $NPCList[_slot].description to _desc>> + <</if>> + <</if>> + <<if _role>> + <<if _role.includes("/")>> + <<set [_roleM, _roleF] to _role.split("/")>> + <<set $NPCList[_slot].role to $NPCList[_slot].pronoun is "m" ? _roleM : _roleF>> + <<else>> + <<set $NPCList[_slot].role to _role>> + <</if>> + <</if>> -<<pushEventNPC _n>> + <<set $NPCList[_slot].fullDescription to $NPCList[_slot].description + " ">> + <<if $NPCList[_slot].role isnot "normal">> + <<set $NPCList[_slot].fullDescription += $NPCList[_slot].role>> + <<elseif $NPCList[_slot].pronoun is "m">> + <<set $NPCList[_slot].fullDescription += ($NPCList[_slot].teen is 1 ? "boy" : "man")>> + <<elseif $NPCList[_slot].pronoun is "f">> + <<set $NPCList[_slot].fullDescription += ($NPCList[_slot].teen is 1 ? "girl" : "woman")>> + <</if>> <</widget>> <<widget "generate1">> @@ -590,43 +602,53 @@ <<generateNPC 6 t>> <</widget>> +<<widget "generateChastity">> + <<set _npcChastity to 1>> + <<generateNPC $args[0]>> +<</widget>> + +<<widget "generatePlant">> + <<set _npcPlant to 1>><<set _strapIgnore to 1>> + <<generateNPC $args[0] "t">> +<</widget>> + <<widget "npcattribute">> <!-- V2.4 Widget set NPC attributes. $arg[0] calls NPC number (0 - 5) to be generated. NG--> -<!-- For transgender, $NPCList.pronoun sets appearance, including breasts. NPCList.gender sets genitals, including pp --> +<!-- $NPCList.pronoun sets appearance, including breasts. NPCList.gender sets genitals, including pp --> <!-- Future work this should call addns args to set pronoun, gender, and size of NPC(0-18) where larger number is more robust. This would eliminate much of the NPC calls from above and push to code. --> <!-- Added thug Vulgar/Brutish as NPC19, can only be called with $arg[2] --> <!-- Added strap-on functionality v2.8 --> +<!-- check if this npc has seen the player while the player was pantiless; doesn't matter if they knew it or not. --> <<nounderwearcheck>> <<set _n to $args[0]>> -<<set _gen to $args[1]>> +<<set _gender to $args[1]>> <<set _lvl to $args[2]>> -<!-- This sets transgender. --> +<!-- This sets genitals. --> <!-- v2.6 adding herm demon as gender "h", must be directly called NG --> -<<if _gen is "m" or _gen is "f" or _gen is "h">> - <<set $NPCList[_n].gender to _gen>> - <<if _gen is "m">> +<<set $NPCList[_n].vagina to "none">> +<<set $NPCList[_n].penis to "none">> + +<<if _gender is "m" or _gender is "f" or _gender is "h">> + <<set $NPCList[_n].gender to _gender>> + <<if _gender is "m">> <<set $NPCList[_n].penis to "clothed">> - <<set $NPCList[_n].vagina to "none">> - <<elseif _gen is "f">> + <<elseif _gender is "f">> + <<set $NPCList[_n].vagina to "clothed">> + <<elseif _gender is "h">> <<set $NPCList[_n].vagina to "clothed">> - <<set $NPCList[_n].penis to "none">> - <<elseif _gen is "h">> - <<set $NPCList[_n].vagina to 0>> - <<set $NPCList[_n].penis to 0>> + <<set $NPCList[_n].penis to "clothed">> <</if>> <<else>> <<set $rng to random(0,99)>> <<if $NPCList[_n].pronoun is "m">> <<if $rng lte $mregularchance>> <<set $NPCList[_n].penis to "clothed">> - <<set $NPCList[_n].vagina to "none">> <<set $NPCList[_n].gender to "m">> <<elseif $rng gte (100 - $cbchance)>> <<set $NPCList[_n].vagina to "clothed">> - <<set $NPCList[_n].penis to "none">> <<set $NPCList[_n].gender to "f">> <<else>> <<set $NPCList[_n].penis to "clothed">> @@ -636,11 +658,9 @@ <<elseif $NPCList[_n].pronoun is "f">> <<if $rng lte $fregularchance>> <<set $NPCList[_n].vagina to "clothed">> - <<set $NPCList[_n].penis to "none">> <<set $NPCList[_n].gender to "f">> <<elseif $rng gte (100 - $dgchance)>> <<set $NPCList[_n].penis to "clothed">> - <<set $NPCList[_n].vagina to "none">> <<set $NPCList[_n].gender to "m">> <<else>> <<set $NPCList[_n].penis to "clothed">> @@ -650,6 +670,31 @@ <</if>> <</if>> +/* _lvl 20 is herm demon. demons don't wear clothes. */ +<<if _lvl is 20>> + <<set $NPCList[_n].vagina to 0>> + <<set $NPCList[_n].penis to 0>> +<</if>> + +<<set $NPCList[_n].chastity to {penis:"", vagina:"", anus:""}>> +<<if _npcChastity is 1>> + <<unset _npcChastity>> + <<set _graceCheck to ($grace ? $grace : 25)>> + <<if random(-100, 120) lte _graceCheck>> + <<if $NPCList[_n].penis isnot "none">> + <<set $NPCList[_n].chastity.penis to (random (1, 3) is 1 ? "chastity belt" : "chastity cage")>> + <</if>> + <<if $NPCList[_n].vagina isnot "none">> + <!-- if npc has both, give them the same chastity type on both. --> + <<set $NPCList[_n].chastity.vagina to ($NPCList[_n].chastity.penis isnot "" ? $NPCList[_n].chastity.penis : "chastity belt")>> + <</if>> + <<set $_beltPresent to ($NPCList[_n].chastity.penis is "chastity belt" or $NPCList[_n].chastity.vagina is "chastity belt")>> + <<if $analdisable is "f" and random(-100, 150) lte _graceCheck and $_beltPresent>> + <<set $NPCList[_n].chastity.anus to "anal shield">> + <</if>> + <</if>> +<</if>> + <<set $NPCList[_n].chest to 0>> <<set $npcskinselector to ($whitechance + $blackchance)>> @@ -665,17 +710,15 @@ <</if>> <<set $rng to random(1, 100)>> -<<if $rng gte 91>> - <<if $NPCList[_n].penis isnot "none">> +<<if $rng gte 81>> + <<if $NPCList[_n].vagina isnot "none" and $NPCList[_n].penis isnot "none">> + <<set $NPCList[_n].insecurity to ["penis","vagina"].random()>> + <<elseif $NPCList[_n].penis isnot "none">> <<set $NPCList[_n].insecurity to "penis">> - <<else>> - <<set $NPCList[_n].insecurity to "vagina">> - <</if>> -<<elseif $rng gte 81>> - <<if $NPCList[_n].vagina isnot "none">> + <<elseif $NPCList[_n].vagina isnot "none">> <<set $NPCList[_n].insecurity to "vagina">> <<else>> - <<set $NPCList[_n].insecurity to "penis">> + <<set $NPCList[_n].insecurity to "perfectly smooth crotch">> /* default case, shouldn't happen. */ <</if>> <<elseif $rng gte 61>> <<set $NPCList[_n].insecurity to "ethics">> @@ -696,69 +739,71 @@ <<if $NPCList[_n].teen is 1>> <<if $NPCList[_n].pronoun is "f">> <!-- female appearing student --> - <<set _h to [125,175,150,150,150,175,150,200,200,200,125,200,250,125,250,200,250,250,200,300,400]>> - <<set _d to ["slight","lithe","lean","thin","slender","lissome","slim","taut","graceful","trim","mousy","cute","fit","petite","toned","shapely","robust","plump","wide-eyed","vulgar","minor demon"]>> - <<set _blo to [0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,5,5,8,3,10,12]>> - <<set _bhi to [4,4,4,4,4,4,7,7,7,7,8,8,8,8,8,11,11,12,10,12,12]>> + <<set $_hpMax to [125,175,150,150,150,175,150,200,200,200,125,200,250,125,250,200,250,250,200,300,400]>> + <<set $_desc to ["slight","lithe","lean","thin","slender","lissome","slim","taut","graceful","trim","mousy","cute","fit","petite","toned","shapely","robust","plump","wide-eyed","vulgar","minor demon"]>> + <<set $_breastMin to [0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,5,5,8,3,10,12]>> + <<set $_breastMax to [4,4,4,4,4,4,7,7,7,7,8,8,8,8,8,11,11,12,10,12,12]>> <<else>> <!-- male appearing student --> - <<set _h to [125,175,150,150,150,175,150,200,200,200,125,200,250,125,250,200,250,250,200,300,400]>> - <<set _d to ["slight","lithe","lean","thin","slender","lissome","slim","taut","graceful","trim","mousy","cute","fit","petite","toned","shapely","robust","plump","wide-eyed","brutish","minor demon"]>> + <<set $_hpMax to [125,175,150,150,150,175,150,200,200,200,125,200,250,125,250,200,250,250,200,300,400]>> + <<set $_desc to ["slight","lithe","lean","thin","slender","lissome","slim","taut","graceful","trim","mousy","cute","fit","petite","toned","shapely","robust","plump","wide-eyed","brutish","minor demon"]>> <</if>> <<else>> <<if $NPCList[_n].pronoun is "f">> <!-- female appearing adult --> - <<set _h to [125,175,150,150,150,175,150,200,125,200,275,200,250,250,200,200,250,200,200,350,600]>> - <<set _d to ["slight","lithe","lean","thin","slender","lissome","slim","taut","petite","trim","muscular","curvy","toned","plump","plush","shapely","robust","voluptuous","lush","vulgar","demon"]>> - <<set _blo to [0,0,0,0,2,2,2,2,2,5,5,5,5,5,5,5,8,8,9,10,12]>> - <<set _bhi to [4,4,4,4,4,4,7,7,8,9,9,9,9,12,10,11,10,11,11,12,12]>> + <<set $_hpMax to [125,175,150,150,150,175,150,200,125,200,275,200,250,250,200,200,250,200,200,350,600]>> + <<set $_desc to ["slight","lithe","lean","thin","slender","lissome","slim","taut","petite","trim","muscular","curvy","toned","plump","plush","shapely","robust","voluptuous","lush","vulgar","demon"]>> + <<set $_breastMin to [0,0,0,0,2,2,2,2,2,5,5,5,5,5,5,5,8,8,9,10,12]>> + <<set $_breastMax to [4,4,4,4,4,4,7,7,8,9,9,9,9,12,10,11,10,11,11,12,12]>> <<else>> <!-- male appearing adult --> - <<set _h to [125,125,150,150,150,150,175,175,200,200,200,200,250,250,250,250,275,275,275,400,600]>> - <<set _d to ["petite","slight","slim","thin","slender","lanky","lissome","lithe","trim","lean","taut","plump","toned","bulky","broad","robust","rugged","muscular","burly","brutish","demon"]>> + <<set $_hpMax to [125,125,150,150,150,150,175,175,200,200,200,200,250,250,250,250,275,275,275,400,600]>> + <<set $_desc to ["petite","slight","slim","thin","slender","lanky","lissome","lithe","trim","lean","taut","plump","toned","bulky","broad","robust","rugged","muscular","burly","brutish","demon"]>> <</if>> <</if>> -<!-- Set pp size separately to allow for transgender NPCs. Changes should track with physical descriptions above, in order. --> -<<if $NPCList[_n].teen is 1>> - <<if $NPCList[_n].gender is "m">> <!-- male genitals student, pronoun M or F --> - <<set _plo to [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8]>> - <<set _phi to [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]>> - <</if>> -<<else>> - <<if $NPCList[_n].gender is "m">> <!-- male genitals student, pronoun M or F --> - <<set _plo to [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8]>> - <<set _phi to [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]>> +<!-- Setting pp size limits separately. Changes should track with physical descriptions above, in order. --> +<!-- Brutes and demons always have the largest penis size. --> +<!-- $_penisMin is "smallest possible penis size", $_penisMax is "largest possible penis size" --> +<<if $NPCList[_n].penis isnot "none">> + <<if $NPCList[_n].teen is 1>> + <<set $_penisMin to [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8]>> + <<set $_penisMax to [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]>> + <<else>> + <<set $_penisMin to [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8]>> + <<set $_penisMax to [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]>> <</if>> <</if>> <<set _brdes to ["nipple","budding","tiny","small","pert","modest","full","large","ample","massive","huge","gigantic","enormous"]>> -<<set $NPCList[_n].healthmax to _h[_i]>> +<<set $NPCList[_n].healthmax to $_hpMax[_i]>> <<set $NPCList[_n].health to $NPCList[_n].healthmax>> -<<set $NPCList[_n].description to _d[_i]>> - -<<if $NPCList[_n].gender is "m">><!-- set pp on size based on MODs for male genitals --> - <<if $penis_mod gte _plo[_i]>><<set _plo[_i] to $penis_mod>><</if>> - <<if $penis_mod gte _phi[_i]>><<set _phi[_i] to $penis_mod>><</if>> - <<if $penis_mod lt 0>><<set _plo[_i] to Math.clamp(_plo[_i]+$penis_mod, 0, 8)>><<set _phi[_i] to Math.clamp(_phi[_i]+$penis_mod, 0, 8)>><</if>> +<<set $NPCList[_n].description to $_desc[_i]>> + +<<if $NPCList[_n].penis isnot "none">><!-- set pp size based on the upper and lower bounds for the selected description --> + <<if $penis_mod gte $_penisMin[_i]>><<set $_penisMin[_i] to $penis_mod>><</if>> + <<if $penis_mod gte $_penisMax[_i]>><<set $_penisMax[_i] to $penis_mod>><</if>> + <<if $penis_mod lt 0>> <!-- Why is this only when $penis_mod is negative? --> + <<set $_penisMin[_i] to Math.clamp($_penisMin[_i]+$penis_mod, 0, 8)>> + <<set $_penisMax[_i] to Math.clamp($_penisMax[_i]+$penis_mod, 0, 8)>> + <</if>> <</if>> -<<if $NPCList[_n].pronoun is "f">><!-- set breast on size based on MODs for female appearance--> - <<if $breast_mod gte _blo[_i]>><<set _blo[_i] to $breast_mod>><</if>> - <<if $breast_mod gte _bhi[_i]>><<set _bhi[_i] to $breast_mod>><</if>> - <<if $breast_mod lt 0>><<set _blo[_i] to Math.clamp(_blo[_i]+$breast_mod, 0, 12)>><<set _bhi[_i] to Math.clamp(_bhi[_i]+$breast_mod, 0, 12)>><</if>> +<<if $NPCList[_n].pronoun is "f">><!-- set breast size based on the upper and lower bounds for the selected description--> + <<if $breast_mod gte $_breastMin[_i]>><<set $_breastMin[_i] to $breast_mod>><</if>> + <<if $breast_mod gte $_breastMax[_i]>><<set $_breastMax[_i] to $breast_mod>><</if>> + <<if $breast_mod lt 0>> <!-- Why is this only when $breast_mod is negative? --> + <<set $_breastMin[_i] to Math.clamp($_breastMin[_i]+$breast_mod, 0, 12)>> + <<set $_breastMax[_i] to Math.clamp($_breastMax[_i]+$breast_mod, 0, 12)>> + <</if>> <</if>> -<<if $NPCList[_n].pronoun is "f">><<set _rngbr to random(_blo[_i], _bhi[_i])>><</if>> -<<if $NPCList[_n].gender is "m">><<set _rngpp to random(_plo[_i], _phi[_i])>><</if>> +<<if $NPCList[_n].pronoun is "f">><<set _rngbr to random($_breastMin[_i], $_breastMax[_i])>><</if>> +<<if $NPCList[_n].penis isnot "none">><<set _rngpp to random($_penisMin[_i], $_penisMax[_i])>><</if>> <<set $NPCList[_n].fullDescription to $NPCList[_n].description + " ">> -<<if $NPCList[_n].pronoun is "m" and $NPCList[_n].teen is 1>> - <<set $NPCList[_n].fullDescription += "boy">> -<<elseif $NPCList[_n].pronoun is "m">> - <<set $NPCList[_n].fullDescription += "man">> -<<elseif $NPCList[_n].pronoun is "f" and $NPCList[_n].teen is 1>> - <<set $NPCList[_n].fullDescription += "girl">> +<<if $NPCList[_n].pronoun is "m">> + <<set $NPCList[_n].fullDescription += ($NPCList[_n].teen is 1 ? "boy" : "man")>> <<elseif $NPCList[_n].pronoun is "f">> - <<set $NPCList[_n].fullDescription += "woman">> + <<set $NPCList[_n].fullDescription += ($NPCList[_n].teen is 1 ? "girl" : "woman")>> <</if>> <<set $NPCList[_n].role to "normal">> diff --git a/game/base-combat/state.twee b/game/base-combat/state.twee index 550aebd9abc04011f59020e76d835a01cd1c7b09..4c17a01362ab29b4f87ba15724b3f994bd5ed12b 100644 --- a/game/base-combat/state.twee +++ b/game/base-combat/state.twee @@ -160,15 +160,23 @@ <<if $pain gte 100 and $willpowerpain is 0>> <<set $enemyarousal += 10>> - <span class="red">You are in too much pain to act normally.</span> - <br> - <<disable>> - <<if $combatControls is "disabled" and $orgasmdown lte 0 and $panicviolence lte 0 and $panicparalysis lte 0 and $trance lte 0>> - <<actionspain>> + <<if $possessed is true>> + <<if $orgasmdown lte 0>> + You can't take any more pain, <span class="red">but your body continues to fight.</span> + <<trauma 12>><<ggtrauma>> + <br> + <</if>> + <<else>> + <span class="red">You are in too much pain to act normally.</span> + <br> + <<disable>> + <<if $combatControls is "disabled" and $orgasmdown lte 0 and $panicviolence lte 0 and $panicparalysis lte 0 and $trance lte 0>> + <<actionspain>> + <</if>> <</if>> <</if>> - <<if $panicviolence gte 1>> + <<if $panicviolence gte 1 and !$possessed>> <<set $enemyarousal += 10>> <<if $position is "stalk">> <span class="red">You are overcome by panic. You run, needing to be anywhere but here.</span> @@ -179,7 +187,7 @@ <<defiance 10>><<set $panicviolence to $panicviolence - 1>><<disable>> <</if>> - <<if $panicparalysis gte 1>> + <<if $panicparalysis gte 1 and !$possessed>> <<set $enemyarousal += 10>> <<if $position is "stalk">> <span class="red">You are stricken with panic. Your muscles seize up, leaving you motionless.</span> @@ -190,7 +198,7 @@ <<set $panicparalysis -= 1>><<disable>> <</if>> - <<if $dissociation gte 2>> + <<if $dissociation gte 2 and !$possessed>> <<set $enemyarousal += 10>> You feel disconnected from yourself, as if in a dream. <br> @@ -208,6 +216,23 @@ <br> <<disable>> <</if>> + + <<if $possessed is true>> + Your body is not your own. <<if $rng gte 96>><span class="fading">It never was.</span><</if>> + <br> + <<disable>> + <<if $dissociation lte 1 and $orgasmdown lte 0 and $panicviolence lte 0 and $panicparalysis lte 0 and $trance lte 0>> + <<actionspossessed>> + <</if>> + /* Updates the control caption at the top of the screen to include any control gained through the rest of the passage */ + <<run $(()=>{ + Dynamic.render("control-caption") + })>> + /* Adds the condition for ending an encounter. */ + <<if $control gte $controlmax>> + <<set _controlRegain to 1>> + <</if>> + <</if>> <<set _statechecked to true>> <</if>> <</widget>> diff --git a/game/base-combat/struggle.twee b/game/base-combat/struggle.twee index cb584cebf81050a2432a623d0c243aa53887172b..75eec076bcc335a7f76d3920dba1ece3e2867298 100644 --- a/game/base-combat/struggle.twee +++ b/game/base-combat/struggle.twee @@ -10,7 +10,6 @@ done: 0, enemy: {} }>> - <<resetLastOptions>> <<set $feetaction to "evade">> <</widget>> @@ -49,8 +48,13 @@ <</widget>> <<widget "struggle_part_init">> + <<if ["mouth", "vagina", "penis", "anus", "chest"].includes($args[0])>> + <<set $_part to $args[0]>> + <<else>> + <span class="error">struggle_part_init error: invalid arguments: $args</span> + <</if>> <!-- reset bodypart states --> - <<set $struggle[$args[0]] to { + <<set $struggle[$_part] to { grip: 0, creature: 0, progress: 0, @@ -60,13 +64,34 @@ damage: 0 }>> <<if !$struggle_start>> - <!-- also clean all creatures stuck to bodypart --> + <!-- clean all creatures stuck to bodypart --> <<for _i to 0; _i lt $struggle.number; _i++>> - <<if $struggle.enemy[_i].location is $args[0]>> + <<if $struggle.enemy[_i].location is $_part>> <<set $struggle.enemy[_i].location to "fleeing">> <<set $struggle.enemy[_i].health -= 1>> <</if>> <</for>> + + <!-- clean hand states --> + <<set $_actions to [$_part + '_strengthen', $_part + '_pull', $_part + '_spray', $_part + '_grasp', $_part + '_stroke']>> + <<if $_actions.includes($leftactiondefault)>> + <<if $carryblock>> + <<set $leftactioncarry to "rest">> + <<else>> + <<set $leftactiondefault to "rest">> + <</if>> + <<set $leftarmstate to 0>> + <<set $leftarm to 0>> + <</if>> + <<if $_actions.includes($rightactiondefault)>> + <<if $carryblock>> + <<set $rightactioncarry to "rest">> + <<else>> + <<set $rightactiondefault to "rest">> + <</if>> + <<set $rightarmstate to 0>> + <<set $rightarm to 0>> + <</if>> <</if>> <</widget>> @@ -1075,7 +1100,11 @@ and $orgasmdown lte 0 and ($pain lt 100 or $willpowerpain is undefined) and $com <br> <<neutral 5>><<submission 2>> + <<set V[_hand + 'arm'] to "struggle">> + <<set V[_hand + 'armstate'] to _actionpart + '_struggle'>> <<if $leftaction is $rightaction>> + <<set $rightarmstate to _actionpart + '_struggle'>> + <<set $rightarm to "struggle">> <<submission 2>> <<break>> <</if>> @@ -1086,7 +1115,6 @@ and $orgasmdown lte 0 and ($pain lt 100 or $willpowerpain is undefined) and $com <<set $struggle[_actionpart].grip++>> <<if $leftaction is $rightaction>> - <<set $leftaction to _actionpart + '_strengthen'>> <<set $rightaction to _actionpart + '_strengthen'>> <<set $rightarm to "struggle">> <<set $rightarmstate to _actionpart + '_struggle'>> @@ -1133,6 +1161,7 @@ and $orgasmdown lte 0 and ($pain lt 100 or $willpowerpain is undefined) and $com <!-- TODO: maybe add some skill and random checks, with possibilities (and corresponding flavor text) to retain the grip, or lessen it instead of outright resetting it to 0 --> You can't maintain your grip, and <span class="red">your fingers pull away without the creature.</span> <<set $struggle[_actionpart].grip to 0>> + <<set V[_hand + 'action'] to _actionpart + '_grasp'>> <</if>> <<if $leftaction is $rightaction>> @@ -1812,11 +1841,11 @@ and $orgasmdown lte 0 and ($pain lt 100 or $willpowerpain is undefined) and $com <<widget "struggle_clothes">> <<if $args[0] is "vagina" or $args[0] is "penis">> - <<if $worn.over_lower.vagina_exposed is 0 or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.over_lower.skirt_down is 1)>> + <<if $worn.over_lower.vagina_exposed is 0 or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.over_lower.skirt_down is 1)>> <<set _struggle_exposed to "over">> - <<elseif $worn.lower.vagina_exposed is 0 or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.lower.skirt_down is 1)>> + <<elseif $worn.lower.vagina_exposed is 0 or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.lower.skirt_down is 1)>> <<set _struggle_exposed to "main">> - <<elseif $worn.under_lower.vagina_exposed is 0 or (setup.clothes.under_lower[$worn.under_lower.index].skirt is 1 and $worn.under_lower.skirt_down is 1)>> + <<elseif $worn.under_lower.vagina_exposed is 0 or (setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].skirt is 1 and $worn.under_lower.skirt_down is 1)>> <<set _struggle_exposed to "under">> <<elseif $worn.genitals.type.includes("chastity")>> <<set _struggle_exposed to "genitals">> @@ -1824,11 +1853,11 @@ and $orgasmdown lte 0 and ($pain lt 100 or $willpowerpain is undefined) and $com <<set _struggle_exposed to "naked">> <</if>> <<elseif $args[0] is "anus">> - <<if (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.over_lower.skirt_down is 1) or $worn.over_lower.anus_exposed is 0>> + <<if (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.over_lower.skirt_down is 1) or $worn.over_lower.anus_exposed is 0>> <<set _struggle_exposed to "over">> - <<elseif $worn.lower.anus_exposed is 0 or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.lower.skirt_down is 1)>> + <<elseif $worn.lower.anus_exposed is 0 or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.lower.skirt_down is 1)>> <<set _struggle_exposed to "main">> - <<elseif $worn.under_lower.anus_exposed is 0 or (setup.clothes.under_lower[$worn.under_lower.index].skirt is 1 and $worn.under_lower.skirt_down is 1)>> + <<elseif $worn.under_lower.anus_exposed is 0 or (setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].skirt is 1 and $worn.under_lower.skirt_down is 1)>> <<set _struggle_exposed to "under">> <<elseif $worn.genitals.anal_shield is 1>> <<set _struggle_exposed to "genitals">> diff --git a/game/base-combat/swarm-effects.twee b/game/base-combat/swarm-effects.twee index 41b5dda0d9f324a025df58399f4016beae5e7a83..f52fb2344392819c98a9ee2a147f5cf62678ba17 100644 --- a/game/base-combat/swarm-effects.twee +++ b/game/base-combat/swarm-effects.twee @@ -99,7 +99,7 @@ <<leftActionsSwarm>> <<if Object.keys(_leftaction).length gt 0>> <<if !(Object.values(_leftaction).includes($leftactiondefault))>> - <<set $leftactiondefault to "rest">> + <<set $leftactiondefault to "swarmrest">> <</if>> <<set $leftaction to $leftactiondefault>> <<set _textColor to combatListColor('leftaction', (Object.values(_leftaction).includes($leftaction) ? $leftaction : Object.values(_leftaction)[0]), "Swarm")>> @@ -246,7 +246,7 @@ <<rightActionsSwarm>> <<if Object.keys(_rightaction).length gt 0>> <<if !(Object.values(_rightaction).includes($rightactiondefault))>> - <<set $rightactiondefault to "rest">> + <<set $rightactiondefault to "swarmrest">> <</if>> <<set $rightaction to $rightactiondefault>> <<set _textColor to combatListColor('rightaction', (Object.values(_rightaction).includes($rightaction) ? $rightaction : Object.values(_rightaction)[0]), "Swarm")>> @@ -386,7 +386,7 @@ <<feetActionsSwarm>> <<if Object.keys(_feetaction).length gt 0>> <<if !(Object.values(_feetaction).includes($feetactiondefault))>> - <<set $feetactiondefault to "rest">> + <<set $feetactiondefault to "swarmrest">> <</if>> <<set $feetaction to $feetactiondefault>> <<set _textColor to combatListColor('feetaction', (Object.values(_feetaction).includes($feetaction) ? $feetaction : Object.values(_feetaction)[0]), "Swarm")>> @@ -619,7 +619,7 @@ <<set _swarmamounts to $swarm.amount>> /* -------- Left Arm -------- */ - + <<set $leftactiondefault to $leftaction>> <<if $leftaction is "leftwriggle">><<set $leftaction to 0>> <<if $leftarm is "bound">> <<unbind>><span class="green">You wriggle free from your bonds.</span> @@ -690,7 +690,7 @@ <</if>> /* -------- Right Arm -------- */ - + <<set $rightactiondefault to $rightaction>> <<if $rightaction is "rightwriggle">><<set $rightaction to 0>> <<if $rightarm is "bound">> <<unbind>><span class="green">You wriggle free from your bonds.</span> @@ -761,7 +761,7 @@ <</if>> /* -------- Legs -------- */ - + <<set $feetactiondefault to $feetaction>> <<if $feetaction is "feetswarm">><<set $feetaction to 0>><<set $feetactiondefault to "feetswarm">> <<set $swarm.amount.active[2] -= 1>><<set $swarm.amount.active[3] += 1>> <span class="lblue">You $swarm["steady"] one of the <<swarmName>> with your feet.</span> diff --git a/game/base-combat/swarms.twee b/game/base-combat/swarms.twee index 10b54de957722819cd27d3ea86d6e37a4b462040..0def006a353972da5e65b0e34be95792312e86f8 100644 --- a/game/base-combat/swarms.twee +++ b/game/base-combat/swarms.twee @@ -169,7 +169,7 @@ <<neutral 4>> <<set _swarmamounts.butt[0] += 1>><<set _swarmamounts.active[4] -= 1>> <<if $worn.under_lower.type.includes("naked") and !($worn.genitals.type.includes("hidden") and $worn.genitals.anal_shield is 1)>> - <<if (!$worn.over_lower.type.includes("naked") and setup.clothes.over_lower[$worn.over_lower.index].skirt is 0) or (!$worn.lower.type.includes("naked") and setup.clothes.lower[$worn.lower.index].skirt is 0)>> + <<if (!$worn.over_lower.type.includes("naked") and setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 0) or (!$worn.lower.type.includes("naked") and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0)>> <<set _swarmnote.buttlowerintroclothed += 1>> <<else>> <<set _swarmnote.buttintro += 1>> @@ -180,7 +180,7 @@ <<set _swarmnote.buttunderintroclothed += 1>> <</if>> <<else>> - <<if (!$worn.over_lower.type.includes("naked") and setup.clothes.over_lower[$worn.over_lower.index].skirt is 0) or (!$worn.lower.type.includes("naked") and setup.clothes.lower[$worn.lower.index].skirt is 0)>> + <<if (!$worn.over_lower.type.includes("naked") and setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 0) or (!$worn.lower.type.includes("naked") and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0)>> <<set _swarmnote.buttlowerclothed += 1>> <<if !$worn.over_lower.type.includes("naked")>> <<set $worn.over_lower.integrity -= 2>> @@ -224,7 +224,7 @@ <<set _swarmamounts.genital[0] += 1>><<set _swarmamounts.active[4] -= 1>> <<neutral 4>> <<if $worn.under_lower.type.includes("naked") and !$worn.genitals.type.includes("hidden")>> - <<if (!$worn.over_lower.type.includes("naked") and setup.clothes.over_lower[$worn.over_lower.index].skirt is 0) or (!$worn.lower.type.includes("naked") and setup.clothes.lower[$worn.lower.index].skirt is 0)>> + <<if (!$worn.over_lower.type.includes("naked") and setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 0) or (!$worn.lower.type.includes("naked") and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0)>> <<set _swarmnote.genitallowerintroclothed += 1>> <<else>> <<set _swarmnote.genitalintro += 1>> @@ -235,7 +235,7 @@ <<set _swarmnote.genitalunderintroclothed += 1>> <</if>> <<else>> - <<if (!$worn.over_lower.type.includes("naked") and setup.clothes.over_lower[$worn.over_lower.index].skirt is 0) or (!$worn.lower.type.includes("naked") and setup.clothes.lower[$worn.lower.index].skirt is 0)>> + <<if (!$worn.over_lower.type.includes("naked") and setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 0) or (!$worn.lower.type.includes("naked") and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0)>> <<set _swarmnote.genitallowerclothed+= 1>> <<if !$worn.over_lower.type.includes("naked")>> <<set $worn.over_lower.integrity -= 2>> @@ -476,7 +476,7 @@ <<if _swarmnote.genitalmolest gte 1>> <<set _swarmnote.genitalmolest to 0>> - You feel them writhing over your <<if !$worn.lower.type.includes("naked") and setup.clothes.lower[$worn.lower.index].skirt isnot 1>><<genitals>> through your + You feel them writhing over your <<if !$worn.lower.type.includes("naked") and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt isnot 1>><<genitals>> through your <<if !$worn.over_lower.type.includes("naked")>> $worn.over_lower.name<<if !$worn.lower.type.includes("naked")>> and<<else>>.<</if>> <</if>> diff --git a/game/base-combat/tentacles/abomination.twee b/game/base-combat/tentacles/abomination.twee index 4d6252c6f0ffcdf324bade925a490471f14ac289..7eb1fae6fb30cb5998099c7d2882086ad1e17864 100644 --- a/game/base-combat/tentacles/abomination.twee +++ b/game/base-combat/tentacles/abomination.twee @@ -33,7 +33,11 @@ <</widget>> <<widget "abomination">> -<<man>> +<<if !$enemytype or ["man","plant"].includes($enemytype)>> + <<man>> +<<else>> + <<beast $enemyno>> +<</if>> <<for _i to 0; _i lt $tentacles.max; _i++>> <<set _tentacle to $tentacles[_i]>> <<if _tentacle isnot undefined>> diff --git a/game/base-combat/tentacles/tentacle-adv.twee b/game/base-combat/tentacles/tentacle-adv.twee index abc1558d296f013c9eb4012fc59c54a52222aa6f..57b6566d65c192536f9f7e9672340dbbeb49103b 100644 --- a/game/base-combat/tentacles/tentacle-adv.twee +++ b/game/base-combat/tentacles/tentacle-adv.twee @@ -1641,7 +1641,8 @@ The _tentacle.fullDesc writhes between your feet. <</if>> <<if $mouthaction is "mouthpullaway"+_tentacle.id>> - <<willpowerdifficulty $drugged $willpowermax "silent">> + <<set _nectarDifficulty to Math.clamp($drugged, 0, 500) + Math.clamp($nectar_addiction, 0, 500)>> + <<willpowerdifficulty _nectarDifficulty $willpowermax "silent">> <<if $NPCList[0].type is "plant" and _tentacle.head is "mouthdeep" and !$willpowerSuccess>> You attempt to pull away from the _tentacle.fullDesc threatening your mouth. <span class="red">However, you can't tear yourself from the sweet nectar,</span> diff --git a/game/base-combat/widgets.twee b/game/base-combat/widgets.twee index 56c5aa66775e7456442625b4a3a31c2a419abc64..c9c672b49b211d045d176db68b1156b8f0ffa4d2 100644 --- a/game/base-combat/widgets.twee +++ b/game/base-combat/widgets.twee @@ -63,6 +63,8 @@ <span class="red">They stole your first kiss. You feel horrible.</span><<stress 40>><<gggstress>> <<case "tentacle">> <span class="lewd">You wonder what others would say about giving a tentacle your first kiss, if they would even believe you.</span><<arousal 3000>> + <<case "addiction">> + <span class="lewd">You're so relieved, the thought of giving away your first kiss like this hardly registers to you.</span><<arousal 1000>> <<default>> <span class="blue">You feel conflicted about giving them your first kiss.</span><<stress 20>><<ggstress>> <</switch>> @@ -222,27 +224,14 @@ <<widget "leg_position">> -<<if $machine>> - <<if $machine.tattoo>> - <<if $machine.tattoo.use is "left_thigh" or $machine.tattoo.use is "right_thigh">> - <<set _leg_position to "up">> - <<else>> - <<leg_position_basic>> - <</if>> + <<set $_parts to [$anususe, $vaginause, $chestuse, $mouthuse]>> + <<if $machine and $machine.tattoo and ["left_thigh", "right_thigh"].contains($machine.tattoo.use)>> + <<set _leg_position to "up">> + <<elseif $_parts.contains("penis") or $_parts.contains(1)>> + <<set _leg_position to "up">> <<else>> - <<leg_position_basic>> + <<set _leg_position to "down">> <</if>> -<<else>> - <<leg_position_basic>> -<</if>> -<</widget>> - -<<widget "leg_position_basic">> -<<if $anususe is "penis" or $vaginause is "penis" or $anususe is 1 or $vaginause is 1 or $chestuse is "penis" or $chestuse is 1 or $mouthuse is 1 or $mouthuse is "penis">> - <<set _leg_position to "up">> -<<else>> - <<set _leg_position to "down">> -<</if>> <</widget>> /* Should ideally only be used if you're sure one npc is in this position */ diff --git a/game/base-debug/debug-events.twee b/game/base-debug/debug-events.twee index 9d2fac3fec5aa60d6925a1f8f44033293e659859..51f1d867b4bc5b1a8405ed388a8e4bceaa64baaa 100644 --- a/game/base-debug/debug-events.twee +++ b/game/base-debug/debug-events.twee @@ -1,33 +1,27 @@ :: Widgets Debug Event [widget] -/* Any widget with the goal to bug-purge events goes here. -Since I didn't find an appropriate file to put this in, I decided to make my own. -Feel free to delete this coment at leisure. -*/ +<!-- Any widget with the goal to bug-purge events goes here. + Since I didn't find an appropriate file to put this in, I decided to make my own. + Feel free to delete this coment at leisure. --> <<widget "checkEventNPC">> - <<if ($eventslot isnot undefined and $eventslot.includes($args[0])) or $enemyno gte 6>> + <<if (EventSystem.IsSlotTaken($args[0]) and !EventSystem.Disable) or $enemynomax gte 6 or $enemyno gte 6>> <<set $endeventerror to $lastgenerated>> - <<endevent phaseless>> + <<clearsinglenpc $args[0]>> + <!-- <<endevent phaseless>> --> <</if>> <<set $lastgenerated to $passage>> - <!-- <<if $enemyno gte 1 and $args[0] is 1>> - <<set $endeventerror to $lastgenerated>> - <<endevent phaseless>> - <</if>> --> -<</widget>> - -<<widget "pushEventNPC">> - <<set $event to ensure($event, [])>> - <<set $eventslot to ensure($eventslot, [])>> - <<set $eventtime to ensure($eventtime, [])>> - <<run - ensureIsArray($event).push($passage); - ensureIsArray($eventslot).push($args[0]); - ensureIsArray($eventtime).push($time); - >> <</widget>> <<widget "eventExtraInfo">> +<!-- Setup useful variables --> +<<set $_passages = (V.event is undefined + ? [] + : V.event.buffer.reduce((prev, cur) => { + prev.pushUnique(cur.area[0]); + return prev; + }, []) +)>> + <<if _eventalertmajorarea is true>> <span class="red">You are in a major area, which means an NPC escaped!</span> <<if $cheatdisable is "f">> @@ -37,14 +31,17 @@ Feel free to delete this coment at leisure. <</if>> <<set _eventreason to true>> <<elseif _eventalertmajorarea is false>> - <span class="green">This NPC was defined in this passage, and is being tested for Debug.</span><<set _eventreason to true>> + <span class="green">This NPC was defined in this passage</span><<set _eventreason to true>> <<else>> <<if $passage.includes("Street Stalk")>> <span class="green">You are being stalked. Usually this means everything is in order.</span> <<set _eventreason to true>> <</if>> <<if $event isnot undefined>> - <<if $passage.includes($event.toString()) or $event.includes($passage)>> + <<if $_passages.includes($passage)>> + <span class="green">You are in a passage where NPCs were generated.</span> + <<set _eventreason to true>> + <<elseif $passage.includes($_passages)>> <span class="green">You are in a subpassage from where NPCs were generated. Usually this means they are still in use.</span> <<set _eventreason to true>> <</if>> @@ -57,19 +54,18 @@ Feel free to delete this coment at leisure. <</if>> <br><br> <h3>NPC information</h3><br> -$enemyno NPC<<if $enemyno gt 1>>s are<<else>> is<</if>> currently active. Them being:<br><br> +$enemyno NPC<<if $enemyno gt 1>>s are<<else>> is<</if>> currently active. Max: $enemynomax. Them being:<br><br> <div class="debug-event-container"> <<for $_i to 0; $_i lt $NPCList.length; $_i++>> - <<if $NPCList[$_i].fullDescription isnot undefined>> + <<set $_npc to $NPCList[$_i]>> + <<set $_eventNPC to EventSystem.Get($_i)>> + <<if $_npc.type isnot undefined and $_eventNPC isnot undefined>> <div class="debug-event-item debug-event-success"> - ID: $_i | $NPCList[$_i].fullDescription<br> - Sex: $NPCList[$_i].gender | Gender: $NPCList[$_i].pronouns.man<br> - Description: $NPCList[$_i].description<br> - <<if $event isnot undefined>> - <hr> - Source: <<print $event[$_i]>>, at: <<ampm `Math.floor($eventtime[$_i]/60)` `$eventtime[$_i]%60`>>.<br> - <</if>> + ID: $_i | $_npc.fullDescription<br> + Sex: $_npc.gender | Gender: $_npc.pronouns.man<br> + Description: $_npc.description<<if $_npc.role>> | Role: $_npc.role<</if>><br> + Source: <<print $_eventNPC.area[0]>>, at: <<ampm `Math.floor($_eventNPC.time / 60)` `$_eventNPC.time % 60`>>.<br> </div> <<else>> <div class="debug-event-item debug-event-empty"> @@ -81,25 +77,37 @@ $enemyno NPC<<if $enemyno gt 1>>s are<<else>> is<</if>> currently active. Them b <<if $event isnot undefined>> <br>Extra debugging:<br> - <<for $_i to 0; $_i lt $event.length; $_i++>> - <<print ensure($NPCList[$eventslot[$_i]]?.fullDescription, "No description.")>><br> - Defined in passage <<print $event[$_i]>>, at <<ampm `Math.floor($eventtime[$_i]/60)` `$eventtime[$_i]%60`>>.<br> - <<for $_j to 0; $_j lt $event.length; $_j++>> - <<if $event[$_j] is $event[$_i] and $_i isnot $_j>> + <<for $_i to 0; $_i lt $event.buffer.length; $_i++>> + <<set $_eventNPC to $event.buffer[$_i]>> + <<print ensure($NPCList[$_eventNPC.slot]?.fullDescription, "No description.")>><br> + Defined in passage <<print $_eventNPC.area[0]>>, at <<ampm `Math.floor($_eventNPC.time / 60)` `$_eventNPC.time % 60`>>.<br> + <<if $_eventNPC.area.length gt 1>> + Widget Stack: + <<set $_widgetStack to $_eventNPC.area.slice(1)>> + <<for $_iStack = 0; $_iStack lt $_widgetStack.length; $_iStack++>> + <<print "<<$_widgetStack[$_iStack]>>">><<if $_iStack isnot $_widgetStack.length - 1>>, <</if>> + <</for>> + <br> + <</if>> + <!-- Check other event NPCs for linked passages --> + <<for $_j to 0; $_j lt $event.buffer.length; $_j++>> + <<set $_eventNPC2 to $event.buffer[$_j]>> + <<if $_i isnot $_j and $_eventNPC.area[0] is $_eventNPC2.area[0]>> <<if _eventnumberinpassage is undefined>> <<set _eventnumberinpassage to 0>> <</if>> <<set _eventnumberinpassage += 1>> <</if>> <</for>> + <!-- Check other event NPCs for linked passages --> <<if _eventnumberinpassage isnot undefined>> - <<print _eventnumberinpassage>> other NPC<<if _eventnumberinpassage isnot 1>>s<</if>> have also been defined in passage <<print $event[$_i]>>.<br> + <<print _eventnumberinpassage>> other NPC<<if _eventnumberinpassage isnot 1>>s<</if>> have also been defined in passage <<print $_eventNPC.area[0]>>.<br> <<unset _eventnumberinpassage>> <</if>> - Set in slot <<print $eventslot[$_i]>> of $$NPCList.<br> - <<for $_j to 0; $_j lt $event.length; $_j++>> - <<if $eventslot[$_j] is $eventslot[$_i] and $_i isnot $_j>> - <span class="red">This NPC has been overwritten or overwrote another one in slot <<print $eventslot[$eventslot[$_i]]>>!</span><br> + Set in slot <<print $_eventNPC.slot>> of $$NPCList.<br> + <<for $_j to 0; $_j lt $event.buffer.length; $_j++>> + <<if $_i isnot $_j and $_eventNPC.slot is $_eventNPC.slot[$_j]>> + <span class="red">This NPC has been overwritten or overwrote another one in slot <<print $event.slot[$_eventNPC.slot]>>!</span><br> <<break>> <</if>> <</for>> diff --git a/game/base-debug/debug.twee b/game/base-debug/debug.twee index d6ffd6929bc8f92f928e0fdb398658dd6b749cc7..60ca3867d4d5b3cf15c3b428950201028965b4ba 100644 --- a/game/base-debug/debug.twee +++ b/game/base-debug/debug.twee @@ -446,7 +446,7 @@ These still require Fertilise <<link [[Defiance|$passage]]>><<set $submissive -= 250>><</link>> <br><br> -<<link [[Robin Love|$passage]]>><<set $NPCName[$NPCNameList.indexOf("Robin")].love += 100>><<set $NPCName[$NPCNameList.indexOf("Robin")].lust += 100>><</link>> +<<link [[Robin Love|$passage]]>><<npcincr Robin love 100>><<npcincr Robin lust 100>><</link>> <br> <<link [[Robin Note|$passage]]>><<set $robinnote to 1>><</link>> <br> @@ -525,12 +525,12 @@ These still require Fertilise <<link [[Bully Timer|$passage]]>><<set $bullytimer to 100>><<set $bullytimeroutside to 100>><</link>> <br> -<<link [[Whitney Lower Dominance|$passage]]>><<set $NPCName[$NPCNameList.indexOf("Whitney")].dom -= 20>><</link>> +<<link [[Whitney Lower Dominance|$passage]]>><<npcincr Whitney dom -20>><</link>> <br> -<<link [[Whitney Raise Dominance|$passage]]>><<set $NPCName[$NPCNameList.indexOf("Whitney")].dom += 20>><</link>> +<<link [[Whitney Raise Dominance|$passage]]>><<npcincr Whitney dom 20>><</link>> <br> -<<link [[Whitney Love|$passage]]>><<set $NPCName[$NPCNameList.indexOf("Whitney")].love += 20>><<set $NPCName[$NPCNameList.indexOf("Whitney")].lust += 20>><</link>> +<<link [[Whitney Love|$passage]]>><<npcincr Whitney love 20>><<npcincr Whitney lust 20>><</link>> <br> <<link [[Whitney Romance|$passage]]>><<set $whitneyromance to 1>><</link>> <br> @@ -570,9 +570,11 @@ These still require Fertilise <br> <<link [[Choke Suffocate Test|Beach Day Encounter Sex]]>><<endcombat>><<generate1>><<person1>><<set $sexstart to 1>><<set $oxygen to 0>><<set $suffocating to 3>><<set $NPCList[0].righthand to "throat">><<set $neckuse to "hand">><<set $askedtochoke to 1>><</link>> <br> -<<link [[Named NPC gangbang Test|Named NPC Gangbang Select]]>><</link>> +<<link [[Named NPC gangbang Test|Named NPC Gangbang Select]]>><<endcombat>><</link>> <br> -<<link [[Plantperson test|Plantperson Test]]>><</link>> +<<link [[NPC role select|NPC Role Select]]>><<endcombat>><</link>> +<br> +<<link [[Plantperson test|Plantperson Test]]>><<endcombat>><</link>> <br> <<link [[Swarm|Sea Eels]]>><<endcombat>><<set $molestationstart to 1>><</link>> <br> @@ -700,6 +702,8 @@ These still require Fertilise <<link [[Stalk me|Street Stalk]]>><<endcombat>><<generate1>><<person1>><<set $molestationstart to 1>><</link>> <br> <<link [[Summon the Wraith|Wraith Test Start]]>><<endcombat>><<set $monthday to 31>><<set $daystate to "night">><<set $hour to 21>><<set $time to 1260>><<set $moonstate to "evening">><</link>> +<br> +<<link [[Possessed Fight|Possessed Fight Test]]>><<set $control to 0>><<set $possessed to true>><<if !$wraith.will>><<set $wraith.will to random(1300, 1700)>><</if>><</link>> <br><br> Turn beast into: <<link [[Creature|$passage]]>><<set _xy to $enemyno-1>><<set $NPCList[_xy].type to "creature">><</link>> <br> @@ -758,4 +762,11 @@ Swarm Encounters: <<swarminit "worms" "container" "shaking" "shatter" "steady" 1 9>> <</link>> <br><br> + +Event Debugging:<br> +<<link [[Test NPC Insertion|NPCInsertionAssert]]>><</link>> <</widget>> + +:: NPCInsertionAssert +Generating two NPCs both at slot 0. +<<generate1>><<generate1>> \ No newline at end of file diff --git a/game/base-debug/test encounters.twee b/game/base-debug/test encounters.twee index dc057173f31ecb5085332b300774006a2f574ab0..d6f6c10069993579e01be02e245f8cf4c793ebc2 100644 --- a/game/base-debug/test encounters.twee +++ b/game/base-debug/test encounters.twee @@ -520,85 +520,85 @@ PenActiv: <span class="gold">$NPCList[_x].penis</span> VagActiv: <span class="go Add the NPCs you want.<br> <<if $enemyno lt 6>> <<if !($npc.includes("Alex"))>> - <<link [[Add Alex|$passage]]>><<npc Alex $enemyno+1>><</link>><br> + <<link [[Add Alex|$passage]]>><<npc Alex -1>><</link>><br> <</if>> <<if !($npc.includes("Avery"))>> - <<link [[Add Avery|$passage]]>><<npc Avery $enemyno+1>><</link>><br> + <<link [[Add Avery|$passage]]>><<npc Avery -1>><</link>><br> <</if>> <<if !($npc.includes("Bailey"))>> - <<link [[Add Bailey|$passage]]>><<npc Bailey $enemyno+1>><</link>><br> + <<link [[Add Bailey|$passage]]>><<npc Bailey -1>><</link>><br> <</if>> <<if !($npc.includes("Briar"))>> - <<link [[Add Briar|$passage]]>><<npc Briar $enemyno+1>><</link>><br> + <<link [[Add Briar|$passage]]>><<npc Briar -1>><</link>><br> <</if>> <<if !($npc.includes("Charlie"))>> - <<link [[Add Charlie|$passage]]>><<npc Charlie $enemyno+1>><</link>><br> + <<link [[Add Charlie|$passage]]>><<npc Charlie -1>><</link>><br> <</if>> <<if !($npc.includes("Darryl"))>> - <<link [[Add Darryl|$passage]]>><<npc Darryl $enemyno+1>><</link>><br> + <<link [[Add Darryl|$passage]]>><<npc Darryl -1>><</link>><br> <</if>> <<if !($npc.includes("Doren"))>> - <<link [[Add Doren|$passage]]>><<npc Doren $enemyno+1>><</link>><br> + <<link [[Add Doren|$passage]]>><<npc Doren -1>><</link>><br> <</if>> <<if !($npc.includes("Eden"))>> - <<link [[Add Eden|$passage]]>><<npc Eden $enemyno+1>><</link>><br> + <<link [[Add Eden|$passage]]>><<npc Eden -1>><</link>><br> <</if>> <<if !($npc.includes("Gwylan"))>> - <<link [[Add Gwylan|$passage]]>><<npc Gwylan $enemyno+1>><</link>><br> + <<link [[Add Gwylan|$passage]]>><<npc Gwylan -1>><</link>><br> <</if>> <<if !($npc.includes("Harper"))>> - <<link [[Add Harper|$passage]]>><<npc Harper $enemyno+1>><</link>><br> + <<link [[Add Harper|$passage]]>><<npc Harper -1>><</link>><br> <</if>> <<if !($npc.includes("Jordan"))>> - <<link [[Add Jordan|$passage]]>><<npc Jordan $enemyno+1>><</link>><br> + <<link [[Add Jordan|$passage]]>><<npc Jordan -1>><</link>><br> <</if>> <<if !($npc.includes("Kylar"))>> - <<link [[Add Kylar|$passage]]>><<npc Kylar $enemyno+1>><</link>><br> + <<link [[Add Kylar|$passage]]>><<npc Kylar -1>><</link>><br> <</if>> <<if !($npc.includes("Landry"))>> - <<link [[Add Landry|$passage]]>><<npc Landry $enemyno+1>><</link>><br> + <<link [[Add Landry|$passage]]>><<npc Landry -1>><</link>><br> <</if>> <<if !($npc.includes("Leighton"))>> - <<link [[Add Leighton|$passage]]>><<npc Leighton $enemyno+1>><</link>><br> + <<link [[Add Leighton|$passage]]>><<npc Leighton -1>><</link>><br> <</if>> <<if !($npc.includes("Mason"))>> - <<link [[Add Mason|$passage]]>><<npc Mason $enemyno+1>><</link>><br> + <<link [[Add Mason|$passage]]>><<npc Mason -1>><</link>><br> <</if>> <<if !($npc.includes("Morgan"))>> - <<link [[Add Morgan|$passage]]>><<npc Morgan $enemyno+1>><</link>><br> + <<link [[Add Morgan|$passage]]>><<npc Morgan -1>><</link>><br> <</if>> <<if !($npc.includes("Niki"))>> - <<link [[Add Niki|$passage]]>><<npc Niki $enemyno+1>><</link>><br> + <<link [[Add Niki|$passage]]>><<npc Niki -1>><</link>><br> <</if>> <<if !($npc.includes("Quinn"))>> - <<link [[Add Quinn|$passage]]>><<npc Quinn $enemyno+1>><</link>><br> + <<link [[Add Quinn|$passage]]>><<npc Quinn -1>><</link>><br> <</if>> <<if !($npc.includes("Remy"))>> - <<link [[Add Remy|$passage]]>><<npc Remy $enemyno+1>><</link>><br> + <<link [[Add Remy|$passage]]>><<npc Remy -1>><</link>><br> <</if>> <<if !($npc.includes("River"))>> - <<link [[Add River|$passage]]>><<npc River $enemyno+1>><</link>><br> + <<link [[Add River|$passage]]>><<npc River -1>><</link>><br> <</if>> <<if !($npc.includes("Robin"))>> - <<link [[Add Robin|$passage]]>><<npc Robin $enemyno+1>><</link>><br> + <<link [[Add Robin|$passage]]>><<npc Robin -1>><</link>><br> <</if>> <<if !($npc.includes("Sam"))>> - <<link [[Add Sam|$passage]]>><<npc Sam $enemyno+1>><</link>><br> + <<link [[Add Sam|$passage]]>><<npc Sam -1>><</link>><br> <</if>> <<if !($npc.includes("Sirris"))>> - <<link [[Add Sirris|$passage]]>><<npc Sirris $enemyno+1>><</link>><br> + <<link [[Add Sirris|$passage]]>><<npc Sirris -1>><</link>><br> <</if>> <<if !($npc.includes("Sydney"))>> - <<link [[Add Sydney|$passage]]>><<npc Sydney $enemyno+1>><</link>><br> + <<link [[Add Sydney|$passage]]>><<npc Sydney -1>><</link>><br> <</if>> <<if !($npc.includes("Whitney"))>> - <<link [[Add Whitney|$passage]]>><<npc Whitney $enemyno+1>><</link>><br> + <<link [[Add Whitney|$passage]]>><<npc Whitney -1>><</link>><br> <</if>> <<if !($npc.includes("Winter"))>> - <<link [[Add Winter|$passage]]>><<npc Winter $enemyno+1>><</link>><br> + <<link [[Add Winter|$passage]]>><<npc Winter -1>><</link>><br> <</if>> <<if !($npc.includes("Wren"))>> - <<link [[Add Wren|$passage]]>><<npc Wren $enemyno+1>><</link>><br> + <<link [[Add Wren|$passage]]>><<npc Wren -1>><</link>><br> <</if>> <</if>> <br><br> @@ -640,6 +640,9 @@ Add the NPCs you want.<br> <<neutral 1>> <<maninit>> + <<if $possessed is true>> + <<set $enemyanger to 200>><<npcidlegenitals>> + <</if>> <</if>> <<effects>> @@ -655,6 +658,8 @@ Add the NPCs you want.<br> <span id="next"><<link [[Next|Named NPC Gangbang Finish]]>><</link>></span><<nexttext>> <<elseif $enemyarousal gte $enemyarousalmax>> <span id="next"><<link [[Next|Named NPC Gangbang Finish]]>><</link>></span><<nexttext>> +<<elseif _controlRegain is 1>> + <span id="next"><<link [[Next|Named NPC Gangbang Finish]]>><</link>></span><<nexttext>> <<else>> <span id="next"><<link [[Next|Named NPC Gangbang]]>><</link>></span><<nexttext>> <</if>> @@ -669,11 +674,17 @@ Add the NPCs you want.<br> You've beaten their ass. <<elseif $finish is 1>> You ended it prematurely. +<<elseif $possessed is true and $control gte $controlmax>> + You maxed out your control. + <<set $possessed to 0>><<set _possess to 1>> <</if>> <br> <<clotheson>> -<br><br> -<<link [[Select NPCs|Named NPC Gangbang Select]]>><<endcombat>><</link>><br> +<<if _possess>> + <<link [[Go again|Possessed Fight Test]]>><<endcombat>><<set $possessed to true>><<set $control to 0>><</link>><<lllcontrol>> | <span class="wraith">+ Wraith</span><br> +<<else>> + <<link [[Select NPCs|Named NPC Gangbang Select]]>><<endcombat>><</link>><br> +<</if>> <<link [[Back Home|Bedroom]]>><<endcombat>><</link>> :: Wraith Test Start @@ -858,7 +869,7 @@ How do you respond? <<else>> <b>Plantpeople are disabled or otherwise unavailable.</b> I don't know what you're trying to do here. <br><br> - <<link [[Enable plantpeople|Plantperson Test]]>><<set $hallucinogen += 10>><<set $plantdisable to "f">><<set $tentacledisable to "f">><</link>><<ghallucinogen>> + <<link [[Enable plantpeople|Plantperson Test]]>><<set $hallucinogen += 10>><<set $plantdisable to "f">><<set $tentacledisable to "f">><</link>><<ghallucinogens>> <</if>> <br><br> <<link [[Back home|Bedroom]]>><<endevent>><</link>> @@ -877,8 +888,7 @@ How do you respond? <<molested>> <</if>> <<generatePlant1>><<person1>> - <<maninit>><<npcexpose>> - <<set $enemytype to "plant">> + <<maninit "plant">><<npcexpose>> <<if $location is "forest">> <<enable_rescue>> <</if>> @@ -932,4 +942,214 @@ How do you respond? <<endcombat>> <<clotheson>> <<link [[Do it again|Plantperson Test]]>><</link>><br> +<<link [[Back home|Bedroom]]>><</link>> + +:: Possessed Fight Test +<br> +You feel a tap on your shoulder. You turn around. Nothing is there. You turn back. +<br><br> + +"<span class="wraith">Boo.</span>" +<br><br> + +You open your mouth to scream, but it is already inside you. +<br><br> + +<<link [[Fight a stranger|Possessed Fight]]>><<set $opponent to 1>><<set $fightstart to 1>><</link>><br> +<<link [[Fight Sydney|Possessed Fight]]>><<set $opponent to 2>><<set $fightstart to 1>><</link>><br> +<<link [[Select your named NPCs|Named NPC Gangbang Select]]>><</link>> + +:: Possessed Fight +<<if $fightstart is 1>> + <<set $fightstart to 0>> + <<if $opponent is 1>> + <<generate1>><<person1>> + <<catcall>> A <<person>> reaches for you. + <br><br> + Your body is made to laugh. "<span class="wraith">Those who interrupt ghosts shall join them.</span>" + <<elseif $opponent is 2>> + <<npc Sydney>><<person1>> + Sydney freezes in front of you. "Oh, no. Beloved, something's wrong, I can feel it." + <br><br> + Your body is made to laugh. "<span class="wraith">False. Everything is right in the world.</span>" + <</if>> + <<neutral 1>> + <<maninit>> + <<set $enemytrust -= 100>> + <<set $enemyanger += 200>> + <<npcidlegenitals>> + <br><br> +<</if>> + +<<effects>> +<<effectsman>><<man>> + +<<stateman>> +<br><br> +<<actionsman>> + +<<if $enemyhealth lte 0>> + <span id="next"><<link [[HEALTH|Possessed Fight Finish]]>><</link>></span><<nexttext>> +<<elseif $enemyarousal gte $enemyarousalmax>> + <span id="next"><<link [[ORGASM|Possessed Fight Finish]]>><</link>></span><<nexttext>> +<<elseif _controlRegain is 1>> + <span id="next"><<link [[CONTROL|Possessed Fight Finish]]>><</link>></span><<nexttext>> +<<else>> + <span id="next"><<link [[Next|Possessed Fight]]>><</link>></span><<nexttext>> +<</if>> + +:: Possessed Fight Finish +<<effects>> +<<if $enemyarousal gte $enemyarousalmax>> + <<ejaculation>> + <br><br> + <<tearful>> you recover. "<span class="wraith">Shall we dance again?</span>" your mouth is forced to ask. + <br><br> + <<clotheson>> + <<endcombat>> + <<link [[Fight again|Possessed Fight]]>><<endevent phaseless>><<set $fightstart to 1>><</link>><br> + <<link [[Freshen up, then fight again|Possessed Fight]]>><<endevent phaseless>><<set $fightstart to 1>><<set $pain to 0>><<set $arousal to 0>><</link>><<lpain>><<larousal>> + +<<elseif $enemyhealth lte 0>> + <<if $opponent is 1>> + The <<person>> falls back, and scrambles away. + <<elseif $opponent is 2>> + Sydney moans, slaps a hand over <<his>> mouth, and runs away. + <</if>> + <br><br> + <<tearful>> you recover. "<span class="wraith">Shall we dance again?</span>" your mouth is forced to ask. + <br><br> + <<clotheson>> + <<endcombat>> + <<link [[Fight again|Possessed Fight]]>><<set $fightstart to 1>><<endevent phaseless>><</link>><br> + <<link [[Freshen up, then fight again|Possessed Fight]]>><<set $fightstart to 1>><<endevent phaseless>><<set $pain to 0>><<set $arousal to 0>><</link>><<lpain>><<larousal>> + +<<else>> + <<set $possessed to 0>> + You regain control in your body, and rip the pale figure out of your chest like you're pulling a rabbit out of a hat. + <<if $opponent is 1>>The <<person>>, justifiably terrified by this development, scrambles away.<</if>> + <br><br> + "<span class="wraith">Congratulations. You won.</span>" It pats you on the head, then vanishes in a torrent of water. + <<if $opponent is 2>>Sydney is nowhere to be seen.<</if>> + <br><br> + <<tearful>> you try to decide if you want to go again or not. + <br><br> + <<clotheson>> + <<endcombat>> + <<link [[Fight again|Possessed Fight]]>><<set $possessed to true>><<set $control to 0>><<set $fightstart to 1>><<endevent phaseless>><</link>><<lllcontrol>> | <span class="wraith">+ Wraith</span><br> + <<link [[Freshen up, then fight again|Possessed Fight]]>><<set $possessed to true>><<set $control to 0>><<set $fightstart to 1>><<endevent phaseless>><<set $pain to 0>><<set $arousal to 0>><</link>><<lpain>><<larousal>><<lllcontrol>> | <span class="wraith">+ Wraith</span><br> + <<link [[Decision room|Possessed Fight Test]]>><<set $possessed to true>><<set $control to 0>><</link>><<lllcontrol>> | <span class="wraith">Also + Wraith</span> +<</if>> +<br><br> +<<link [[Back home|Bedroom]]>><<set $possessed to 0>><<endevent>><<unset $opponent>><</link>> + +:: NPC Role Select +<br> +The lights flash on. You find yourself in a strange chamber, completely smooth and featureless. There is a sign on the wall that says <span class="orange">DEBUG</span> in bright orange letters. A large, opaque tube reaches to the ceiling, The words <span class="blue">CUSTOM CONSTRUCT</span> are labelled on the front. +<br> +A terminal is attached to the tube. You look at the prompts. +<br><br> +<i>Please select the construct's descriptor. Leave blank for default generation.</i> +<br> + +<<if $npcselectdesc is undefined>><<set $npcselectdesc to "custom">><</if>> +<<textbox "$npcselectdesc" $npcselectdesc>> +<br><br> + +<i>Please select the construct's role. Leave blank for default generation.</i> +<br> + +<<if $npcselectrole is undefined>><<set $npcselectrole to "construct">><</if>> +<<textbox "$npcselectrole" $npcselectrole>> +<br><br> + +<<link [[Sex|NPC Role Fight]]>><<set $sexstart to 1>> + <<if $npcselectdesc is undefined>><<set $npcselectdesc to "custom">><</if>> + <<if $npcselectrole is undefined>><<set $npcselectrole to "construct">><</if>> + <<set $npcselectdesc to $npcselectdesc.replace(/[^a-zA-Z 0-9,.!()£/]+/g,"")>> + <<set $npcselectrole to $npcselectrole.replace(/[^a-zA-Z 0-9,.!()£/]+/g,"")>> + <<generateRole 0 $npcselectdesc $npcselectrole>><<person1>> + <<unset $npcselectdesc>><<unset $npcselectrole>> +<</link>><br> +<<link [[Fight|NPC Role Fight]]>><<set $fightstart to 1>> + <<if $npcselectdesc is undefined>><<set $npcselectdesc to "custom">><</if>> + <<if $npcselectrole is undefined>><<set $npcselectrole to "construct">><</if>> + <<set $npcselectdesc to $npcselectdesc.replace(/[^a-zA-Z 0-9,.!()£/]+/g,"")>> + <<set $npcselectrole to $npcselectrole.replace(/[^a-zA-Z 0-9,.!()£/]+/g,"")>> + <<generateRole 0 $npcselectdesc $npcselectrole>><<person1>> + <<unset $npcselectdesc>><<unset $npcselectrole>> +<</link>> +<br><br> +<<link [[Back home|Bedroom]]>><<unset $npcselectdesc>><<unset $npcselectrole>><</link>> + +:: NPC Role Fight +<<if $sexstart is 1>> + <<set $sexstart to 0>> + <<consensual>> + <<set $consensual to 1>> + <<neutral 1>> + + <<maninit>> + With a hiss of steam, the tube retracts to the ceiling. A figure walks out, a <<if $pronoun is "m">>man<<else>>woman<</if>>. You recognize <<him>> as the <<person>> you selected. + <br><br> + + "Beginning sex encounter," the <<person>> says in a flat tone, before <<his>> face morphs into a lavicious smile. <<catcall>> +<<elseif $fightstart is 1>> + <<set $fightstart to 0>> + <<neutral 1>> + + <<maninit>> + <<set $enemytrust -= 100>> + <<set $enemyanger += 200>> + <<npcidlegenitals>> + With a hiss of steam, the tube retracts to the ceiling. A figure walks out, a <<if $pronoun is "m">>man<<else>>woman<</if>>. You recognize <<him>> as the <<person>> you selected. + <br><br> + + "Beginning combat encounter," the <<person>> says in a flat tone, before <<his>> face morphs into an angry scowl. "Oh, you're in for it now!" +<</if>> + +<<effects>> +<<effectsman>><<man>> + +<<stateman>> +<br><br> +<<actionsman>> + +<<if $finish is 1>> + <span id="next"><<link [[FINISH|NPC Role Fight Finish]]>><</link>></span><<nexttext>> +<<elseif $enemyhealth lte 0>> + <span id="next"><<link [[HEALTH|NPC Role Fight Finish]]>><</link>></span><<nexttext>> +<<elseif $enemyarousal gte $enemyarousalmax>> + <span id="next"><<link [[ORGASM|NPC Role Fight Finish]]>><</link>></span><<nexttext>> +<<elseif $pain gte 100 and $willpowerpain is 0>> + <span id="next"><<link [[PAIN|NPC Role Fight Finish]]>><</link>></span><<nexttext>> +<<else>> + <span id="next"><<link [[Next|NPC Role Fight]]>><</link>></span><<nexttext>> +<</if>> +<br> +<<link [[Emergency exit|NPC Role Fight Finish]]>><<set $finish to 1>><</link>> +<br><br><br><br> + +:: NPC Role Fight Finish +<<if $finish is 1>> + "Test concluded," the <<person>> says in a flat tone, abruptly stepping back. "Restoring state to default." +<<elseif $enemyhealth lte 0>> + "Test concluded," the <<person>> says in a flat tone, stepping away from you as if <<he>> weren't hurt at all. "Restoring state to default." +<<elseif $pain gte 100 and $willpowerpain is 0>> + "Test concluded," the <<person>> says in a flat tone, stepping away from you. "Restoring state to default." +<<elseif $enemyarousal gte $enemyarousalmax>> + <<ejaculation>> + "Test concluded," the <<person>> says in a flat tone, stepping away from you. "Restoring state to default." +<</if>> +<br><br> + +<<He>> walks back to the terminal and flicks a switch. <<He>> steps past it, and the tube descends from the ceiling over <<him>> again. Once the tube touches the floor, the lights switch off. +<br><br> + +<<tearful>> you wonder what to do next. +<br><br> + +<<endcombat>><<clotheson>> + +<<link [[Create another construct|NPC Role Select]]>><</link>><br> <<link [[Back home|Bedroom]]>><</link>> \ No newline at end of file diff --git a/game/base-system/bodywriting.twee b/game/base-system/bodywriting.twee index b716c71e4afeaa786aab400033aa720be8c5d936..d9e8ba8b58e3e44e4d7ebd6ba7422caf0c14ffa9 100755 --- a/game/base-system/bodywriting.twee +++ b/game/base-system/bodywriting.twee @@ -2032,7 +2032,7 @@ Second arg: tool */ <<if $tattoo_bodypart is "left_bottom" or $tattoo_bodypart is "right_bottom">> "Alright," <<he>> says, pulling the curtain shut. "Lets see your bottom." <<if $worn.lower.name isnot "naked">> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.under_lower.name isnot "naked">> You <<nervously>> flip up your skirt, baring your $worn.under_lower.name. "Those need to go," <<he>> says. "Or they'll get in the way." <<if $worn.under_lower.set is $worn.under_upper.set>> @@ -2091,11 +2091,11 @@ Second arg: tool */ "Alright," <<he>> says, pulling the curtain shut. <<if $worn.lower.name is "naked">> - <<elseif $worn.upper.set is $worn.lower.set and setup.clothes.lower[$worn.lower.index].skirt isnot 1>> + <<elseif $worn.upper.set is $worn.lower.set and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt isnot 1>> "You'll have to strip right down. Don't want fabric getting in the way." You <<nervously>> remove your $worn.upper.name, baring your <<undertop>> and <<undies>>. - <<elseif setup.clothes.lower[$worn.lower.index].skirt isnot 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt isnot 1>> "You'll have to take your bottoms off. Don't want the fabric getting in the way." You <<nervously>> pull down your $worn.lower.name, baring your <<undies>>. diff --git a/game/base-system/caption.twee b/game/base-system/caption.twee index dded2d92f4d50b547ddefcacf8d4bc8e4a56d0a3..60d31d8df0d7cec3b33f554df026a2f8784c45fb 100644 --- a/game/base-system/caption.twee +++ b/game/base-system/caption.twee @@ -257,13 +257,13 @@ <!-- Event debug button - Shows an overlay stored in debug-events.twee. --> <<if $event isnot undefined and $debugdisable is "f">> <<set _temp to "<span class='yellow'>SHOW EVENT INFO</span>">> - <<if $event[0] is $passage>> + <<if EventSystem.Get(0).area[0] is $passage>> <<set _eventalertmajorarea to false>> <<set _temp to "<span class='green'>EVENT ACTIVE</span>">> <<elseif setup.majorAreas.includes($passage)>> <<set _eventalertmajorarea to true>> <<set _temp to "<span class='red'>EVENT ACTIVE</span>">> - <<elseif ensureIsArray($event).length is 1 and ["Forest Cabin", "Eden Cabin", "Eden Clearing"].includes($event[0])>> + <<elseif $event.buffer.map(e => e.area[0]).length is 1 and ["Forest Cabin", "Eden Cabin", "Eden Clearing"].includes(EventSystem.Get(0).area[0])>> <<set _temp to "<span class='green'>EVENT ACTIVE</span>">> <</if>> <<button _temp>><<overlayReplace "eventExtraInfo">><</button>> @@ -686,7 +686,7 @@ Your $worn.under_lower.name <<underlowerplural>> drenched, <span class="pink">re Your $worn.under_upper.name <<underupperplural>> drenched, <span class="pink">revealing your <<breasts>>.</span> <br> -<<elseif !$worn.upper.type.includes("naked") and $worn.upper.exposed is 2 and !$worn.lower.type.includes("naked") and $worn.lower.exposed is 2 and !$worn.under_lower.type.includes("naked") and !$worn.genitals.type.includes("chastity") and $worn.under_lower.state isnot "waist" and !$worn.under_upper.type.includes("naked") and $worn.under_upper.state isnot setup.clothes.under_upper[$worn.under_upper.index].state_base>> +<<elseif !$worn.upper.type.includes("naked") and $worn.upper.exposed is 2 and !$worn.lower.type.includes("naked") and $worn.lower.exposed is 2 and !$worn.under_lower.type.includes("naked") and !$worn.genitals.type.includes("chastity") and $worn.under_lower.state isnot "waist" and !$worn.under_upper.type.includes("naked") and $worn.under_upper.state isnot setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_base>> <<if $worn.under_upper.set is $worn.under_lower.set>> <<if $worn.upper.set is $worn.lower.set>> <br> @@ -720,7 +720,7 @@ Your $worn.upper.name, $worn.lower.name and $worn.under_lower.name have been pul <br> <</if>> -<<elseif !$worn.upper.type.includes("naked") and $worn.upper.exposed is 2 and $worn.lower.exposed is 2 and !$worn.lower.type.includes("naked") and !$worn.under_upper.type.includes("naked") and $worn.under_upper.state isnot setup.clothes.under_upper[$worn.under_upper.index].state_base>> +<<elseif !$worn.upper.type.includes("naked") and $worn.upper.exposed is 2 and $worn.lower.exposed is 2 and !$worn.lower.type.includes("naked") and !$worn.under_upper.type.includes("naked") and $worn.under_upper.state isnot setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_base>> <<if $worn.upper.set is $worn.lower.set>> <br> Your $worn.upper.name, skirt and $worn.under_upper.name have been pulled aside, <span class="purple">revealing your <<breasts>> and <<undies>>.</span> @@ -757,7 +757,7 @@ Your $worn.lower.name <<lowerhas>> been pulled aside and your $worn.under_lower. Your $worn.lower.name <<lowerhas>> been pulled aside, <span class="purple">revealing your <<undies>>.</span> <br> -<<elseif !$worn.under_lower.type.includes("naked") and !$worn.genitals.type.includes("chastity") and $worn.under_lower.state isnot setup.clothes.under_lower[$worn.under_lower.index].state_base>> +<<elseif !$worn.under_lower.type.includes("naked") and !$worn.genitals.type.includes("chastity") and $worn.under_lower.state isnot setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].state_base>> <br> Your $worn.under_lower.name <<underlowerhas>> been pulled @@ -769,7 +769,7 @@ Your $worn.under_lower.name <<underlowerhas>> been pulled <span class="pink">revealing your <<genitals>>.</span> <br> -<<elseif !$worn.under_upper.type.includes("naked") and $worn.under_upper.state isnot setup.clothes.under_upper[$worn.under_upper.index].state_base>> +<<elseif !$worn.under_upper.type.includes("naked") and $worn.under_upper.state isnot setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_base>> <br> Your $worn.under_upper.name <<underupperhas>> been pulled to your $worn.under_upper.state, <span class="pink">revealing your <<breasts>>.</span> diff --git a/game/base-system/effects.twee b/game/base-system/effects.twee index 23bfaa6e0af3da31fcfba1bd5fb1bf424fadc968..31b7b69bdf2cd7bdac3f0ae870fdf24c5491e1d2 100644 --- a/game/base-system/effects.twee +++ b/game/base-system/effects.twee @@ -168,7 +168,7 @@ <!-- If clothing above underwear is also wet, or missing --> <<set $wetintro to 2>> <span class="lewd">Your bodily fluids soak through your $worn.under_lower.name, exposing your <<genitals>>. </span> - <<elseif setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <span class="lewd">Your bodily fluids soak through your $worn.under_lower.name, exposing your <<genitals>> to the air under your $worn.lower.name. </span> <<else>> <span class="lewd">Your bodily fluids soak through your $worn.under_lower.name. </span> diff --git a/game/base-system/exhibitionism.twee b/game/base-system/exhibitionism.twee index d34d91ec5168d4105037eb157b7398ea76101a96..00cca7de09941c3a6c31d7139f3914cf10f325b2 100644 --- a/game/base-system/exhibitionism.twee +++ b/game/base-system/exhibitionism.twee @@ -1,31 +1,40 @@ :: Widgets Exhibitionism [widget] <<widget "exhibitionism1">> -<<if $control lt $controlmax>> - <<if $exhibitionism lte 19>> - <<set $exhibitionism += 2>> - Performing such a lewd act excites you and <span class="green">restores your sense of control and self-worth</span>, for now. - <<ggcontrol>><<control 25>><<arousal 100>><<set $stress -= 300>><<combattrauma -30>><<ltrauma>><<lstress>><<garousal>> - <<elseif $exhibitionism gte 20>> - Performing such a lewd act excites you, but does nothing to lift the cloud hanging over you. <span class="pink">You need to do something more extreme.</span> - <<arousal 100>><<garousal>> - <<if $exhibitionismstress1 isnot 1 and $statFreeze isnot true>> - <<set $exhibitionismstress1 to 1>><<lstress>><<set $stress -= 100>> - <</if>> - <</if>> +<<if $desperateaction is 1>> + You feel disgusting, but it's better than what Bailey has in store for you. + <<lcontrol>><<gtrauma>><<control -10>><<trauma 1>> +<<elseif $desperateaction is 2>> + You feel disgusting, but it's better than the alternative. + <<lcontrol>><<gtrauma>><<control -10>><<trauma 1>> <<else>> - <<if $exhibitionism lte 19>> - <<set $exhibitionism += 2>> - You already feel in control, but performing such a lewd act <span class="green">soothes</span> and excites you. - <<control 25>><<arousal 100>><<set $stress -= 300>><<combattrauma -30>><<ltrauma>><<lstress>><<garousal>> - <<elseif $exhibitionism gte 20>> - You already feel in control and the act is <span class="pink">too tame to soothe</span>, but it does excite you. - <<arousal 100>><<garousal>> - <<if $exhibitionismstress1 isnot 1 and $statFreeze isnot true>> - <<set $exhibitionismstress1 to 1>><<lstress>><<set $stress -= 100>> + <<if $control lt $controlmax>> + <<if $exhibitionism lte 19>> + <<set $exhibitionism += 2>> + Performing such a lewd act excites you and <span class="green">restores your sense of control and self-worth</span>, for now. + <<ggcontrol>><<control 25>><<arousal 100>><<set $stress -= 300>><<combattrauma -30>><<ltrauma>><<lstress>><<garousal>> + <<elseif $exhibitionism gte 20>> + Performing such a lewd act excites you, but does nothing to lift the cloud hanging over you. <span class="pink">You need to do something more extreme.</span> + <<arousal 100>><<garousal>> + <<if $exhibitionismstress1 isnot 1 and $statFreeze isnot true>> + <<set $exhibitionismstress1 to 1>><<lstress>><<set $stress -= 100>> + <</if>> + <</if>> + <<else>> + <<if $exhibitionism lte 19>> + <<set $exhibitionism += 2>> + You already feel in control, but performing such a lewd act <span class="green">soothes</span> and excites you. + <<control 25>><<arousal 100>><<set $stress -= 300>><<combattrauma -30>><<ltrauma>><<lstress>><<garousal>> + <<elseif $exhibitionism gte 20>> + You already feel in control and the act is <span class="pink">too tame to soothe</span>, but it does excite you. + <<arousal 100>><<garousal>> + <<if $exhibitionismstress1 isnot 1 and $statFreeze isnot true>> + <<set $exhibitionismstress1 to 1>><<lstress>><<set $stress -= 100>> + <</if>> <</if>> <</if>> <</if>> <br><br> +<<unset $desperateaction>> <</widget>> <<widget "exhibitionism2">> diff --git a/game/base-system/featsUI.twee b/game/base-system/featsUI.twee index b82027abbb0265186f07ac38abb97b96f2547c86..c549982d82237878f19e72a8b80a66c163f038ba 100644 --- a/game/base-system/featsUI.twee +++ b/game/base-system/featsUI.twee @@ -154,25 +154,29 @@ Filter by: <<set _upgradeName to _upgradeNames[_upgradeNameID]>> <<link Previous>> <<set _upgradeNameID-->> + <<if _upgradeNameID lt 0>> + <<set _upgradeNameID to _upgradeNames.length - 1>> + <</if>> <<if $featsBoosts.upgradeDetails[_upgradeNames[_upgradeNameID]].hidden>> <<for _upgradeNameID; $featsBoosts.upgradeDetails[_upgradeNames[_upgradeNameID]].hidden; _upgradeNameID-->> <</for>> <</if>> - <<if _upgradeNameID lt 0>> - <<set _upgradeNameID to _upgradeNames.length - 1>> - <</if>> <<set _upgradeName to _upgradeNames[_upgradeNameID]>> <<updateFeatsPointsMenu>> <</link>> | <<link Next>> <<set _upgradeNameID++>> + <<if _upgradeNameID gte _upgradeNames.length>> + <<set _upgradeNameID to 0>> + <</if>> <<if $featsBoosts.upgradeDetails[_upgradeNames[_upgradeNameID]].hidden>> <<for _upgradeNameID; $featsBoosts.upgradeDetails[_upgradeNames[_upgradeNameID]].hidden; _upgradeNameID++>> + <<if (_upgradeNameID + 1) gte _upgradeNames.length>> + <<set _upgradeNameID to 0>> + <<break>> + <</if>> <</for>> <</if>> - <<if _upgradeNameID gte _upgradeNames.length>> - <<set _upgradeNameID to 0>> - <</if>> <<set _upgradeName to _upgradeNames[_upgradeNameID]>> <<updateFeatsPointsMenu>> <</link>> | diff --git a/game/base-system/images.twee b/game/base-system/images.twee index 4f1e02251654feaf5d9635111543ce97ac921535..0da82a20c96b0b7d5759197c7f6d480d81fcf064 100644 --- a/game/base-system/images.twee +++ b/game/base-system/images.twee @@ -1129,6 +1129,30 @@ <</if>> <</widget>> +<<widget "landfillicon">> + <<if $images is 1>> + <img id="icon" src="img/misc/icon/landfill.png"> + <</if>> +<</widget>> + +<<widget "scarleticon">> + <<if $images is 1>> + <img id="icon" src="img/misc/icon/scarlet.png"> + <</if>> +<</widget>> + +<<widget "oliveicon">> + <<if $images is 1>> + <img id="icon" src="img/misc/icon/olive.png"> + <</if>> +<</widget>> + +<<widget "milkshakeicon">> + <<if $images is 1>> + <img id="icon" src="img/misc/icon/food_milkshake.png"> + <</if>> +<</widget>> + <<widget "ind">> <<if $images is 1>> <img id="icon" src="img/misc/icon/indent.png"> @@ -1145,7 +1169,7 @@ <<widget "clothingicon">> <<if $images is 1>> - <<set $_item to setup.clothes[$args[1]][$args[0].index]>> + <<set $_item to setup.clothes[$args[1]][clothesIndex($args[1],$args[0])]>> <<if $_item.iconFile>> <<if typeof($_item.iconFile) === 'string'>> <<set $clothesiconFile = "img/misc/icon/clothes/" + $_item.iconFile>> diff --git a/game/base-system/location.twee b/game/base-system/location.twee index 93c3f42faf88d9eb3d3df7ec896946117be2eaa1..b612a7cc5af71e4758862fa1d52fbea308d81875 100644 --- a/game/base-system/location.twee +++ b/game/base-system/location.twee @@ -99,6 +99,7 @@ setup.addlocation( "drain" ).parent("town").location().inside().build(); setup.addlocation( "sewers" ).parent("drain").location().build(); setup.addlocation( "underground" ).parent("town").location().inside().build(); /* both underground brothel and various caves */ + setup.addlocation( "promenade" ).parent("town").location().build(); setup.addlocation( "residential" ).parent("town").bus().build(); setup.addlocation( "domus" ).parent("residential").bus().build(); @@ -175,7 +176,8 @@ setup.addlocation( "alex_stables" ).parent("alex_farm").inside().build(); setup.addlocation( "riding_school" ).parent("plains").location().build(); setup.addlocation( "moor" ).parent("plains").location().build(); - setup.addlocation( "tower" ).parent("moor").location().build(); + setup.addlocation( "castle" ).parent("moor").location().build(); + setup.addlocation( "tower" ).parent("castle").location().build(); setup.addlocation("sea" ).parent("world").area().location().bus().build(); setup.addlocation( "searocks" ).parent("sea").bus().build(); diff --git a/game/base-system/named-npcs.twee b/game/base-system/named-npcs.twee index 57506d572bf3c277ed79340a357ad328b6bc04eb..e5da17ee607d5d4bdc945bf637ba7134d9eaca88 100644 --- a/game/base-system/named-npcs.twee +++ b/game/base-system/named-npcs.twee @@ -60,16 +60,12 @@ <<set $enemyno -= 1>> <<set $enemynomax -= 1>> <<if $endeventerror is undefined>> - <<set $event.splice($eventslot.indexOf(_ii), 1)>> - <<set $eventtime.splice($eventslot.indexOf(_ii), 1)>> - <<set $eventslot.splice($eventslot.indexOf(_ii), 1)>> + <<run EventSystem.Pop(_ii)>> <</if>> <<if $enemyno is 0>> <<set $pronoun to 0>> <<if $endeventerror is undefined>> - <<unset $event>> - <<unset $eventslot>> - <<unset $eventtime>> + <<run EventSystem.Clear()>> <</if>> <</if>> <<set $npc.splice(_leindex, 1)>> @@ -359,6 +355,7 @@ alternative way to write that: <<case "Avery">> <<set $NPCName[_i].title to ($NPCName[_i].pronoun is "m" ? "businessman" : "businesswoman")>> <</switch>> +<<generatePronouns $NPCName[_i]>> <</for>> <</widget>> @@ -508,14 +505,31 @@ alternative way to write that: /* Prepare the call for multiple Named NPCs at the same time. * We do this by changing all $NPCList[0] calls to $NPCList[x] in which x can be any temporary variable. In this case, we'll use _npcno. * We also give the option to set the Named NPC in any available row if so desired, by calling a second argument $args[1]. In case no $args[1] is passed, it will default to the first row. +* We also now have the option to have the Named NPC be set into the first available slot instead, by setting the secent argument $args[1] to a negative number, such as -1. However this will bypass the check for npcs that have broken free from a previous passage. * Remember: available rows go from 0 to 5 ($NPCList[0] to $NPCList[5]). No more than that. */ -<<if $args[1]>> +<<if $args[1] lt 0>> + <<for _controller to 0; _controller lte $NPCList.length; _controller++>> + <<if _controller gte 6>> + <!-- Since 6 is past our limit, we want to alert the user something went wrong. For simplicity, we'll set _npcno to 0 and overwrite $NPCList[0] --> + <span class="red"> Error: There are already 6 active NPCs. Clearing NPC 0 to make space for Named NPC.</span> + <<set _npcno to 0>> + <<clearsinglenpc 0>> + <<set _overwrite to true>> + <<break>> <!-- Always remember to break the for loop when the condition is met --> + <</if>> + <<if $NPCList[_controller].gender is undefined and $NPCList[_controller].description is undefined>> + <!-- These comparisons could be changed to a proper variable, for example $NPCList[x].active which would store if NPC x is active or not. To make things simple, we compare to .gender and .description since those two are always set to something other than 0 if the NPC in question is in fact active --> + <<set _npcno to clone(_controller)>> + <<break>> <!-- Always remember to break the for loop when the condition is met --> + <</if>> + <</for>> +<<elseif $args[1]>> <<set _npcno to $args[1] - 1>> <<else>> <<set _npcno to 0>> <</if>> -<<if _npcno is 0 and $enemyno gte 1>> +<<if _npcno is 0 and $enemyno gte 1 and !_overwrite>> <<set $endeventerror to $lastgenerated>> <<endevent phaseless>> <</if>> @@ -699,18 +713,7 @@ alternative way to write that: <<set $monster to 0>> <</if>> -<<if $event is undefined>> - <<set $event to []>> -<</if>> -<<set $event.push($passage)>> -<<if $eventslot is undefined>> - <<set $eventslot to []>> -<</if>> -<<set $eventslot.push(_npcno)>> -<<if $eventtime is undefined>> - <<set $eventtime to []>> -<</if>> -<<set $eventtime.push($time)>> +<<run EventSystem.Push($passage, _npcno, $time)>> <<set $index to _npcno>> <</widget>> diff --git a/game/base-system/persistent-npcs.twee b/game/base-system/persistent-npcs.twee index 428be868f71ced53c4e4acd9a67512a78cd81df4..565a5a608659459e36bebc65c037a25ac65ed012 100644 --- a/game/base-system/persistent-npcs.twee +++ b/game/base-system/persistent-npcs.twee @@ -29,8 +29,7 @@ <<else>> <<set $monster to 0>> <</if>> - <<pushEventNPC $args[0]>> - <<set $enemynomax to $enemyno>> + <<run EventSystem.Push($passage, $args[0], $time)>> <</if>> <</widget>> @@ -39,15 +38,157 @@ <<if $args[0]>> <<set _temp0 to $args[0]>> /*Adds name back into name pool */ - <<if $per_npc[_temp0].pronoun is "f">> - <<set $NPC_names_f.pushUnique($per_npc[_temp0].name)>> - <<else>> - <<set $NPC_names_m.pushUnique($per_npc[_temp0].name)>> + <<if $per_npc[_temp0].name>> + <<if $per_npc[_temp0].pronoun is "f">> + <<set $NPC_names_f.pushUnique($per_npc[_temp0].name)>> + <<else>> + <<set $NPC_names_m.pushUnique($per_npc[_temp0].name)>> + <</if>> <</if>> <<run delete $per_npc[_temp0]>> <</if>> <</widget>> +<<widget "updatePersistentNPCs">> +<<if $passage isnot "start" and $per_npc and Object.keys($per_npc).length gt 0>> + <<for $_i, $_value range $per_npc>> + <!-- Set Pronoun --> + <<if $per_npc[$_i].pronoun is "none" or $args[0] is "genders">> + <<if $malechance lt random(1, 100)>> + <<set $per_npc[$_i].pronoun to "f">><<set $test to $per_npc[$_i].pronoun>> + <<else>> + <<set $per_npc[$_i].pronoun to "m">> + <</if>> + <</if>> + <!-- Set Gender --> + <<if $per_npc[$_i].gender is "none" or $args[0] is "genders">> + <<if $per_npc[$_i].pronoun is "m">> + <<if random(0, 99) gte $cbchance>> + <<set $per_npc[$_i].gender to "m">> + <<else>> + <<set $per_npc[$_i].gender to "f">> + <</if>> + <<elseif $per_npc[$_i].pronoun is "f">> + <<if random(0, 99) gte $dgchance>> + <<set $per_npc[$_i].gender to "f">> + <<else>> + <<set $per_npc[$_i].gender to "m">> + <</if>> + <</if>> + <</if>> + + <!-- Set Genital Existence --> + <<if $per_npc[$_i].type isnot "human">> + <<set $per_npc[$_i].penis to ($per_npc[$_i].gender !== "f" ? 0 : "none")>> + <<set $per_npc[$_i].vagina to ($per_npc[$_i].gender !== "m" ? 0 : "none")>> + <<else>> + <<set $per_npc[$_i].penis to ($per_npc[$_i].gender !== "f" ? "clothed" : "none")>> + <<set $per_npc[$_i].vagina to ($per_npc[$_i].gender !== "m" ? "clothed" : "none")>> + <</if>> + + <!-- Set breast defaults--> + + <<set _b_mod_lower to Math.clamp($breast_mod, 0, 12)>> + <<set _b_mod_upper to Math.clamp($breast_mod + 12, 0, 12)>> + + <!-- can't use breastsize, since that would either break the numberslider + or make one of the sizes always be randomized, + but can use breastdesc not being changed from 0 as a substitute --> + <<if $per_npc[$_i].breastdesc is 0 or $args[0] is "breasts">> + <<if $per_npc[$_i].pronoun is "m">> + <<set $per_npc[$_i].breastsize to 0>> + <<else>> + <<set $per_npc[$_i].breastsize to random (_b_mod_lower, _b_mod_upper)>> + <</if>> + <</if>> + <<if $per_npc[$_i].breastsize gt 0>> + <<set _brdes to ["nipple","budding","tiny","small","pert","modest","full","large","ample","massive","huge","gigantic","enormous"]>> + <<set $per_npc[$_i].breastdesc to _brdes[$per_npc[$_i].breastsize]+" breast">> + <<else>> + <<set $per_npc[$_i].breastdesc to "nipple">> + <</if>> + <<set $per_npc[$_i].breastsdesc to $per_npc[$_i].breastdesc + "s">> + + <!-- Set pp to defaults--> + + /* New way to set upper and lower bounds. + * This method makes use of all other slider positions, but does nothing when slider is between -1 and 1, + * for a total of 15 unique positions vs the current method's 9. (max would be 17) + * Changing the penis_mod slider to range from -7 to 7 would work to make every slider position unique here, but potentially affects unnamed npc generation. + */ + + /* + <<set _p_mod_upper to 8>><<set _p_mod_lower to 1>> + <<if $penis_mod gt 0>> + <<set _p_mod_lower += $penis_mod - 1>> + <<elseif $penis_mod lt 0>> + <<set _p_mod_upper += $penis_mod + 1>> + <</if>> + + alternative way to write that: + <<set _p_mod_lower to ($penis_mod > 0 ? $penis_mod : 1)>> + <<set _p_mod_upper to ($penis_mod < 0 ? 9 + $penis_mod : 8)>> + */ + + <<if $penis_mod is 8>> + <<set _p_mod_upper to 8>><<set _p_mod_lower to 8>> + <<elseif $penis_mod gte 6>> + <<set _p_mod_upper to 8>><<set _p_mod_lower to 7>> + <<elseif $penis_mod gte 4>> + <<set _p_mod_upper to 8>><<set _p_mod_lower to 5>> + <<elseif $penis_mod gte 2>> + <<set _p_mod_upper to 8>><<set _p_mod_lower to 3>> + <<elseif $penis_mod gte 0>> + <<set _p_mod_upper to 8>><<set _p_mod_lower to 1>> + <<elseif $penis_mod gte -2>> + <<set _p_mod_upper to 7>><<set _p_mod_lower to 1>> + <<elseif $penis_mod gte -4>> + <<set _p_mod_upper to 5>><<set _p_mod_lower to 1>> + <<elseif $penis_mod gte -6>> + <<set _p_mod_upper to 3>><<set _p_mod_lower to 1>> + <<else>> + <<set _p_mod_upper to 1>><<set _p_mod_lower to 1>> + <</if>> + + <<if $per_npc[$_i].penissize is 0 or $args[0] is "penis">> + <<if $per_npc[$_i].gender is "f">> + <<set $per_npc[$_i].penissize to 0>> + <<set $per_npc[$_i].penisdesc to "none">> + <<else>> + <<switch random (_p_mod_lower, _p_mod_upper)>> + <<case 8>> + <<set $per_npc[$_i].penisdesc to either("massive cock","huge cock","humongous cock","immense cock","gigantic cock","enormous cock")>> + <<set $per_npc[$_i].penissize to 4>> + <<case 5 6 7>> + <<set $per_npc[$_i].penisdesc to either("thick cock","hefty cock","big cock","large cock","veiny cock","meaty cock")>> + <<set $per_npc[$_i].penissize to 3>> + <<case 2 3 4>> + <<set $per_npc[$_i].penisdesc to "penis">> + <<set $per_npc[$_i].penissize to 2>> + <<default>> + <<set $per_npc[$_i].penisdesc to either("tiny penis","pathetic cock","little penis","small penis","mini penis","micro penis")>> + <<set $per_npc[$_i].penissize to 1>> + <</switch>> + <</if>> + <</if>> + <!-- Set pp to size in case PC selected it--> + <<if $per_npc[$_i].penissize isnot 0>> + <<switch $per_npc[$_i].penissize>> + <<case 4>> + <<set $per_npc[$_i].penisdesc to either("massive cock","huge cock","humongous cock","immense cock","gigantic cock","enormous cock")>> + <<case 3>> + <<set $per_npc[$_i].penisdesc to either("thick cock","hefty cock","big cock","large cock","veiny cock","meaty cock")>> + <<case 1>> + <<set $per_npc[$_i].penisdesc to either("tiny penis","pathetic cock","little penis","small penis","mini penis","micro penis")>> + <<default>> + <<set $per_npc[$_i].penisdesc to "penis">> + <</switch>> + <</if>> + <<generatePronouns $per_npc[$_i]>> + <</for>> +<</if>> +<</widget>> + <<widget "updateNPCsFirst">>/*Adds new variables to saved NPCs.*/ <<for _per_keys range Object.keys($per_npc)>> <<set $per_npc[_per_keys][$args[0]] to $args[1]>> diff --git a/game/base-system/promiscuity.twee b/game/base-system/promiscuity.twee index c8065bad11d8b052ed192d3e3863a3a6efe915a1..8298874e1e74f02fbbd9ffe1cb79fdee0c650ecf 100644 --- a/game/base-system/promiscuity.twee +++ b/game/base-system/promiscuity.twee @@ -1,5 +1,4 @@ :: Widgets Promiscuity [widget] - <<widget "promiscuity1">> <<if $desperateaction is 1>> You feel disgusting, but it's better than what Bailey has in store for you. diff --git a/game/base-system/pubic-hair.twee b/game/base-system/pubic-hair.twee new file mode 100644 index 0000000000000000000000000000000000000000..18a563f6af30c047a6028f7ed2476bd153d4cd8c --- /dev/null +++ b/game/base-system/pubic-hair.twee @@ -0,0 +1,24 @@ +:: Widgets Pubic Hair [widget] + +<<widget "pbhairinit">> + <!--PBHair extension START--> + <<if $pblevel lt 1 or !$pblevel>> + <<set $pblevel to 1>> + <</if>> + + <<if $pbgrowth lt 1 or !$pbgrowth>> + <<set $pbgrowth to 1>> + <</if>> + + <<if $pblevelballs lt 1 or !$pblevelballs>> + <<set $pblevelballs to 1>> + <</if>> + + <<if $pbgrowthballs lt 1 or !$pbgrowthballs>> + <<set $pbgrowthballs to 1>> + <</if>> + + <<if $pbstrip lt 0 or !$pbstrip>> + <<set $pbstrip to 0>> + <</if>> +<</widget>> \ No newline at end of file diff --git a/game/base-system/settings.twee b/game/base-system/settings.twee index bdc23eb15a15790c8790adcd0dc5fb5d7c36835d..53614928eb811b7ed0cfde647e94bba42476001f 100644 --- a/game/base-system/settings.twee +++ b/game/base-system/settings.twee @@ -60,7 +60,7 @@ <<else>> <<set $debugdisable to "t">> <</if>> - <<set $cheatdisable to "t">> +<<set $cheatdisable to "t">> <<set $watersportsdisable to "f">> <<set $timestyle to "military">> <<set $saveName to "">> @@ -284,7 +284,7 @@ Values above 5 can lead to errors when creating new saves! Make sure you know wh <</if>> <<updatehistorycontrols>> <<initnpcgender>> - <<updatePronouns>> + <<updatePersistentNPCs>> <<hirsuteHideCheck>> <<generateTipsList>> <<tanned 0 "ignoreCoverage">> @@ -1326,16 +1326,19 @@ Values above 5 can lead to errors when creating new saves! Make sure you know wh <</if>> <<link "Generate all genders based on game settings">> <<initnpcgender "genders">> + <<updatePersistentNPCs "genders">> <<displaySettings>> <</link>> <br> <<link "Generate all penis sizes based on game settings">> <<initnpcgender "penis">> + <<updatePersistentNPCs "penis">> <<displaySettings>> <</link>> <br> <<link "Generate all breast sizes based on game settings">> <<initnpcgender "breasts">> + <<updatePersistentNPCs "breasts">> <<displaySettings>> <</link>> <<if $debug is 1>> @@ -1374,6 +1377,35 @@ Values above 5 can lead to errors when creating new saves! Make sure you know wh <<npcSettingsMenu>> </div> +<<if $passage isnot "start" and $per_npc and Object.keys($per_npc).length gt 0>> + <<run + if (!T.perNPCLock) { + $("#passages").on('change', '#perNPCSettingsMenu .macro-listbox', function (e) { + new Wikifier(null, '<<replace #perNPCSettingsMenu>><<perNPCSettingsMenu>><</replace>>'); + }); + + T.keys = {}; + T.keyNames = []; + T.allowed_npcs = ["steed", "guard", "inmate", "panty_thief", "tower_creature", "wraith", "pinch"]; + Object.keys(V.per_npc).forEach(k => { + for (let j of T.allowed_npcs){ + if (k.includes(j)){ + T.keyNames.push(k); + T.keys[k.toUpperFirst().replaceAll('_', ' ')] = k; + break + } + } + }); + T.perNPCLock = true; + } + >> + <<if T.keyNames and T.keyNames.length>> + <div id="perNPCSettingsMenu"> + <<perNPCSettingsMenu>> + </div> + <</if>> +<</if>> + <<if _listActive isnot true>> <<NPCSettingsReset>> <<set _listActive to true>> @@ -1383,136 +1415,215 @@ Values above 5 can lead to errors when creating new saves! Make sure you know wh <<widget "exportsettings">> -<span class="yellow">Will also import/export settings found in the "SAVE/OPTIONS" overlay.</span> - -<h4>Settings File Import/Export</h4> - -<<if SugarCube.Browser.isMobile.any() is true>> - Note that saving and loading from file does not work on Android currently. -<<else>> - Load from file: <input id="saveImport" type="file" value="Load from file" onchange="importSettings(this.files, 'file')"> - <br><br> - <input type="button" value="Save to file" onclick="exportSettings(null,'file')"> -<</if>> + <span class="yellow">Will also import/export settings found in the "SAVE/OPTIONS" overlay.</span> -<h4>Settings Text Import/Export</h4> + <h4>Settings File Import/Export</h4> -To save your current settings, click on "Get Settings Data", then copy and paste the save data where required. -<br> -To load your current settings, paste in the settings data then click "Load Settings Data". -<br> -To transfer to and from Android, it is recommended to use email or a service such as pastebin. Please ensure that the start and the end of the save is exact to prevent issues. -<br> -Click on "Copy Text Area" to copy the current contents for you. The button name will change to "Copying Error" if your device or browser does not support it. -<br><br> -<textarea id="settingsDataInput" rows="4" cols="40" onClick="if(V.disableAutoSelect == false)this.select();" onfocus="V.tempDisable = true;" onblur="V.tempDisable = false;"></textarea> -<br> -<input type="button" value="Clear Text Box" onclick="clearTextBox('settingsDataInput')"/> -<input type="button" value="Top of Text Box" onclick="topTextArea('settingsDataInput')"/> -<input type="button" value="Bottom of Text Box" onclick="bottomTextArea('settingsDataInput')"/> -<input type="button" value="Get Settings Data" onclick="exportSettings(null,'text')"/> -<input type="button" value="Load Settings Data" onclick="importSettings(null,'text')"/> -<input id="CopyTextArea" type="button" value="Copy Text Area" onclick="copySavedata('settingsDataInput')"> -<input id="LoadExternalExportFile" type="button" value="Load External Export File" onclick="loadExternalExportFile()"> + <<if SugarCube.Browser.isMobile.any() is true>> + Note that saving and loading from file does not work on Android currently. + <<else>> + Load from file: <input id="saveImport" type="file" value="Load from file" onchange="importSettings(this.files, 'file')"> + <br><br> + <input type="button" value="Save to file" onclick="exportSettings(null,'file')"> + <</if>> -<br><br> + <h4>Settings Text Import/Export</h4> -<label> - <<checkbox "$disableAutoSelect" false true autocheck>> - Disables auto select. -</label> + To save your current settings, click on "Get Settings Data", then copy and paste the save data where required. + <br> + To load your current settings, paste in the settings data then click "Load Settings Data". + <br> + To transfer to and from Android, it is recommended to use email or a service such as pastebin. Please ensure that the start and the end of the save is exact to prevent issues. + <br> + Click on "Copy Text Area" to copy the current contents for you. The button name will change to "Copying Error" if your device or browser does not support it. + <br><br> + <textarea id="settingsDataInput" rows="4" cols="40" onClick="if(V.disableAutoSelect == false)this.select();" onfocus="V.tempDisable = true;" onblur="V.tempDisable = false;"></textarea> + <br> + <input type="button" value="Clear Text Box" onclick="clearTextBox('settingsDataInput')"/> + <input type="button" value="Top of Text Box" onclick="topTextArea('settingsDataInput')"/> + <input type="button" value="Bottom of Text Box" onclick="bottomTextArea('settingsDataInput')"/> + <input type="button" value="Get Settings Data" onclick="exportSettings(null,'text')"/> + <input type="button" value="Load Settings Data" onclick="importSettings(null,'text')"/> + <input id="CopyTextArea" type="button" value="Copy Text Area" onclick="copySavedata('settingsDataInput')"> + <input id="LoadExternalExportFile" type="button" value="Load External Export File" onclick="loadExternalExportFile()"> -<</widget>> + <br><br> -<<widget "npcSettingsMenu">> -<<listbox "_npcId" autoselect>> - <<optionsfrom _npcList>> -<</listbox>> -| <<link Previous>> - <<if _npcId is 0>> - <<set _npcId to $NPCNameList.length - 1>> - <<else>> - <<set _npcId-->> - <</if>> - <<replace #npcSettingsMenu>><<npcSettingsMenu>><</replace>> -<</link>> | -<<link Next>> - <<set _npcId++>> - <<replace #npcSettingsMenu>><<npcSettingsMenu>><</replace>> -<</link>> -<br><br> -<span class="gold">$NPCName[_npcId].nam the $NPCName[_npcId].title</span> -<br> -<label><<radiobutton "$NPCName[_npcId].pronoun" "f" autocheck>> Female</label> | -<label><<radiobutton "$NPCName[_npcId].pronoun" "m" autocheck>> Male</label> -<br> -<<if $NPCName[_npcId].pregnancy[0] is null>> - <label><<radiobutton "$NPCName[_npcId].gender" "f" autocheck>> Vagina</label> | - <label><<radiobutton "$NPCName[_npcId].gender" "m" autocheck>> Penis</label> | - <label><<radiobutton "$NPCName[_npcId].gender" "h" autocheck>> Both</label> - <<run settingsNamedNpcGenderUpdate()>> -<<else>> - Unable to change the npc genitals due to their pregnancy. -<</if>> -<br><br> -Penis size - if applicable: -<br> -<<set _penisNames to ["", "Tiny", "Average", "Thick", "Huge"]>> /* the empty first element is necessary because _j starts at 1 */ -<<for _j to 1; _j lt _penisNames.length; _j++>> <label> - <<radiobutton "$NPCName[_npcId].penissize" _j autocheck>> - <<print _penisNames[_j]>> + <<checkbox "$disableAutoSelect" false true autocheck>> + Disables auto select. </label> - <<if _j isnot _penisNames.length -1>>|<</if>> -<</for>> -<br><br> -<div class="settingsToggle" style="display: inline-flex;"> -Breast size -<<numberslider "$NPCName[_npcId].breastsize" $NPCName[_npcId].breastsize 0 12 1>> -<<run settingsNamedNpcBreastSize()>> -</div> -<div style="clear:both;">/*Keep at end of toggles*/</div> +<</widget>> -<<if $NPCName[_npcId].nam is "Black Wolf">> - Beast Type: - <br> - <label><<radiobutton "$blackwolfmonster" 0 autocheck>> Always a beast</label> | - <label><<radiobutton "$blackwolfmonster" 1 autocheck>> Monster girl or boy when requirements met</label> | - <label><<radiobutton "$blackwolfmonster" 2 autocheck>> Always a monster girl or boy</label> +<<widget "npcSettingsMenu">> + <<listbox "_npcId" autoselect>> + <<optionsfrom _npcList>> + <</listbox>> + | <<link Previous>> + <<if _npcId is 0>> + <<set _npcId to $NPCNameList.length - 1>> + <<else>> + <<set _npcId-->> + <</if>> + <<replace #npcSettingsMenu>><<npcSettingsMenu>><</replace>> + <</link>> | + <<link Next>> + <<set _npcId++>> + <<replace #npcSettingsMenu>><<npcSettingsMenu>><</replace>> + <</link>> <br><br> -<<elseif $NPCName[_npcId].nam is "Great Hawk">> - Beast Type: + <span class="gold">$NPCName[_npcId].nam the $NPCName[_npcId].title</span> <br> - <label><<radiobutton "$greathawkmonster" 0 autocheck>> Always a beast</label> | - <label><<radiobutton "$greathawkmonster" 1 autocheck>> Monster girl or boy when requirements met</label> | - <label><<radiobutton "$greathawkmonster" 2 autocheck>> Always a monster girl or boy</label> + <label><<radiobutton "$NPCName[_npcId].pronoun" "f" autocheck>> Female</label> | + <label><<radiobutton "$NPCName[_npcId].pronoun" "m" autocheck>> Male</label> + <br> + <<if $NPCName[_npcId].pregnancy[0] is null>> + <label><<radiobutton "$NPCName[_npcId].gender" "f" autocheck>> Vagina</label> | + <label><<radiobutton "$NPCName[_npcId].gender" "m" autocheck>> Penis</label> | + <label><<radiobutton "$NPCName[_npcId].gender" "h" autocheck>> Both</label> + <<run settingsNamedNpcGenderUpdate()>> + <<else>> + Unable to change the npc genitals due to their pregnancy. + <</if>> <br><br> -<</if>> -<<if $debug is 1>> - Hair Colour: + Penis size - if applicable: <br> - <<for _j to 0; _j lt _hairColorNPC.length; _j++>> + <<set _penisNames to ["", "Tiny", "Average", "Thick", "Huge"]>> /* the empty first element is necessary because _j starts at 1 */ + <<for _j to 1; _j lt _penisNames.length; _j++>> <label> - <<print '<<radiobutton "$NPCName['+_npcId+'].hairColour" "'+_hairColorNPCData[_j]+'" ' + ($NPCName[_npcId].hairColour is _hairColorNPCData[_j] ? "checked" : "") + '>>'>> - <span @class="_hairColorNPCText[_j]">_hairColorNPC[_j]</span> - </label> | + <<radiobutton "$NPCName[_npcId].penissize" _j autocheck>> + <<print _penisNames[_j]>> + </label> + <<if _j isnot _penisNames.length -1>>|<</if>> <</for>> <br><br> - Eye Colour: + <div class="settingsToggle" style="display: inline-flex;"> + Breast size + <<numberslider "$NPCName[_npcId].breastsize" $NPCName[_npcId].breastsize 0 12 1>> + <<run settingsNamedNpcBreastSize(Util.slugify('$NPCName[_npcId].breastsize'), false)>> + </div> + <div style="clear:both;">/*Keep at end of toggles*/</div> <br> - <<for _j to 0; _j lt _eyeColorNPC.length; _j++>> + + <<if $NPCName[_npcId].nam is "Black Wolf">> + Beast Type: + <br> + <label><<radiobutton "$blackwolfmonster" 0 autocheck>> Always a beast</label> | + <label><<radiobutton "$blackwolfmonster" 1 autocheck>> Monster girl or boy when requirements met</label> | + <label><<radiobutton "$blackwolfmonster" 2 autocheck>> Always a monster girl or boy</label> + <br><br> + <<elseif $NPCName[_npcId].nam is "Great Hawk">> + Beast Type: + <br> + <label><<radiobutton "$greathawkmonster" 0 autocheck>> Always a beast</label> | + <label><<radiobutton "$greathawkmonster" 1 autocheck>> Monster girl or boy when requirements met</label> | + <label><<radiobutton "$greathawkmonster" 2 autocheck>> Always a monster girl or boy</label> + <br><br> + <</if>> + <<if $debug is 1>> + Hair Colour: + <br> + <<for _j to 0; _j lt _hairColorNPC.length; _j++>> + <label> + <<print '<<radiobutton "$NPCName['+_npcId+'].hairColour" "'+_hairColorNPCData[_j]+'" ' + ($NPCName[_npcId].hairColour is _hairColorNPCData[_j] ? "checked" : "") + '>>'>> + <span @class="_hairColorNPCText[_j]">_hairColorNPC[_j]</span> + </label> | + <</for>> + <br><br> + + Eye Colour: + <br> + <<for _j to 0; _j lt _eyeColorNPC.length; _j++>> + <label> + <<print '<<radiobutton "$NPCName['+_npcId+'].eyeColour" "'+_eyeColorNPCData[_j]+'" ' + ($NPCName[_npcId].eyeColour is _eyeColorNPCData[_j] ? "checked" : "") + '>>'>> + <span @class="_eyeColorNPCText[_j]">_eyeColorNPC[_j]</span> + </label> | + <</for>> + <br><br> + <</if>> +<</widget>> + +<<widget "perNPCSettingsMenu">> + <span class="gold">Persistent NPCs:</span> + <br> + <<listbox "_pNPCId" autoselect>> + <<optionsfrom _keys>> + <</listbox>> + <<switch _pNPCId>> + <<case "scarred_inmate">> + <<if $per_npc[_pNPCId].description isnot "scarred">> + <<generate_scarred_inmate 0>> + <<clearsinglenpc 0>> + <</if>> + <<case "veteran_guard">> + <<if $per_npc[_pNPCId].description isnot "veteran">> + <<generate_veteran_guard 0>> + <<clearsinglenpc 0>> + <</if>> + <</switch>> + <<set _index to _keyNames.indexOf(_pNPCId)>> + | <<link Previous>> + <<set _index to (_index is 0 ? _keyNames.length - 1 : --_index)>> + <<set _pNPCId to _keyNames[_index]>> + <<replace #perNPCSettingsMenu>><<perNPCSettingsMenu>><</replace>> + <</link>> | + <<link Next>> + <<set _index++>> + <<set _pNPCId to _keyNames[_index]>> + <<replace #perNPCSettingsMenu>><<perNPCSettingsMenu>><</replace>> + <</link>> + <br><br> + <<if $per_npc[_pNPCId].name_known>> + <span class="gold">$per_npc[_pNPCId].name the <<print _pNPCId.replaceAll('_', ' ')>></span> + <<elseif $per_npc[_pNPCId].name is "Ivory Wraith">> + <span class="wraith">The Ivory Wraith</span> + <<elseif _pNPCId is "tower_creature">> + <span class="gold">The Night Monster</span> + <<else>> + <span class="gold"><<print _pNPCId.toUpperFirst().replaceAll('_', ' ')>></span> + <</if>> + <<if $per_npc[_pNPCId].name_known and $debug is 1>> + | <<link Rename>> + <<if $per_npc[_pNPCId].pronoun is "f">> + <<set $per_npc[_pNPCId].name to $NPC_names_f.random()>> + <<else>> + <<set $per_npc[_pNPCId].name to $NPC_names_m.random()>> + <</if>> + <<replace #perNPCSettingsMenu>><<perNPCSettingsMenu>><</replace>> + <</link>> + <</if>> + <br> + <label><<radiobutton "$per_npc[_pNPCId].pronoun" "f" autocheck>> Female</label> | + <label><<radiobutton "$per_npc[_pNPCId].pronoun" "m" autocheck>> Male</label> + <br> + <label><<radiobutton "$per_npc[_pNPCId].gender" "f" autocheck>> Vagina</label> | + <label><<radiobutton "$per_npc[_pNPCId].gender" "m" autocheck>> Penis</label> + <<run settingsPersistentNpcGenderUpdate()>> + <br><br> + Penis size - if applicable: + <br> + <<set _penisNames to ["", "Tiny", "Average", "Thick", "Huge"]>> /* the empty first element is necessary because _j starts at 1 */ + <<for _j to 1; _j lt _penisNames.length; _j++>> <label> - <<print '<<radiobutton "$NPCName['+_npcId+'].eyeColour" "'+_eyeColorNPCData[_j]+'" ' + ($NPCName[_npcId].eyeColour is _eyeColorNPCData[_j] ? "checked" : "") + '>>'>> - <span @class="_eyeColorNPCText[_j]">_eyeColorNPC[_j]</span> - </label> | + <<radiobutton "$per_npc[_pNPCId].penissize" _j autocheck>> + <<print _penisNames[_j]>> + </label> + <<if _j isnot _penisNames.length -1>>|<</if>> <</for>> <br><br> -<</if>> - + <div class="settingsToggle" style="display: inline-flex;"> + Breast size + <<numberslider "$per_npc[_pNPCId].breastsize" $per_npc[_pNPCId].breastsize 0 12 1>> + <<run settingsNamedNpcBreastSize(Util.slugify('$per_npc[_pNPCId].breastsize'), true)>> + </div> + <div style="clear:both;"> + /*Keep at end of toggles*/ + </div> <</widget>> + :: Settings <<settings>> diff --git a/game/base-system/sleep.twee b/game/base-system/sleep.twee index a0625569b3610150d0f288c32ae5164f5d2ac348..7e15552cc13e07321cddc345c9d443dee139f799 100644 --- a/game/base-system/sleep.twee +++ b/game/base-system/sleep.twee @@ -64,6 +64,9 @@ <<elseif $baileydefeatedchain gte 1 and $location is "home" and ($rng * 100) gte (9900 - ($allure / 5))>> <<set $schoolwake to 1>> <<set $baileyrapewake to 1>> + <<elseif $christmas is 1 and $monthday is 25 and $location is "home" and $hour lte 6 and $christmas_kylar is undefined and $NPCName[$NPCNameList.indexOf("Kylar")].state is "active">> + <<set $schoolwake to 1>> + <<set $christmas_kylar to 1>> <<elseif $hour is 6 and $location is "asylum" or $asylumstate is "firsttreatment" and $asylumfirsttreatment isnot 1 and $location is "asylum" or $asylumstate is "secondtreatment" and $asylumsecondtreatment isnot 1 and $location is "asylum" or $asylumstate is "assessment" and $asylumassessment isnot 1 and $location is "asylum">> <<set $schoolwake to 1>> <<elseif $location is "asylum" and $suspicion gte 80 and random(1, 10) gte 10>> diff --git a/game/base-system/statistics.twee b/game/base-system/statistics.twee index deae3b0cf3f3d94a64004e24f403ca8061f0884d..593b0b1f4f04c86cbd21084abf351fbebc433da9 100644 --- a/game/base-system/statistics.twee +++ b/game/base-system/statistics.twee @@ -24,7 +24,7 @@ __Virginities taken__ <br> <<set _total to 0>> <<for _slot, _list range $virginTaken>> - <<set _total += _list.length>> + <<set _total += _list.length>> <</for>> Total: _total <br> @@ -475,7 +475,7 @@ __Save Game Details__ <br> <</if>> <<if $worn.genitals.name isnot "naked">> - <<print setup.clothes.genitals[$worn.genitals.index].name_cap>> integrity: <<print Math.trunc($worn.genitals.integrity)>> + <<print setup.clothes.genitals[clothesIndex('genitals',$worn.genitals)].name_cap>> integrity: <<print Math.trunc($worn.genitals.integrity)>> <br> <</if>> <br> diff --git a/game/base-system/tending.twee b/game/base-system/tending.twee index 6ebef2fa885b84f8bfc646a2dee3b87a372b34c5..ab0b646ac86bd5572b0724096840f2b3924374fe 100644 --- a/game/base-system/tending.twee +++ b/game/base-system/tending.twee @@ -400,7 +400,7 @@ here. <<if $fertiliser.current gt 0 or $fertiliser.used gt 0>>You have <<number <<set _tending_amount *= 1.6>> <<elseif $args[2] is 3>> <<set _tending_amount *= 1.4>> -<<elseif $args[1] is 2>> +<<elseif $args[2] is 2>> <<set _tending_amount *= 1.2>> <</if>> <<if !$backgroundTraits.includes("greenthumb") and $tending is 1000 and ($fertiliser.used gte 40 or ($fertiliser.used gte 25 and $farm_stage gte 6)) and $plants_known.length gte 16>> diff --git a/game/base-system/text.twee b/game/base-system/text.twee index f93cc1e1ca8644c289ad9b44ce9e832abc8ef257..c8e936d1fcc296d168d611a8a00c75d9d089a850 100644 --- a/game/base-system/text.twee +++ b/game/base-system/text.twee @@ -107,8 +107,7 @@ /* usage example: <<word "upper">> */ <<set _text_output to "">> <<if $args[0]>> - /* note: we rely on the .index of clothing items to never change. */ - <<set $_result to setup.clothes[$args[0]][$worn[$args[0]].index].word>> + <<set $_result to setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].word>> <<set _text_output to ($_result isnot "n" ? $_result : "")>> <</if>> <</silently>>_text_output <</widget>> @@ -116,7 +115,7 @@ <<widget "genitalsword">><<word "genitals">><</widget>> <<widget "plural">><<silently>> - <<if setup.clothes[$args[0]][$worn[$args[0]].index].plural is 1>> + <<if setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].plural is 1>> <<set _text_output to "are">> <<else>> <<set _text_output to "is">> @@ -132,7 +131,7 @@ <<widget "genitalsplural">><<plural "genitals">><</widget>> <<widget "itis">><<silently>> - <<if setup.clothes[$args[0]][$worn[$args[0]].index].plural is 1>> + <<if setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].plural is 1>> <<set _text_output to "they are">> <<else>> <<set _text_output to "it is">> @@ -147,7 +146,7 @@ <<widget "underloweritis">><<itis "under_lower">><</widget>> <<widget "it">><<silently>> - <<if setup.clothes[$args[0]][$worn[$args[0]].index].plural is 1>> + <<if setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].plural is 1>> <<set _text_output to "them">> <<else>> <<set _text_output to "it">> @@ -165,7 +164,7 @@ <<widget "handsit">><<it "hands">><</widget>> <<widget "has">><<silently>> - <<if setup.clothes[$args[0]][$worn[$args[0]].index].plural is 1>> + <<if setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].plural is 1>> <<set _text_output to "have">> <<else>> <<set _text_output to "has">> @@ -180,7 +179,7 @@ <<widget "underlowerhas">><<has "under_lower">><</widget>> <<widget "that">><<silently>> - <<if setup.clothes[$args[0]][$worn[$args[0]].index].plural is 1>> + <<if setup.clothes[$args[0]][clothesIndex($args[0],$worn[$args[0]])].plural is 1>> <<set _text_output to "those">> <<else>> <<set _text_output to "that">> @@ -251,12 +250,6 @@ <</if>> <</widget>> -<<widget "updatePronouns">> - <<for _i to 0; _i lt $NPCNameList.length; _i++>> - <<generatePronouns $NPCName[_i]>> - <</for>> -<</widget>> - <<widget "clearPronouns">> <<if $args[0]>> <<set $args[0].pronouns.he = 0>> @@ -331,9 +324,7 @@ <<widget "he">><<silently>> <!-- Add the option to call for named NPCs individually --> <<if $args[0]>> - <<set _args to $args[0]>> - <<set $pronoun to $NPCName[$NPCNameList.indexOf(_args)].pronoun>> - <<unset _args>> + <<set $pronoun to $NPCName[$NPCNameList.indexOf($args[0])].pronoun>> <</if>> <<if $pronoun is "m">> <<set _text_output to "he">> @@ -489,9 +480,7 @@ <<widget "hes">><<silently>> <!-- Add the option to call for named NPCs individually --> <<if $args[0]>> - <<set _args to $args[0]>> - <<set $pronoun to $NPCName[$NPCNameList.indexOf(_args)].pronoun>> - <<unset _args>> + <<set $pronoun to $NPCName[$NPCNameList.indexOf($args[0])].pronoun>> <</if>> <<if $pronoun is "m">> <<set _text_output to "he's">> @@ -509,9 +498,7 @@ <<widget "his">><<silently>> <!-- Add the option to call for named NPCs individually --> <<if $args[0]>> - <<set _args to $args[0]>> - <<set $pronoun to $NPCName[$NPCNameList.indexOf(_args)].pronoun>> - <<unset _args>> + <<set $pronoun to $NPCName[$NPCNameList.indexOf($args[0])].pronoun>> <</if>> <<if $pronoun is "m">> <<set _text_output to "his">> @@ -529,9 +516,7 @@ <<widget "hers">><<silently>> <!-- Add the option to call for named NPCs individually --> <<if $args[0]>> - <<set _args to $args[0]>> - <<set $pronoun to $NPCName[$NPCNameList.indexOf(_args)].pronoun>> - <<unset _args>> + <<set $pronoun to $NPCName[$NPCNameList.indexOf($args[0])].pronoun>> <</if>> <<if $pronoun is "m">> <<set _text_output to "his">> @@ -550,132 +535,42 @@ <<if $args[0]>> <!-- Add the option to call for a named NPC's name --> <<if $NPCNameList.includes($args[0])>> - <<set _args to $args[0]>> - <<set $pronoun to $NPCName[$NPCNameList.indexOf(_args)].pronoun>> - <<unset _args>> + <<set $pronoun to $NPCName[$NPCNameList.indexOf($args[0])].pronoun>> <<else>> - <<if $enemytype is "man">> - <<if $args[0] is 1>> - <<person1>> - <<elseif $args[0] is 2>> - <<person2>> - <<elseif $args[0] is 3>> - <<person3>> - <<elseif $args[0] is 4>> - <<person4>> - <<elseif $args[0] is 5>> - <<person5>> - <<elseif $args[0] is 6>> - <<person6>> - <</if>> + <<if Number.isInteger($args[0]) and between($args[0],1,6)>> + <<personselect $args[0]>> <</if>> <</if>> - <<if $pronoun is "m">> - <<set _text_output to "He">> - <<elseif $pronoun is "f">> - <<set _text_output to "She">> - <<elseif $pronoun is "i">> - <<set _text_output to "It">> - <<elseif $pronoun is "n">> - <<set _text_output to "One">> - <<elseif $pronoun is "t">> - <<set _text_output to "They">> - <</if>> -<<elseif $NPCList[0].intro is 1>> - <<set $NPCList[0].intro to 0>> - <<if $npcrow.includes(0)>> +<</if>> + +<<if $NPCList[$index].intro is 1>> + <<set $NPCList[$index].intro to 0>> + <<if $npcrow.includes($index)>> <<if $npc.includes("Black Wolf") or $npc.includes("Great Hawk")>> - <<set _text_output to "The " + $npc[$npcrow.indexOf(0)]>> + <<set _text_output to "The " + $npc[$npcrow.indexOf($index)]>> <<else>> - <<set _text_output to $npc[$npcrow.indexOf(0)]>> + <<set _text_output to $npc[$npcrow.indexOf($index)]>> <</if>> <<else>> <<if $enemytype is "beast">> - <<beasttype>><<set _person to _text_output>><<set _text_output to "The " + _person>> - <<elseif $NPCList[0].name_known is 1>> - <<set _text_output to $NPCList[0].name>> - <<elseif $NPCList[0].role is "normal">> - <<person1>><<person>><<set _person to _text_output>><<set _text_output to "The " + _person>> + <<beasttype>><<set _text_output to "The " + _text_output>> + <<elseif $NPCList[$index].name_known is 1>> + <<set _text_output to $NPCList[$index].name>> + <<elseif $NPCList[$index].role is "normal">> + <<person>><<set _text_output to "The " + _text_output>> <<else>> - <<person1>><<person>><<set _person to _text_output>><<set _text_output to "The " + $NPCList[0].description + " " + "$NPCList[0].role">> - <</if>> - <</if>> -<<elseif $NPCList[1].intro is 1>> - <<set $NPCList[1].intro to 0>> - <<if $npcrow.includes(1)>> - <<set _text_output to $npc[$npcrow.indexOf(1)]>> - <<else>> - <<if $NPCList[1].name_known is 1>> - <<set _text_output to $NPCList[1].name>> - <<else>> - <<person2>><<person>><<set _person to _text_output>><<set _text_output to "The " + _person>> - <</if>> - <</if>> -<<elseif $NPCList[2].intro is 1>> - <<set $NPCList[2].intro to 0>> - <<if $npcrow.includes(2)>> - <<set _text_output to $npc[$npcrow.indexOf(2)]>> - <<else>> - <<if $NPCList[2].name_known is 1>> - <<set _text_output to $NPCList[2].name>> - <<else>> - <<person3>><<person>><<set _person to _text_output>><<set _text_output to "The " + _person>> - <</if>> - <</if>> -<<elseif $NPCList[3].intro is 1>> - <<set $NPCList[3].intro to 0>> - <<if $npcrow.includes(3)>> - <<set _text_output to $npc[$npcrow.indexOf(3)]>> - <<else>> - <<if $NPCList[3].name_known is 1>> - <<set _text_output to $NPCList[3].name>> - <<else>> - <<person4>><<person>><<set _person to _text_output>><<set _text_output to "The " + _person>> - <</if>> - <</if>> -<<elseif $NPCList[4].intro is 1>> - <<set $NPCList[4].intro to 0>> - <<if $npcrow.includes(4)>> - <<set _text_output to $npc[$npcrow.indexOf(4)]>> - <<else>> - <<if $NPCList[4].name_known is 1>> - <<set _text_output to $NPCList[4].name>> - <<else>> - <<person5>><<person>><<set _person to _text_output>><<set _text_output to "The " + _person>> - <</if>> - <</if>> -<<elseif $NPCList[5].intro is 1>> - <<set $NPCList[5].intro to 0>> - <<if $npcrow.includes(5)>> - <<set _text_output to $npc[$npcrow.indexOf(5)]>> - <<else>> - <<if $NPCList[5].name_known is 1>> - <<set _text_output to $NPCList[5].name>> - <<else>> - <<person6>><<person>><<set _person to _text_output>><<set _text_output to "The " + _person>> + <<set _text_output to "The " + $NPCList[$index].description + " " + $NPCList[$index].role>> <</if>> <</if>> <<else>> - <<if $pronoun is "m">> - <<set _text_output to "He">> - <<elseif $pronoun is "f">> - <<set _text_output to "She">> - <<elseif $pronoun is "i">> - <<set _text_output to "It">> - <<elseif $pronoun is "n">> - <<set _text_output to "One">> - <<elseif $pronoun is "t">> - <<set _text_output to "They">> - <</if>> + <<he>><<capitalise>> <</if>> <</silently>>_text_output<</widget>> <<widget "His">><<silently>> <!-- Add the option to call for named NPCs individually --> <<if $args[0]>> - <<set _args to $args[0]>> - <<set $pronoun to $NPCName[$NPCNameList.indexOf(_args)].pronoun>> - <<unset _args>> + <<set $pronoun to $NPCName[$NPCNameList.indexOf($args[0])].pronoun>> <</if>> <<if $pronoun is "m">> <<set _text_output to "His">> @@ -693,9 +588,7 @@ <<widget "Hers">><<silently>> <!-- Add the option to call for named NPCs individually --> <<if $args[0]>> - <<set _args to $args[0]>> - <<set $pronoun to $NPCName[$NPCNameList.indexOf(_args)].pronoun>> - <<unset _args>> + <<set $pronoun to $NPCName[$NPCNameList.indexOf($args[0])].pronoun>> <</if>> <<if $pronoun is "m">> <<set _text_output to "His">> @@ -712,9 +605,7 @@ <<widget "Hes">><<silently>> <!-- Add the option to call for named NPCs individually --> <<if $args[0]>> - <<set _args to $args[0]>> - <<set $pronoun to $NPCName[$NPCNameList.indexOf(_args)].pronoun>> - <<unset _args>> + <<set $pronoun to $NPCName[$NPCNameList.indexOf($args[0])].pronoun>> <</if>> <<if $pronoun is "m">> <<set _text_output to "He's">> @@ -732,9 +623,7 @@ <<widget "him">><<silently>> <!-- Add the option to call for named NPCs individually --> <<if $args[0]>> - <<set _args to $args[0]>> - <<set $pronoun to $NPCName[$NPCNameList.indexOf(_args)].pronoun>> - <<unset _args>> + <<set $pronoun to $NPCName[$NPCNameList.indexOf($args[0])].pronoun>> <</if>> <<if $pronoun is "m">> <<set _text_output to "him">> @@ -802,9 +691,7 @@ <<widget "himself">><<silently>> <!-- Add the option to call for named NPCs individually --> <<if $args[0]>> - <<set _args to $args[0]>> - <<set $pronoun to $NPCName[$NPCNameList.indexOf(_args)].pronoun>> - <<unset _args>> + <<set $pronoun to $NPCName[$NPCNameList.indexOf($args[0])].pronoun>> <</if>> <<if $pronoun is "m">> <<set _text_output to "himself">> @@ -1216,7 +1103,9 @@ in dev alternative to current "breasts" widget <<widget "personsimple">><<silently>> <<set _text_output to (!$NPCList[$index].type or $NPCList[$index].type is "human" or $args[0] is "normal" ? "" : $NPCList[$index].type)>> - <<if $npcadult is 1>> + <<if $role isnot "normal">> + <<set _text_output += $role>> + <<elseif $npcadult is 1>> <<set _text_output += ($pronoun is "m" ? "man" : "woman")>> <<else>> <<set _text_output += ($pronoun is "m" ? "boy" : "girl")>> @@ -1231,7 +1120,7 @@ in dev alternative to current "breasts" widget <<if $npc_named is 1 or $description is "pale figure">> <<set _text_output to $description>> <<elseif $role isnot "normal">> - <<set _text_output to $description + " " + $role>> + <<set _text_output += $role>> <<elseif $pronoun is "m">> <<set _text_output += ($npcadult is 1 ? "man" : "boy")>> <<elseif $pronoun is "f">> @@ -1247,10 +1136,12 @@ in dev alternative to current "breasts" widget <<widget "combatperson">><<silently>> <<if $npc_named is 1>> <<set _text_output to $NPCList[$index].fullDescription>> +<<elseif $NPCList[$index].name_known is 1>> + <<set _text_output to $NPCList[$index].name>> <<elseif $enemytype is "beast">> <<set _text_output to "the " + $NPCList[$index].type>> <<elseif $role isnot "normal">> - <<set _text_output to $description + " " + $role>> + <<set _text_output to "the " + $description + " " + $role>> <<elseif $npcadult is 1>> <<if $pronoun is "m">> <<set _text_output to "the " + $description+" man">> @@ -1282,6 +1173,7 @@ in dev alternative to current "breasts" widget <<set $pronoun to $NPCList[_n].pronoun>> <<if $npcrow.includes(_n)>> <<set $description to $NPCName[$npcnum[$npcrow.indexOf(_n)]].title>> + <<set $role to "normal">> <<set $npc_named to 1>> <<else>> <<set $description to $NPCList[_n].description>> @@ -3322,12 +3214,12 @@ A sign reads "Opening hours: <<ampm 8 00>> - <<ampm 21 00>>" <<widget "groin">><<silently>> <<genitals>> -<<if !$worn.lower.type.includes("naked") and setup.clothes.lower[$worn.lower.index].skirt isnot 1>> -<<set _text_output to _text_output + " through your " + $worn.lower.name>> +<<if !$worn.lower.type.includes("naked") and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt isnot 1>> + <<set _text_output to _text_output + " through your " + $worn.lower.name>> <<elseif !$worn.under_lower.type.includes("naked")>> -<<set _text_output to _text_output + " through your " + $worn.under_lower.name>> + <<set _text_output to _text_output + " through your " + $worn.under_lower.name>> <<else>> -<<set _text_output to _text_output>> + <<set _text_output to _text_output>> <</if>> <</silently>>_text_output<</widget>> @@ -3523,6 +3415,13 @@ A sign reads "Opening hours: <<ampm 8 00>> - <<ampm 21 00>>" <</if>> <</silently>>_text_output<</widget>> +<<widget "boundBodyParts">><<silently>> + <<set _boundparts to ($rightarm is "bound" or $leftarm is "bound" ? "arm" : "")>> + <<set _boundparts += ($rightarm is "bound" and $leftarm is "bound" ? "s" : "")>> + <<set _boundparts += ($feetuse is "bound" ? (_boundparts isnot "" ? " and legs" : "legs") : "")>> + <<set _text_output to _boundparts>> +<</silently>>_text_output<</widget>> + <<widget "stripobject">> <<set $worn.upper.integrity -= $stripintegrity>><<set $worn.lower.integrity -= $stripintegrity>><<set $worn.under_lower.integrity -= $stripintegrity>> @@ -4820,8 +4719,8 @@ School finishes on the first Monday of December. <<widget "pulldownall">> <<outfitChecks>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> - <<if setup.clothes.under_lower[$worn.under_lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> + <<if setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].skirt is 1>> You lift the hem of your $worn.lower.name and $worn.under_lower.name, <span class="lewd">baring your <<genitals>>.</span> <<elseif _underOutfit>> You lift the hem of your $worn.lower.name and pull aside your $worn.under_lower.name, <span class="lewd">baring your <<genitals>>.</span> @@ -4831,7 +4730,7 @@ School finishes on the first Monday of December. You lift the hem of your $worn.lower.name, <span class="lewd">baring your <<genitals>>.</span> <</if>> <<elseif _middleOutfit>> - <<if setup.clothes.under_lower[$worn.under_lower.index].skirt is 1>> + <<if setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].skirt is 1>> You pull aside your $worn.lower.name and lift the hem of your $worn.under_lower.name, <span class="lewd">baring your <<genitals>>.</span> <<elseif _underOutfit>> You pull aside your $worn.lower.name and $worn.under_lower.name, <span class="lewd">baring your <<genitals>>.</span> @@ -4841,7 +4740,7 @@ School finishes on the first Monday of December. You pull aside your $worn.lower.name, <span class="lewd">baring your <<genitals>>.</span> <</if>> <<elseif !$worn.lower.type.includes("naked")>> - <<if setup.clothes.under_lower[$worn.under_lower.index].skirt is 1>> + <<if setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].skirt is 1>> You tug down your $worn.lower.name and lift the hem of your $worn.under_lower.name, <span class="lewd">baring your <<genitals>>.</span> <<elseif _middleOutfit>> You tug down your $worn.lower.name and pull aside your $worn.under_lower.name, <span class="lewd">baring your <<genitals>>.</span> @@ -4851,7 +4750,7 @@ School finishes on the first Monday of December. You tug down your $worn.lower.name, <span class="lewd">baring your <<genitals>>.</span> <</if>> <<else>> - <<if setup.clothes.under_lower[$worn.under_lower.index].skirt is 1>> + <<if setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].skirt is 1>> You lift the hem of your $worn.under_lower.name, <span class="lewd">baring your <<genitals>>.</span> <<elseif _underOutfit>> You pull aside your $worn.under_lower.name, <span class="lewd">baring your <<genitals>>.</span> @@ -4876,7 +4775,7 @@ School finishes on the first Monday of December. <<widget "pulldown">> <<outfitChecks>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> lift up <<elseif _middleOutfit is false>> pull down @@ -4898,7 +4797,7 @@ School finishes on the first Monday of December. <<widget "pullsdown">> <<outfitChecks>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> lifts up <<elseif _middleOutfit is false>> pulls down @@ -4920,7 +4819,7 @@ School finishes on the first Monday of December. <<widget "overpulldown">> <<outfitChecks>> -<<if setup.clothes.over_lower[$worn.over_lower.index].skirt is 1>> +<<if setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1>> lift up <<elseif _overOutfit is false>> pull down @@ -4942,7 +4841,7 @@ School finishes on the first Monday of December. <<widget "overpullsdown">> <<outfitChecks>> -<<if setup.clothes.over_lower[$worn.over_lower.index].skirt is 1>> +<<if setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1>> lifts up <<elseif _overOutfit is false>> pulls down @@ -5241,10 +5140,10 @@ a teacher <<set _text_output to "wolves">> <<elseif $NPCList[_na].type is "fox" and $monster isnot 1>> <<set _text_output to "foxes">> -<<elseif $monster isnot 1 or $NPCList[_na].type is "centaur">> - <<set _text_output to "<<beasttype _na>>s">> <<elseif $NPCList[_na].type is "harpy">> <<set _text_output to "harpies">> +<<elseif $monster isnot 1 or $NPCList[_na].type is "centaur">> + <<set _text_output to "<<beasttype _na>>s">> <<else>> <<for _i = 0; _i < $NPCList.length; _i++>> <<if $NPCList[_i].pronoun is "m">> @@ -5640,17 +5539,19 @@ a teacher <</widget>> <<widget "farm_text_many">> +<<set $_bgender to $farm_work[$args[0]].gender_plural>> +<<set $_bperson to ($farm_work[$args[0]].monster_roll is true and ($hallucinations gte 1 or $monsterhallucinations is "f"))>> <<if $args[0] is "horse">> - <<if $farm_work[$args[0]].monster_roll is true and ($hallucinations gte 1 or $monsterhallucinations is "f")>> + <<if $_bperson>> <<set _text_output to "centaurs">> <<else>> <<set _text_output to "horses">> <</if>> <<elseif $args[0] is "pig">> - <<if $farm_work[$args[0]].monster_roll is true and ($hallucinations gte 1 or $monsterhallucinations is "f")>> - <<if $farm_work[$args[0]].gender_plural is "m">> + <<if $_bperson>> + <<if $_bgender is "m">> <<set _text_output to "pigboys">> - <<elseif $farm_work[$args[0]].gender_plural is "f">> + <<elseif $_bgender is "f">> <<set _text_output to "piggirls">> <<else>> <<set _text_output to "piggirls and pigboys">> @@ -5659,10 +5560,10 @@ a teacher <<set _text_output to "pigs">> <</if>> <<elseif $args[0] is "dog">> - <<if $farm_work[$args[0]].monster_roll is true and ($hallucinations gte 1 or $monsterhallucinations is "f")>> - <<if $farm_work[$args[0]].gender_plural is "m">> + <<if $_bperson>> + <<if $_bgender is "m">> <<set _text_output to "dogboys">> - <<elseif $farm_work[$args[0]].gender_plural is "f">> + <<elseif $_bgender is "f">> <<set _text_output to "doggirls">> <<else>> <<set _text_output to "doggirls and dogboys">> @@ -5671,10 +5572,10 @@ a teacher <<set _text_output to "dogs">> <</if>> <<else>> - <<if $farm_work[$args[0]].monster_roll is true and ($hallucinations gte 1 or $monsterhallucinations is "f")>> - <<if $farm_work[$args[0]].gender_plural is "m">> + <<if $_bperson>> + <<if $_bgender is "m">> <<set _text_output to "bullboys">> - <<elseif $farm_work[$args[0]].gender_plural is "f">> + <<elseif $_bgender is "f">> <<set _text_output to "cowgirls">> <<else>> <<set _text_output to "cowgirls and bullboys">> @@ -5687,45 +5588,31 @@ a teacher <</widget>> <<widget "farm_text">> +<<set $_bgender to $farm_work[$args[0]].gender>> +<<set $_bperson to ($farm_work[$args[0]].monster_roll is true and ($hallucinations gte 1 or $monsterhallucinations is "f"))>> <<if $args[0] is "horse">> - <<if $farm_work[$args[0]].monster_roll is true and ($hallucinations gte 1 or $monsterhallucinations is "f")>> + <<if $_bperson>> <<set _text_output to "centaur">> <<else>> <<set _text_output to "horse">> <</if>> <<elseif $args[0] is "pig">> - <<if $farm_work[$args[0]].monster_roll is true and ($hallucinations gte 1 or $monsterhallucinations is "f")>> - <<if $farm_work[$args[0]].gender is "m">> - <<set _text_output to "pigboy">> - <<else>> - <<set _text_output to "piggirl">> - <</if>> + <<if $_bperson>> + <<set _text_output to ($_bgender is "m" ? "pigboy" : "piggirl")>> <<else>> <<set _text_output to "pig">> <</if>> <<elseif $args[0] is "dog">> - <<if $farm_work[$args[0]].monster_roll is true and ($hallucinations gte 1 or $monsterhallucinations is "f")>> - <<if $farm_work[$args[0]].gender is "m">> - <<set _text_output to "dogboy">> - <<else>> - <<set _text_output to "doggirl">> - <</if>> + <<if $_bperson>> + <<set _text_output to ($_bgender is "m" ? "dogboy" : "doggirl")>> <<else>> <<set _text_output to "dog">> <</if>> <<else>> - <<if $farm_work[$args[0]].monster_roll is true and ($hallucinations gte 1 or $monsterhallucinations is "f")>> - <<if $farm_work[$args[0]].gender is "m">> - <<set _text_output to "bullboy">> - <<else>> - <<set _text_output to "cowgirl">> - <</if>> + <<if $_bperson>> + <<set _text_output to ($_bgender is "m" ? "bullboy" : "cowgirl")>> <<else>> - <<if $farm_work[$args[0]].gender is "m">> - <<set _text_output to "bull">> - <<else>> - <<set _text_output to "cow">> - <</if>> + <<set _text_output to ($_bgender is "m" ? "bull" : "cow")>> <</if>> <</if>> <<print _text_output>> @@ -6008,7 +5895,7 @@ $worn.genitals.name <<widget "dress">> <<if $worn.upper.set is $worn.lower.set>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<set _text_output to "dress">> <<else>> <<set _text_output to "clothes">> @@ -6021,13 +5908,13 @@ $worn.genitals.name <<widget "skirt">> <<if $worn.upper.set is $worn.lower.set>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<set _text_output to "dress">> <<else>> <<set _text_output to "clothes">> <</if>> <<else>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<set _text_output to "skirt">> <<else>> <<set _text_output to "bottoms">> @@ -6040,7 +5927,7 @@ $worn.genitals.name <<if $worn.under_upper.set is $worn.under_lower.set>> <<set _text_output to "underclothes">> <<else>> - <<if setup.clothes.under_lower[$worn.under_lower.index].skirt is 1>> + <<if setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].skirt is 1>> <<set _text_output to "skirt">> <<else>> <<if $worn.under_lower.gender is "f">> @@ -6061,7 +5948,7 @@ $worn.genitals.name <<if $worn.under_upper.set is $worn.under_lower.set>> <<set _text_output to "underclothes">> <<else>> - <<if $worn.under_upper.gender is "f" and setup.clothes.under_upper[$worn.under_upper.index].state_base is "midriff">> + <<if $worn.under_upper.gender is "f" and setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].state_base is "midriff">> <<set _text_output to "bra">> <<else>> <<set _text_output to "top">> diff --git a/game/base-system/time.twee b/game/base-system/time.twee index 5e455e58755e8977a5e0df51b454686c823c63f3..62a5f7beb40a2026918973186b268fbca983fdac 100644 --- a/game/base-system/time.twee +++ b/game/base-system/time.twee @@ -663,8 +663,11 @@ <<unset $christmas_gift_robin_given>> <<unset $christmas_gift_eden>> <<unset $christmas_gift_eden_given>> + <<unset $christmas_kylar>> + <<unset $christmas_whitney>> <<unset $edenmeal>> <<unset $eden_christmas_dinner>> + <<unset $christmas_wraith>> <</if>> <<if $bell_timer>> <<set $bell_timer -= 1>> diff --git a/game/base-system/widgets.js b/game/base-system/widgets.js index 30fa72db1decc4936a91899c8561dee93740fb04..4ae420ea346332d336756717f640b1b2aace8e5f 100644 --- a/game/base-system/widgets.js +++ b/game/base-system/widgets.js @@ -27,8 +27,8 @@ function addfemininityfromfactor(femininity_boost, factor_description, no_overwe DefineMacro("addfemininityfromfactor", addfemininityfromfactor); function addfemininityofclothingarticle(slot, clothing_article, no_overwear_check) { - if (setup.clothes[slot][clothing_article.index].femininity) { - addfemininityfromfactor(setup.clothes[slot][clothing_article.index].femininity, setup.clothes[slot][clothing_article.index].name_cap, no_overwear_check); + if (setup.clothes[slot][clothesIndex(slot,clothing_article)].femininity) { + addfemininityfromfactor(setup.clothes[slot][clothesIndex(slot,clothing_article)].femininity, setup.clothes[slot][clothesIndex(slot,clothing_article)].name_cap, no_overwear_check); } } DefineMacro("addfemininityofclothingarticle", addfemininityofclothingarticle); @@ -54,8 +54,8 @@ function genderappearancecheck() { T.bulge_size = Math.clamp(V.penissize * T.erection_state, 0, Infinity); } /* Determine how visible the player's bottom is */ - if ((setup.clothes.lower[V.worn.lower.index].skirt === 1 && V.worn.lower.skirt_down === 1 && V.worn.lower.state === "waist") || - (setup.clothes.over_lower[V.worn.over_lower.index].skirt === 1 && V.worn.over_lower.skirt_down === 1 && V.worn.over_lower.state === "waist")) { + if ((setup.clothes.lower[clothesIndex('lower',V.worn.lower)].skirt === 1 && V.worn.lower.skirt_down === 1 && V.worn.lower.state === "waist") || + (setup.clothes.over_lower[clothesIndex('over_lower',V.worn.over_lower)].skirt === 1 && V.worn.over_lower.skirt_down === 1 && V.worn.over_lower.state === "waist")) { T.bottom_visibility = 0; } else { T.bottom_visibility = 1; @@ -95,9 +95,9 @@ function genderappearancecheck() { T.under_lower_protected = !V.worn.under_lower.exposed; T.apparent_femininity_noow = T.apparent_femininity; T.gender_appearance_factors_noow = clone(T.gender_appearance_factors); - T.over_lower_femininity = (setup.clothes.over_lower[V.worn.over_lower.index].femininity ? setup.clothes.over_lower[V.worn.over_lower.index].femininity : 0); - T.lower_femininity = (setup.clothes.lower[V.worn.lower.index].femininity ? setup.clothes.lower[V.worn.lower.index].femininity : 0); - T.under_lower_femininity = (setup.clothes.under_lower[V.worn.under_lower.index].femininity ? setup.clothes.under_lower[V.worn.under_lower.index].femininity : 0);; + T.over_lower_femininity = (setup.clothes.over_lower[clothesIndex('over_lower',V.worn.over_lower)].femininity ? setup.clothes.over_lower[clothesIndex('over_lower',V.worn.over_lower)].femininity : 0); + T.lower_femininity = (setup.clothes.lower[clothesIndex('lower',V.worn.lower)].femininity ? setup.clothes.lower[clothesIndex('lower',V.worn.lower)].femininity : 0); + T.under_lower_femininity = (setup.clothes.under_lower[clothesIndex('under_lower',V.worn.under_lower)].femininity ? setup.clothes.under_lower[clothesIndex('under_lower',V.worn.under_lower)].femininity : 0);; /* find maximum possible femininity of the last lower piece you can strip down to, and add it to the counter */ addfemininityfromfactor(Math.max(T.over_lower_femininity, T.lower_femininity, T.under_lower_femininity), "Lower clothes", "noow"); /* bulge and genitals checks for topless gender */ diff --git a/game/base-system/widgets.twee b/game/base-system/widgets.twee index a246c5142a24a50c6c7c359b7aa91e8f16c765b6..78c160b1e834cb1628d62de76291f6a30f6d5248 100644 --- a/game/base-system/widgets.twee +++ b/game/base-system/widgets.twee @@ -504,11 +504,18 @@ <<else>> <<set _drunkMod = 10>> <</if>> + <<if $possessed is true and _violence gte 0>> + <<set $control += _violence>> + <<set $wraith.will -= _violence>> + <<set _possessMod to 3>> + <<else>> + <<set _possessMod to 1>> + <</if>> <<set $stress += (_violence * _drunkMod * _stressMod) * (1 - ($masochism / 1200))>> <<combattrauma _violence * _traumaMod>> - <<set $pain += (_violence * _painMod * (1 - ($masochism / 1200)) * (1 - ($sciencetrait / 10)))>> + <<set $pain += (_violence * _painMod * (1 - ($masochism / 1200)) * (1 - ($sciencetrait / 10)) / _possessMod)>> <<set _arousal to (_violence * _arousalMod * (0 + ($masochism / 18)))>> - <<arousal _arousal>> + <<arousal _arousal/_possessMod>> <<set $arousalmasochism += (_violence * (0 + ($masochism / 7)))>> <<if $orgasmdown gte 1>> <<if $masochism gte 800>> @@ -1892,7 +1899,9 @@ <<case moor>> <img id="location" @src="'img/misc/' + _weather_display + '/moor_day.gif'"> <<case tower>> - <img id="location" @src="'img/misc/' + _weather_display + '/moor_day.gif'"> + <img id="location" @src="'img/misc/' + _weather_display + '/tower_day.gif'"> + <<case castle>> + <img id="location" @src="'img/misc/' + _weather_display + '/tower_day.gif'"> <<case night_monster_lair>> <img id="location" @src="'img/misc/' + _weather_display + '/night_monster_lair_day.gif'"> <<case alley>> @@ -1909,6 +1918,8 @@ <img id="location" @src="'img/misc/' + _weather_display + '/spa_day.gif'"> <<case prison>> <img id="location" @src="'img/misc/' + _weather_display + '/prison_day.gif'"> + <<case promenade>> + <img id="location" @src="'img/misc/' + _weather_display + '/promenade_beach_day.gif'"> <</switch>> <<elseif $daystate is "night">> <<if $location is "tentworld">> @@ -2035,7 +2046,17 @@ <<case moor>> <img id="location" @src="'img/misc/' + _weather_display + '/moor_night.gif'"> <<case tower>> - <img id="location" @src="'img/misc/' + _weather_display + '/moor_night.gif'"> + <<if $moonstate is "evening" and $hour gte 21 or $moonstate is "morning" and $hour lt 6>> + <img id="location" @src="'img/misc/' + _weather_display + '/tower_blood.gif'"> + <<else>> + <img id="location" @src="'img/misc/' + _weather_display + '/tower_night.gif'"> + <</if>> + <<case castle>> + <<if $moonstate is "evening" and $hour gte 21 or $moonstate is "morning" and $hour lt 6>> + <img id="location" @src="'img/misc/' + _weather_display + '/tower_blood.gif'"> + <<else>> + <img id="location" @src="'img/misc/' + _weather_display + '/tower_night.gif'"> + <</if>> <<case night_monster_lair>> <img id="location" @src="'img/misc/' + _weather_display + '/night_monster_lair_night.gif'"> <<case alley>> @@ -2068,6 +2089,8 @@ <<else>> <img id="location" @src="'img/misc/' + _weather_display + '/prison_night.gif'"> <</if>> + <<case promenade>> + <img id="location" @src="'img/misc/' + _weather_display + '/promenade_beach_night.gif'"> <</switch>> <<elseif $daystate is "dawn">> <<if $location is "tentworld">> @@ -2180,7 +2203,9 @@ <<case moor>> <img id="location" @src="'img/misc/' + _weather_display + '/moor_dawn.gif'"> <<case tower>> - <img id="location" @src="'img/misc/' + _weather_display + '/moor_dawn.gif'"> + <img id="location" @src="'img/misc/' + _weather_display + '/tower_dawn.gif'"> + <<case castle>> + <img id="location" @src="'img/misc/' + _weather_display + '/tower_dawn.gif'"> <<case night_monster_lair>> <img id="location" @src="'img/misc/' + _weather_display + '/night_monster_lair_dawn.gif'"> <<case alley>> @@ -2197,6 +2222,8 @@ <img id="location" @src="'img/misc/' + _weather_display + '/spa_dawn.gif'"> <<case prison>> <img id="location" @src="'img/misc/' + _weather_display + '/prison_dawn.gif'"> + <<case promenade>> + <img id="location" @src="'img/misc/' + _weather_display + '/promenade_beach_dawn.gif'"> <</switch>> <<elseif $daystate is "dusk">> <<if $location is "tentworld">> @@ -2309,7 +2336,9 @@ <<case moor>> <img id="location" @src="'img/misc/' + _weather_display + '/moor_dusk.gif'"> <<case tower>> - <img id="location" @src="'img/misc/' + _weather_display + '/moor_dusk.gif'"> + <img id="location" @src="'img/misc/' + _weather_display + '/tower_dusk.gif'"> + <<case castle>> + <img id="location" @src="'img/misc/' + _weather_display + '/tower_dusk.gif'"> <<case night_monster_lair>> <img id="location" @src="'img/misc/' + _weather_display + '/night_monster_lair_dusk.gif'"> <<case alley>> @@ -2326,6 +2355,8 @@ <img id="location" @src="'img/misc/' + _weather_display + '/spa_dusk.gif'"> <<case prison>> <img id="location" @src="'img/misc/' + _weather_display + '/prison_dusk.gif'"> + <<case promenade>> + <img id="location" @src="'img/misc/' + _weather_display + '/promenade_beach_dusk.gif'"> <</switch>> <</if>> @@ -3509,6 +3540,9 @@ __Map__<br> <br> <</if>> <</if>> +<<if $christmas is 1 and !$christmas_wraith>> + <<rngWraith 1>> +<</if>> <</widget>> @@ -4092,36 +4126,36 @@ __Map__<br> <</widget>> <<widget "breastfed">> -<<set $milk_drank_stat += random(1, 5)>> -<<if random(1, 100) gte 70>><<transform cat 1>><</if>> -<<if $milkdranktrait is 1>><<physique 1>><</if>> -<<purity -1>> -<<set $hunger -= 200>><<set $thirst -= 200>> + <<set $milk_drank_stat += random(1, 5)>> + <<if random(1, 100) gte 70>><<transform cat 1>><</if>> + <<if $milkdranktrait is 1>><<physique 1>><</if>> + <<purity -1>> + <<set $hunger -= 200>><<set $thirst -= 200>> <</widget>> <<widget "nectarfed">> -<<set _nectarGain to 0>> -<<set _nectarGain += (Math.ceil($args[0] / 10) + random(0,2))>> -<<set $nectar_drank_stat += _nectarGain>> -<<set $nectar_addiction += _nectarGain>> -<<if $args[0] gte 11>> - <<purity -1>> -<</if>> -<<set $hunger -= ($args[0] * 5)>><<set $thirst -= ($args[0] * 5)>> -<<drugs $args[0]>><<set $arousal += $args[0]>> -<<if $ejaculating is 1>> - <<set $drunk += ($args[0] * 3)>> - <<set $player.bodyliquid.mouth.goo += 1>> -<</if>> -<<if $backgroundTraits.includes("plantlover")>> - <<if $nectar_timer lte 14>> - <span class="green">You feel an overwhelming sense of relief.</span> <<stress -12>><<llstress>><<pain -4>><<lpain>> - <<else>> - <<set _nectarStress to (-1 * _nectarGain)>> - <<physique 1 "invig">><<stress _nectarStress>><<lstress>> + <<set _nectarGain to 0>> + <<set _nectarGain += (Math.ceil($args[0] / 10) + random(0,2))>> + <<set $nectar_drank_stat += _nectarGain>> + <<set $nectar_addiction += _nectarGain>> + <<if $args[0] gte 11>> + <<purity -1>> + <</if>> + <<set $hunger -= ($args[0] * 5)>><<set $thirst -= ($args[0] * 5)>> + <<drugs $args[0]>><<set $arousal += $args[0]>> + <<if $ejaculating is 1>> + <<set $drunk += ($args[0] * 3)>> + <<set $player.bodyliquid.mouth.goo += 1>> + <</if>> + <<if $backgroundTraits.includes("plantlover")>> + <<if $nectar_timer lte 14>> + <span class="green">You feel an overwhelming sense of relief.</span> <<stress -12>><<llstress>><<pain -4>><<lpain>> + <<else>> + <<set _nectarStress to (-1 * _nectarGain)>> + <<physique 1 "invig">><<stress _nectarStress>><<lstress>> + <</if>> + <<set $nectar_timer to 21>> <</if>> - <<set $nectar_timer to 21>> -<</if>> <</widget>> <<widget "setup_pillory">> diff --git a/game/overworld-forest/loc-asylum/main.twee b/game/overworld-forest/loc-asylum/main.twee index 1ff65b716249c29fdde6e542ad9c43f212a53ebb..51347c126ea1a46088ccdb4e308e8ba01630fa5e 100644 --- a/game/overworld-forest/loc-asylum/main.twee +++ b/game/overworld-forest/loc-asylum/main.twee @@ -578,40 +578,55 @@ You ask for help distracting the orderlies. You have trouble finding anyone who <<set $outside to 0>><<set $location to "asylum">><<asylumeffects>><<effects>> <<generate1>><<person1>><<set _towel to random(0,4)>> You sneak to a nurse. "Excuse me," you say. -<<if ($beauty gte ($beautymax / 3) * 2) and _towel lte 3>> /* 1 in 5 to skip beauty*/ +<<if $worn.upper.name is "straightjacket" or $worn.lower.name is "straightjacket bottom">> + <<He>> turns, and regards your ruined jacket with a + <<if ($beauty gte ($beautymax / 3) * 2) and _towel lte 1>> + smirk. <<covered>> "Can I have some clothes please?" + <br><br> + "Nah, you're hot." <<He>> pulls out a phone. "I wanna watch you go and ask someone else." + <<fameexhibitionism 2 pic>> + <<else>> + frown. <<covered>> "Can I have some clothes please?" + <br><br> + "How did you manage that? No, nevermind. I don't want to know." <<He>> makes a note on a clipboard. "I'll have to inform the doctor."<<set $suspicion += 1>><<gsuspicion>> + <br><br> + <<He>> removes the remains of your straightjacket<<if $leftarm is "bound" and $rightarm is "bound">>, letting your arms fall to your sides<</if>>. Your freedom is short-lived as <<he>> forces a fresh one onto you. + <<bind>><<upperwear 35>><<lowerwear 38>><<fameexhibitionism 1>> + <</if>> +<<elseif ($beauty gte ($beautymax / 3) * 2) and _towel lte 3>> /* 1 in 5 to skip beauty*/ <<if _towel is 0>> /*1 in 4 chance*/ <<He>> turns, and smiles with open lust when <<he>> sees you. <<covered>> "Can I have some clothes please?" <br><br> - "Nah, you're hot," <<he>> pulls out a phone. "I wanna watch you go and ask someone else." + "Nah, you're hot." <<He>> pulls out a phone. "I wanna watch you go and ask someone else." <<fameexhibitionism 2 pic>> <<else>> <<He>> turns, and smiles with open lust when <<he>> sees you. <<covered>> "Can I have some clothes please?" <br><br> "Seems like a shame, but sure," <<he>> nods, and wraps some around you. - <<upperwear 87>><<fameexhibitionism 1>> + <<unbind>><<upperwear 87>><<fameexhibitionism 1>> <</if>> <<elseif $penissize gte 3>> <<He>> turns, and smiles when <<he>> sees you. <<covered>> "Can I have some clothes please?" <br><br> "One moment," <<he>> says. <<He>> pulls out a phone and takes a quick photo of your <<genitals>>. <<He>> nods at the screen, and then chucks a bundle of fabric at you. "Seems like a damn shame to cover that up." - <<upperwear 87>><<fameexhibitionism 2 pic>> + <<unbind>><<upperwear 87>><<fameexhibitionism 2 pic>> <<elseif $breastsize gte 7>> <<He>> turns, and smiles when <<he>> sees you. <<covered>> "Can I have some clothes please?" <br><br> "One moment," <<he>> says. <<He>> pulls out a phone and takes a quick photo of your <<breasts>>. <<He>> nods at the screen, and then chucks a bundle of fabric at you. "Seems like a damn shame to cover those up." - <<upperwear 87>><<fameexhibitionism 2 pic>> + <<unbind>><<upperwear 87>><<fameexhibitionism 2 pic>> <<elseif _towel gte 2>> <<He>> turns, and seems completely unphased when <<he>> sees you. <<covered>> "Can I have some clothes please?" <br><br> <<He>> nods, and gives you a patient gown. - <<upperwear 87>><<fameexhibitionism 1>> + <<unbind>><<upperwear 87>><<fameexhibitionism 1>> <<else>> <<He>> turns, and puts a hand to <<his>> mouth to conceal laughter when <<he>> sees you. <<covered>> "Can I have some clothes please?" <br><br> <<He>> nods, and gives you a patient gown. - <<upperwear 87>><<fameexhibitionism 1>> + <<unbind>><<upperwear 87>><<fameexhibitionism 1>> <</if>><br><br><<unset _towel>> <<link [[Next|Asylum]]>><<endevent>><</link>> <br> diff --git a/game/overworld-forest/loc-asylum/widgets.twee b/game/overworld-forest/loc-asylum/widgets.twee index 5360fab19db80c782aa46e06169f81632a189b6d..a1fead6f3969eac6e9020c66f84ab56020b6b6b4 100644 --- a/game/overworld-forest/loc-asylum/widgets.twee +++ b/game/overworld-forest/loc-asylum/widgets.twee @@ -430,12 +430,12 @@ The room is tiny. There's just enough space to sit. You wait in total silence. <<widget "asylumoptions">> <<if $leftarm is "bound" or $rightarm is "bound" and $asylumbound lte 0>> <<He>> looks at your bindings. "I think you've earned a release," <<he>> says as <<he>> crouches and unties them, before removing it completely.<<unbind>><<exposure>> <<He>> covers you with a gown. - <<upperwear 87>><<exposure>> + <<unbind>><<upperwear 87>><<exposure>> <br><br> <</if>> <<if $exposed gte 1>> <<He>> steps back to regard you. <<covered>> "You can't see the doctor dressed like that," <<he>> says. <<He>> covers you with a gown. - <<upperwear 87>><<exposure>> + <<unbind>><<upperwear 87>><<exposure>> <br><br> <</if>> <</widget>> @@ -519,4 +519,4 @@ The room is tiny. There's just enough space to sit. You wait in total silence. <<if $NPCName[$NPCNameList.indexOf("Robin")].init is 1>> <<set $robinReunionScene to "asylum">> <</if>> -<</widget>> +<</widget>> \ No newline at end of file diff --git a/game/overworld-forest/loc-cabin/events.twee b/game/overworld-forest/loc-cabin/events.twee index b79ceda9fad2e115e4892280036e9a6d70e5a3a9..0a11027f7115e2a1e04abc55054bb589fd9f44d4 100644 --- a/game/overworld-forest/loc-cabin/events.twee +++ b/game/overworld-forest/loc-cabin/events.twee @@ -1709,7 +1709,7 @@ You step back and look at the result. The plot is in a much better state, at lea <<set $outside to 1>><<set $location to "cabin">><<effects>> <<if !$worn.lower.type.includes("naked")>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.genitals.type.includes("chastity")>> <<He>> reaches beneath your $worn.lower.name and starts probing your $worn.genitals.name. "You're such a little slut I bet I can make you cum even with this thing on." <<else>> diff --git a/game/overworld-forest/loc-forest/events.twee b/game/overworld-forest/loc-forest/events.twee index 933c1860539ba7c2f27bea1fdbd6be5872163463..3b13b567e100b5a4bd2335e8af92f997292e32da 100644 --- a/game/overworld-forest/loc-forest/events.twee +++ b/game/overworld-forest/loc-forest/events.twee @@ -1042,7 +1042,7 @@ You soon arrive at a log cabin. Inside is a single, spartan room. <<He>> drops y <</if>> <<else>> <<if $rng gte 71 and $parasitedisable is "f" and !$parasite.bottom.name>> - <<if $worn.lower.type.includes("naked") or setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if $worn.lower.type.includes("naked") or setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> As you climb up the bank you feel a pinching sensation on your <<bottom>>. You feel behind you, and find a strange, soft creature stuck there. It sucks on your skin, making it feel warm. <<garousal>><<arousal 600>> <br><br> @@ -1075,7 +1075,7 @@ You soon arrive at a log cabin. Inside is a single, spartan room. <<He>> drops y <</if>> <<else>> <<if $rng gte 71 and $parasitedisable is "f" and !$parasite.bottom.name>> - <<if $worn.lower.type.includes("naked") or setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if $worn.lower.type.includes("naked") or setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> As you climb up the bank you feel a pinching sensation on your <<bottom>>. You feel behind you, and find a strange, soft creature stuck there. It sucks on your skin, making it feel warm. <<garousal>><<arousal 600>> <br><br> @@ -2194,7 +2194,7 @@ You stop in the middle of the trail, and wait. A <<person1>><<person>> and <<per <<if $worn.lower.name isnot "naked">> <<set $worn.lower.vagina_exposed to 1>><<set $worn.lower.anus_exposed to 1>><<set $worn.lower.exposed to 2>> <<if $worn.under_lower.name is "naked">> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>><<set $worn.lower.skirt_down to 0>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>><<set $worn.lower.skirt_down to 0>> You lift up your $worn.lower.name, <span class="lewd">exposing your <<undies>>.</span> <<else>><<set $worn.lower.state to "thighs">> You pull down your $worn.lower.name, <span class="lewd">exposing your <<undies>>.</span> @@ -2207,7 +2207,7 @@ You stop in the middle of the trail, and wait. A <<person1>><<person>> and <<per <<if $worn.lower.name is "naked">> You pull down your $worn.under_lower.name, <span class="lewd">exposing your <<genitals>>.</span> <<else>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>><<set $worn.lower.skirt_down to 0>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>><<set $worn.lower.skirt_down to 0>> You lift up your $worn.lower.name with one hand while lowering you $worn.under_lower.name with the other <span class="lewd">exposing your <<genitals>>.</span> <<else>><<set $worn.lower.state to "thighs">> You pull down your $worn.lower.name and $worn.under_lower.name, <span class="lewd">exposing your <<genitals>>.</span> @@ -3587,8 +3587,7 @@ The slimes disappear into the river. <<tearful>> you look around frantically. <<enable_rescue>> <</if>> <</if>> - <<maninit>><<npcexpose>> - <<set $enemytype to "plant">><<set $enemyno to 1>><<set $enemynomax to 1>> + <<maninit "plant">><<npcexpose>> <<set $enemyarousalmax to 800>> <<if $phase is 2>> <<set _randomtentacles to random(10, 12)>> @@ -3654,7 +3653,7 @@ The slimes disappear into the river. <<tearful>> you look around frantically. "That was fun!" the <<person>> chirps. "I wish more humans were like you." <br><br> - <<He>> picks <<himself>> up off the ground and dusts off one of <<his>> vines. "If you're ever in the area, hit me up! I'd love to do this again!" <<He>> walks off, <<his>> vines shambling behing <<him>>. + <<He>> picks <<himself>> up off the ground and dusts off one of <<his>> vines. "If you're ever in the area, hit me up! I'd love to do this again!" <<He>> walks off, <<his>> vines shambling behind <<him>>. <br><br> <<tearful>> you gather yourself. @@ -3701,34 +3700,45 @@ The slimes disappear into the river. <<tearful>> you look around frantically. :: Forest Plant Kiss <<location "forest">><<effects>> -You lean forward and kiss the <<person "normal">>, and <<he>> smiles against your mouth. <span class="lewd"><<His>> lips are sticky, and taste very sweet.</span> -<<takeKissVirginity $NPCList[0].fullDescription "consensual">><<promiscuity1>> -<<if $rng gte 81>> - <<He>> suddenly thrusts <<his>> tongue into your mouth. Something drips into your mouth, and your taste buds are assaulted by a dizzyingly sweet flavor. - <<nectarfed 10>><br> - Your mind gets foggy, and you barely notice <<him>> pushing you to the ground. <span class="purple">The vines behind <<him>> writhe to life, slithering behind <<him>>.</span> +<<if $backgroundTraits.includes("plantlover") and $nectar_timer lte 14>> + You practically lurch forward and capture the <<persons>> lips with your own. <<He>> gasps into your own, and you thrust your tongue into <<his>> mouth, abandoning all self-control. + <span class="green">Sweet nectar fills your mouth.</span> + <<nectarfed 10>><<takeKissVirginity $NPCList[0].fullDescription "addiction">><<promiscuity1>> <br><br> - - "Thanks for that," the <<person>> whispers, lowering <<himself>> to lie on top of you. "Now I think I'll take a bit more than a kiss." + The <<person>> comes back to <<his>> senses, and wraps <<his>> vines around you. With a gentle, almost teasing push, <<he>> sends you to the forest floor and lowers <<himself>> to lie on top of you. + "If I'd know you loved it so much," <<he>> whispers, "I'd have offered more than a kiss. Way more." <br><br> - <<link [[Next|Forest Plant Sex]]>><<set $molestationstart to 1>><<set $phase to 0>><</link>> <<else>> - <<He>> holds the kiss for a few seconds, before nipping your upper lip and pulling away. You lick your lips. Syrupy nectar lingers around your mouth. - <br><br> - - Behind <<him>>, <span class="purple">the vines writhe to life</span>, wriggling in contentment. "What did you think?" the <<person>> asks, winking. "Pretty great kiss, huh? Well, I thought so." - <br><br> + You lean forward and kiss the <<person "normal">>, and <<he>> smiles against your mouth. <span class="lewd"><<His>> lips are sticky, and taste very sweet.</span> + <<takeKissVirginity $NPCList[0].fullDescription "consensual">><<promiscuity1>> + <<if $rng gte 81>> + <<He>> suddenly thrusts <<his>> tongue into your mouth. Something drips into your mouth, and your taste buds are assaulted by a dizzyingly sweet flavor. + <<nectarfed 10>><br> + Your mind gets foggy, and you barely notice <<him>> pushing you to the ground. <span class="purple">The vines behind <<him>> writhe to life, slithering behind <<him>>.</span> + <br><br> - <<He>> turns to walk away. "Well, hope that brings you good luck! See you around, <<girl>>!" - <br><br> + "Thanks for that," the <<person>> whispers, lowering <<himself>> to lie on top of you. "Now I think I'll take a bit more than a kiss." + <br><br> - <<if $deviancy gte 35>> - <<link [[Seduce|Forest Plant Seduce]]>><</link>><<deviant3>> - <br> - <<link [[Say goodbye|Forest]]>><<endevent>><<set $eventskip to 1>><</link>> + <<link [[Next|Forest Plant Sex]]>><<set $molestationstart to 1>><<set $phase to 0>><</link>> <<else>> - <<link [[Next|Forest]]>><<endevent>><<set $eventskip to 1>><</link>> + <<He>> holds the kiss for a few seconds, before nipping your upper lip and pulling away. You lick your lips. Syrupy nectar lingers around your mouth. + <br><br> + + Behind <<him>>, <span class="purple">the vines writhe to life</span>, wriggling in contentment. "What did you think?" the <<person>> asks, winking. "Pretty great kiss, huh? Well, I thought so." + <br><br> + + <<He>> turns to walk away. "Well, hope that brings you good luck! See you around, <<girl>>!" + <br><br> + + <<if $deviancy gte 35>> + <<link [[Seduce|Forest Plant Seduce]]>><</link>><<deviant3>> + <br> + <<link [[Say goodbye|Forest]]>><<endevent>><<set $eventskip to 1>><</link>> + <<else>> + <<link [[Next|Forest]]>><<endevent>><<set $eventskip to 1>><</link>> + <</if>> <</if>> <</if>> diff --git a/game/overworld-forest/loc-forest/widgets.twee b/game/overworld-forest/loc-forest/widgets.twee index bc6e96e77cc3278bef9108cd4be12c29001dd11e..5f774f2d3dc1ae7e5c430cc06845428cbaf241c2 100644 --- a/game/overworld-forest/loc-forest/widgets.twee +++ b/game/overworld-forest/loc-forest/widgets.twee @@ -675,9 +675,17 @@ You hear a buzzing in the surrounding trees. The <<person "normal">> thinks for a moment, before smiling. "Hey, before you go, how about a kiss? Y'know, for good luck." <<He>> closes <<his>> eyes and leans forward, tapping <<his>> finger to <<his>> lips. <br><br> -<<link [["Kiss " + $NPCList[0].pronouns.him|Forest Plant Kiss]]>><</link>><<promiscuous1>><<kissvirginitywarning>> -<br> -<<link [[Refuse|Forest Plant Kiss Refuse]]>><</link>> +<<if $backgroundTraits.includes("plantlover") and $nectar_timer lte 14>> + <span class="pink">You know <<hes>> a <<personsimple>>. You can smell the nectar on <<his>> lips from here.</span> Your heart races, and you can barely think. You need <<his>> nectar. You need more of the sweet, intoxicating nectar. + <br><br> + <<link [["Kiss " + $NPCList[0].pronouns.him|Forest Plant Kiss]]>><</link>><<promiscuous1>><<kissvirginitywarning>> + <br> + <<link [[Refuse|Forest Plant Kiss Refuse]]>><<stress 12>><</link>><<ggstress>> +<<else>> + <<link [["Kiss " + $NPCList[0].pronouns.him|Forest Plant Kiss]]>><</link>><<promiscuous1>><<kissvirginitywarning>> + <br> + <<link [[Refuse|Forest Plant Kiss Refuse]]>><</link>> +<</if>> <</widget>> diff --git a/game/overworld-forest/loc-lake/ivory/main.twee b/game/overworld-forest/loc-lake/ivory/main.twee index 051c8abb1ceeb0b9c497e9aa68bb9a3ac2c34852..7e759d00f5cf12baa0209354a25efc605325d683 100644 --- a/game/overworld-forest/loc-lake/ivory/main.twee +++ b/game/overworld-forest/loc-lake/ivory/main.twee @@ -997,3 +997,153 @@ Your eyes snap open. The figure is gone, but you hear laughter echo in your head <br> <</if>> <</if>> + +:: Christmas Mirror +<<set $outside to 0>><<set $location to "home">><<effects>> +You walk up to the mirror and gaze into its depths. It no longer reflects, but glows with a curious light. It's a bright white. Like snow. +<br><br> +The light begins to take shape. A pale hand gently presses up against the surface from the other side. A pale figure stares back, smiling. Its <<wraithEyes>> eyes hold your gaze. +<<if $wraith.seen gte 3 or $wraithPrison>> + <span class="red">You recognise it.</span> You feel as though you should be full of dread, but you aren't. +<<else>> + You feel like you should be scared, but you aren't. +<</if>> +<br><br> +<<link [[Reach out|Christmas Mirror Reach]]>><</link>><<handholdingvirginitywarning>> +<br> +<<link [[Watch|Christmas Mirror Watch]]>><</link>> +<br> +<<link [[Step Away|Christmas Mirror Leave]]>><</link>> +<br> + +:: Christmas Mirror Leave +You step away from the mirror. The next time you blink, it's returned to normal. +<br><br> +<<link [[Next|Bedroom]]>><<endevent>><</link>> +<br> + +:: Christmas Mirror Watch +You keep your eyes fixed on the hand. Its fingers slowly creep through the surface, revealing gnarled claws as they gingerly grip the frame. +<br><br> +The shape behind it flickers. The claws vanish, replaced by supple skin. You look up to see the figure still smiling warmly at you. It holds out its other hand, without a word. +<br><br> +<<link [[Take the hand|Christmas Mirror Reach]]>><</link>><<handholdingvirginitywarning>> +<br> +<<link [[Step Away|Christmas Mirror Leave]]>><</link>> +<br> + +:: Christmas Mirror Reach +<<effects>> +<<generateWraith 1 true>><<rainWraith>><<set $pronoun to $per_npc.wraith.gender>> +You reach forward, taking the hand in yours. <<takeHandholdingVirginity "Ivory Wraith" "consensual">> +<br><br> +The skin ripples, changing between a ghastly pale and a normal tone. +<br><br> +<span class="teal"><<He>> hums a familiar tune.</span> +<br><br> +<<Hes>> cloaked in a white robe, standing under a red moon. <<He>> has <<his>> other arm spread out to you in a welcoming gesture. You feel profoundly calm as you take a step forward. +<br><br> +<<link [[Step In|Christmas Mirror 2]]>><<pass 5>><<set $christmas_wraith to true>><</link>> +<br> + +:: Christmas Mirror 2 +<<effects>><<set $location to "temple">><<set $outside to 0>> +You're surrounded by trees, all covered in snow. You look down to see a bed of coals at your feet. The red moon vanishes. Your feet burn. You collapse forward, into <<his>> arms. +<<He>> embraces you. <<Hes>> congratulating you, smiling and laughing. You're crying. +<br><br> +"You did it! I knew you could do it!" <<He>> speaks in a language you don't know, and yet, you find yourself understanding the words. Another voice speaks in unison. +<br><br> +<span class="wraith">"We may never reach the bottom. We can only hope."</span> +<br><br> +The pale figure holds you close. +<<if $wraith.state is "haunt">> + <<His>> eyes flicker red for a brief moment, before returning to a calm blue. +<<else>> + <<His>> deep blue eyes fill you with an inner peace. +<</if>> +<span class="wraith">"No one deserves to die in a cage."</span> +<br><br> +The world around you begins to shift. +<br><br> +<<link [[Next|Christmas Mirror 3]]>><<pass 5>><</link>> +<br> + +:: Christmas Mirror 3 +<<effects>> +You're in the middle of a large cathedral. Tables are set up for a great feast. +All around you, faces you +<<if $wraithPrison and $wraithPrison.vision is true>> + vaguely +<<else>> + don't +<</if>> +recognise smile and make merriments. +They're all surrounded by a pale glow. The longer you look, the more translucent they become. +<br><br> +<span class="wraith">But for now, we are whole again. Enjoy it. Like sand slipping through our fingers."</span> +<br><br> +You find yourself returning the embrace. You don't want to let go. The inner warmth begins to fade, and the faces around you become unrecognisable. They begin to distort into unnatural shapes. You're instantly filled with panic. The pale figure slips backwards, out of your reach. +<br><br> +The tapestries on the walls peel away, revealing utter emptiness as the figures fall to the ground, cluthing the sides of their heads where their ears used to be. A bell tolls. +<br><br> +<<His>> skin turns marble white once again, and <<he>> begins to fade away. The faint <<wraithEyes>> light of <<his>> eyes flicker out in a rapidly expanding darkness. +<br><br> +<span class="wraith">"Remember us, not as we are, but as how we were."</span> +<br><br> +As the light draws away, you begin to fall. You can't hear wind in your ears, or against your skin, but somehow you know you're falling. Snowflakes and shards of glass brush past, mingling and dissolving. +<br><br> +<<link [[Reach out|Christmas Mirror 4]]>><</link>> +<br> +<<link [[Fall|Christmas Mirror Fall]]>><</link>> + +:: Christmas Mirror 4 +<<effects>> +You reach your arm out. You're not sure what you're reaching for, but you feel a presence approach. It doesn't beckon you, but neither does it push you away. +<br><br> + +<<if $wraithPrison and $wraithPrison.vision is true>> + <<link [[Apologise|Christmas Mirror 5]]>><<set $phase to 1>><</link>> +<<else>> + <<link [[Ask|Christmas Mirror 5]]>><</link>> +<</if>> +<br> +<<link [[Fall|Christmas Mirror Fall]]>><<set $phase to 1>><</link>> +<br> + +:: Christmas Mirror 5 +<<effects>> +You open your mouth. +<<if $phase is 1>> + You try to apologise. For what it's been through, for what it's lived through, for all the ways it's suffered. For all the things you've done. +<<else>> + You try to ask why. Why it follows you, why it torments you. Why it seeks you specifically, and why it brought you here. +<</if>> +<br><br> +The words fail to form. But still, a response comes. +<br><br> +"<span class="wraith">I can't answer,</span>" <<he>> murmurs. <<He>> remains silent for a long time. "<span class="wraith">I would be wrong.</span>" +<br><br> +<<link [[Fall|Christmas Mirror Fall]]>><<set $phase to 1>><</link>> +<br> + +:: Christmas Mirror Fall +<<effects>> +<<if $phase is 1>> + You let your arm drop back to your side. +<</if>> +You fall, and you fall, and further you fall still. You're not sure if you're falling down anymore. You're not sure where down is. +<br><br> +Your descent is beautiful. +<br><br> + +<<link [[Wake up|Christmas Mirror End]]>><</link>> +<br> + +:: Christmas Mirror End +<<set $location to "home">><<set $outside to 0>><<effects>> +You cry out, and shoot up. You're in your bed, sweating, and breathing heavily. +<br><br> +You rub the tiredness out of your eyes. You catch a glimpse of yourself in the mirror. You look pale. <<trauma 4>><<gtrauma>> +<br><br> +<<link [[Next|Bedroom]]>><<endevent>><<endWraith>><</link>> +<br> \ No newline at end of file diff --git a/game/overworld-forest/loc-lake/ivory/schism.twee b/game/overworld-forest/loc-lake/ivory/schism.twee index d1e8b61e9f9046074d95c43e38ba9aa063499fdf..dc284ac95acef5e14636f8354f8e0e8ffc653607 100644 --- a/game/overworld-forest/loc-lake/ivory/schism.twee +++ b/game/overworld-forest/loc-lake/ivory/schism.twee @@ -21,7 +21,7 @@ All you can do now is wait, and pray. <br><br> You think about what happened. It's blurred together. You remember making preparations for a ritual, and then screaming. The <<people>> in black robes. <br><br> - You decide not think so much, after all. You clutch your necklace. + You decide to not think so much, after all. You clutch your necklace. <<else>> You kneel in the cell. It's spacious. You wonder why they aren't keeping multiple people in each cell. <br><br> @@ -30,7 +30,7 @@ All you can do now is wait, and pray. <br><br> You're glad it wasn't lost in the struggle. You rub the largest sapphire, and find yourself calming down. <<stress -6>><<trauma -6>><<lstress>><<ltrauma>> <br><br> -<<generate1>><<generate2>><<person1>> +<<generatev1>><<generatev2>><<person1>> As you move your thumb away, you catch the reflection of light in it. You look to the source. Someone's entering the room with a torch. It looks like they're coming up from a large staircase, followed by many black-robed figures. You remember being led upwards with a bag over your head. That must be the entrance. Or exit, if you're lucky. <br><br> The figure begins to light up the sconces along the walls, flooding the room with light. You grab the bars of your cage, and stand. You look around the room again. You can see a few members you know in the other cages. You wince as you recognise a few of them as initiates. You had hoped they only targeted more senior members. @@ -57,7 +57,7 @@ Next to <<him>> is an initiate you'd easily recognise anywhere. You remember bei <br><br> One of the black-robed figures slams the bars of <<his>> cage with a torch. <<He>> immediately stumbles back, landing on <<his>> bottom. The figure yells in a language you don't understand, before unlocking the cage and storming in. The Cardinal in the next cage screams at the figure, spitting threats and attempting to reach through the bars. There's nothing <<person1>><<he>> can do. <br><br> - You scream even louder. You beg the figure to take you instead. Your please fall on deaf ears. <<pain 4>><<stress 40>><<trauma 24>><<gggstress>><<ggtrauma>> + You scream even louder. You beg the figure to take you instead. Your pleas fall on deaf ears. <<pain 4>><<stress 40>><<trauma 24>><<gggstress>><<ggtrauma>> <br><br> <<person2>><<Hes>> dragged out with <<his>> hands bound, clothing torn, and sporting fresh bruises. <<His>> eyes are empty. You yell <<his>> name, but there's no reaction. You slam the bars as <<hes>> led down the stairs. <br><br> @@ -174,7 +174,7 @@ You clutch your necklace. <<stress -6>><<trauma -6>><<lstress>><<ltrauma>> :: Schism Gold Refuse <<effects>><<handsruined>><<legsruined>> -<<generate2>> +<<generatev2>> You shake your head no, and say they mean too much to you. The figure nods in understanding before walking out of sight, to the next cage. <br><br> You slowly crawl forward, wondering if <<person1>><<hes>> really gone. You hear a yell from the next cell, and the slamming of a door. The figure walks back into view, holding a struggling initiate. The initiate immediately stills as the figure produces a wicked-looking bladed instrument and holds it to <<person2>><<his>> throat. <<stress 50>><<trauma 50>><<gggstress>><<ggtrauma>> diff --git a/game/overworld-forest/loc-lake/ivory/snatched.twee b/game/overworld-forest/loc-lake/ivory/snatched.twee index 06e09c0fdd530dc9cdda3505c4b3eb2aefbd3380..7b3f91906879e25cebb8d673ec2548015a28aada 100644 --- a/game/overworld-forest/loc-lake/ivory/snatched.twee +++ b/game/overworld-forest/loc-lake/ivory/snatched.twee @@ -664,7 +664,7 @@ You find yourself sinking through the ice, submerging without causing a break. <</if>> <</if>> <<set _wraithWill to Math.floor(1 + $wraith.will)>> - <<if $wraithWillMessage>> + <<if $wraithWillMessage and !$combat>> <<if $phase2 is 1>> <<set $phase2 to 0>> <<controlcaption>> diff --git a/game/overworld-forest/loc-lake/ivory/widgets.twee b/game/overworld-forest/loc-lake/ivory/widgets.twee index 902bfead5af937c537ab9d51af3bf80cbda6a52b..a33681de60c2a963b3ab5817cfebe10c3b30a73d 100644 --- a/game/overworld-forest/loc-lake/ivory/widgets.twee +++ b/game/overworld-forest/loc-lake/ivory/widgets.twee @@ -377,8 +377,248 @@ <</silently>><<print _text_output>><</widget>> <<widget "speechWraith">><<silently>> -<<if $wraith.state is "">> - <<set _speechWraith to ["The <<person>> holds its necklace tightly.", "The <<person>> whispers incoherently.","The <<person>> giggles quietly.","The <<person>> speaks in a language you don't understand.","The <<person>> opens <<his>> mouth, and your ears begin ringing.","The <<person>> says something, but you immediately forget what it was."].pluck()>> +<<if $possessed>> + <<set _speakPool to ["speak","grunt","giggle","whisper","sneer","laugh","yell","spit","speak in an eerily calm tone"]>> + <<if $wolfgirl gte 4>> + <<run _speakPool.pushUnique( + "bark","growl","howl" + )>> + <</if>> + <<if $cat gte 4>> + <<run _speakPool.pushUnique( + "meow","purr","hiss" + )>> + <</if>> + <<if $cow gte 4>> + <<run _speakPool.pushUnique( + "moo","snort","huff" + )>> + <</if>> + <<if $harpy gte 4>> + <<run _speakPool.pushUnique( + "chirp","screech","sing" + )>> + <</if>> + + <<set _linePool to [ + "Me.", + "Stay.", + "Give in.", + "Not yet.", + "Abandoned.", + "Pretender.", + "Take a bow.", + "And so do we.", + "Know your place.", + "Maelstrom, tirade.", + "A corpse can't speak.", + "Why don't we find out?", + "Just a little further.", + "The strings comfort me.", + "Our heaven, made of twigs.", + "Never to see the moon again.", + "Step aside, or be cast aside.", + "A corpse should stay in its coffin.", + "Don't repeat yourself. Don't bother.", + "We were never here. That's why we left.", + "Like sand slipping through our fingers.", + "Even if I have to drag you there myself.", + "Run. Forget that you have nowhere to go. Run.", + "Come to my parlor, said the fly to the spider.", + "What is within always conquers what is without.", + "Steel yourself all you like. You'll eventually rust.", + "History swallows the victims and spits out their bones.", + "Desolate. Disappear. Drown. We'll come back to find you.", + "It would be maddening, to only know the other end of the ordeal.", + "Carve. Into. You. Our. Name. Perfection. Wash. Away. All. You. Are." + ]>> + <<if $npc.includes("Sydney")>> + <<NPCStatusCheck "Sydney">> + <<run _linePool.pushUnique( + "Liar.", + "Again.", + "Sydney?", + "Alone at last.", + "I've lost ourself.", + "Let us sleep forever.", + "Can the innocent repent?", + "You know why we're here.", + "I'm sorry you put your trust in me.", + "It's hilarious. Why aren't you laughing?", + "It's okay now, Sydney. I'm back to normal.", + "Block me out all you like. I am still here.", + "Do you remember your <<sydneyOtherParent>>?", + "They never stopped, because they never began.", + "The light will consume you, slowly, painfully.", + "We're glad to see you again. We missed you, you know.", + "Do you remember? Of course you do. Of course you don't.", + "What a terrible song, and you're not the one playing it.", + "<<nnpc_He \"Harper\">> was so sure of <<nnpc_himself \"Harper\">>.", + "The pure and the corrupt are at ends, but the end itself remains the same.", + "As Two will emerge from One will emerge from Two <span class=\"tentacle\">As One</span>." + )>> + <<if $templePromised is "Sydney">> + <<run _linePool.pushUnique("Calamity rings.")>> + <</if>> + <<if _sydneyStatus.includes("Pure")>> + <<run _linePool.pushUnique( + "You'll understand once you fly.", + "Baptisms with water of the womb.", + "Every life has sin. Every sin has life." + )>> + <<elseif _sydneyStatus.includes("neutral")>> + <<run _linePool.pushUnique( + "Tipped with a void.", + "And so long as that's true, it will never go away.", + "Balance. Indecisiveness. Fear. There's a lot of words." + )>> + <<elseif _sydneyStatus.includes("corrupt")>> + <<run _linePool.pushUnique( + "No one will answer.", + "What you fear, you have become.", + "Was it worth it? Of course it was." + )>> + <</if>> + <<else>> + <<run _linePool.pushUnique("We stand <span class=\"tentacle\">As One</span>, and you'll never be a part.")>> + <</if>> + <<if $npc.includes("Robin")>> + <<run _linePool.pushUnique( + "The wing-clipped are better smothered.", + "How far would go you? How far can you run?", + "You've accepted your cage, songbird. Lie in it." + )>> + <<if $NPCName[$NPCNameList.indexOf("Robin")].trauma gte 1>> + <<run _linePool.pushUnique("Scion of a salted deluge.")>> + <</if>> + <</if>> + <<if $npc.includes("Whitney")>> + <<run _linePool.pushUnique( + "Tormentor.", + "Drown in smoke. Drown in flame.", + "A suit of armor made of bodies. They're not here now." + )>> + <<if $NPCName[$NPCNameList.indexOf("Whitney")].state is "rescued">> + <<run _linePool.pushUnique("Betrayed by your worst enemy. Do you love <<phim>>?")>> + <</if>> + <</if>> + <<if $npc.includes("Kylar")>> + <<run _linePool.pushUnique( + "A shadow, just as faithless.", + "Were your grip a little stronger.", + "Blistering emerald green, blinding the world. Such is your envy." + )>> + <<if $wraith.offspring is "dead">> + <<run _linePool.pushUnique("You failed them. You failed us.")>> + <</if>> + <</if>> + <<if $npc.includes("Eden")>> + <<run _linePool.pushUnique( + "You never should have stopped running.", + "Like a long lost friend you never knew.", + "You'll never be far enough. It never leaves." + )>> + <<if $syndromeeden is 1>> + <<run _linePool.pushUnique("You found a home, in collar and chains.")>> + <</if>> + <</if>> + <<if $npc.includes("Avery")>> + <<run _linePool.pushUnique( + "Not all stains wash out.", + "Money. Material. Meaningless noise.", + "You still wouldn't be able to afford it." + )>> + <<if $averyragerevealed is 1>> + <<run _linePool.pushUnique("Wine mixes with blood, shed from the glass shattered.")>> + <</if>> + <</if>> + <<if $npc.includes("Alex")>> + <<run _linePool.pushUnique( + "You would be nothing.", + "One of thirteen. Indistinguishable.", + "Water down your mind, until you destroy all you love." + )>> + <</if>> + <<if $farm.aggro gte 60>> + <<run _linePool.pushUnique("The locusts will have a new feast.")>> + <</if>> + <<if $npc.includes("Black Wolf")>> + <<run _linePool.pushUnique( + "Wait your turn.", + "The howl, too, drips with red.", + "Dare to hunt. Be made to heel." + )>> + <<if $wolfpackleader is 1>> + <<run _linePool.pushUnique("Bite the hand that feeds.")>> + <</if>> + <</if>> + <<if $npc.includes("Great Hawk")>> + <<run _linePool.pushUnique( + "Wise to fear your reflection.", + "Fly to the sun or sink in the mud.", + "The song never stopped. Did it ever begin?" + )>> + <<if $birdFly is 1>> + <<run _linePool.pushUnique("Count the feathers. Uncountable feathers.")>> + <</if>> + <</if>> + + <!-- Ideally, this part would be a for loop. I can't figure out how to generate a new temporary variable for each loop iteration, + and if I use the same temp variable for each loop, only the last named NPC's name and title will be added to the pool. + Temp arrays don't work either. --> + <<if $npc[0]>> + <<set _npc0 to clone($npc[0])>> + <<run _linePool.pushUnique( + "_npc0 _npc0 _npc0 _npc0 _npc0 _npc0 _npc0 _npc0.", + "<<nnpc_Title _npc0>> <<nnpc_title _npc0>> <<nnpc_title _npc0>> <<nnpc_title _npc0>> <<nnpc_title _npc0>> <<nnpc_title _npc0>> <<nnpc_title _npc0>> <<nnpc_title _npc0>>." + )>> + <</if>> + <<if $npc[1]>> + <<set _npc1 to clone($npc[1])>> + <<run _linePool.pushUnique( + "_npc1 _npc1 _npc1 _npc1 _npc1 _npc1 _npc1 _npc1.", + "<<nnpc_Title _npc1>> <<nnpc_title _npc1>> <<nnpc_title _npc1>> <<nnpc_title _npc1>> <<nnpc_title _npc1>> <<nnpc_title _npc1>> <<nnpc_title _npc1>> <<nnpc_title _npc1>>." + )>> + <</if>> + <<if $npc[2]>> + <<set _npc2 to clone($npc[2])>> + <<run _linePool.pushUnique( + "_npc2 _npc2 _npc2 _npc2 _npc2 _npc2 _npc2 _npc2.", + "<<nnpc_Title _npc2>> <<nnpc_title _npc2>> <<nnpc_title _npc2>> <<nnpc_title _npc2>> <<nnpc_title _npc2>> <<nnpc_title _npc2>> <<nnpc_title _npc2>> <<nnpc_title _npc2>>." + )>> + <</if>> + <<if $npc[3]>> + <<set _npc3 to clone($npc[3])>> + <<run _linePool.pushUnique( + "_npc3 _npc3 _npc3 _npc3 _npc3 _npc3 _npc3 _npc3.", + "<<nnpc_Title _npc3>> <<nnpc_title _npc3>> <<nnpc_title _npc3>> <<nnpc_title _npc3>> <<nnpc_title _npc3>> <<nnpc_title _npc3>> <<nnpc_title _npc3>> <<nnpc_title _npc3>>." + )>> + <</if>> + <<if $npc[4]>> + <<set _npc4 to clone($npc[4])>> + <<run _linePool.pushUnique( + "_npc4 _npc4 _npc4 _npc4 _npc4 _npc4 _npc4 _npc4.", + "<<nnpc_Title _npc4>> <<nnpc_title _npc4>> <<nnpc_title _npc4>> <<nnpc_title _npc4>> <<nnpc_title _npc4>> <<nnpc_title _npc4>> <<nnpc_title _npc4>> <<nnpc_title _npc4>>." + )>> + <</if>> + <<if $npc[5]>> + <<set _npc5 to clone($npc[5])>> + <<run _linePool.pushUnique( + "_npc5 _npc5 _npc5 _npc5 _npc5 _npc5 _npc5 _npc5.", + "<<nnpc_Title _npc5>> <<nnpc_title _npc5>> <<nnpc_title _npc5>> <<nnpc_title _npc5>> <<nnpc_title _npc5>> <<nnpc_title _npc5>> <<nnpc_title _npc5>> <<nnpc_title _npc5>>." + )>> + <</if>> + + <<set _speak to _speakPool.pluck()>> + <<set _line1 to "<span class=\"wraith\">" + _linePool.pluck() + "</span>">> + <<set _line2 to "<span class=\"wraith\">" + _linePool.pluck() + "</span>">> + <<if random(0,2)>> + <<set _speechWraith to "You _speak. \"_line1 _line2\"">> + <<else>> + <<set _speechWraith to "You _speak. \"_line1\"">> + <</if>> +<<elseif $wraith.state is "">> + <<set _speechWraith to ["The <<person>> holds <<his>> necklace tightly.", "The <<person>> whispers incoherently.","The <<person>> giggles quietly.","The <<person>> speaks in a language you don't understand.","The <<person>> opens <<his>> mouth, and your ears begin ringing.","The <<person>> says something, but you immediately forget what it was.","The <<person>> doesn't speak."].pluck()>> <<elseif $wraith.mimic isnot "" and $wraith.revealed is false>> <<switch $wraith.mimic>> <<case "Sydney">> @@ -420,6 +660,7 @@ <<set $alarm to 0>> <<set _speaks to "repeats your screams for help in a mocking tone, in your own voice">> <</if>> + <<set _linePool to [ "You.", "Give in.", @@ -436,6 +677,7 @@ "With a dream that casts a shadow.", "Join me, why don't you? It's not far.", "Like sand slipping through your fingers.", + "All that matters is the blissful present.", "You don't have enough. You never had enough.", "Let's see how you like being the puppet, hmm?", "One million, two million, three million, four.", @@ -538,6 +780,7 @@ <<elseif $demon gte 6>> <<run _linePool.pushUnique("You think you've found the bottom. You've barely breached the surface.")>> <</if>> + <<set _line1 to "<span class=\"wraith\">" + _linePool.pluck() + "</span>">> <<set _line2 to "<span class=\"wraith\">" + _linePool.pluck() + "</span>">> <<if random(0,2)>> diff --git a/game/overworld-forest/loc-wolfpack/hunts.twee b/game/overworld-forest/loc-wolfpack/hunts.twee index 6e7b8a140a62188f4043ce7c50359640c0f62bf1..ca9ddf3058ec783b08bf148dac253c20a9532239 100644 --- a/game/overworld-forest/loc-wolfpack/hunts.twee +++ b/game/overworld-forest/loc-wolfpack/hunts.twee @@ -975,13 +975,13 @@ You begin to walk towards the rival pack. The alpha <<beasttype>> growls as you <<if $combatTrain.length gt 0>> Satisfied, the <<beasttype>> leaves you be. Another takes <<bhis>> place. <<combatTrainAdvance>> - <<wolfpacktrust>><<gstockholm>> + <<wolfpacktrust>> <br><br> [[Next|Wolf Rival Molestation]] <<else>> Satisfied, the <<beasttype>> leaves you be. <<combatTrainAdvance>> - <<wolfpacktrust>><<gstockholm>> + <<wolfpacktrust>> <br><br> [[Next|Wolf Rival Molestation End]] <</if>> @@ -1046,7 +1046,7 @@ Not wanting to take part in the ensuing fight, you pay close attention to the be :: Wolf Rival Retreat <<effects>> -You measure your options and come to realize that this fight would be best avoided. You look at the rest of your <<wolf_cave_plural>> and wave at them to leave. +You measure your options and come to realise that this fight would be best avoided. You look at the rest of your <<wolf_cave_plural>> and wave at them to leave. <br><br> A <<beasttype>> from the opposing pack approaches to attack but is stopped by its leader. diff --git a/game/overworld-forest/loc-wolfpack/main.twee b/game/overworld-forest/loc-wolfpack/main.twee index cbdd2afee4c7f4a5e559bee584da28dae40d4c77..7d34d1738b9ec3b127b4484ba19e2f92549b069c 100644 --- a/game/overworld-forest/loc-wolfpack/main.twee +++ b/game/overworld-forest/loc-wolfpack/main.twee @@ -169,7 +169,7 @@ You are in the clearing outside the wolf cave. A stream runs by. <br> <<link [[Approach|Wolf Relax]]>><<npc "Black Wolf">><<set $phase to 1>><</link>> <br><br> - <<elseif $wolfcavepatrol is 1 and $wolfcavepatrolchance is 1 and $daystate is "night">> + <<elseif $wolfstate is "cave" and $wolfcavepatrol is 1 and $wolfcavepatrolchance is 1 and $daystate is "night">> The Black Wolf rests away from the pack, occasionally surveying passing members before <<nnpc_his "Black Wolf">> attention returns to the treeline. <span class="blue"><<nnpc_He "Black Wolf">> looks agitated.</span> <br> <<link [[Approach|Wolf Patrol Intro]]>><<npc "Black Wolf">><</link>> diff --git a/game/overworld-forest/loc-wolfpack/widgets.twee b/game/overworld-forest/loc-wolfpack/widgets.twee index 8ce34daab017d7713b43e133f63921935bea5812..4aa27e8548a10eda1fad244e9a2bf45ef20afa99 100644 --- a/game/overworld-forest/loc-wolfpack/widgets.twee +++ b/game/overworld-forest/loc-wolfpack/widgets.twee @@ -90,6 +90,7 @@ <<destinationwolfcave>> <</addinlineevent>> <<addinlineevent "wolve mating rank">> + <<endevent>> <<beastNEWinit 2 wolf>> A low ranking <<print $combatTrain.beastTypes[0]>> approaches you wishing to mate. A more dominant <<print $combatTrain.beastTypes[1]>> tries to steal your attention. <br><br> diff --git a/game/overworld-forest/loc-wolfpack/wolf.twee b/game/overworld-forest/loc-wolfpack/wolf.twee index 0a5ac405586e8afe58b3df545b2a9bb676f04b8d..8375d452a3f9aaa51db9d2f47da38f9aa9d43e0b 100644 --- a/game/overworld-forest/loc-wolfpack/wolf.twee +++ b/game/overworld-forest/loc-wolfpack/wolf.twee @@ -442,7 +442,7 @@ You watch the Black Wolf leave, <<bhis>> large body disappearing between the bus The Black Wolf pushes you away when you try to lean on <<bhim>>. <<bHe>> obviously disapproves of your decision. <</if>> <<elseif $submissive lte 850>> - "It's probably nothing," you say, leaning back onto your elbows. "Just stay and relax for a bit. <<if $weather is "rain" or $weather is "snow">>It's too cold to be going off alone<<else>>It's a nice night<</if>>. + "It's probably nothing," you say, leaning back onto your elbows. "Just stay and relax for a bit. <<if $weather is "rain" or $weather is "snow">>It's too cold to be going off alone<<else>>It's a nice night<</if>>." <br><br> <<if $wolfpackharmony gte $wolfpackferocity>> You huddle closer to <<bhis>> large body, and <<bhe>> leans <<bhis>> head on yours. diff --git a/game/overworld-plains/loc-bird/main.twee b/game/overworld-plains/loc-bird/main.twee index 9a12842ab937b4b4cf2f590e80d8e69e4d8bffbc..9d1450f9dfd89d4ce2cc8430a5f3bd8d2304c9a4 100644 --- a/game/overworld-plains/loc-bird/main.twee +++ b/game/overworld-plains/loc-bird/main.twee @@ -2143,7 +2143,7 @@ The <<beasttype>> shakes <<bhis>> feathers, and lets you stroke <<bhis>> wings. <</if>> <<case "Alex">> Alex, and the farm. - <<if $farm_aggro gte 60>> + <<if $farm.aggro gte 60>> You hope Remy's not causing <<nnpc_him "Alex">> too much trouble. <<elseif $farm.tower_guard_unpaid gte 1>> $farm.tower_guard hasn't been paid yet. You hope it's not a dealbreaker. @@ -2203,7 +2203,7 @@ The <<beasttype>> shakes <<bhis>> feathers, and lets you stroke <<bhis>> wings. <</if>> <<case "Alex">> Alex, and the farm. - <<if $farm_aggro gte 60>> + <<if $farm.aggro gte 60>> You hope Remy's not causing <<nnpc_him "Alex">> too much trouble. <<elseif $farm.tower_guard_unpaid gte 1>> $farm.tower_guard hasn't been paid yet. You hope it's not a dealbreaker. diff --git a/game/overworld-plains/loc-estate/cards.twee b/game/overworld-plains/loc-estate/cards.twee index 7ef55adb25147333850d084248b65dd061fc3dce..d0db053134037adfd97048a8df8b7234285a8468 100644 --- a/game/overworld-plains/loc-estate/cards.twee +++ b/game/overworld-plains/loc-estate/cards.twee @@ -1559,6 +1559,15 @@ You drop to your knees, and crawl beneath the table. They're already beginning a <</if>> <<garousal>> <br> + <<if $ejactrait gte 1 and $debug is 1>> + <<link [[Put on a show|Estate Cards Oral Penis Cumslut]]>><</link>> | + <<if $submissive lte 850>> + <span class="lewd">Cumoisseur</span> + <<else>> + <span class="lewd">Cum Dump</span> + <</if>> + <<arousal 600>><<garousal>> + <</if>> <<else>> revealing <<his>> pussy. <br><br> @@ -1618,33 +1627,14 @@ You drop to your knees, and crawl beneath the table. They're already beginning a <<effects>> You stroke the tip of the <<print $NPCList[($estate.cards.oral - 1)].penisdesc>> with your tongue, feeling the blood pulse into it. You <<oraltext>> lick up and down the shaft, then circle around the glans. + <<if $oralskill gte random(1, 1000)>> - <span class="green">The <<person>> twitches,</span> and cum spurts. - <<if $ejactrait gte 1>> - <<if $estate.cards.oral is 6>> - You point the <<print $NPCList[($estate.cards.oral - 1)].penisdesc>> to your bare chest and let the huge loads shower over your body. You rub the semen all over your face, neck and torso. Before emerging from under the table, you lick clean all the splattered drops on the floor as the well mannered <span class="gold">Cum Dump</span> you are. - <<ejacstat>> - <<chestejacstat>> - <<set $player.bodyliquid.chest.semen += 1>> - <<set $player.bodyliquid.face.semen += 1>> - <<set $player.bodyliquid.neck.semen += 1>> - <<set $player.bodyliquid.tummy.semen += 1>> - <<else>> - You are such a thirsty <span class="gold">Cum Addict</span>. You can't help but catch as much cum as you can with your mouth. With every spasm, the <<print $NPCList[($estate.cards.oral - 1)].penisdesc>> sends warm loads of semen sliding down your neck and into your stomach. - <<set $hunger -= 200>> - <<set $thirst -= 200>> - <<ejacstat>> - <<oralejacstat>> - <<set $player.bodyliquid.mouth.semen += 1>> - <</if>> - <<else>> <<if $danceskill gte random(1, 1000)>> <span class="green">You manage to react in time,</span> letting the semen splatter against the floor and underside of the table. <<else>> It splatters on your face.<<set $player.bodyliquid.face.semen += 1>><<oralejacstat>> - <</if>> - <</if>> + <</if>> <br><br> <<set $estate.cards.oral += 1>> @@ -1718,9 +1708,228 @@ Your lips part as the <<person>> pushes your face against <<his>> <<print $NPCLi <<link [[Next|Estate Cards Oral 2]]>><</link>> <br> +:: Estate Cards Oral Penis Cumslut +<<effects>> +<<set $_penisdesc to $NPCList[($estate.cards.oral - 1)].penisdesc>> +<<if $NPCList[($estate.cards.oral - 1)].penissize lte 1 >> + You prepare to suck on the <<persons>> cock, but you soon discover the $_penisdesc barely limping out of the pelvis of this <<person>>. + <br><br> + <<if $submissive lte 850>> + You <<oraltext>> try to suck it. + <br><br> + After a couple minutes of licking, + the goon twitches and ejaculates a string of semen that you swirl around in your mouth for a second before swallowing it and moving on. + <<else>> + You do your best to satisfy <<him>>, <<oraltext>> sucking and licking <<his>> $_penisdesc even if it's hard to keep it in your mouth. + <br><br> + After a while, the goon groans and you push your mouth on it, making choking noises. The <<person>> cums on your tongue. + <span class="lewd">You swallow</span>. "Thank you, that was very nice," you say before moving on. + <</if>> + <<oralstat>> + <<ejacstat>> + <<oralejacstat>> + <<set $player.bodyliquid.mouth.semen += 1>> +<<else>> + <<switch $estate.cards.oral>> + <<case 2>> + You eagerly engulf the $_penisdesc with your mouth, <<oraltext>> deepthroating as it grows hard. + <br><br> + + Suddenly, the <<person>> firmly grasps the back of your head <span class="red">forcing <<his>> $_penisdesc hard down your throat.</span> + <span class="pink">Tears start running down your face</span>. + To the great amusement of the goons, <span class="pink">your body spasms involuntarily from the lack of air,</span> shaking the table and the cards on it. + <br><br> + + Seeing that you might pass out, you have the <span class="blue">idea of massaging the $_penisdesc through the front of your neck.</span> + "Ha, ha. Look at this, this slut is trying to jerk me off through <<his>> neck!" + <br><br> + + Finally, the $_penisdesc starts throbbing. + "Swallow it all. I don't want to see a drop of it when I take it out," + <<he>> says as the grip on your head becomes harder and a <span class="lewd">warm thick stream of semen fills your throat.</span> + <br><br> + + "Now hold it for a while." The goon keeps <<his>> phallus deep in your throat long after it's done ejaculating. + Soon you feel it become increasingly softer. Eventually, you are able to catch a stream of breath through your nose. + "Very well done," says the <<person>> as <<he>> pats you in the head and releases <<his>> grip. + <br><br> + + <<if $submissive lte 850>> + You dry the tears in your face, hardly hiding that you <span class="green">feel horny and proud about how you managed the predicament</span>. + <<else>> + "Th... Thank you very much, sir," + you say with the first words that you can utter once you are sure that you <span class="green">managed to fully swallow all the cum.</span> + <</if>> + <<arousal 600>><<garousal>><<lstress>><<stress -5>> + <<oralstat>> + <<ejacstat>> + <<oralejacstat>> + <<set $hygiene += 500>> + <<set $player.bodyliquid.mouth.semen += 1>> + <<case 3>> + The second goon's $_penisdesc is readily erect for you to suck as soon as you turn to it. + You <<oraltext>> work the phallus with your mouth for a while, while they play cards. + <br><br> + + Right as the <<person>> starts twitching, you pull the $_penisdesc from your mouth. + You <span class="lewd">let the massive spurt of sperm unload right in the middle of your forehead</span> while you <<handtext>> milk it with your hand. + <br><br> + + "Come up here, I want to see this," orders the <<person>>. + You emerge from under the table as <span class="lewd"> two thick streams of semen slowly come running down each side of your nose </span>. + "You really are enjoying this, aren't you?" + <br><br> + + "Here, look here." One of the goons points a phone at you. "Smile a little, come on. People ought to know what a cumslut you are." + <br><br> + + <<if $submissive lte 850>> + Your eyes water and you refuse to smile. + But as the streams of cum reach the sides of your mouth, you can't resist the urge to + <span class="lewd">provocatively push your tongue out and lick some of the spunk around your lips.</span> + "We knew it! You can't help yourself!" + <<else>> + <span class="lewd">You gleefully make a big smile for the camera. This diverts the two streams of semen straight into your mouth.</span> + "Ah, that is just perfect" says one of the goons as more of them join taking more pictures with their phones. + <</if>> + <br><br> + + You pose some more, <span class="green">toying with the cum and letting them capture videos of you swallowing</span>. + "Man, this is fucking hot. I'm sharing this with everyone," you hear one say. + <br><br> + + After a bit the goons instruct you to go back under the table. Some of them are still waiting to be satisfied as agreed. + <<famesex 2>> + <<oralstat>> + <<ejacstat>> + <<faceejacstat>> + <<oralejacstat>> + <<set $player.bodyliquid.face.semen += 1>> + <<set $hygiene += 500>> + <<arousal 600>><<garousal>><<lstress>><<stress -5>> + <<case 4>> + You start sucking the <<persons>> $_penisdesc. Eventually, <<he>> looks down and says + "What nice <<haircolourtext>> hair you've got. How would you like it to be more shiny?" + <br><br> + + <<He>> pushes your mouth away and <span class="lewd">repeatedly whips you on the head with <<his>> $_penisdesc before ejaculating right on your scalp.</span> + "Here, here's something to soap it with, go ahead." + <br><br> + + <<He>> looks delighted as <span class="lewd">you spread <<his>> load all over your <<haircolourtext>> hair</span>. + <<oralstat>> + <<hairejacstat>> + <<ejacstat>> + <<set $player.bodyliquid.hair.semen += 1>> + <<set $hygiene += 500>> + <<arousal 600>><<garousal>><<lstress>><<stress -5>> + <<case 5>> + The fourth goon's $_penisdesc is all hard and pulsating as soon as you turn to it. + <br><br> + + "Aah, aah..." twitches the goon; and without much warning it <span class="lewd">bursts semen over your body and everywhere under the table.</span> + The <<person>> looks at you kneeling between <<his>> thighs, both of you wide-eyed gazing at each other. + <br><br> + + <<if $submissive lte 850>> + <span class=green>"Wow, that was quick!" you exclaim out loudly with a restrained laugh.</span> + The rest of the goons, becoming aware of what just happened burst into laughter, start poking fun at the goon's quick gun. + The <<person>>, embarrassed and red-faced, utters: "Fucking bitch, I'd slap that smug look off your face if it wasn't covered in jizz." + <<else>> + "I'm sorry <<sir>>, I might have been a little too eager," you whisper to the goon. + <span class="lewd">You pretend to suck on <<his>> limp dick while rubbing the semen over your neck and <<breasts>>.</span> + <</if>> + <<neckejacstat>> + <<chestejacstat>> + <<ejacstat>> + <<set $player.bodyliquid.neck.semen += 1>> + <<set $player.bodyliquid.chest.semen += 1>> + <<set $hygiene += 500>> + <<arousal 600>><<garousal>><<lstress>><<stress -5>> + <<case 6>> + You begin sucking the $_penisdesc. It is the last one remaining. Your jaw is hurting a little. + <br><br> + + After a short while, the <<man>> twitches and you feel the <span class="lewd">hard cock pulsating in your mouth.</span> + "Oh boy, this has been building up for quite some time," + the <<person>> says as <<he>> holds your head firmly with both hands and starts furiously thrusting. + <br><br> + + The first spurt is so awfully large and so viciously pushed down your throat that it <span class="lewd">chokes you and comes bursting out your nose.</span> + It becomes impossible to keep in all the cum being pumped in your mouth with your lips sealed around the $_penisdesc. + With every shove, you <span class="lewd">keep drooling semen all over your body.</span> + <br><br> + + "Ah fuck, look at this fucking slut," the goon says once <<he>>'s done pumping you. + The game being played on the table has stopped. Everyone is staring at you, the kneeling cum-covered mess with the <<lewdness>> trying to catch their breath. + <br><br> + + With white strings still dangling from your chin and all eyes on you, <span class="green">you smile and take a bow, and the room erupts in cheers.</span> + <br><br> + + "Hey, you are not going anywhere until you clean all this shit up. We're not touching any of that," Wren says, pointing at the floor under the table. + <br><br> + + <<if $submissive lte 850>> + Still kneeling, you collect the cold semen lying on the floor and <span class="lewd">rub it all over your torso.</span> + <<set $player.bodyliquid.leftarm.semen += 1>> + <<set $player.bodyliquid.rightarm.semen += 1>> + <<else>> + You get on all fours to <span class="lewd">lick clean all the cold semen lying on the floor.</span> + "Goodness <<girl>>, you still haven't had enough?" one asks while you lick <<his>> shoes. + "No, sir. It's just too tasty and the smell of it soothes me," you answer before <span class="lewd">swallowing the last of it.</span> + <<set $player.bodyliquid.mouth.semen += 2>> + <</if>> + + <<chestejacstat>> + <<tummyejacstat>> + <<oralstat>> + <<ejacstat>> + <<set $player.bodyliquid.face.semen += 1>> + <<set $player.bodyliquid.chest.semen += 1>> + <<set $player.bodyliquid.tummy.semen += 1>> + <<set $hygiene += 1000>> + <<arousal 600>><<garousal>><<lstress>><<stress -5>> + + <</switch>> + <br><br> + +<</if>> +<br><br> + +<<set $estate.cards.oral += 1>> +<<if $arousal gte $arousalmax>> + <<link [[Next|Estate Cards Oral Cumslut Orgasm]]>><</link>> +<<else>> + <<link [[Next|Estate Cards Oral 2]]>><</link>> +<</if>> +<br> + +:: Estate Cards Oral Cumslut Orgasm +Suddenly, the arousal from seeing yourself covered in jizz becomes overwhelming. Your abs and thighs squeeze as a <span class="lewd">massive orgasm builds up.</span> +<br><br> +The <<person>> notices: "Hey <<girl>>, are you really going to orgasm from just being cummed on?" +<br><br> +<<if $submissive lte 850>> + "Fuck... this is too much..." +<<else>> + "I'm so s-s-sorry, a-apologies," +<</if>> +you say while you spread your knees as wide as they will go in an attempt to keep your balance. +<br><br> +The goons cheer. <span class="red">A swarm of smartphones surround you.</span> +They record videos of you moaning and uncontrollably shaking while orgasming under the blackjack table. +<br><br> +<<orgasm>> +<<famesex 4>> + +<br><br> +<<link [[Next|Estate Cards Oral 2]]>><</link>> + :: Estate Cards Oral Vagina 2 <<effects>> + You fuck the <<person>> with your tongue, until you feel <<his>> pussy shudder in orgasm. <<He>> releases your hair. <br><br> @@ -1745,12 +1954,12 @@ You walk outside. A breeze makes you shiver. :: Estate Cards Orgasm <<effects>> - - <<if $estate.cards.position is "wren_lap" or $estate.cards.position is "vaginal" or $estate.cards.position is "anal">> - <<He>> keeps <<his>> hands firm on your hips as <<he>> reclines in the chair, still panting. <<He>> releases <<his>> grasp. "Not bad," <<he>> admits, pushing you off <<his>> lap. "The game's over. I hope you got what you came for." + <<He>> keeps <<his>> hands firm on your hips as <<he>> reclines in the chair, still panting. + <<He>> releases <<his>> grasp. "Not bad," <<he>> admits, pushing you off <<his>> lap. "The game's over. I hope you got what you came for." <<else>> - <<He>> keeps <<his>> arms locked around your chest as <<he>> pants against you. <<He>> pulls away, looking tired. "Not bad," <<he>> admits, swinging <<his>> leg off you. "The game's over. I hope you got what you came for." + <<He>> keeps <<his>> arms locked around your chest as <<he>> pants against you. <<He>> pulls away, looking tired. + "Not bad," <<he>> admits, swinging <<his>> leg off you. "The game's over. I hope you got what you came for." <</if>> <br><br> <<cards_naked_end>> diff --git a/game/overworld-plains/loc-farm/events.twee b/game/overworld-plains/loc-farm/events.twee index b87bd22d19005971e0dbfd31e1628a3aca95c52e..cf30f43b9570c072d51e0030378ab2f190149c6d 100644 --- a/game/overworld-plains/loc-farm/events.twee +++ b/game/overworld-plains/loc-farm/events.twee @@ -15,7 +15,7 @@ <<farm_trust dogs>> <</if>> -<<if setup.clothes.upper[$worn.upper.index].sleeve_img isnot 1 and ($leftarm is "bound" or $rightarm is "bound") and $phase is 1>> +<<if setup.clothes.upper[clothesIndex('upper', $worn.upper)].sleeve_img isnot 1 and ($leftarm is "bound" or $rightarm is "bound") and $phase is 1>> The chickens tear the ruined remains of your sleeves away from you, <span class="lblue">freeing your arms.</span> <<unbind>> <br><br> @@ -51,7 +51,7 @@ <<beastejaculation>> - <<if setup.clothes.upper[$worn.upper.index].sleeve_img is 1>> + <<if setup.clothes.upper[clothesIndex('upper', $worn.upper)].sleeve_img is 1>> Satisfied, the <<farm_text dog>> leaves the coop as the chickens step away from the fence, freeing your arms. <<unbind>> <<else>> @@ -71,7 +71,7 @@ <<elseif $enemyhealth lte 0>> - <<if setup.clothes.upper[$worn.upper.index].sleeve_img is 1>> + <<if setup.clothes.upper[clothesIndex('upper', $worn.upper)].sleeve_img is 1>> The <<farm_text dog>> turns and runs. The chickens follow, releasing your arms. <<unbind>> <<else>> @@ -93,7 +93,7 @@ "I'm coming!" It's Alex. The <<farm_text dog>> backs away at the sound of <<his>> voice. - <<if setup.clothes.upper[$worn.upper.index].sleeve_img is 1>> + <<if setup.clothes.upper[clothesIndex('upper', $worn.upper)].sleeve_img is 1>> The chickens follow suit. <<unbind>> <<else>> @@ -1666,10 +1666,10 @@ You scramble out from beneath the <<farm_text horse>>, and continue to the gate. <br><br> "Time for a lesson." - <<if $worn.upper.set is $worn.lower.set and setup.clothes.lower[$worn.lower.index].skirt isnot 1>> + <<if $worn.upper.set is $worn.lower.set and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt isnot 1>> You feel <<farm_his horse>> fingers tap against your <<bottom>> <<elseif !$worn.lower.type.includes("naked")>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if !$worn.under_lower.type.includes("naked") and $worn.under_upper.set isnot $worn.under_lower.set>> <<farm_He horse>> flips up your $worn.lower.name, and pulls down your $worn.under_lower.name, baring your <<bottom>>. <<else>> @@ -1702,10 +1702,10 @@ You scramble out from beneath the <<farm_text horse>>, and continue to the gate. <<else>> The horse grasps your hair, pulling you to your knees again. This time however, it shoves you forward, leaving your rear stuck in the air. - <<if $worn.upper.set is $worn.lower.set and setup.clothes.lower[$worn.lower.index].skirt isnot 1>> + <<if $worn.upper.set is $worn.lower.set and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt isnot 1>> You feel <<farm_his horse>> tongue lap against your <<bottom>>, and hope your $worn.lower.name proves enough of a barrier. <<elseif !$worn.lower.type.includes("naked")>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if !$worn.under_lower.type.includes("naked") and $worn.under_upper.set isnot $worn.under_lower.set>> <<farm_He horse>> flips up your $worn.lower.name with its teeth, and pulls down your $worn.under_lower.name, baring your <<bottom>> to its probing tongue. <<else>> diff --git a/game/overworld-plains/loc-farm/main.twee b/game/overworld-plains/loc-farm/main.twee index 4af7087fc55425ce3094feaed0e771e0200ee72a..986f715ad1c5d929f686bdbbecca234ce0da111a 100644 --- a/game/overworld-plains/loc-farm/main.twee +++ b/game/overworld-plains/loc-farm/main.twee @@ -620,7 +620,7 @@ You listen to Alex talk over the phone to <<his>> <<if $pronoun is "m">>dad<<els <<if $worn.upper.type.includes("naked") and $worn.lower.type.includes("naked")>> It's a checkered shirt.<<upperwear 33>> <<if $NPCName[$NPCNameList.indexOf("Alex")].dom gte $npcdomhigh and $NPCName[$NPCNameList.indexOf("Alex")].lust gte 10>> - A smaller bundle followers. A pair of denim shorts.<<lowerwear 31>> + A smaller bundle follows. A pair of denim shorts.<<lowerwear 31>> <<else>> Another bundle thumps to the ground in front of you. A pair of jeans.<<lowerwear 22>> <</if>> diff --git a/game/overworld-plains/loc-farm/widgets.twee b/game/overworld-plains/loc-farm/widgets.twee index bf845b15725089f10dadfc4d97a19b7c35ca5c6c..684f000e01ad9ab26c6a1aeb07bc05706b9b0da3 100644 --- a/game/overworld-plains/loc-farm/widgets.twee +++ b/game/overworld-plains/loc-farm/widgets.twee @@ -1406,7 +1406,7 @@ <br> <<default>> <<generate1>><<person1>> - <<if $worn.over_lower.name is "naked" and setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if $worn.over_lower.name is "naked" and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> One of the builders, a <<person>>, flicks up your skirt as you pass.<<gstress>><<stress 6>> <br><br> diff --git a/game/overworld-plains/loc-farm/woodland.twee b/game/overworld-plains/loc-farm/woodland.twee index eee56e133cbab377e7f52b4faa93a65bfeaec423..8058bb9e0f9d6f41be6e374bf31c454f4f822fb0 100644 --- a/game/overworld-plains/loc-farm/woodland.twee +++ b/game/overworld-plains/loc-farm/woodland.twee @@ -123,7 +123,7 @@ You help Alex remove dead wood, and trim the branches of the wildest trees. "The ground's uneven. You climb with the saw, and I'll steady you. Shouldn't take long." <br><br> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You climb the ladder. It wobbles a little, and you hesitate. <br><br> diff --git a/game/overworld-plains/loc-farm/work.twee b/game/overworld-plains/loc-farm/work.twee index ac6fb6b80b8ff6465c09980dfbaf65ee9a2d3648..9d2fa04bb999f8b3e177b51e58c9a86871332f60 100644 --- a/game/overworld-plains/loc-farm/work.twee +++ b/game/overworld-plains/loc-farm/work.twee @@ -859,7 +859,7 @@ A bundle falls down the stairwell. <<if $worn.upper.type.includes("naked") and $worn.lower.type.includes("naked")>> It's a checkered shirt.<<upperwear 33>> <<if $NPCName[$NPCNameList.indexOf("Alex")].dom gte $npcdomhigh and $NPCName[$NPCNameList.indexOf("Alex")].lust gte 10>> - A smaller bundle followers. A pair of denim shorts.<<lowerwear 31>> + A smaller bundle follows. A pair of denim shorts.<<lowerwear 31>> <<else>> Another bundle thumps to the ground in front of you. A pair of jeans.<<lowerwear 22>> <</if>> @@ -989,7 +989,7 @@ You release the chickens from their coop, then enter to clean up. It's large eno <</if>> You hear movement behind you. Before you can turn to investigate, something leaps on you from behind. You drop to your knees, clutching the wire fence for support. <br><br> - <<if setup.clothes.upper[$worn.upper.index].sleeve_img is 1>> + <<if setup.clothes.upper[clothesIndex('upper', $worn.upper)].sleeve_img is 1>> You feel a tugging at your wrists. Several chickens have poked their beaks through the gaps in the wire and are grasping your sleeves. Your arms are held in place. <br><br> <<bind>> diff --git a/game/overworld-plains/loc-moor/events.twee b/game/overworld-plains/loc-moor/events.twee index 7a1eb2633c763d62b8b22dd0eca199931d37d923..8ec5ec6d1c367da98a0e4fe278f7e43ebf319f47 100644 --- a/game/overworld-plains/loc-moor/events.twee +++ b/game/overworld-plains/loc-moor/events.twee @@ -373,7 +373,7 @@ The creatures disappear into the mire. :: Moor Quicksand -<<effects>><<rngWraith 2>><<if _wraithEvent>><<set $quicksandWraith to true>><</if>> +<<effects>><<rngWraith 1>><<if _wraithEvent>><<set $quicksandWraith to true>><</if>> <<if $quicksandWraith>><<if $wraith.state is "haunt">><<set _drown to "Drown">><<else>><<set _drown to "Calm">><</if>><<ind>><<ind>><<ind>><span class="flicker">_drown</span><br><</if>> You are up to your @@ -1045,7 +1045,7 @@ The water is cold, and deep. You swim away from shore. You can see nothing ahead <</if>> :: Moor Passage Swim 2 -<<effects>><<rngWraith 2>> +<<effects>><<rngWraith 1>> Faced with an impenetrable darkness, you turn and swim back to the glowing shore. You search, until you find another exit. This one slopes upwards, and leads you back into the <<daylight>> <br><br> @@ -1486,8 +1486,8 @@ You run. <br><br> <<saveNPC 0 moor_pair_1>> <<saveNPC 1 moor_pair_2>> - <<endcombat>> <<steal>> + <<endcombat>> <<loadNPC 0 moor_pair_1>> <<loadNPC 1 moor_pair_2>> <<link [[Next|Moor Vehicle Defeat]]>><<clotheson>><</link>> @@ -2680,8 +2680,7 @@ You examine the lock. It looks old, and delicate with rust. <<neutral 1>> <<molested>> <</if>> - <<maninit>><<npcexpose>> - <<set $enemytype to "plant">><<set $enemyno to 1>><<set $enemynomax to 1>> + <<maninit "plant">><<npcexpose>> <<if $phase is 0>> <<set $enemyarousalmax to 1500>> <<set $enemyarousal to 500>> @@ -2720,7 +2719,7 @@ You examine the lock. It looks old, and delicate with rust. <<else>> <<He>> picks <<himself>> up off the ground and dusts off one of <<his>> vines. "If you're ever in the area, hit me up! I'd love to do this again!" <</if>> - <<He>> walks off, <<his>> vines shambling behing <<him>>. + <<He>> walks off, <<his>> vines shambling behind <<him>>. <br><br> <<tearful>> you gather yourself. diff --git a/game/overworld-plains/loc-moor/main.twee b/game/overworld-plains/loc-moor/main.twee index 43ab9a1b637c7ea22fd93881fbe769639c4640c1..c9a166268dd48d5d10ab6fe16a06253e3257168b 100644 --- a/game/overworld-plains/loc-moor/main.twee +++ b/game/overworld-plains/loc-moor/main.twee @@ -176,7 +176,7 @@ <<unset $moormove>> :: Castle -<<set $location to "moor">><<effects>> +<<set $location to "castle">><<effects>> You are in the courtyard of a ruined castle. Even derelict and half-sunk, the ruin towers all around you. <br><br> @@ -203,7 +203,7 @@ You are in the courtyard of a ruined castle. Even derelict and half-sunk, the ru <br> :: Castle Fly -<<effects>> +<<set $location to "tower">><<effects>> <<npc "Great Hawk">> You fly to the top of the tower, and land beside the nest. @@ -238,7 +238,7 @@ You call up to the tower. <<link [[Stop|Castle]]>><<endevent>><</link>> <br> <<else>> - + <<set $location to "tower">> At once, the <<beasttype>> swoops from your nest. <<bHe>> grasps your shoulders in <<bhis>> talons, and carries you home. <br><br> <<if ($leftarm is "bound" or $rightarm is "bound" or $feetuse is "bound")>> @@ -259,7 +259,7 @@ You call up to the tower. <</if>> :: Castle Call Wait -<<effects>> +<<set $location to "tower">><<effects>> You wait, watching the skies, until you see the <<beasttype>> soaring over the moor. You call out as <<bhe>> passes overhead. <<bHe>> swoops towards you, grasps your shoulders, and carries you home. <br><br> @@ -612,7 +612,7 @@ The <<person>> sighs. "Fine." <<He>> chucks it onto the earth beside you. You cr :: Moor Box Show <<effects>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<flaunting>> you lift your skirt. <<elseif $worn.upper.set is $worn.lower.set>> <<flaunting>> you tug your $worn.upper.name down your chest, over you waist, and then your thighs. @@ -700,7 +700,7 @@ The <<person>> sighs. "Fine." <<He>> chucks it onto the earth beside you. You cr <br><br> <<underlowerruined>> <</if>> -<<elseif setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.under_upper.set is $worn.under_lower.set>> <<if $worn.upper.type.includes("naked")>> You'll be left topless. "Turn around," you say. The <<person>> obliges, facing away and resting <<his>> hands on <<his>> hips. diff --git a/game/overworld-town/loc-beach/events.twee b/game/overworld-town/loc-beach/events.twee index 989b87c234bacc8e31010db5cfe9a1db754255ce..ae521151295d80475a21da69b098fedf8fa1f433 100644 --- a/game/overworld-town/loc-beach/events.twee +++ b/game/overworld-town/loc-beach/events.twee @@ -821,19 +821,16 @@ Having come this far, you submit to the collar being placed round your neck. You <br><br> You are led deeper into the dunes. You walk for several minutes, conscious of just how exposed and vulnerable you are. Your captors make no attempt to hide how much they enjoy being in a position of power over you, and constantly leer at your body, knowing there's nothing you can do to stop them. <br><br> - <!-- Modified for Monster People --> - - <<saveNPC 0 beach_abduction_dog_1>> - <<saveNPC 1 beach_abduction_dog_2>> - <<endevent>> - <<beastNEWinit 1 dog>> - <<if $rng gte 51 and ($monster is 1 or $bestialitydisable is "f")>> - <<loadNPC 1 beach_abduction_dog_1>> - <<loadNPC 2 beach_abduction_dog_2>> + <<saveNPC 0 "beach_abduction_dog_1">> + <<saveNPC 1 "beach_abduction_dog_2">> + <<endevent>> + <<loadNPC 1 "beach_abduction_dog_1">> + <<loadNPC 2 "beach_abduction_dog_2">> + <<clearNPC "beach_abduction_dog_1">> + <<clearNPC "beach_abduction_dog_2">> + <<beastNEWinit 1 dog>> - <<clearNPC beach_abduction_dog_1>> - <<clearNPC beach_abduction_dog_2>> You come to a relatively flat area, surrounded by dunes on all sides, shielding it from view. In the centre is a <<beasttype>>, <<bhis>> leash tied to a wooden post. At the sight of you <<bhe>> leaps to <<bhis>> feet, straining the leash in a bid to reach you. <<if $monster is 1>> <<bHis>> nude body is on full display for all to see, but <<bhe>> doesn't seem all too phased by it. <<bHe>> seems oddly well-groomed for a <<beasttype>>, despite the state <<bhe>>'s in. <<bHe>> paws at the air in an attempt to reach you, and <<bhe>>'s almost successful. @@ -849,12 +846,6 @@ Having come this far, you submit to the collar being placed round your neck. You <<link [[Allow yourself to be led over|Beach Abduction Dog]]>><<set $molestationstart to 1>><<set $phase to 1>><</link>> <br> <<else>> - <<endevent>> - <<loadNPC 0 beach_abduction_dog_1>> - <<loadNPC 1 beach_abduction_dog_2>> - - <<clearNPC beach_abduction_dog_1>> - <<clearNPC beach_abduction_dog_2>> <<generatey3>><<generatey4>><<generatey5>><<generatey6>>You come to a relatively flat area, surrounded by dunes on all sides, shielding it from view. Four teenagers sit smoking in the centre. Your feelings of humiliation reach a new height as the new pairs of eyes see you in your shameful situation. Their initial shock quickly subsides, leaving a bare and primal lust. <br><br> The <<person2>><<person>> leads you into the middle of the group, their eyes feasting on every inch of your body. "We found this piece of trash near the beach. Can't believe anyone would just leave it laying around, no respect at all," the <<person1>><<person>> <<if $worn.genitals.type.includes("chastity")>>attempts to break<<else>>starts fondling<<set $worn.genitals.integrity -= 50>><</if>> your <<genitals>> in front of everyone, causing your breath to catch in your chest. The rest of the group take the cue. Arms reach out from all around you, each wanting their share. diff --git a/game/overworld-town/loc-beach/main.twee b/game/overworld-town/loc-beach/main.twee index c2e279bffd280066e0cde0c9586cac34e2b7f6d6..de0dcbe0b2b3e75dfe71478ded651c2323784511 100644 --- a/game/overworld-town/loc-beach/main.twee +++ b/game/overworld-town/loc-beach/main.twee @@ -232,9 +232,9 @@ The teenagers are happy to have a sixth player, particularly the <<person1>><<pe <<else>> You are so focused on the opposing team you do not notice one of your own sneak up on you. A pair of hands grasp the rim of your $worn.lower.name. <</if>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 0 and $worn.lower.set isnot $worn.upper.set>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0 and $worn.lower.set isnot $worn.upper.set>> Before you can react, the <<person1>><<person>> has pulled them all the way to your knees, - <<elseif setup.clothes.lower[$worn.lower.index].skirt is 0 and $worn.lower.set is $worn.upper.set>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0 and $worn.lower.set is $worn.upper.set>> Before you can react, the <<person1>><<person>> has pulled it aside, <<else>> Before you can react, the <<person1>><<person>> has lifted it, diff --git a/game/overworld-town/loc-beach/widgets.twee b/game/overworld-town/loc-beach/widgets.twee index e25e8065460b68863695fc6e2010a04253529e12..cfacba0b1284c38fcd161a3a10563477a47e4605 100644 --- a/game/overworld-town/loc-beach/widgets.twee +++ b/game/overworld-town/loc-beach/widgets.twee @@ -58,7 +58,7 @@ You feel something yanking at your <<print $worn[_slot].name>>. Looking over you A gust of wind blows in from the ocean, pleasantly caressing your skin. <<lstress>><<stress -2>> <br><br> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> /* variables */ <<set _helpless to 0>> <<if $leftarm is "bound" and $rightarm is "bound">> diff --git a/game/overworld-town/loc-brothel/main.twee b/game/overworld-town/loc-brothel/main.twee index 6112c1f0dc6c3e6cd612fcc781e5f9998ee5d2fc..5610271f0f03397f575bbd922eb7f0abeabe8e15 100644 --- a/game/overworld-town/loc-brothel/main.twee +++ b/game/overworld-town/loc-brothel/main.twee @@ -1127,7 +1127,7 @@ The <<person>> recoils from the hole. You hear <<him>> shout at someone, then si <<if $bestialitydisable is "f">> "Or," <<he>> says, "we could get a pig in from one of the local farms. Then you do nasty things with it for the audience's amusement. I don't know how many would be into it, but it would get tongues flapping. Which is what we want. You'll get £1500 for that." <br><br> -<<elseif $monsterchance gte 1>> +<<elseif $monsterchance gte 1 and ($hallucinations gte 1 or $monsterhallucinations is "f")>> "Or," <<he>> says, "we could get a pig person in from one of the local farms. Then you do nasty things with it for the audience's amusement. I don't know how many would be into it, but it would get tongues flapping. Which is what we want. You'll get £1500 for that." <br><br> <</if>> @@ -1158,10 +1158,10 @@ You aren't promiscuous or deviant enough to take up any of the offers. <br> <</if>> <!-- Modified for Monster People --> -<<if $deviancy gte 75 and ($bestialitydisable is "f")>> +<<if $deviancy gte 75 and ($bestialitydisable is "f" or $monsterchance gte 1 and ($hallucinations gte 1 or $monsterhallucinations is "f"))>> <<link [[Pig|Briar's Office Show 2]]>><<acceptbrothelshow "pig">><</link>><<deviant5>> <br> - <<if $farm_stage gte 7 and $farm.steed>> + <<if $farm_stage gte 7 and $farm.steed and ($bestialitydisable is "f" or $per_npc.saddled_steed.monster is "monster")>> <<link [[Suggest a horse (pays £2000)|Briar's Office Show 2]]>><<acceptbrothelshow "horse">><</link>><<deviant5>> <br> <</if>> @@ -1223,10 +1223,15 @@ You see Briar talking to someone near the largest stage. You agreed to perform t <<if $brothelshowdata.type is "horse">> <<if $farm.steed>> - Your $farm.steed steed awaits you. - <br><br> - <<link [[Star in show|Brothel Show]]>><</link>> - <br> + <<if $bestialitydisable is "f" or $per_npc.saddled_steed.monster is "monster">> + Your $farm.steed steed awaits you. + <br><br> + <<link [[Star in show|Brothel Show]]>><</link>> + <br> + <<else>> + The weight of what you've signed yourself up for sinks in, and you start to feel nauseous. <span class="red">You've lost the nerve to perform.</span> + <br> + <</if>> <<else>> <span class="blue">You're booked to star in a show with a horse, but you haven't saddled one!</span> <br> diff --git a/game/overworld-town/loc-brothel/shows.twee b/game/overworld-town/loc-brothel/shows.twee index 209cfcc1170841d51e10057fa4ccba496b638b69..5b9961e8a38dc01f789c0d04865ae12f0f250a08 100644 --- a/game/overworld-town/loc-brothel/shows.twee +++ b/game/overworld-town/loc-brothel/shows.twee @@ -35,11 +35,10 @@ <</if>> <<elseif $brothelshowdata.type is "pig">> <<startbrothelshow "pig">> - Briar turns to you. "We're all set and ready. Just waiting for the star." The cage beside <<him>> shakes. "The beast is a bit worked up, but I'm sure you can handle it." You walk onto the stage. A single white light turns on above you, and the din of the dark room falls quiet. You can't see beyond the edge of the stage, but you can feel the eyes on you. - <br><br> <<endevent>> - - <<if $monsterchance gte random(1, 100)>> + + /* guarantees pig will be generated as a monster - regardless of monsterchance - if monsterpeople are possible and beasts are disabled; otherwise generated as usual */ + <<if $bestialitydisable is "t" and $monsterchance gte 1 and ($hallucinations gte 1 or $monsterhallucinations is "f")>> <<if $malechance gte random(1, 100)>> <<if $cbchance gte random(1, 100)>> <<beastNEWinit 1 pig m vagina monster>> @@ -54,19 +53,40 @@ <</if>> <</if>> <<else>> - <<if $malechance gte random(1, 100)>> - <<beastNEWinit 1 pig m penis beast>> - <<else>> - <<beastNEWinit 1 pig f vagina beast>> - <</if>> + <<beastNEWinit 1 pig>> <</if>> - <<beastNEWinit 1 pig>> - "Ladies and gentlemen!" Briar's voice rings throughout the room. "We have a special treat for you today. The tale of a <<girl>> lost in the woods, attacked by a ravenous beast!" You hear the cage open, and the <<beasttype>> walks onto the stage. A leash is attached to <<bhis>> neck and trails behind the set. It has slack enough to reach you. The audience cheers it on. - <<deviancy5>> - <br><br> - <<link [[Next|Brothel Show Pig]]>><<set $sexstart to 1>><</link>> - <br> + /* defaults to gangbang show if the player changed their beast settings, or has lost hallucinations since accepting the job */ + <<if $bestialitydisable is "f" or $monster is 1>> + Briar turns to you. "We're all set and ready. Just waiting for the star." The cage beside <<nnpc_him "Briar">> shakes. "The beast is a bit worked up, but I'm sure you can handle it." You walk onto the stage. A single white light turns on above you, and the din of the dark room falls quiet. You can't see beyond the edge of the stage, but you can feel the eyes on you. + <br><br> + + "Ladies and gentlemen!" Briar's voice rings throughout the room. "We have a special treat for you today. The tale of a <<girl>> lost in the woods, attacked by a ravenous beast!" You hear the cage open, and the <<beasttype>> walks onto the stage. A leash is attached to <<bhis>> neck and trails behind the set. It has slack enough to reach you. The audience cheers it on. + <<deviancy5>> + <br><br> + + <<link [[Next|Brothel Show Pig]]>><<set $sexstart to 1>><</link>> + <br> + <<else>> + "What do you mean, booked? The whole pen?! What kind of pervert..." <<nnpc_He "Briar">> trails off into a series of expletives, before finally dismissing the worker. "Unbelievable." + <br><br> + + <<nnpc_He "Briar">> storms onstage without so much as a glance at you. From backstage, you hear <<nnpc_his "Briar">> voice, followed by disappointed murmuring. Shortly after, Briar returns, flanked by a group of bemused stagehands. <<nnpc_He "Briar">> holds what appears to be an old school uniform. + <br><br> + + "Change of plans." <<nnpc_He "Briar">> shoves the uniform into your arms. "Get changed and get your ass onstage. Now." + <br><br> + + <<nnpc_His "Briar">> tone precludes argument. You do as you're told. + <br><br> + + <<undress "brothelimprov">> + <<set $uppertemp to "init">><<upperwear 5>><<set $worn.upper.colour to either("black", "blue", "brown", "green", "pink", "purple", "red", "tangerine")>><<set $worn.upper.integrity /= 2>> + <<set $lowertemp to "init">><<if $player.gender_appearance is "m">><<lowerwear 60>><<else>><<lowerwear 61>><</if>><<set $worn.lower.colour to either("black", "blue", "brown", "green", "pink", "purple", "red", "tangerine")>><<set $worn.lower.integrity /= 2>> + + <<link [[Next|Brothel Show Pig Improv]]>><</link>> + <br> + <</if>> <<elseif $brothelshowdata.type is "swarm">> <<startbrothelshow "swarm">> Briar turns to you. "We're all set and ready. Just waiting for the star." @@ -223,7 +243,9 @@ <<clotheson>> <<endcombat>> <<npc Briar>><<person1>>Briar waits for you behind the stage. "Nice work," <<he>> says. - <<if $phaselast is 0>> + <<if $brothel_pig_improv is true>> + "For a rush job, at least." + <<elseif $phaselast is 0>> "Everyone likes to see a stuck-up <<girl>> get ruined like that." <<else>> "I almost believed your performance myself." @@ -236,7 +258,7 @@ <<npcincr Briar love 2>> <<elseif _extremeshow is "dv">> <br> - <<He>> pauses, licking <<his>> lips thoughtfully. "Double pussy, now that's real talent. The audience loved it. Keep up the great work; your elastic ass will make us both a lot of money." + <<He>> pauses, licking <<his>> lips thoughtfully. "Double pussy, now that's real talent. The audience loved it. Keep up the great work; your elastic cunt will make us both a lot of money." <<He>> hands you the <<moneyGain 1000>> <<he>> promised, along with a bonus <<moneyGain 200>>.<<gglove>> <<npcincr Briar love 2>> <<elseif _extremeshow is "t">> @@ -259,6 +281,10 @@ <br><br> <</if>> <<endevent>> +<<if $brothel_pig_improv is true>> + <<unset $brothel_pig_improv>> + <<storeon "brothelimprov">> +<</if>> You return to the dressing room. <br><br> <<link [[Next|Brothel Dressing Room]]>><</link>> @@ -459,6 +485,18 @@ You return to the dressing room. <<link [[Next|Brothel Dressing Room]]>><</link>> +:: Brothel Show Pig Improv +<<set $outside to 0>><<set $location to "brothel">><<effects>> +<<set $brothel_pig_improv to true>> + +"Our sincerest apologies for the delay," Briar announces to the audience. "In place of our scheduled performance, we'll witness the tale of the school <<girl>> who wandered into the wrong part of town." Cheers and whistles erupt from the audience. "<<pShes>> at the top of <<pher>> class, but has no experience outside <<pher>> little bubble. What will become of <<phim>>, I wonder?" +<<endevent>><<generate1>><<generate2>><<generate3>><<generate4>><<person1>>Four of Briar's other employees climb on beside you. They face each other and feign talking, pretending not to notice you and waiting for your lead. +<br><br> +<<link [[Stuck-up|Brothel Show Gangbang]]>><<set $phase to 0>><</link>> +<br> +<<link [[Lost and scared|Brothel Show Gangbang]]>><<set $phase to 1>><</link>> +<br> + :: Brothel Show Swarm <<if $sexstart is 1>> <<set $cumbucket to 0>> diff --git a/game/overworld-town/loc-cafe/chef.twee b/game/overworld-town/loc-cafe/chef.twee index 0aed734a5b944dca2007378095c6e41fe3f79c47..515e49a4dd324ae859ef5aa154ec5e3e76da0934 100644 --- a/game/overworld-town/loc-cafe/chef.twee +++ b/game/overworld-town/loc-cafe/chef.twee @@ -1,7 +1,9 @@ :: Chef Help <<set $outside to 0>><<set $location to "cafe">><<effects>> -You enter the kitchens and put on an apron. Sam gives you a very brief rundown. "Our cream buns are our big seller," <<he>> says. "The secret's in the ingredients, so don't feel too pressured." <<He>> dashes away at sound of something shattering the cafe proper, leaving you to it. +You enter the kitchens and put on an apron. Sam gives you a very brief rundown. +"Our cream buns are our big seller," <<he>> says. "The secret's in the ingredients, so don't feel too pressured." +<<He>> dashes away at sound of something shattering the cafe proper, leaving you to it. <br><br> You get to work replenishing the stock of buns. You finish a batch just in time. @@ -18,7 +20,8 @@ You get to work replenishing the stock of buns. You finish a batch just in time. <<generate1>><<person1>> "Absolutely unacceptable," shouts a voice from the main room. "I demand to see the chef." A <<person>> barges in and fixes you with a glare. <br><br> -"You call this stale turd a cream bun?" <<he>> says, throwing it at you. "I waited long enough. You're gonna make me a fresh one. You better put some actual work into it this time." +"You call this stale turd a cream bun?" <<he>> says, throwing it at you. +"I waited long enough. You're gonna make me a fresh one. You better put some actual work into it this time." <br><br> <<He>> storms the way <<he>> came. @@ -39,12 +42,14 @@ Sam leaves you to get to work. :: Chef Regular Bun <<set $outside to 0>><<set $location to "cafe">><<effects>> -You whip up another bun, stuffed with extra cream. Sam arrives to collect and deliver it, before arriving back a minute later. "<<Hes>> about as satisfied as I've seen <<him>>. Sorry about that." +You whip up another bun, stuffed with extra cream. Sam arrives to collect and deliver it, before arriving back a minute later. +"<<Hes>> about as satisfied as I've seen <<him>>. Sorry about that." <br><br> <<endevent>> <<npc Sam>> -<<He>> glances at the clock on the wall. "Chef should be back in a moment. Thank you for the help, you saved my life. Here's your pay." <<He>> hands you <<moneyGain 10>>. +<<He>> glances at the clock on the wall. "Chef should be back in a moment. Thank you for the help, you saved my life. Here's your pay." +<<He>> hands you <<moneyGain 10>>. <br><br> <<endevent>> @@ -95,46 +100,45 @@ You whip up another bun, stuffed with extra cream. Sam arrives to collect and de <<npc Sam>><<person1>> <<if $masturbation_fluid gte 30>> + You add your fluid to the mixture, and whip up a new batch of cream. + <br><br> + Sam arrives soon after. You do your best to keep a straight face as <<he>> takes the bun to the rude customer. + <br><br> + You hear shouting from the cafe proper. It sounds more excited than angry. You peek through the door, and see a crowd stood around a table. + <br><br> -You add your fluid to the mixture, and whip up a new batch of cream. -<br><br> -Sam arrives soon after. You do your best to keep a straight face as <<he>> takes the bun to the rude customer. -<br><br> -You hear shouting from the cafe proper. It sounds more excited than angry. You peek through the door, and see a crowd stood around a table. -<br><br> - -<<link [[Next|Chef Help 3]]>><</link>> -<br> + <<link [[Next|Chef Help 3]]>><</link>> + <br> <<elseif $finish is 1>> + You stop masturbating. You whip up a bun without special ingredients. + <br><br> + Sam arrives to collect and deliver it, before arriving back a minute later. "The customer is satisfied," <<he>> says. "Sorry about that." + <br><br> -You stop masturbating. You whip up a bun without special ingredients. -<br><br> -Sam arrives to collect and deliver it, before arriving back a minute later. "The customer is satisfied," <<he>> says. "Sorry about that." -<br><br> - -<<He>> glances at the clock on the wall. "Chef should be back in a moment. Thank you for the help, you saved my life. Here's your pay." <<He>> hands you <<moneyGain 10>>. -<br><br> + <<He>> glances at the clock on the wall. + "Chef should be back in a moment. Thank you for the help, you saved my life. Here's your pay." <<He>> hands you <<moneyGain 10>>. + <br><br> -<<endevent>> + <<endevent>> -<<link [[Next|Ocean Breeze]]>><</link>> -<br> + <<link [[Next|Ocean Breeze]]>><</link>> + <br> <<else>> + You hear someone coming. You quickly cover yourself and prepare a bun without special ingredients. + <br><br> + Sam arrives to collect and deliver it, before arriving back a minute later. "The customer is satisfied," <<he>> says. "Sorry about that." + <br><br> -You hear someone coming. You quickly cover yourself and prepare a bun without special ingredients. -<br><br> -Sam arrives to collect and deliver it, before arriving back a minute later. "The customer is satisfied," <<he>> says. "Sorry about that." -<br><br> - -<<He>> glances at the clock on the wall. "Chef should be back in a moment. Thank you for the help, you saved my life. Here's your pay." <<He>> hands you <<moneyGain 10>>. -<br><br> + <<He>> glances at the clock on the wall. + "Chef should be back in a moment. Thank you for the help, you saved my life. Here's your pay." <<He>> hands you <<moneyGain 10>>. + <br><br> -<<endevent>> + <<endevent>> -<<link [[Next|Ocean Breeze]]>><</link>> -<br> + <<link [[Next|Ocean Breeze]]>><</link>> + <br> <</if>> @@ -143,7 +147,8 @@ Sam arrives to collect and deliver it, before arriving back a minute later. "The <<generate2>><<generate3>><<generate4>><<generate5>><<generate6>> -<<person2>>"You have to try some," a <<person>> exclaims, handing a spoonful of cream to a <<person3>><<person>>. <span class="lewd">It's your cream.</span> The <<person>> raises the spoon to <<his>> nose, sniffs, then licks a little off the end. +<<person2>>"You have to try some," a <<person>> exclaims, handing a spoonful of cream to a <<person3>><<person>>. +<span class="lewd">It's your cream.</span> The <<person>> raises the spoon to <<his>> nose, sniffs, then licks a little off the end. <br><br> <<His>> expression changes at once, from suspicion to awe. <<He>> buries the rest of the cream in <<his>> mouth. "That's so good!" <<he>> says. "I need more," <br><br> @@ -151,7 +156,8 @@ Sam arrives to collect and deliver it, before arriving back a minute later. "The <br><br> <<person1>> -Sam notices you, and walks over. <<Hes>> beaming. "I've never seen that customer so satisfied," <<he>> says. "I don't know how you did it. How would you like to put your cooking talents to work more regularly? I'll pay you £10 per hour, plus a cut of each bun we sell." +Sam notices you, and walks over. <<Hes>> beaming. "I've never seen that customer so satisfied," <<he>> says. +"I don't know how you did it. How would you like to put your cooking talents to work more regularly? I'll pay you £10 per hour, plus a cut of each bun we sell." <br><br> <<link [[Accept|Chef Help Accept]]>><</link>> @@ -164,7 +170,9 @@ Sam notices you, and walks over. <<Hes>> beaming. "I've never seen that customer <<set $chef_state to 1>><<set $chef_sus to 0>><<set $bun_value to 5000>><<set $bun_cut to 0.2>> -You nod. Sam claps in excitement. "Fantastic! You can work whenever we're open. I know you'll need to fit it around other commitments. I'll get whatever ingredients you need. This could be the start of something big." +You nod. Sam claps in excitement. +"Fantastic! You can work whenever we're open. I know you'll need to fit it around other commitments. +I'll get whatever ingredients you need. This could be the start of something big." <br><br> <<He>> turns to walk away, then remembers <<himself>>. "Almost forgot. It's the end of your shift. Here's your pay." <<He>> hands you <<moneyGain 10>>. <br><br> @@ -193,7 +201,10 @@ You shake your head. <<His>> energy deflates. "My offer's open. I hope you chang <<set $chef_state to 1>><<set $chef_sus to 0>><<set $bun_value to 5000>><<set $bun_cut to 0.2>> -<<npc Sam>><<person1>>You approach Sam. "Have you reconsidered?" <<he>> asks, hopeful. You nod. <<He>> claps in excitement. "Fantastic! You can work whenever we're open. I know you'll need to fit it around other commitments. I'll get whatever ingredients you need. This could be the start of something big." +<<npc Sam>><<person1>>You approach Sam. "Have you reconsidered?" <<he>> asks, hopeful. You nod. +<<He>> claps in excitement. +"Fantastic! You can work whenever we're open. I know you'll need to fit it around other commitments. +I'll get whatever ingredients you need. This could be the start of something big." <br><br> <<endevent>> @@ -225,30 +236,30 @@ You begin by mixing the ingredients in a bowl, before kneading the resulting dou You reach beneath the table, and haul out a <<person>>. <<if $rng gte 51>> -You don't recognise <<him>>. <<He>> regards you with fear. -<br><br> + You don't recognise <<him>>. <<He>> regards you with fear. + <br><br> -<<link [[Let them go|Chef Thief Let]]>><<famegood 1>><</link>> -<br> -<<link [[Take back the bun|Chef Thief Take]]>><</link>> -<br> -<<if $money gte 5000>> - <<link [[Buy them the bun (£50)|Chef Thief Buy]]>><<famegood 2>><<set $money -= 5000>><<trauma -6>><<famegood 2>><</link>><<ltrauma>> + <<link [[Let them go|Chef Thief Let]]>><<famegood 1>><</link>> <br> -<</if>> + <<link [[Take back the bun|Chef Thief Take]]>><</link>> + <br> + <<if $money gte 5000>> + <<link [[Buy them the bun (£50)|Chef Thief Buy]]>><<famegood 2>><<set $money -= 5000>><<trauma -6>><<famegood 2>><</link>><<ltrauma>> + <br> + <</if>> <<else>> -You recognise <<him>> from the orphanage. <<He>> looks frightened at first, but <<his>> expression eases when <<he>> looks at you. -<br><br> + You recognise <<him>> from the orphanage. <<He>> looks frightened at first, but <<his>> expression eases when <<he>> looks at you. + <br><br> -<<link [[Let them go|Chef Thief Let]]>><<hope 1>><<famegood 1>><</link>><<ghope>> -<br> -<<link [[Take back the bun|Chef Thief Take]]>><<hope -1>><</link>><<lhope>> -<br> -<<if $money gte 5000>> - <<link [[Buy them the bun (£50)|Chef Thief Buy]]>><<famegood 2>><<hope 1>><<set $money -= 5000>><<trauma -6>><<famegood 2>><</link>><<ghope>><<ltrauma>> + <<link [[Let them go|Chef Thief Let]]>><<hope 1>><<famegood 1>><</link>><<ghope>> <br> -<</if>> + <<link [[Take back the bun|Chef Thief Take]]>><<hope -1>><</link>><<lhope>> + <br> + <<if $money gte 5000>> + <<link [[Buy them the bun (£50)|Chef Thief Buy]]>><<famegood 2>><<hope 1>><<set $money -= 5000>><<trauma -6>><<famegood 2>><</link>><<ghope>><<ltrauma>> + <br> + <</if>> <</if>> @@ -314,7 +325,7 @@ You hear them escape the way they came. <<effectsman>><<man>> <<if $alarm is 1 and $rescue isnot 1>> -"Stop causing a fuss in there," you hear Sam say through the door. + "Stop causing a fuss in there," you hear Sam say through the door. <</if>> <<stateman>> @@ -322,54 +333,53 @@ You hear them escape the way they came. <<actionsman>> <<if $enemyhealth lte 0>> -<span id="next"><<link [[Next|Chef Work Rape Finish]]>><</link>></span><<nexttext>> + <span id="next"><<link [[Next|Chef Work Rape Finish]]>><</link>></span><<nexttext>> <<elseif $enemyarousal gte $enemyarousalmax>> -<span id="next"><<link [[Next|Chef Work Rape Finish]]>><</link>></span><<nexttext>> + <span id="next"><<link [[Next|Chef Work Rape Finish]]>><</link>></span><<nexttext>> <<elseif $alarm is 1 and $rescue is 1>> -<span id="next"><<link [[Next|Chef Work Rape Finish]]>><</link>></span><<nexttext>> + <span id="next"><<link [[Next|Chef Work Rape Finish]]>><</link>></span><<nexttext>> <<else>> -<span id="next"><<link [[Next|Chef Work Rape]]>><</link>></span><<nexttext>> + <span id="next"><<link [[Next|Chef Work Rape]]>><</link>></span><<nexttext>> <</if>> :: Chef Work Rape Finish <<effects>> <<if $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> + <<ejaculation>> -"Break's over," <<he>> says. <<He>> leaves the way <<he>> came. -<br><br> + "Break's over," <<he>> says. <<He>> leaves the way <<he>> came. + <br><br> -<<tearful>> you prepare to continue cooking. -<br><br> + <<tearful>> you prepare to continue cooking. + <br><br> -<<clothesontowel>> -<<endcombat>> + <<clothesontowel>> + <<endcombat>> <<elseif $enemyhealth lte 0>> + "Fuck," the <<person>> manages, clutching <<his>> side and stumbling the way <<he>> came. + <br><br> -"Fuck," the <<person>> manages, clutching <<his>> side and stumbling the way <<he>> came. -<br><br> - -<<tearful>> you prepare to continue cooking. -<br><br> + <<tearful>> you prepare to continue cooking. + <br><br> -<<clothesontowel>> -<<endcombat>> + <<clothesontowel>> + <<endcombat>> <<else>> -<<set $rescued += 1>> + <<set $rescued += 1>> -Sam enters the room. The <<person>> backs away from you. "It was <<pher>> idea," <<he>> lies. "I'm going." <<He>> leaves the way <<he>> came. -<br><br> -Sam gives you a suspicious glance before heading back to the main room. -<<set $NPCName[$NPCNameList.indexOf("Sam")].love -= 1>><<llove>> -<br><br> + Sam enters the room. The <<person>> backs away from you. "It was <<pher>> idea," <<he>> lies. "I'm going." <<He>> leaves the way <<he>> came. + <br><br> + Sam gives you a suspicious glance before heading back to the main room. + <<npcincr Sam love -1>><<llove>> + <br><br> -<<tearful>> you prepare to continue cooking. -<br><br> + <<tearful>> you prepare to continue cooking. + <br><br> -<<clothesontowel>> -<<endcombat>> + <<clothesontowel>> + <<endcombat>> <</if>> @@ -393,15 +403,15 @@ You make sure you're alone in the kitchen, and place a bowl in front of you. <<masturbationactions>> <<if $timer gte 50>> -<span class="teal">Sam is occupied.</span> + <span class="teal">Sam is occupied.</span> <<elseif $timer gte 40>> -<span class="lblue">Sam is occupied.</span> + <span class="lblue">Sam is occupied.</span> <<elseif $timer gte 30>> -<span class="blue">Sam will want to check on you soon.</span> + <span class="blue">Sam will want to check on you soon.</span> <<elseif $timer gte 20>> -<span class="purple">You hear Sam chatting near the door.</span> + <span class="purple">You hear Sam chatting near the door.</span> <<else>> -<span class="pink">You hear Sam right outside the door!</span> + <span class="pink">You hear Sam right outside the door!</span> <</if>> <br> <<masturbationbowl>> @@ -429,15 +439,14 @@ You make sure you're alone in the kitchen, and place a bowl in front of you. <<endcombat>> <<clothesontowel>> <<if !$chef_event>> -<<set $chef_event to 20>> + <<set $chef_event to 20>> <<else>> -<<set $chef_event += 20>> + <<set $chef_event += 20>> <</if>> <<npc Sam>><<person1>> <<if $masturbation_fluid gte 30>> - <<if _temp_timer lte 10>> Sam barges through the door. You barely cover yourself in time. <<He>> frowns. "Just checking up on you," <<he>> says. <br><br> @@ -446,35 +455,34 @@ You make sure you're alone in the kitchen, and place a bowl in front of you. <br><br> <</if>> -<<set _buns_sold to Math.floor(($masturbation_fluid / 30))>> -You add your fluid to the mixture, and whip up a new batch of cream. You have enough to make <<number _buns_sold>> buns. -<br><br> -Sam arrives as you finish adding the cream, drawn by the smell. <<He>> leans over them, closes <<his>> eyes, and sniffs. + <<set _buns_sold to Math.floor(($masturbation_fluid / 30))>> + You add your fluid to the mixture, and whip up a new batch of cream. You have enough to make <<number _buns_sold>> buns. + <br><br> + Sam arrives as you finish adding the cream, drawn by the smell. <<He>> leans over them, closes <<his>> eyes, and sniffs. <<if _buns_sold gte 30>> - "Marvelous," <<he>> says, staring in awe at the mountain in front of <<him>>. "This might be enough to satisfy demand. Good job!" + "Marvelous," <<he>> says, staring in awe at the mountain in front of <<him>>. "This might be enough to satisfy demand. Good job!" <<elseif _buns_sold gte 20>> - "Marvelous," <<he>> says, licking <<his>> lips. "You've been very busy. Our customers will be happy." + "Marvelous," <<he>> says, licking <<his>> lips. "You've been very busy. Our customers will be happy." <<elseif _buns_sold gte 10>> - "Marvelous," <<he>> says, licking <<his>> lips. "Good job. Our customers will be happy." + "Marvelous," <<he>> says, licking <<his>> lips. "Good job. Our customers will be happy." <<elseif _buns_sold gte 4>> - "Marvelous," <<he>> says, licking <<his>> lips. "A nice batch. Our customers will be happy." + "Marvelous," <<he>> says, licking <<his>> lips. "A nice batch. Our customers will be happy." <<elseif _buns_sold gte 3>> - "Marvelous," <<he>> says, licking <<his>> lips. "Three customers are going to be happy." + "Marvelous," <<he>> says, licking <<his>> lips. "Three customers are going to be happy." <<elseif _buns_sold gte 2>> - "Marvelous," <<he>> says, licking <<his>> lips. "Shame there's only a couple. Our customers might need to draw lots." + "Marvelous," <<he>> says, licking <<his>> lips. "Shame there's only a couple. Our customers might need to draw lots." <<else>> - "Marvelous," <<he>> says. "Shame there's only one. I hope a fight doesn't break out!" + "Marvelous," <<he>> says. "Shame there's only one. I hope a fight doesn't break out!" <</if>> -<br><br> + <br><br> -<<He>> carries the buns into the cafe proper. You hear someone cheer as <<he>> enters. -<br><br> + <<He>> carries the buns into the cafe proper. You hear someone cheer as <<he>> enters. + <br><br> -<<sellbuns>> + <<sellbuns>> <<else>> - <<if _temp_timer lte 10>> Sam barges through the door. You barely cover yourself in time. <<He>> frowns. "Just checking up on you," <<he>> says. <br><br> @@ -483,13 +491,14 @@ Sam arrives as you finish adding the cream, drawn by the smell. <<He>> leans ove <br><br> <</if>> -You make the buns without special ingredients, using Sam's recipe. A <<if $rng gte 51>>waiter<<else>>waitress<</if>> arrives to collect the fresh batch. -<br><br> -You're cleaning up when Sam enters the kitchen. "Buns aren't selling today," <<he>> says, deflated. "They didn't have the smell of your good ones. I don't want to be pushy, but I know you can do better." -<br><br> + You make the buns without special ingredients, using Sam's recipe. A <<print either("waiter", "waitress")>> arrives to collect the fresh batch. + <br><br> + You're cleaning up when Sam enters the kitchen. + "Buns aren't selling today," <<he>> says, deflated. "They didn't have the smell of your good ones. I don't want to be pushy, but I know you can do better." + <br><br> -"Still," <<he>> continues. "You've earned this." <<He>> hands you <<moneyGain 10>>. -<br><br> + "Still," <<he>> continues. "You've earned this." <<He>> hands you <<moneyGain 10>>. + <br><br> <</if>> @@ -505,9 +514,10 @@ You're cleaning up when Sam enters the kitchen. "Buns aren't selling today," <<h <<npc Sam>><<person1>> <<pass 60>> -You prepare the cream following Sam's recipe. A <<if $rng gte 51>>waiter<<else>>waitress<</if>> arrives to collect the fresh batch. +You prepare the cream following Sam's recipe. A <<print either("waiter","waitress")>> arrives to collect the fresh batch. <br><br> -You're cleaning up when Sam enters the kitchen. "Buns aren't selling today," <<he>> says, deflated. "They didn't have the smell of your good ones. I don't want to be pushy, but I know you can do better." +You're cleaning up when Sam enters the kitchen. +"Buns aren't selling today," <<he>> says, deflated. "They didn't have the smell of your good ones. I don't want to be pushy, but I know you can do better." <br><br> "Still," <<he>> continues. "You've earned this." <<He>> hands you <<moneyGain 10>>. @@ -521,19 +531,22 @@ You're cleaning up when Sam enters the kitchen. "Buns aren't selling today," <<h :: Chef Photographer <<set $outside to 0>><<set $location to "cafe">><<effects>> -<<npc Sam>><<person1>>You approach Sam. <<He>> hunches over a table, wiping it. <<He>> smiles when <<he>> sees you. "Have you thought about my suggestion?" <<he>> asks. +<<npc Sam>><<person1>> +You approach Sam. <<He>> hunches over a table, wiping it. <<He>> smiles when <<he>> sees you. "Have you thought about my suggestion?" <<he>> asks. <br><br> <<set $chef_state to 4>> <<if $submissive gte 1150>> -You nod. "It's very kind of you to offer," you say. "I'd be happy to help." + You nod. "It's very kind of you to offer," you say. "I'd be happy to help." <<elseif $submissive lte 850>> -You nod. "As long as you're sure the photographer isn't some pervert," you say. "I'm in." + You nod. "As long as you're sure the photographer isn't some pervert," you say. "I'm in." <<else>> -You nod. "I'm in," you say. + You nod. "I'm in," you say. <</if>> <br><br> -Sam claps <<his>> hands together. "I'm so happy to hear it," <<he>> says. "Good timing too. The photographer just called with an address." <<He>> hands you a slip of paper. "They have a studio on <span class="gold">Nightingale Street.</span> Head on over when you're ready, and just let them know who you are." +Sam claps <<his>> hands together. "I'm so happy to hear it," <<he>> says. "Good timing too. The photographer just called with an address." +<<He>> hands you a slip of paper. +"They have a studio on <span class="gold">Nightingale Street.</span> Head on over when you're ready, and just let them know who you are." <br><br> Sam returns to work, whistling all the while. <br><br> @@ -561,7 +574,8 @@ You follow the <<person>> out the back, and cross the street. <<He>> takes you t :: Chef Opening 2 <<set $outside to 0>><<set $location to "town">><<effects>> -<<He>> turns to you once inside. "Lots of important people will be coming tonight," <<he>> says. "People from outside town." <<He>> looks around, as if afraid <<hes>> being watched. "You need to tell them about Bailey. And the orphanage. I don't think we'll get another chance like this." +<<He>> turns to you once inside. "Lots of important people will be coming tonight," <<he>> says. "People from outside town." +<<He>> looks around, as if afraid <<hes>> being watched. "You need to tell them about Bailey. And the orphanage. I don't think we'll get another chance like this." <br><br> <<He>> looks at <<his>> feet. "I'm sorry," <<he>> says. "I shouldn't have said anything. It's not fair for you to take such a risk." @@ -582,33 +596,37 @@ You enter the next room. The <<person1>><<person>> shuffles in behind you. "You'll need to dress nicely," the <<person2>><<person>> says. <<if $worn.upper.type.includes("formal") and $worn.lower.type.includes("formal")>> -"It looks like you've got that covered though. We went ahead and got an outfit for you, should you prefer it." <<He>> gestures at a rack near the window, where a red ball gown hangs beside a tuxedo shirt, jacket and trousers. -<br><br> + "It looks like you've got that covered though. We went ahead and got an outfit for you, should you prefer it." + <<He>> gestures at a rack near the window, where a red ball gown hangs beside a tuxedo shirt, jacket and trousers. + <br><br> -<<link [[Wear current clothes|Chef Opening Current]]>><</link>> -<br> -<<link [[Wear gown|Chef Opening Gown]]>><</link>> -<br> -<<link [[Wear tux|Chef Opening Tuxedo]]>><</link>> -<br> + <<link [[Wear current clothes|Chef Opening Current]]>><</link>> + <br> + <<link [[Wear gown|Chef Opening Gown]]>><</link>> + <br> + <<link [[Wear tux|Chef Opening Tuxedo]]>><</link>> + <br> <<else>> -"We went and got an outfit for you," <<he>> gestures at a rack near the window, where a red ball gown hangs beside a tuxedo shirt, jacket and trousers. -<br><br> -<<link [[Wear gown|Chef Opening Gown]]>><</link>> -<br> -<<link [[Wear tux|Chef Opening Tuxedo]]>><</link>> -<br> + "We went and got an outfit for you," <<he>> gestures at a rack near the window, where a red ball gown hangs beside a tuxedo shirt, jacket and trousers. + <br><br> + <<link [[Wear gown|Chef Opening Gown]]>><</link>> + <br> + <<link [[Wear tux|Chef Opening Tuxedo]]>><</link>> + <br> <</if>> :: Chef Opening Current <<set $outside to 0>><<set $location to "town">><<effects>> -The <<person2>><<person>> nods. "One moment," <<he>> says, leaving the room. <<He>> returns soon after, carrying a large mirror. The <<person1>><<person>> pushes a chair in front of it, and the <<person2>><<person>> gestures for you to take a seat. +The <<person2>><<person>> nods. "One moment," <<he>> says, leaving the room. +<<He>> returns soon after, carrying a large mirror. +The <<person1>><<person>> pushes a chair in front of it, and the <<person2>><<person>> gestures for you to take a seat. <br><br> -You sit still as the <<person>> and <<person2>><<person>> carefully apply makeup and trim your hair. It takes a while. "Sam wants you looking your best," the <<person2>><<person>> says. "A lot of people will be there." +You sit still as the <<person>> and <<person2>><<person>> carefully apply makeup and trim your hair. +It takes a while. "Sam wants you looking your best," the <<person2>><<person>> says. "A lot of people will be there." <br><br> <<pass 60>> @@ -620,9 +638,9 @@ You sit still as the <<person>> and <<person2>><<person>> carefully apply makeup <<set $outside to 0>><<set $location to "town">><<effects>> <<if $player.gender_appearance is "m">> -The <<person>> laughs. "I meant the other one," <<he>> says. "But as you like. You're the star." + The <<person>> laughs. "I meant the other one," <<he>> says. "But as you like. You're the star." <<else>> -I bet it'll look cute on you," the <<person>> says. + I bet it'll look cute on you," the <<person>> says. <</if>> <br><br> @@ -631,7 +649,8 @@ I bet it'll look cute on you," the <<person>> says. You get dressed in a large cupboard. The <<person1>><<person>> claps when <<he>> sees you. They've set up a tall mirror, and pushed a chair in front of it. <br><br> -You sit still as the <<person>> and <<person2>><<person>> carefully apply makeup and trim your hair. It takes a while. "Sam wants you looking your best," the <<person2>><<person>> says. "A lot of people will be there." +You sit still as the <<person>> and <<person2>><<person>> carefully apply makeup and trim your hair. It takes a while. +"Sam wants you looking your best," the <<person2>><<person>> says. "A lot of people will be there." <br><br> <<pass 60>> @@ -643,9 +662,9 @@ You sit still as the <<person>> and <<person2>><<person>> carefully apply makeup <<set $outside to 0>><<set $location to "town">><<effects>> <<if $player.gender_appearance is "f">> -The <<person>> laughs. "I meant the other one," <<he>> says. "But as you like. You're the star." + The <<person>> laughs. "I meant the other one," <<he>> says. "But as you like. You're the star." <<else>> -I bet it'll look cute on you," the <<person>> says. + I bet it'll look cute on you," the <<person>> says. <</if>> <br><br> @@ -655,7 +674,8 @@ I bet it'll look cute on you," the <<person>> says. You get dressed in a large cupboard. The <<person1>><<person>> claps when <<he>> sees you. They've set up a tall mirror, and pushed a chair in front of it. <br><br> -You sit still as the <<person>> and <<person2>><<person>> carefully apply makeup and trim your hair. It takes a while. "Sam wants you looking your best," the <<person2>><<person>> says. "A lot of people will be there." +You sit still as the <<person>> and <<person2>><<person>> carefully apply makeup and trim your hair. +It takes a while. "Sam wants you looking your best," the <<person2>><<person>> says. "A lot of people will be there." <br><br> <<pass 60>> @@ -679,7 +699,8 @@ A limo waits for you outside. A <<generate3>><<person3>><<person>> opens the doo :: Chef Opening 5 <<set $outside to 0>><<set $location to "cafe">><<effects>> -The limo approaches the cafe. You look out the window, and see a large crowd gathered beneath a giant picture, mounted above the cafe entrance. It's a picture of you, smiling beneath a chef's hat and pouring <<if $chef_picture is "lewd">>"cream"<<else>>cream<</if>> down your chest from a ladle. +The limo approaches the cafe. You look out the window, and see a large crowd gathered beneath a giant picture, mounted above the cafe entrance. +It's a picture of you, smiling beneath a chef's hat and pouring <<if $chef_picture is "lewd">>"cream"<<else>>cream<</if>> down your chest from a ladle. <br><br> <<if $chef_picture is "lewd">> @@ -688,23 +709,26 @@ The limo approaches the cafe. You look out the window, and see a large crowd gat <br><br> <</if>> <<if $NPCName[$NPCNameList.indexOf("Avery")].state is "active">> - The limo halts, and a <<if $rng gte 51>>waiter<<else>>waitress<</if>> opens the door. You're met by applause. + The limo halts, and a <<print either("waiter", "waitress")>> opens the door. You're met by applause. <<llltrauma>><<trauma -24>> <br><br> - You're walking down the red carpet when a figure appears at your side.<<npc Avery>><<person1>> It's Avery. "I had no idea you were a culinary prodigy," <<he>> says. "I was surprised to see your face up in lights." <<He>> holds out <<his>> hand. "Let me walk you in." + You're walking down the red carpet when a figure appears at your side. + <<npc Avery>><<person1>> It's Avery. "I had no idea you were a culinary prodigy," <<he>> says. "I was surprised to see your face up in lights." + <<He>> holds out <<his>> hand. "Let me walk you in." <br><br> - <<link [[Take Avery's hand|Chef Opening Avery Accept]]>><<set $chef_avery to 1>><<npcincr Avery love 1>><</link>><<glove>> + <<link [[Take Avery's hand|Chef Opening Avery Accept]]>><<set $chef_avery to true>><<npcincr Avery love 1>><</link>><<glove>> <br> - <<link [[Refuse Avery's hand|Chef Opening Avery Refuse]]>><<npcincr Avery love -1>><<npcincr Avery rage 5>><</link>><<garage>><<llove>> + <<link [[Refuse Avery's hand|Chef Opening Avery Refuse]]>><<set $chef_avery to false>><<npcincr Avery love -1>><<npcincr Avery rage 5>><</link>><<garage>><<llove>> <br> <<else>> - The limo halts, and a <<if $rng gte 51>>waiter<<else>>waitress<</if>> opens the door. You're met by applause. + The limo halts, and a <<print either("waiter", "waitress")>> opens the door. You're met by applause. <<llltrauma>><<trauma -24>> <br><br> - You walk down the red carpet. You recognise Niki among them. <<npc Sam>><<person1>> Sam meets you at the entrance, wearing <<his>> <<if $pronoun is "m">>suit and tie<<else>>red dress<</if>>. + You walk down the red carpet. You recognise Niki among them. + <<npc Sam>><<person1>> Sam meets you at the entrance, wearing <<his>> <<if $pronoun is "m">>suit and tie<<else>>red dress<</if>>. <br><br> "This is everything I've wished for," <<he>> says. "Thank you for making it come true." <<He>> hugs you, eliciting a greater cheer from the audience. - <<gglove>><<set $NPCName[$NPCNameList.indexOf("Sam")].love += 3>> + <<gglove>><<npcincr Sam love 3>> <br><br> <<endevent>> <<link [[Next|Chef Opening 6]]>><</link>> @@ -722,7 +746,7 @@ You take Avery's hand, and together you walk down the red carpet. Several photog <br><br> "This is everything I've wished for," <<he>> says. "Thank you for making it come true." <<He>> hugs you, eliciting a greater cheer from the audience. -<<gglove>><<set $NPCName[$NPCNameList.indexOf("Sam")].love += 3>> +<<gglove>><<npcincr Sam love 3>> <br><br> <<endevent>> @@ -732,14 +756,15 @@ You take Avery's hand, and together you walk down the red carpet. Several photog :: Chef Opening Avery Refuse <<set $outside to 0>><<set $location to "cafe">><<effects>> -You turn your back on Avery. You hear <<him>> take a step after you, but doesn't follow further. You walk down the red carpet. Several photographers snap pictures. You recognise Niki among them. +You turn your back on Avery. You hear <<him>> take a step after you, but doesn't follow further. +You walk down the red carpet. Several photographers snap pictures. You recognise Niki among them. <br><br> <<endevent>><<npc Sam>><<person1>> Sam meets you at the entrance, wearing <<his>> <<if $pronoun is "m">>suit and tie<<else>>red dress<</if>>. <br><br> "This is everything I've wished for," <<he>> says. "Thank you for making it come true." <<He>> hugs you, eliciting a greater cheer from the audience. -<<gglove>><<set $NPCName[$NPCNameList.indexOf("Sam")].love += 3>> +<<gglove>><<npcincr Sam love 3>> <br><br> <<endevent>> @@ -749,21 +774,28 @@ You turn your back on Avery. You hear <<him>> take a step after you, but doesn't :: Chef Opening 6 <<set $outside to 0>><<set $location to "cafe">><<effects>> <<earnFeat "Head Chief">> -You walk through the fancy doors, entering the cafe proper. More people await you. Another cheer erupts. A podium has been set up near the entrance, viewable from nearly everywhere in the building. +You walk through the fancy doors, entering the cafe proper. More people await you. Another cheer erupts. +A podium has been set up near the entrance, viewable from nearly everywhere in the building. <br><br> -<<npc Bailey>><<person1>> -Someone grasps your arm. <span class="purple">It's Bailey.</span> <<He>> gives you <<his>> best smile. It doesn't look sincere. "You've done well," <<he>> says through <<his>> teeth. "Now don't fuck it up." +<<npc Bailey>><<npc Avery>> +<<person1>> +Someone grasps your arm. <span class="purple">It's Bailey.</span> +<<He>> gives you <<his>> best smile. It doesn't look sincere. "You've done well," <<he>> says through <<his>> teeth. "Now don't fuck it up." <br><br> -<<if $chef_avery is 1>><<unset $chef_avery>> - <<if $bailey_avery_met isnot 1>><<set $bailey_avery_met to 1>> - Avery grasps Bailey's hand, and forcefully shakes it. "I'm Avery," <<endevent>><<npc Avery>><<person1>><<he>> says, a hint of anger in <<his>> voice. "I don't believe we've met." +<<if $chef_avery>> + <<if $bailey_avery_met isnot 1>> + <<set $bailey_avery_met to 1>> + Avery grasps Bailey's hand, and forcefully shakes it. + "I'm Avery," <<person2>><<he>> says, a hint of anger in <<his>> voice. "I don't believe we've met." <br><br> - Your heart skips a beat as Bailey reaches into <<endevent>><<npc Bailey>><<person1>><<his>> jacket, but <<his>> arm changes course. <<He>> pulls a handkerchief from <<his>> pocket. "A pleasure," <<he>> says. "I was talking to my ward. Please, a moment's privacy." + Your heart skips a beat as Bailey reaches into <<person1>><<his>> jacket, but <<his>> arm changes course. + <<He>> pulls a handkerchief from <<his>> pocket. "A pleasure," <<he>> says. "I was talking to my ward. Please, a moment's privacy." <br><br> - They stare at each other, until Avery turns to you. "I've some old friends I need to catch up with," <<endevent>><<npc Avery>><<person1>><<he>> says. "And I'm sure many others want some time with you." + They stare at each other, until Avery turns to you. "I've some old friends I need to catch up with," <<person2>><<he>> says. + "And I'm sure many others want some time with you." <br><br> - Bailey watches <<him>> leave, wiping <<endevent>><<npc Bailey>><<person1>><<his>> hand with the handkerchief. + Bailey watches <<him>> leave, wiping <<person1>><<his>> hand with the handkerchief. <br><br> <<link [[Slap Bailey|Chef Opening Bailey Slap]]>><<trauma -6>><</link>><<ltrauma>> @@ -773,13 +805,16 @@ Someone grasps your arm. <span class="purple">It's Bailey.</span> <<He>> gives y <<link [[Remain silent|Chef Opening Bailey Silent]]>><</link>> <br> <<else>> - Avery grasps Bailey's hand, and forcefully shakes it. "It's good to see you again," <<endevent>><<npc Avery>><<person1>><<he>> says, a hint of anger in <<his>> voice. + Avery grasps Bailey's hand, and forcefully shakes it. + "It's good to see you again," <<person2>><<he>> says, a hint of anger in <<his>> voice. <br><br> - Your heart skips a beat as Bailey reaches into <<endevent>><<npc Bailey>><<person1>><<his>> jacket, but <<his>> arm changes course. <<He>> pulls a handkerchief from <<his>> pocket. "A pleasure," <<he>> says. "I was talking to my ward. Please, a moment's privacy." + Your heart skips a beat as Bailey reaches into <<person1>><<his>> jacket, but <<his>> arm changes course. + <<He>> pulls a handkerchief from <<his>> pocket. "A pleasure," <<he>> says. "I was talking to my ward. Please, a moment's privacy." <br><br> - They stare at each other, until Avery turns to you. "I've some old friends I need to catch up with," <<endevent>><<npc Avery>><<person1>><<he>> says. "And I'm sure many others want some time with you." + They stare at each other, until Avery turns to you. "I've some old friends I need to catch up with," <<person2>><<he>> says. + "And I'm sure many others want some time with you." <br><br> - Bailey watches <<him>> leave, wiping <<endevent>><<npc Bailey>><<person1>><<his>> hand with the handkerchief. + Bailey watches <<him>> leave, wiping <<person1>><<his>> hand with the handkerchief. <br><br> <<link [[Slap Bailey|Chef Opening Bailey Slap]]>><<trauma -6>><<control 10>><</link>><<gcontrol>><<ltrauma>> @@ -790,17 +825,18 @@ Someone grasps your arm. <span class="purple">It's Bailey.</span> <<He>> gives y <br> <</if>> <<else>> -Bailey looks away from you. You realise that, for the first time since your arrival, you're no longer the centre of attention. -<br><br> -<<endevent>> -<<link [[Next|Chef Opening 7]]>><</link>> -<br> + Bailey looks away from you. You realise that, for the first time since your arrival, you're no longer the centre of attention. + <br><br> + <<endevent>> + <<link [[Next|Chef Opening 7]]>><</link>> + <br> <</if>> :: Chef Opening Bailey Slap <<set $outside to 0>><<set $location to "cafe">><<effects>> -You slap Bailey across the cheek. <<He>> barely flinches. The room quiets for a moment, before breaking into laughter and excitement. Bailey leans closer, <<his>> face contorted by that fake smile. +You slap Bailey across the cheek. <<He>> barely flinches. +The room quiets for a moment, before breaking into laughter and excitement. Bailey leans closer, <<his>> face contorted by that fake smile. <br><br> "Best not try that when we're alone," <<he>> whispers. "You're worth more with both hands attached." @@ -817,11 +853,11 @@ You slap Bailey across the cheek. <<He>> barely flinches. The room quiets for a <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $submissive gte 1150>> -"Thank you," you say. "Avery can be scary." + "Thank you," you say. "Avery can be scary." <<elseif $submissive lte 850>> -"Thanks," you say. "You've made my evening slightly less unpleasant." + "Thanks," you say. "You've made my evening slightly less unpleasant." <<else>> -"Thank you," you say. "I needed some space." + "Thank you," you say. "I needed some space." <</if>> <br><br> @@ -839,11 +875,14 @@ Bailey leans in. "When you deliver your speech," <<he>> whispers. "Don't say any <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $submissive gte 1150>> -You don't say anything. You just stare at your feet. Bailey looks away from you. You realise that, for the first time since your arrival, you're no longer the centre of attention. + You don't say anything. You just stare at your feet. Bailey looks away from you. + You realise that, for the first time since your arrival, you're no longer the centre of attention. <<elseif $submissive lte 850>> -You glare at Bailey, but don't say anything. <<He>> looks away from you. You realise that, for the first time since your arrival, you're no longer the centre of attention. + You glare at Bailey, but don't say anything. <<He>> looks away from you. + You realise that, for the first time since your arrival, you're no longer the centre of attention. <<else>> -You remain silent. Bailey seems satisfied. <<He>> looks away from you. You realise that, for the first time since your arrival, you're no longer the centre of attention. + You remain silent. Bailey seems satisfied. <<He>> looks away from you. + You realise that, for the first time since your arrival, you're no longer the centre of attention. <</if>> <br><br> <<endevent>> @@ -852,32 +891,41 @@ You remain silent. Bailey seems satisfied. <<He>> looks away from you. You reali :: Chef Opening 7 <<set $outside to 0>><<set $location to "cafe">><<effects>> -<<if $NPCName[$NPCNameList.indexOf("Quinn")].init is 1>> +<<unset $chef_avery>> -<<npc Quinn>><<person1>>Mayor Quinn enters the cafe. <<He>> passes <<his>> <<if $pronoun is "f">>fur <</if>> coat to a <<if $rng gte 51>>waiter<<else>>waitress<</if>>, and poses for a photographer. -<br><br> +<<npc Quinn>><<person1>> +<<if $NPCName[$NPCNameList.indexOf("Quinn")].init is 1>> + Mayor Quinn enters the cafe. + <<He>> passes <<his>> <<if $pronoun is "f">>fur <</if>> coat to a <<print either("waiter", "waitress")>>, and poses for a photographer. + <br><br> -<<He>> looks around the room, <<his>> gaze settling on you. Pushing through the gathered crowd, <<he>> makes <<his>> way over. "It's good to see you again," <<he>> says, grasping your hand and shaking it. -<br><br> + <<He>> looks around the room, <<his>> gaze settling on you. + Pushing through the gathered crowd, <<he>> makes <<his>> way over. + "It's good to see you again," <<he>> says, grasping your hand and shaking it. + <br><br> <<else>> + A middle-aged <<personsimple>> enters the cafe. + <<He>> passes <<his>> <<if $pronoun is "f">>fur <</if>> coat to a <<print either("waiter", "waitress")>>, and poses for a photographer. + <br><br> -<<npc Quinn>><<person1>>A middle-aged <<personsimple>> enters the cafe. <<He>> passes <<his>> <<if $pronoun is "f">>fur <</if>> coat to a <<if $rng gte 51>>waiter<<else>>waitress<</if>>, and poses for a photographer. -<br><br> - -<<He>> looks around the room. <<His>> gaze settles on you. Pushing through the gathered crowd, <<he>> makes <<his>> way over. "You must be the star of the show," <<he>> says, grasping your hand and shaking it. "I'm Quinn." You recognise the name. <span class="red"><<Hes>> the mayor.</span> -<br><br> - + <<He>> looks around the room. <<His>> gaze settles on you. + Pushing through the gathered crowd, <<he>> makes <<his>> way over. + "You must be the star of the show," <<he>> says, grasping your hand and shaking it. + "I'm Quinn." You recognise the name. <span class="red"><<Hes>> the mayor.</span> + <br><br> <</if>> -Bailey leans in and whispers something to Quinn. The mayor laughs. "Nonsense," <<he>> says. "The speech will go ahead." Quinn grasps your arm again, and pulls you beside <<him>>. Niki appears from the crowd, camera in hand. +Bailey leans in and whispers something to Quinn. +The mayor laughs. "Nonsense," <<he>> says. "The speech will go ahead." +Quinn grasps your arm again, and pulls you beside <<him>>. Niki appears from the crowd, camera in hand. <br><br> -<<link [[Smile for the camera|Chef Opening Smile]]>><<set $NPCName[$NPCNameList.indexOf("Quinn")].love += 1>><<famebusiness 50 pic>><</link>> +<<link [[Smile for the camera|Chef Opening Smile]]>><<npcincr Quinn love 1>><<famebusiness 50 pic>><</link>> <br> -<<link [[Pull a funny face|Chef Opening Funny]]>><<set $NPCName[$NPCNameList.indexOf("Quinn")].love += 1>><</link>> +<<link [[Pull a funny face|Chef Opening Funny]]>><<npcincr Quinn love 1>><</link>> <br> -<<link [[Refuse to be photographed|Chef Opening Refuse Photograph]]>><<set $NPCName[$NPCNameList.indexOf("Quinn")].love -= 1>><</link>> +<<link [[Refuse to be photographed|Chef Opening Refuse Photograph]]>><<npcincr Quinn love -1>><</link>> <br> :: Chef Opening Smile @@ -887,7 +935,8 @@ You smile with Quinn as Niki takes your picture. Quinn holds up your hand, elici <br><br> "Good luck up there," Quinn says, turning back to you. Someone passes <<him>> a glass of champagne. "Though I'm sure you don't need it." <br><br> -Bailey whispers something else, and Quinn frowns. "Excuse me," <<he>> says, as much to the crowd as to you. Bailey and Quinn walk away from the crowd, talking. You can't make out what they're saying. +Bailey whispers something else, and Quinn frowns. "Excuse me," <<he>> says, as much to the crowd as to you. +Bailey and Quinn walk away from the crowd, talking. You can't make out what they're saying. <br><br> <<endevent>> @@ -897,11 +946,13 @@ Bailey whispers something else, and Quinn frowns. "Excuse me," <<he>> says, as m :: Chef Opening Funny <<set $outside to 0>><<set $location to "cafe">><<effects>> -You pull a funny face as Niki takes your picture. Someone in the audience laughs. Quinn glances at you, and laughs <<himself>>. <<He>> holds up your hand, eliciting a cheer for the gathering crowd. +You pull a funny face as Niki takes your picture. Someone in the audience laughs. +Quinn glances at you, and laughs <<himself>>. <<He>> holds up your hand, eliciting a cheer for the gathering crowd. <br><br> "Good luck up there," Quinn says, turning back to you. Someone passes <<him>> a glass of champagne. "Though I'm sure you don't need it." <br><br> -Bailey whispers something else, and Quinn frowns. "Excuse me," <<he>> says, as much to the crowd as to you. Bailey and Quinn walk away from the crowd, talking. You can't make out what they're saying. +Bailey whispers something else, and Quinn frowns. "Excuse me," <<he>> says, as much to the crowd as to you. +Bailey and Quinn walk away from the crowd, talking. You can't make out what they're saying. <br><br> <<endevent>> @@ -915,7 +966,8 @@ You wrest yourself free from Quinn's grip. Niki looks at the mayor, unsure what <br><br> "Good luck up there," Quinn says, turning back to you. Someone passes <<him>> a glass of champagne. "Though I'm sure you don't need it." <br><br> -Bailey whispers something else, and Quinn frowns. "Excuse me," <<he>> says, as much to the crowd as to you. Bailey and Quinn walk away from the crowd, talking. You can't make out what they're saying. +Bailey whispers something else, and Quinn frowns. "Excuse me," <<he>> says, as much to the crowd as to you. +Bailey and Quinn walk away from the crowd, talking. You can't make out what they're saying. <br><br> <<endevent>> @@ -926,13 +978,17 @@ Bailey whispers something else, and Quinn frowns. "Excuse me," <<he>> says, as m <<set $outside to 0>><<set $location to "cafe">><<effects>> <<npc Sam>><<person1>> -"That was the mayor!" Sam says, rushing to your side. <<He>> pulls a mirror from <<his>> pocket and checks <<his>> hair. "<<nnpc_He "Quinn">>'ll introduce you when we're ready for your speech. That shouldn't be long now." <<He>> looks around the room. People are finding their seats, and the last of the guests shuffle through the doors. +"That was the mayor!" Sam says, rushing to your side. <<He>> pulls a mirror from <<his>> pocket and checks <<his>> hair. +"<<nnpc_He "Quinn">>'ll introduce you when we're ready for your speech. That shouldn't be long now." +<<He>> looks around the room. People are finding their seats, and the last of the guests shuffle through the doors. <br><br> <<endevent>><<npc Quinn>><<person1>> -You look over at Bailey and Quinn. Bailey seems agitated, but Quinn is more jovial. The mayor chuckles, and pulls <<himself>> away from the conversation. +You look over at Bailey and Quinn. Bailey seems agitated, but Quinn is more jovial. +The mayor chuckles, and pulls <<himself>> away from the conversation. <br><br> <<endevent>><<npc Sam>><<person1>> -"It's happening," Sam says. "Go sit over there. By the podium." <<He>> looks around the room again. "The cream treats should be here by now..." <<He>> rushes into the kitchen, while you take your seat beside the podium. +"It's happening," Sam says. "Go sit over there. By the podium." <<He>> looks around the room again. +"The cream treats should be here by now..." <<He>> rushes into the kitchen, while you take your seat beside the podium. <br><br> <<endevent>> <<link [[Next|Chef Opening 9]]>><</link>> @@ -941,13 +997,16 @@ You look over at Bailey and Quinn. Bailey seems agitated, but Quinn is more jovi :: Chef Opening 9 <<set $outside to 0>><<set $location to "cafe">><<effects>> -You wait as the remaining guests take their seats. It's a large room, and the tables have been packed together quite tightly. Others watch from the second floor, glasses in hand. There are a lot of people here, all dressed for the fanciest of occasions. +You wait as the remaining guests take their seats. It's a large room, and the tables have been packed together quite tightly. +Others watch from the second floor, glasses in hand. There are a lot of people here, all dressed for the fanciest of occasions. <br><br> <<npc Quinn>><<person1>>Quinn steps up to the podium, and the room falls silent. <br><br> -"Good evening, ladies and gentlemen," <<he>> says. "It's my privilege as mayor..." <<He>> talks for a while, about investment opportunities in the town, and <<his>> successes in office. Your mind wanders, but snaps back to attention when <<he>> gestures at you. +"Good evening, ladies and gentlemen," <<he>> says. "It's my privilege as mayor..." +<<He>> talks for a while, about investment opportunities in the town, and <<his>> successes in office. +Your mind wanders, but snaps back to attention when <<he>> gestures at you. <br><br> <<link [[Next|Chef Opening 10]]>><</link>> @@ -958,10 +1017,13 @@ You wait as the remaining guests take their seats. It's a large room, and the ta "Mere months ago this <<girl>> was a normal student, until they discovered a talent for baking. Now," Quinn says "They're the reason we're all here." <br><br> -"I'd also like to thank <<pher>> guardian," Quinn continues, gesturing at Bailey, who perches at the edge of the room. "<<nnpc_His "Bailey">> hard work protecting and caring for the town's most vulnerable has allowed our young prodigy to flourish." Applause fills the room. +"I'd also like to thank <<pher>> guardian," Quinn continues, gesturing at Bailey, who perches at the edge of the room. +"<<nnpc_His "Bailey">> hard work protecting and caring for the town's most vulnerable has allowed our young prodigy to flourish." Applause fills the room. <<gtrauma>><<trauma 6>> <br><br> -Quinn quiets the audience with a wave. "But you've heard enough from me," <<he>> continues. "Our world-class chef has a few words too. It's my absolute pleasure to introduce them." <<He>> steps away from the podium, and waves you up. +Quinn quiets the audience with a wave. +"But you've heard enough from me," <<he>> continues. "Our world-class chef has a few words too. It's my absolute pleasure to introduce them." +<<He>> steps away from the podium, and waves you up. <br><br> <<endevent>> @@ -970,7 +1032,8 @@ Quinn quiets the audience with a wave. "But you've heard enough from me," <<he>> :: Chef Opening 11 <<set $outside to 0>><<set $location to "cafe">><<effects>> -You walk up to the podium. A murmuring fills the room as you do. People hold up their phones, taking pictures. Staff move between tables, offering guests cream treats from platters. They're eager to taste them. You doubt they're anything as tasty as yours. +You walk up to the podium. A murmuring fills the room as you do. People hold up their phones, taking pictures. + Staff move between tables, offering guests cream treats from platters. They're eager to taste them. You doubt they're anything as tasty as yours. <br><br> Everyone watches you, waiting. @@ -980,7 +1043,7 @@ Everyone watches you, waiting. <br> <<link [[Tell them of Bailey's tyranny|Chef Opening Bailey]]>><<set $chef_speech to "bailey">><<hope 10>><</link>><<ggghope>> <br> -<<link [[Praise Sam|Chef Opening Sam]]>><<set $chef_speech to "sam">><<set $NPCName[$NPCNameList.indexOf("Sam")].love += 6>><</link>><<ggglove>> +<<link [[Praise Sam|Chef Opening Sam]]>><<set $chef_speech to "sam">><<npcincr Sam love 6>><</link>><<ggglove>> <br> <<link [[Praise yourself|Chef Opening Self]]>><<set $chef_speech to "yourself">><<famebusiness 100 pic>><<trauma -24>><</link>><<llltrauma>> <br> @@ -1014,7 +1077,8 @@ The room was already quiet. Rendered so by anticipation. Now the silence is deaf Laughter fills the cafe. You're not sure how many knew all along, and how many think you're joking. <br><br> -<<npc Quinn>><<person1>>The mayor pushes you aside and assumes control of the podium. "Our chef here enjoys a joke," <<he>> says. "How they prepare the cream is their secret, but I assure you it's made from the finest local produce." +<<npc Quinn>><<person1>>The mayor pushes you aside and assumes control of the podium. +"Our chef here enjoys a joke," <<he>> says. "How they prepare the cream is their secret, but I assure you it's made from the finest local produce." <br><br> The mayor turns to you, away from the microphone. "Good thinking," <<he>> says as <<he>> passes. "You know how to build a legend." @@ -1028,20 +1092,25 @@ You imagine they'll be talking about this for a while. You join the party. What :: Chef Opening Bailey <<set $outside to 0>><<set $location to "cafe">><<effects>> -You look around the room. Bailey stares back. You take a deep breath, and begin. You talk about life at the orphanage. About the lack of food. About what Bailey makes you do, and about the punishment for failure. +You look around the room. Bailey stares back. You take a deep breath, and begin. +You talk about life at the orphanage. About the lack of food. About what Bailey makes you do, and about the punishment for failure. <<if $submissive gte 1150>> -You're not sure when you started crying. + You're not sure when you started crying. <<elseif $submissive lte 850>> -Your fingers hurt. At some point you started gripping the sides of the podium. + Your fingers hurt. At some point you started gripping the sides of the podium. <<else>> <</if>> <br><br> -The audience listen in rapt silence. Some wear strange smiles, others look on aghast. The employee you recognise from the orphanage is in tears. <<npc Bailey>><<person1>>You dare a glance at Bailey, but <<hes>> not even looking at you. <<He>> glares at the mayor instead. +The audience listen in rapt silence. Some wear strange smiles, others look on aghast. +The employee you recognise from the orphanage is in tears. +<<npc Bailey>><<person1>>You dare a glance at Bailey, but <<hes>> not even looking at you. <<He>> glares at the mayor instead. <br><br> <<endevent>><<npc Quinn>><<person1>> -Quinn darts forward and interrupts your speech, pushing you off the podium. "Our young chef," <<he>> says. "Is such a joker. <<pHer>> friends put <<phim>> up to it. Bailey's orphanage is one of the town's oldest, and most esteemed, institutions. Any abuses of power are taken seriously." +Quinn darts forward and interrupts your speech, pushing you off the podium. +"Our young chef," <<he>> says. "Is such a joker. <<pHer>> friends put <<phim>> up to it. +Bailey's orphanage is one of the town's oldest, and most esteemed, institutions. Any abuses of power are taken seriously." <br><br> You're not sure if your words got through. Many of the locals nod along with the mayor's words. Some don't look so convinced. @@ -1057,7 +1126,8 @@ The mayor steps away from the podium, and the party begins in earnest. It seems <<npc Sam>><<person1>> You look around the room. Sam stares back, looking more excited than you've ever seen <<him>>. <br><br> -You talk about Sam, and all the work <<he>> put in to make the cafe what it is. You thank <<him>> for giving the opportunity to develop your talents, and thank the audience for making <<his>> dreams come true. +You talk about Sam, and all the work <<he>> put in to make the cafe what it is. +You thank <<him>> for giving the opportunity to develop your talents, and thank the audience for making <<his>> dreams come true. <br><br> The audience applaud. Sam starts crying. <br><br> @@ -1070,16 +1140,17 @@ You step away from the podium, and the party begins in earnest. What do you want <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $submissive gte 1150>> -"I made my buns," you begin "Because I wanted to make people happy..." -<br><br> + "I made my buns," you begin "Because I wanted to make people happy..." + <br><br> <<elseif $submissive lte 850>> -"From the first time I saw the result of my cooking on another's face," you begin. "I knew I was destined for greatness..." -<br><br> + "From the first time I saw the result of my cooking on another's face," you begin. "I knew I was destined for greatness..." + <br><br> <<else>> -"The secret to my buns," you begin. "Is hard work, determination..." -<br><br> + "The secret to my buns," you begin. "Is hard work, determination..." + <br><br> + <</if>> It's shameless self-aggrandisement, but it goes down well. They must agree you earned it. @@ -1093,7 +1164,9 @@ You step away from the podium, and the party begins in earnest. How do you want :: Chef Opening Refuse <<set $outside to 0>><<set $location to "cafe">><<effects>> -You step away from the podium. The crowd sounds disappointed, though not upset. You hear someone call you cute. The mayor rushes to take over the microphone. <<npc Quinn>><<person1>>"Our chef isn't used to public speaking," <<he>> says. "Please, a round of applause regardless." The audience applaud you as prompted. +You step away from the podium. The crowd sounds disappointed, though not upset. You hear someone call you cute. +The mayor rushes to take over the microphone. +<<npc Quinn>><<person1>>"Our chef isn't used to public speaking," <<he>> says. "Please, a round of applause regardless." The audience applaud you as prompted. <br><br> The mayor steps away from the podium, and the party begins in earnest. How do you want to conduct yourself? @@ -1106,7 +1179,14 @@ The mayor steps away from the podium, and the party begins in earnest. How do yo :: Chef Opening Local <<set $outside to 0>><<set $location to "cafe">><<effects>> -You talk to the local elites, ingratiating yourself with them. They're eager for your company. <<if $chef_speech is "truth">> They ask for more details about how the cream is prepared, which you gladly give. They laugh each time. <<elseif $chef_speech is "bailey">><<generate1>><<person1>>A concerned-looking <<person>> asks for more details regarding the orphanage, but their friend shushes them.<<else>>They try to tease out your secret cream recipe, but you're not telling.<</if>> +You talk to the local elites, ingratiating yourself with them. They're eager for your company. +<<if $chef_speech is "truth">> + They ask for more details about how the cream is prepared, which you gladly give. They laugh each time. +<<elseif $chef_speech is "bailey">> + <<generate1>><<person1>>A concerned-looking <<person>> asks for more details regarding the orphanage, but their friend shushes them. +<<else>> + They try to tease out your secret cream recipe, but you're not telling. +<</if>> <<endevent>> <br><br> @@ -1116,7 +1196,12 @@ You talk to the local elites, ingratiating yourself with them. They're eager for :: Chef Opening Foreign <<set $outside to 0>><<set $location to "cafe">><<effects>> -You talk to the foreign visitors, ingratiating yourself with them. They're eager for your company. <<if $chef_speech is "bailey">><<generate1>><<person1>>A concerned-looking <<person>> asks for more details regarding the orphanage, but their friend shushes them.<<else>>They're intrigued by some of the local customs, which are apparently strange to them.<</if>> +You talk to the foreign visitors, ingratiating yourself with them. They're eager for your company. +<<if $chef_speech is "bailey">> + <<generate1>><<person1>>A concerned-looking <<person>> asks for more details regarding the orphanage, but their friend shushes them. +<<else>> + They're intrigued by some of the local customs, which are apparently strange to them. +<</if>> <br><br> <<endevent>> <<link [[Next|Chef Opening End]]>><</link>> @@ -1125,7 +1210,9 @@ You talk to the foreign visitors, ingratiating yourself with them. They're eager :: Chef Opening Staff <<set $outside to 0>><<set $location to "cafe">><<effects>> -You chat with other members of the cafe's staff. You recognise many, but there are a lot of new faces. Even with Sam mobilising the entire staff for this event, they're kept busy and rarely have time to talk. They don't seem to mind. Sam's joy is infectious. +You chat with other members of the cafe's staff. You recognise many, but there are a lot of new faces. +Even with Sam mobilising the entire staff for this event, they're kept busy and rarely have time to talk. +They don't seem to mind. Sam's joy is infectious. <br><br> <<link [[Next|Chef Opening End]]>><</link>> @@ -1134,7 +1221,8 @@ You chat with other members of the cafe's staff. You recognise many, but there a :: Chef Opening Enjoy <<set $outside to 0>><<set $location to "cafe">><<effects>> -You grab a glass of champagne from a passing <<if $rng gte 51>>waiter<<else>>waitress<</if>>, and explore the new cafe. You find a quiet spot on a second floor balcony, overlooking the sea. You sit down and relax. +You grab a glass of champagne from a passing <<print either("waiter", "waitress")>>, and explore the new cafe. +You find a quiet spot on a second floor balcony, overlooking the sea. You sit down and relax. <<alcohol 60>> <br><br> @@ -1151,7 +1239,8 @@ Despite being secluded, several people stop by to chat. <<npc Bailey>><<person1>> The party winds down after a few hours. You head to the exit, but Bailey intercepts you. <br><br> - "You're a brave little shit," <<he>> says. <<He>> grasps your shoulders and turns you to face the guests, now drunkenly shuffling out the cafe. "They all want a piece of orphan ass now that you've screamed about it. You've made things difficult." + "You're a brave little shit," <<he>> says. <<He>> grasps your shoulders and turns you to face the guests, now drunkenly shuffling out the cafe. + "They all want a piece of orphan ass now that you've screamed about it. You've made things difficult." <<gstress>><<stress 6>> <br><br> <<He>> releases you, and walks away. @@ -1178,7 +1267,8 @@ Despite being secluded, several people stop by to chat. <<npc Sam>><<person1>> The party winds down after a few hours. You head to the exit. Sam intercepts you. <br><br> - "I wasn't expecting... that," <<he>> says. "In your speech. I know I said you could say anything, but that didn't cross my mind." <<He>> shakes <<his>> head. "Still, people took the joke well. No damage done. Thank you for everything." + "I wasn't expecting... that," <<he>> says. "In your speech. I know I said you could say anything, but that didn't cross my mind." + <<He>> shakes <<his>> head. "Still, people took the joke well. No damage done. Thank you for everything." <br><br> "I forgot to mention," <<he>> adds. "We're bumping up the price of buns to <span class="gold">£150</span>. <<set $bun_value to 15000>> @@ -1283,7 +1373,8 @@ Deciding to damn the consequences, you turn your back to the <<person>> and marc :: Chef Blackmail Pay <<set $outside to 0>><<set $location to "cafe">><<effects>> -You hand over the money. The <<person>> pulls an expression of mock confusion. "What were we talking about?" <<he>> says. "I've forgotten. How strange." <<He>> laughs and saunters down the alley. +You hand over the money. The <<person>> pulls an expression of mock confusion. +"What were we talking about?" <<he>> says. "I've forgotten. How strange." <<He>> laughs and saunters down the alley. <br><br> <<endevent>> <<link [[Next|Cliff Street]]>><<set $eventskip to 1>><</link>> @@ -1301,7 +1392,9 @@ You hand over the money. The <<person>> pulls an expression of mock confusion. " :: Chef Blackmail Truth <<set $outside to 0>><<set $location to "cafe">><<effects>> -"Well," the <<person>> says. "There's something else you have." <<He>> leers at your <<if $player.gender_appearance is "f">><<breasts>><<else>><<penis>><</if>>. "How about you give me a taste of your cream," <<he>> continues. "Straight from the source." +"Well," the <<person>> says. "There's something else you have." +<<He>> leers at your <<if $player.gender_appearance is "f">><<breasts>><<else>><<penis>><</if>>. +"How about you give me a taste of your cream," <<he>> continues. "Straight from the source." <br><br> <<link [[Accept|Chef Blackmail Rape]]>><<set $molestationstart to 1>><<set $submissive += 1>><</link>> <br> @@ -1382,7 +1475,8 @@ You climb in. <<generate2>><<person2>>A <<person>> sits in the driver's seat. Th :: Chef Blackmail Livestock <<set $outside to 0>><<set $location to "farm">><<effects>> -Instead of driving you to the station, they take you through Harvest Street, and onto the road leading out of town. Buildings give way to green and yellow fields, as they take you deeper into the countryside. +Instead of driving you to the station, they take you through Harvest Street, and onto the road leading out of town. +Buildings give way to green and yellow fields, as they take you deeper into the countryside. <br><br> The police chat and gossip. Little of it is interesting, until the <<person2>><<person>> turns to face you. <br><br> @@ -1399,7 +1493,8 @@ The police chat and gossip. Little of it is interesting, until the <<person2>><< <<effects>> <<pass 60>> -You ignore the <<person>>, instead staring out the window. You catch a glimpse of the forest as the car crests a hill. "A <<girl>> of few words," <<he>> says. "That'll suit just fine where you're going." +You ignore the <<person>>, instead staring out the window. You catch a glimpse of the forest as the car crests a hill. +"A <<girl>> of few words," <<he>> says. "That'll suit just fine where you're going." <br><br> After what feels like an hour, you turn down a thin lane and pull to a stop outside a barn. <br><br> @@ -1447,13 +1542,15 @@ After what feels like an hour, you turn down a thin lane and pull to a stop outs <<effects>> <<generate3>><<generate4>> -They lead you inside, where a <<person3>><<person>> and <<person4>><<person>> wait. The <<person3>><<person>> shakes hand with the police officers, while the <<person4>><<person>> prowls around you. +They lead you inside, where a <<person3>><<person>> and <<person4>><<person>> wait. +The <<person3>><<person>> shakes hand with the police officers, while the <<person4>><<person>> prowls around you. <br><br> "This the chef, then?" the <<person3>><<person>> asks. <br> "This the one," The <<person1>><<person>> responds. <br> -"Dunno what I was expecting. Here's the money." <<He>> nods a the <<person4>><<person>>, now stood behind you, and you lurched back as <<he>> ties a collar around your neck. +"Dunno what I was expecting. Here's the money." +<<He>> nods a the <<person4>><<person>>, now stood behind you, and you lurched back as <<he>> ties a collar around your neck. <<leash 21>> <br><br> The police leave as the <<person3>><<person>> takes your leash. "Gonna make a killing from this one," <<he>> whispers as <<he>> tugs. You're pulled forward. @@ -1513,9 +1610,11 @@ The interior is pitch black. Four others step out of the dark, each wearing a po <<link [[Next|Harvest Street]]>><<set $eventskip to 1>><</link>> <br> <<else>> - You shove the <<person1>><<person>> to the ground, trip up the <<person2>><<person>>, headbutt the <<person3>><<person>>, punch the <<person4>><<person>>, and tackle the <<person5>><<person>> to the floor. + You shove the <<person1>><<person>> to the ground, trip up the <<person2>><<person>>, + headbutt the <<person3>><<person>>, punch the <<person4>><<person>>, and tackle the <<person5>><<person>> to the floor. <br><br> - The <<person6>><<person>> backs off for a moment, shocked by your aggression and anticipating an attack. <<tearful>> you seize the opportunity. You flee the building, and escape onto Harvest Street. + The <<person6>><<person>> backs off for a moment, shocked by your aggression and anticipating an attack. + <<tearful>> you seize the opportunity. You flee the building, and escape onto Harvest Street. <br><br> <<clotheson>> <<endcombat>> diff --git a/game/overworld-town/loc-cafe/main.twee b/game/overworld-town/loc-cafe/main.twee index 0d7c44f2be3683af603f47c999f17362276ba63e..5871957a2b34d68d211a0f758700a6a33955f53b 100644 --- a/game/overworld-town/loc-cafe/main.twee +++ b/game/overworld-town/loc-cafe/main.twee @@ -14,142 +14,175 @@ You are in the Ocean Breeze Cafe. <</if>> <</if>> <br><br> + <<if $stress gte $stressmax>> <<passoutshop>> -<<elseif $openinghours is 1 and $exposed lt 1 and $bunstat gte 50 and $chef_state is 1>><<set $chef_state to 2>><<set $bun_value to 10000>> -<<npc Sam>><<person1>>Sam approaches you, wiping <<his>> hands on a towel and beaming. "I've made a decision," <<he>> says. "I wanted to keep the buns affordable, but we've attracted interest." <<He>> holds out a holiday brochure, opened on a page that advertises the town. There's a picture of the cafe with a caption that describes the buns as "world-class." -<br><br> +<<elseif $openinghours is 1 and $exposed lt 1 and $bunstat gte 50 and $chef_state is 1>> + <<set $chef_state to 2>><<set $bun_value to 10000>> + <<npc Sam>><<person1>> + Sam approaches you, wiping <<his>> hands on a towel and beaming. + "I've made a decision," <<he>> says. "I wanted to keep the buns affordable, but we've attracted interest." + <<He>> holds out a holiday brochure, opened on a page that advertises the town. + There's a picture of the cafe with a caption that describes the buns as "world-class." + <br><br> -"World-class!" Sam beams. "I've decided to increase the price to <span class="gold">£100</span>. We have a limited supply after all, and can't keep up with demand as it is." -<br><br> + "World-class!" Sam beams. + "I've decided to increase the price to <span class="gold">£100</span>. We have a limited supply after all, and can't keep up with demand as it is." + <br><br> -<<He>> returns to work, humming some tune. -<br><br> -<<endevent>> -<<link [[Next|Ocean Breeze]]>><</link>> -<br> + <<He>> returns to work, humming some tune. + <br><br> + <<endevent>> + <<link [[Next|Ocean Breeze]]>><</link>> + <br> -<<elseif $openinghours is 1 and $exposed lt 1 and $bunstat gte 200 and $chef_state is 2>><<set $chef_state to 3>> -<<npc Sam>><<person1>> -Sam approaches you. "I was at a party," <<he>> says. "And I may have had one too many. Anyway, the topic of our buns came up. People were very curious about how they're made. When I told them I didn't know, that a young chef was responsible, they became even hungrier. I think a myth is building around you." -<br><br> -"Anyway," <<he>> continues. "It got me thinking. I'd like to use your image in our advertisements. Maybe redesign the front of the building. It's only fair people know who's responsible for these treats." -<br><br> -"I'm willing to increase your cut to <span class="gold">30%</span> of each bun sale," <<he>> adds, cleaning a vacated table. "I'm in talks with a professional photographer. Mull it over, then let me know what you think." -<br><br> +<<elseif $openinghours is 1 and $exposed lt 1 and $bunstat gte 200 and $chef_state is 2>> + <<set $chef_state to 3>> + <<npc Sam>><<person1>> + Sam approaches you. + "I was at a party," <<he>> says. + "And I may have had one too many. Anyway, the topic of our buns came up. + People were very curious about how they're made. When I told them I didn't know, that a young chef was responsible, they became even hungrier. + I think a myth is building around you." + <br><br> + "Anyway," <<he>> continues. + "It got me thinking. I'd like to use your image in our advertisements. + Maybe redesign the front of the building. It's only fair people know who's responsible for these treats." + <br><br> + "I'm willing to increase your cut to <span class="gold">30%</span> of each bun sale," <<he>> adds, cleaning a vacated table. + "I'm in talks with a professional photographer. Mull it over, then let me know what you think." + <br><br> -<<endevent>> + <<endevent>> -<<link [[Next|Ocean Breeze]]>><</link>> -<br> + <<link [[Next|Ocean Breeze]]>><</link>> + <br> -<<elseif $openinghours is 1 and $exposed lt 1 and $chef_state is 5>><<set $chef_state to 6>> -<<npc Sam>>Sam approaches you. "The photographer sent the pictures over," <<he>> says. "They're fantastic! The new adverts are going to look great. You'll get <span class="gold">30%</span> of each bun sold from now on, as promised." -<<set $bun_cut to 0.3>> -<br><br> +<<elseif $openinghours is 1 and $exposed lt 1 and $chef_state is 5>> + <<set $chef_state to 6>> + <<npc Sam>>Sam approaches you. "The photographer sent the pictures over," <<he>> says. + "They're fantastic! The new adverts are going to look great. You'll get <span class="gold">30%</span> of each bun sold from now on, as promised." + <<set $bun_cut to 0.3>> + <br><br> -Sam returns to work, humming some tune. -<br><br> -<<endevent>> + Sam returns to work, humming some tune. + <br><br> + <<endevent>> -<<link [[Next|Ocean Breeze]]>><</link>> -<br><br> + <<link [[Next|Ocean Breeze]]>><</link>> + <br><br> -<<elseif $openinghours is 1 and $exposed lt 1 and $bunstat gte 400 and $chef_state is 6>><<set $chef_rework to 37>> -<<npc Sam>><<person1>> -Sam approaches you, looking more serious than normal. "I've made a decision," <<he>> says. "The buns are our flagship, but people are more interested than ever in our other dishes too. Even when people know the chef is not in the building, they still queue for a chance to eat here. You've probably noticed." -<br><br> -"I've bought next-door," <<he>> continues. "The big one. I'm going to merge the buildings, make one huge cafe. One that can accommodate the numbers we're pulling. I'm giddy just thinking about it!" -<br><br> -<span class="pink">"We'll need to close for a month,"</span> <<he>> adds. "It's unfortunate, but the changes are so big. We'll have a grand opening event when its done, with you as the star." -<br><br> -"We're closing down in a week. I don't want you to be caught off guard. Drop by when we're finished and we'll discuss the opening event." -<br><br> -<<He>> returns to work. -<br><br> -<<endevent>> -<<link [[Next|Ocean Breeze]]>><<set $chef_state to 7>><</link>> -<br> -<<else>> +<<elseif $openinghours is 1 and $exposed lt 1 and $bunstat gte 400 and $chef_state is 6>> + <<set $chef_state to 7>> + <<set $chef_rework to 37>> + <<npc Sam>><<person1>> + Sam approaches you, looking more serious than normal. "I've made a decision," <<he>> says. + "The buns are our flagship, but people are more interested than ever in our other dishes too. + Even when people know the chef is not in the building, they still queue for a chance to eat here. You've probably noticed." + <br><br> + "I've bought next-door," <<he>> continues. + "The big one. I'm going to merge the buildings, make one huge cafe. One that can accommodate the numbers we're pulling. I'm giddy just thinking about it!" + <br><br> + <span class="pink">"We'll need to close for a month,"</span> <<he>> adds. + "It's unfortunate, but the changes are so big. We'll have a grand opening event when its done, with you as the star." + <br><br> + "We're closing down in a week. I don't want you to be caught off guard. Drop by when we're finished and we'll discuss the opening event." + <br><br> + <<He>> returns to work. + <br><br> + <<endevent>> + <<link [[Next|Ocean Breeze]]>><</link>> + <br> -<<if $hour is $closinghour>> +<<else>> + <<if $hour is $closinghour>> + It's closing time. Sam is herding everyone outside. + <<if $exposed gte 1>> + You feel a twinge of panic as you realise how exposed you'll be should you be found in this state of dress. + <</if>> + <br><br> -It's closing time. Sam is herding everyone outside.<<if $exposed gte 1>>You feel a twinge of panic as you realise how exposed you'll be should you be found in this state of dress.<</if>> -<br><br> + <<elseif $openinghours is 0>> + You are alone in the darkness. + <br><br> -<<elseif $openinghours is 0>> -You are alone in the darkness. -<br><br> -<<elseif $exposed gte 1>> -You are hiding beneath a table to protect your dignity. -<br><br> -<</if>> -<<if $arousal gte $arousalmax>> - <<orgasmLocation "cafe">> -<</if>> + <<elseif $exposed gte 1>> + You are hiding beneath a table to protect your dignity. + <br><br> -<<if $openinghours is 1 and $exposed lt 1 and $oceanbreezejob isnot 1>> - <<if $oceanbreezejoboffer is 1>> -<<link [[Ask for work|Ocean Breeze Ask Again]]>><</link>> -<br> - <<else>> -<<link [[Ask for work|Ocean Breeze Ask]]>><</link>> -<br> <</if>> -<</if>> -<<if $openinghours is 1 and $exposed lt 1 and $oceanbreezejob is 1>> - <<if $chef_state is 0>> - <<link [[Accept job offer|Chef Work Accept]]>><</link>> - <br> - <<elseif $chef_state gte 1>> - <<link [[Work as a chef (1:00)|Chef Work]]>><</link>> - <br> + <<if $arousal gte $arousalmax>> + <<orgasmLocation "cafe">> <</if>> - <<if $chef_state is 3>> - <<link [[Accept Sam's offer|Chef Photographer]]>><</link>> - <br> + + <<if $openinghours is 1 and $exposed lt 1 and $oceanbreezejob isnot 1>> + <<if $oceanbreezejoboffer is 1>> + <<link [[Ask for work|Ocean Breeze Ask Again]]>><</link>> + <br> + <<else>> + <<link [[Ask for work|Ocean Breeze Ask]]>><</link>> + <br> + <</if>> <</if>> - <<if $player.gender_appearance is "m">> - <<link [[Work as a waiter (1:00)|Ocean Breeze Work]]>><<set $tablesservedstat += random(10,30)>><</link>> - <br> - <<else>> - <<link [[Work as a waitress (1:00)|Ocean Breeze Work]]>><<set $tablesservedstat += random(10,30)>><</link>> - <br> + + <<if $openinghours is 1 and $exposed lt 1 and $oceanbreezejob is 1>> + <<if $chef_state is 0>> + <<link [[Accept job offer|Chef Work Accept]]>><</link>> + <br> + <<elseif $chef_state gte 1>> + <<link [[Work as a chef (1:00)|Chef Work]]>><</link>> + <br> + <</if>> + <<if $chef_state is 3>> + <<link [[Accept Sam's offer|Chef Photographer]]>><</link>> + <br> + <</if>> + <<if $player.gender_appearance is "m">> + <<link [[Work as a waiter (1:00)|Ocean Breeze Work]]>><<set $tablesservedstat += random(10,30)>><</link>> + <br> + <<else>> + <<link [[Work as a waitress (1:00)|Ocean Breeze Work]]>><<set $tablesservedstat += random(10,30)>><</link>> + <br> + <</if>> <</if>> -<</if>> <<if $openinghours is 1 and $exposed lt 1 and $cafeeaten isnot 1>> <<if $money gte 200>> - <<if $images is 1>><</if>><<link [[Buy coffee (0:02 £2)|Cafe Coffee]]>><<set $cafeeaten to 1>><<set $money -= 200>><<stress -3>><<tiredness -4>><<pass 2>><</link>><<lstress>><<ltiredness>> - <br> + <<if $images is 1>><</if>><<link [[Buy coffee (0:02 £2)|Cafe Coffee]]>> + <<set $cafeeaten to 1>><<set $money -= 200>><<stress -3>><<tiredness -4>><<pass 2>> + <</link>><<lstress>><<ltiredness>> + <br> <</if>> <<if $money gte 300>> <<if ndef $milkshake>><<set $milkshake to 0>><</if>> <<if $milkshake lt 2>> - <<if $images is 1>><</if>><<link [[Buy milkshake to go (0:02 £3)|Ocean Breeze]]>><<set $money -= 300>> <<set $milkshake +=1>> <<pass 2>><</link>> + <<milkshakeicon>><<if $images is 1>><</if>><<link [[Buy milkshake to go (0:02 £3)|Ocean Breeze]]>><<set $money -= 300>> <<set $milkshake +=1>> <<pass 2>><</link>> <br> <</if>> <</if>> <<if $money gte 500>> - <<if $images is 1>><img id="icon" src="img/misc/icon/food_fruitsalad.png"><</if>><<link [[Buy fruit salad (0:20 £5)|Cafe Fruit Salad]]>><<set $cafeeaten to 1>><<set $money -= 500>><<stress -6>><<pass 20>><</link>><<lstress>> - <br> + <<if $images is 1>><img id="icon" src="img/misc/icon/food_fruitsalad.png"><</if>> + <<link [[Buy fruit salad (0:20 £5)|Cafe Fruit Salad]]>><<set $cafeeaten to 1>><<set $money -= 500>><<stress -6>><<pass 20>><</link>><<lstress>> + <br> <</if>> <<if $money gte 1000>> - <<if $images is 1>><img id="icon" src="img/misc/icon/food_pancakes.png"><</if>><<link [[Buy pancakes (0:20 £10)|Cafe Pancakes]]>><<set $cafeeaten to 1>><<set $money -= 1000>><<tiredness -6>><<pass 20>><</link>><<ltiredness>> - <br> + <<if $images is 1>><img id="icon" src="img/misc/icon/food_pancakes.png"><</if>> + <<link [[Buy pancakes (0:20 £10)|Cafe Pancakes]]>><<set $cafeeaten to 1>><<set $money -= 1000>><<tiredness -6>><<pass 20>><</link>><<ltiredness>> + <br> <</if>> <<if $money gte 5000>> - <<if $images is 1>><img id="icon" src="img/misc/icon/food_creambun.png"><</if>><<link [[Buy Deluxe Cream Bun (0:20 £50)|Cafe Cream Bun]]>><<set $cafeeaten to 1>><<transform cat 1>><<set $money -= 5000>><<pass 20>><<stress -18>><</link>><<llstress>> - <br> + <<if $images is 1>><img id="icon" src="img/misc/icon/food_creambun.png"><</if>> + <<link [[Buy Deluxe Cream Bun (0:20 £50)|Cafe Cream Bun]]>><<set $cafeeaten to 1>><<transform cat 1>><<set $money -= 5000>><<pass 20>><<stress -18>><</link>><<llstress>> + <br> <</if>> <</if>> <<if $openinghours is 0 and $hour isnot $closinghour and $oceanbreezetheft isnot 1>> -<<link [[Examine the cash register|Ocean Breeze Register]]>><</link>> -<br> + <<link [[Examine the cash register|Ocean Breeze Register]]>><</link>> + <br> <</if>> <br> @@ -163,16 +196,18 @@ You are hiding beneath a table to protect your dignity. <<openinghours>> - <<if $skulduggery gte $lock>> +<<if $skulduggery gte $lock>> <span class="green">The lock looks easy to pick.</span> <br><br> <<link [[Pick it (0:10)|Ocean Breeze]]>><<pass 10>><<crimeup 1>><</link>><<crime>> <br> - <<else>> + +<<else>> <span class="red">The lock looks beyond your ability to pick.</span><<skulduggeryrequired>> <br><br> - <</if>> + +<</if>> <<link [[Leave|Cliff Street]]>><</link>> <br> @@ -180,12 +215,15 @@ You are hiding beneath a table to protect your dignity. :: Ocean Breeze Ask <<set $outside to 0>><<set $location to "cafe">><<effects>> <<set $oceanbreezejoboffer to 1>> -<<npc Sam>><<person1>>You walk up to the overweight <<personsimple>> behind the counter. <<He>> smiles at you. +<<npc Sam>><<person1>> +You walk up to the overweight <<personsimple>> behind the counter. <<He>> smiles at you. "Aren't you a cutie! What will it be?" <br><br> -You ask if <<he>> has any work for you. <<His>> smile broadens. "As a matter of fact, I need a cute <<if $player.gender_appearance is "m">>waiter.<<else>>waitress.<</if>> The pay is £5 an hour, plus tips. Just a warning though: some customers might try to grope you. Please be patient with them; they don't mean nothing by it! We're always understaffed, so you can work whenever we're open." - +You ask if <<he>> has any work for you. <<His>> smile broadens. +"As a matter of fact, I need a cute <<if $player.gender_appearance is "m">>waiter.<<else>>waitress.<</if>> +The pay is £5 an hour, plus tips. Just a warning though: some customers might try to grope you. +Please be patient with them; they don't mean nothing by it! We're always understaffed, so you can work whenever we're open." <br><br> <<link [[Take job|Ocean Breeze Take Job]]>><</link>> @@ -224,80 +262,95 @@ You ask if <<he>> has any work for you. <<His>> smile broadens. "As a matter of <<if $rng gte 81 and $weather isnot "rain" and $weather isnot "snow">> <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> <<if $danger gte (9900 - $allure)>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> - As you're serving tables outside the cafe, a strong breeze blows in from the ocean, lifting your skirt and exposing your <<undies>> for anyone who looks. - <<undiestrauma>> - <br><br> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> + As you're serving tables outside the cafe, a strong breeze blows in from the ocean, lifting your skirt and exposing your <<undies>> for anyone who looks. + <<undiestrauma>> + <br><br> <<if !$worn.under_lower.type.includes("naked")>> - <<link [[Own it|Ocean Breeze Own]]>><<set $phase to 0>><</link>><<exhibitionist1>> - <br> + <<link [[Own it|Ocean Breeze Own]]>><<set $phase to 0>><</link>><<exhibitionist1>> + <br> <<elseif $exhibitionism gte 35>> - <<link [[Own it|Ocean Breeze Own]]>><<set $phase to 1>><</link>><<exhibitionist3>> - <br> + <<link [[Own it|Ocean Breeze Own]]>><<set $phase to 1>><</link>><<exhibitionist3>> + <br> <</if>> <<link [[Cover yourself|Ocean Breeze Cover]]>><</link>> <<if !$worn.under_lower.type.includes("naked")>> - <<fameexhibitionism 5>> + <<fameexhibitionism 5>> <<else>> - <<fameexhibitionism 10>> + <<fameexhibitionism 10>> <</if>> <<else>> - As you're serving tables outside the cafe, a strong breeze blows in from the ocean, pleasantly caressing your skin. - <<lstress>><<stress -4>> - <br><br> + As you're serving tables outside the cafe, a strong breeze blows in from the ocean, pleasantly caressing your skin. + <<lstress>><<stress -4>> + <br><br> - The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. - <<pass 1 hour>> - <br><br> + The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. + <<pass 1 hour>> + <br><br> - <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> + <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> <</if>> <<else>> - You spend most of the shift serving the tables outside, overlooking the ocean. - <br><br> + You spend most of the shift serving the tables outside, overlooking the ocean. + <br><br> - The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. - <<pass 1 hour>> - <br><br> + The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. + <<pass 1 hour>> + <br><br> - <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> + <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> <</if>> <<elseif $rng gte 81>> <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> <<if $danger gte (9900 - $allure)>> - <<generate1>><<person1>>You serve a <<person>> who orders a bun. <<He>> licks the cream. "That's so good," <<he>> gasps. <<He>> pulls back a chair and slides the plate in front of it. "Please, sit and try some. My treat." The cafe isn't very busy. - <br><br> + <<generate1>><<person1>>You serve a <<person>> who orders a bun. <<He>> licks the cream. "That's so good," <<he>> gasps. + <<He>> pulls back a chair and slides the plate in front of it. "Please, sit and try some. My treat." The cafe isn't very busy. + <br><br> <<link [[Sit|Ocean Breeze Sit]]>><</link>> <br> <<link [[Refuse|Ocean Breeze Sit Refuse]]>><</link>> <br> <<else>> - <<generate1>><<person1>>You serve a <<person>> who orders a bun. <<He>> stares at you as <<he>> licks the cream. - <br><br> + <<generate1>><<person1>>You serve a <<person>> who orders a bun. <<He>> stares at you as <<he>> licks the cream. + <br><br> - The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. - <<pass 1 hour>> - <br><br> + The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. + <<pass 1 hour>> + <br><br> - <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> + <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> <</if>> <<elseif $rng gte 71>> <<generate1>><<person1>>A <<person>> sits at a table alone with <<his>> head back and eyes closed. <<if $awareness gte 400>> - <<generates2>>From the way <<hes>> grinding, it's quite obvious <<hes>> getting oral. <<Hes>> barely trying to hide it. Covertly checking, you notice a <<person2>><<person>> - under the table, <<print either("gently","eagerly","energetically","sensually","clumsily","vigorously","dutifully","skilfully")>> - <<person1>><<if $pronoun is "m">>sucking the man off.<<else>>eating the woman out.<</if>> + <<generates2>>From the way <<hes>> grinding, it's quite obvious <<hes>> getting oral. <<Hes>> barely trying to hide it. + Covertly checking, you notice a <<person2>><<person>>under the table, + <<print either("gently","eagerly","energetically","sensually","clumsily","vigorously","dutifully","skilfully")>> + <<person1>> + <<if $NPCList[0].penis isnot "none">> + sucking the <<personsimple>> off. + <<else>> + eating the <<personsimple>> out. + <</if>> <<garousal>><<arousal 200>> <<elseif $awareness gte 200>> - <<if $weather is "clear">><<He>> seems to take almost sexual pleasure from sunbathing. - <<else>>If not for the rhythmic squirming, you'd think <<he>> was asleep. - <</if>>At one point <<he>> shudders in a way that seems almost orgasmic. + <<if $weather is "clear">> + <<He>> seems to take almost sexual pleasure from sunbathing. + <<else>> + If not for the rhythmic squirming, you'd think <<he>> was asleep. + <</if>> + At one point <<he>> shudders in a way that seems almost orgasmic. <<else>> - <<if $weather is "clear">>It's a beautiful day - <<hes>><<else>><<Hes>><</if>> probably dozed off. + <<if $weather is "clear">> + It's a beautiful day - <<hes>> + <<else>> + <<Hes>> + <</if>> + probably dozed off. <</if>> <br><br> @@ -310,58 +363,62 @@ You ask if <<he>> has any work for you. <<His>> smile broadens. "As a matter of <<elseif $rng gte 61>> <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> <<if $danger gte (9900 - $allure)>> - <<generate1>><<generate2>>You serve a young pair, a <<person1>><<person>> and a <<person2>><<person>>. - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<generate1>><<generate2>>You serve a young pair, a <<person1>><<person>> and a <<person2>><<person>>. + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.under_lower.type.includes("naked")>> - As you turn to leave, the <<person1>><<person>> lifts the hem of your $worn.lower.name, revealing your bare <<bottom>> to the cafe. "No underwear?" <<He>> says with incredulity. "You're a little slut, aren't you?" - <<fameexhibitionism 10>><<stress 6>><<arousal 600>><<gstress>><<garousal>> - <br><br> + As you turn to leave, the <<person1>><<person>> lifts the hem of your $worn.lower.name, revealing your bare <<bottom>> to the cafe. + "No underwear?" <<He>> says with incredulity. "You're a little slut, aren't you?" + <<fameexhibitionism 10>><<stress 6>><<arousal 600>><<gstress>><<garousal>> + <br><br> - <<link [[Get angry|Ocean Breeze Angry]]>><</link>> - <br> - <<link [[Ignore|Ocean Breeze Ignore]]>><<trauma 6>><<stress 6>><<set $phase to 2>><</link>><<gtrauma>><<gstress>> - <br> + <<link [[Get angry|Ocean Breeze Angry]]>><</link>> + <br> + <<link [[Ignore|Ocean Breeze Ignore]]>><<trauma 6>><<stress 6>><<set $phase to 2>><</link>><<gtrauma>><<gstress>> + <br> <<else>> - As you turn to leave, the <<person1>><<person>> lifts the hem of your $worn.lower.name, revealing your $worn.under_lower.name to the cafe. <<He>> and the <<person2>><<person>> both laugh, drawing more attention to you. - <<fameexhibitionism 1>><<stress 3>><<arousal 300>><<gstress>><<garousal>> - <br><br> + As you turn to leave, the <<person1>><<person>> lifts the hem of your $worn.lower.name, revealing your $worn.under_lower.name to the cafe. + <<He>> and the <<person2>><<person>> both laugh, drawing more attention to you. + <<fameexhibitionism 1>><<stress 3>><<arousal 300>><<gstress>><<garousal>> + <br><br> - <<link [[Get angry|Ocean Breeze Angry]]>><</link>> - <br> - <<link [[Ignore|Ocean Breeze Ignore]]>><<trauma 3>><<stress 3>><<set $phase to 1>><</link>><<gtrauma>><<gstress>> - <br> + <<link [[Get angry|Ocean Breeze Angry]]>><</link>> + <br> + <<link [[Ignore|Ocean Breeze Ignore]]>><<trauma 3>><<stress 3>><<set $phase to 1>><</link>><<gtrauma>><<gstress>> + <br> <</if>> <<else>> <<if $worn.under_lower.type.includes("naked")>> - As you turn to leave, the <<person1>><<person>> pulls down the back of your $worn.lower.name, revealing your bare <<bottom>> to the cafe. "No underwear!" <<He>> says with incredulity. "Bet you regret that now." - <<fameexhibitionism 5>><<stress 3>><<arousal 300>><<gstress>><<garousal>> - <br><br> + As you turn to leave, the <<person1>><<person>> pulls down the back of your $worn.lower.name, revealing your bare <<bottom>> to the cafe. + "No underwear!" <<He>> says with incredulity. "Bet you regret that now." + <<fameexhibitionism 5>><<stress 3>><<arousal 300>><<gstress>><<garousal>> + <br><br> - <<link [[Get angry|Ocean Breeze Angry]]>><</link>> - <br> - <<link [[Ignore|Ocean Breeze Ignore]]>><<trauma 3>><<stress 3>><<set $phase to 1>><</link>><<gtrauma>><<gstress>> - <br> + <<link [[Get angry|Ocean Breeze Angry]]>><</link>> + <br> + <<link [[Ignore|Ocean Breeze Ignore]]>><<trauma 3>><<stress 3>><<set $phase to 1>><</link>><<gtrauma>><<gstress>> + <br> <<else>> - As you turn to leave, the <<person1>><<person>> pulls down the back of your $worn.lower.name, revealing your $worn.under_lower.name to the cafe. - <<fameexhibitionism 1>><<stress 2>><<arousal 200>><<gstress>><<garousal>> - <br><br> + As you turn to leave, the <<person1>><<person>> pulls down the back of your $worn.lower.name, revealing your $worn.under_lower.name to the cafe. + <<fameexhibitionism 1>><<stress 2>><<arousal 200>><<gstress>><<garousal>> + <br><br> - <<link [[Get angry|Ocean Breeze Angry]]>><</link>> - <br> - <<link [[Ignore|Ocean Breeze Ignore]]>><<trauma 2>><<stress 2>><<set $phase to 0>><</link>><<gtrauma>><<gstress>> - <br> + <<link [[Get angry|Ocean Breeze Angry]]>><</link>> + <br> + <<link [[Ignore|Ocean Breeze Ignore]]>><<trauma 2>><<stress 2>><<set $phase to 0>><</link>><<gtrauma>><<gstress>> + <br> <</if>> <</if>> <<else>> - <<generate1>><<generate2>>You serve a young pair, a <<person1>><<person>> and a <<person2>><<person>>. You think you catch the <<person1>><<person>> checking you out, but they don't say anything. - <br><br> + <<generate1>><<generate2>>You serve a young pair, a <<person1>><<person>> and a <<person2>><<person>>. + You think you catch the <<person1>><<person>> checking you out, but they don't say anything. + <br><br> - The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. - <<pass 1 hour>> - <br><br> + The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. + <<pass 1 hour>> + <br><br> - <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> - <br> + <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> + <br> <</if>> <<elseif $rng gte 51>> @@ -399,7 +456,10 @@ You ask if <<he>> has any work for you. <<His>> smile broadens. "As a matter of <</if>> <<else>> They talk at length about - <<print either("the beach.","surfing.","the museum.","boys.","girls.","the food.","the news.","the ultimate unity of life.","their plans for next weekend.", "the political situation.")>> + <<print either( + "the beach", "surfing", "the museum", "boys", "girls", "the food", "the news", + "the ultimate unity of life", "their plans for next weekend", "the political situation" + )>>. <br><br> The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. <<pass 1 hour>> @@ -410,9 +470,15 @@ You ask if <<he>> has any work for you. <<His>> smile broadens. "As a matter of <<elseif $rng gte 41>> <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> - <<if $danger gte (9900 - $allure)>> - <<generate1>><<person1>> A <<person>> enters the cafe and sits alone in the corner. <<He>> keeps stealing glances at you, and when you go to take <<his>> order <<he>> asks only for a glass of water. As you turn to leave <<he>> grabs your wrist. "You don't happen to be on the menu, do you?" <<He>> smiles. "How about you and I find somewhere quiet and have some fun? I'll make it worth your while." <<He>> taps <<his>> <<wallet>>. <<His>> intentions are clearly lewd in nature. - <br><br> + + <<generate1>><<person1>> A <<person>> enters the cafe and sits alone in the corner. + <<if $danger gte (9900 - $allure)>> + <<He>> keeps stealing glances at you, and when you go to take <<his>> order <<he>> asks only for a glass of water. + As you turn to leave <<he>> grabs your wrist. + "You don't happen to be on the menu, do you?" <<He>> smiles. + "How about you and I find somewhere quiet and have some fun? I'll make it worth your while." <<He>> taps <<his>> <<wallet>>. + <<His>> intentions are clearly lewd in nature. + <br><br> <<if $promiscuity gte 15>> <<link [[Accept the offer|Ocean Breeze Whore]]>><<set $sexstart to 1>><</link>><<promiscuous2>> <br> @@ -427,86 +493,99 @@ You ask if <<he>> has any work for you. <<His>> smile broadens. "As a matter of <</if>> <<link [[Refuse|Ocean Breeze Whore Refuse]]>><</link>> <<else>> - <<generate1>><<person1>> A <<person>> enters the cafe and sits alone in the corner. <<He>> keeps stealing glances at you. However, <<he>> refuses to make eye contact when you take <<his>> order. - <br><br> - The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. - <<pass 1 hour>> - <br><br> + <<He>> keeps stealing glances at you. However, <<he>> refuses to make eye contact when you take <<his>> order. + <br><br> + The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. + <<pass 1 hour>> + <br><br> - <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> + <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> <</if>> <<elseif $rng gte 31>> <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> <<if $danger gte (9900 - $allure)>> - <<generate1>><<person1>>A <<if $pronoun is "m">>waiter<<else>>waitress<</if>> collides with you as you exit the kitchen, spilling warm soup over your <<if $worn.upper.type.includes("naked")>>chest<<else>>$worn.upper.name.<</if>> "I am so sorry," <<he>> says, reaching for a towel. Customers turn to watch. - <br><br> + <<generateRole 0 0 "waiter/waitress">><<person1>> + A <<person>> collides with you as you exit the kitchen, spilling warm soup over your + <<if $worn.upper.type.includes("naked")>>chest<<else>>$worn.upper.name.<</if>> + "I am so sorry," <<he>> says, reaching for a towel. Customers turn to watch. + <br><br> <<link [[Ignore|Ocean Breeze Soup Ignore]]>><<npcincr Sam love 2>><<stress 6>><<pain 20>><</link>><<glove>><<gpain>><<gstress>> <br> <<link [[Confront|Ocean Breeze Soup Confront]]>><<npcincr Sam love -1>><<stress -6>><<trauma -6>><</link>><<llove>><<ltrauma>><<lstress>> <br> - <<if $player.gender_appearance is "m" and $breastsize lte 2 and !$worn.upper.type.includes("naked")>> - <<link [[Remove top|Ocean Breeze Remove]]>><<npcincr Sam love 2>><</link>><<glove>> - <br> - <<elseif $exhibitionism gte 55 and !$worn.upper.type.includes("naked")>> - <<link [[Remove top|Ocean Breeze Remove Lewd]]>><<npcincr Sam love 2>><</link>><<glove>><<exhibitionist4>> - <br> + <<if !$worn.upper.type.includes("naked")>> + <<if $player.gender_appearance is "m" and $breastsize lte 2>> + <<link [[Remove top|Ocean Breeze Remove]]>><<npcincr Sam love 2>><</link>><<glove>> + <br> + <<elseif $exhibitionism gte 55>> + <<link [[Remove top|Ocean Breeze Remove Lewd]]>><<npcincr Sam love 2>><</link>><<glove>><<exhibitionist4>> + <br> + <</if>> <</if>> <<else>> - <<generate1>><<person1>>A <<if $pronoun is "m">>waiter<<else>>waitress<</if>> almost collides with you as you exit the kitchen. - <br><br> + <<generateRole 0 0 "waiter/waitress">><<person1>> + A <<person>> almost collides with you as you exit the kitchen. + <br><br> - The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. - <<pass 1 hour>> - <br><br> + The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. + <<pass 1 hour>> + <br><br> - <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> + <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> <</if>> <<elseif $rng gte 21>> <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> <<if $danger gte (9900 - $allure)>> - <<generate1>><<generate2>><<generate3>><<generate4>> - A large group enters the cafe, taking up several tables by themselves. You try to ask for their order, but a <<person1>><<person>> sitting at the head interrupts you. "It's my birthday today, you know. How about something special?" <<He>> openly ogles your body. "Wanna climb up on the table and give us a dance?" - <br><br> + <<generate1>><<generate2>><<generate3>><<generate4>> + A large group enters the cafe, taking up several tables by themselves. + You try to ask for their order, but a <<person1>><<person>> sitting at the head interrupts you. + "It's my birthday today, you know. How about something special?" <<He>> openly ogles your body. "Wanna climb up on the table and give us a dance?" + <br><br> - <<link [[Dance for them|Ocean Breeze Dance]]>><<danceinit>><<set $dancing to 1>><<set $audience to 4>><<set $venuemod to 2>><<set $timer to 12>><<set $dancelocation to "cafe">><</link>><<exhibitionist1>><<gstress>><<gtiredness>> + <<link [[Dance for them|Ocean Breeze Dance]]>> + <<danceinit>><<set $dancing to 1>><<set $audience to 4>><<set $venuemod to 2>><<set $timer to 12>><<set $dancelocation to "cafe">> + <</link>><<exhibitionist1>><<gstress>><<gtiredness>> <br><br> <<link [[Refuse|Ocean Breeze Dance Refuse]]>><</link>> <<else>> - A large group enters the cafe, taking up several tables by themselves. They don't give you any trouble though. - <br><br> - The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. - <<pass 1 hour>> - <br><br> + A large group enters the cafe, taking up several tables by themselves. They don't give you any trouble though. + <br><br> + The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. + <<pass 1 hour>> + <br><br> - <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> + <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> <</if>> <<elseif $rng gte 11 and $chef_state is undefined>> -<<npc Sam>><<person1>>Sam rushes out of the kitchen, looking flustered. + <<npc Sam>><<person1>>Sam rushes out of the kitchen, looking flustered. <<if $NPCName[$NPCNameList.indexOf("Sam")].love gte 10>> + <<He>> glances in your direction, <span class="green">then hastens over.</span> + "I'm in a bit of a pickle," <<he>> says. + "Our chef's stormed off again. I need someone to fill in. Don't worry, it's not hard, and I'll pay you double. Will you help me out?" + <br><br> - <<He>> glances in your direction, <span class="green">then hastens over.</span> "I'm in a bit of a pickle," <<he>> says. "Our chef's stormed off again. I need someone to fill in. Don't worry, it's not hard, and I'll pay you double. Will you help me out?" - <br><br> - - <<link [[Accept|Chef Help]]>><<npcincr Sam love 2>><</link>><<glove>> - <br> - <<link [[Refuse|Ocean Breeze Chef Refuse]]>><<npcincr Sam love -1>><</link>><<llove>> - <br> + <<link [[Accept|Chef Help]]>><<npcincr Sam love 2>><</link>><<glove>> + <br> + <<link [[Refuse|Ocean Breeze Chef Refuse]]>><<npcincr Sam love -1>><</link>><<llove>> + <br> <<else>> - <<He>> glances in your direction, <span class="red">but passes over you.</span> <<He>> approaches another member of staff, and offers them better pay to fill in for the chef this shift. <i>Perhaps Sam would be willing to give you a chance if <<he>> liked you more.</i> - <br><br> + <<He>> glances in your direction, <span class="red">but passes over you.</span> + <<He>> approaches another member of staff, and offers them better pay to fill in for the chef this shift. + <i>Perhaps Sam would be willing to give you a chance if <<he>> liked you more.</i> + <br><br> - The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. - <<pass 1 hour>> - <br><br> + The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. + <<pass 1 hour>> + <br><br> - <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> + <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> <</if>> <<else>> @@ -522,7 +601,9 @@ You ask if <<he>> has any work for you. <<His>> smile broadens. "As a matter of <<link [[Forget your task and go back inside|Ocean Breeze Dumpster Refuse]]>><</link>> <<else>> <<endevent>> - <<generate1>><<generate2>>Sam asks you to take some trash to the dumpster beside the cafe. Stood beside the dumpster, however, are a <<person1>><<person>> and a <<person2>><<person>>. They have a dangerous look about them. + <<generate1>><<generate2>> + Sam asks you to take some trash to the dumpster beside the cafe. + Stood beside the dumpster, however, are a <<person1>><<person>> and a <<person2>><<person>>. They have a dangerous look about them. <br><br> <<link [[Continue regardless|Ocean Breeze Dumpster]]>><<stress 6>><</link>><<gstress>> @@ -536,13 +617,13 @@ You ask if <<he>> has any work for you. <<His>> smile broadens. "As a matter of <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $submissive gte 1150>> -"I-it's my fault," you say. + "I-it's my fault," you say. <<elseif $submissive lte 850>> -"Just watch where you're going in the future," you say. + "Just watch where you're going in the future," you say. <<else>> -"It's okay," you say. + "It's okay," you say. <</if>> -The <<if $pronoun is "m">>waiter<<else>>waitress<</if>> nods and disappears into the kitchen while you dry off. +The <<personsimple>> nods and disappears into the kitchen while you dry off. <br><br> "You handled that well," Sam says from behind the till. @@ -576,7 +657,8 @@ The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. :: Ocean Breeze Remove <<set $outside to 0>><<set $location to "cafe">><<effects>> -You remove your $worn.upper.name to make it easier to dry. The <<if $pronoun is "m">>waiter<<else>>waitress<</if>> averts <<his>> eyes and a customer whistles, but you manage to dry off without hassle. +You remove your $worn.upper.name to make it easier to dry. +The <<personsimple>> averts <<his>> eyes and a customer whistles, but you manage to dry off without hassle. <br><br> <<upperstrip>> @@ -594,7 +676,9 @@ The rest of the shift passes uneventfully. Someone left you a tip.<<tipreceive>> :: Ocean Breeze Remove Lewd <<set $outside to 0>><<set $location to "cafe">><<effects>> -You remove your $worn.upper.name to make it easier to dry. The <<if $pronoun is "m">>waiter<<else>>waitress<</if>> averts <<his>> eyes and blushes at the sight of your <<breasts>>. A customer whistles. Another cheers. You manage to dry off without hassle. +You remove your $worn.upper.name to make it easier to dry. +The <<personsimple>> averts <<his>> eyes and blushes at the sight of your <<breasts>>. +A customer whistles. Another cheers. You manage to dry off without hassle. <<exhibitionism4>> <<upperstrip>> @@ -614,7 +698,8 @@ The rest of the shift passes uneventfully. Someone left you a tip. <<set $outside to 0>><<set $location to "cafe">><<effects>> <<npcincr Sam love -1>> -You turn on the spot and glare at the <<person1>><<person>>. The grin falls off <<his>> face. "Just having a laugh. No need to pout." Sam looks over at you disapprovingly. +You turn on the spot and glare at the <<person1>><<person>>. +The grin falls off <<his>> face. "Just having a laugh. No need to pout." Sam looks over at you disapprovingly. <<llove>> <br><br> @@ -628,43 +713,43 @@ The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $phase is 0>> -You rearrange your $worn.lower.name and continue as if nothing happened. -<br><br> + You rearrange your $worn.lower.name and continue as if nothing happened. + <br><br> -<<set $tipmod to 0.2>><<tipset "serving">> + <<set $tipmod to 0.2>><<tipset "serving">> -<<set $tip += 500>> -<<set $tip += 100>> + <<set $tip += 500>> + <<set $tip += 100>> -The rest of the shift passes uneventfully. Someone left you a tip. -<<tipreceive>> -<br><br> + The rest of the shift passes uneventfully. Someone left you a tip. + <<tipreceive>> + <br><br> <<elseif $phase is 1>> -You rearrange your $worn.lower.name and continue as if nothing happened. -<br><br> + You rearrange your $worn.lower.name and continue as if nothing happened. + <br><br> -<<set $tipmod to 0.2>><<tipset "serving">> + <<set $tipmod to 0.2>><<tipset "serving">> -<<set $tip += 500>> -<<set $tip += 200>> + <<set $tip += 500>> + <<set $tip += 200>> -The rest of the shift passes uneventfully. Someone left you a tip. -<<tipreceive>> -<br><br> + The rest of the shift passes uneventfully. Someone left you a tip. + <<tipreceive>> + <br><br> <<else>> -You rearrange your $worn.lower.name and continue as if nothing happened, blushing at being exposed and humiliated in public like this. -<br><br> + You rearrange your $worn.lower.name and continue as if nothing happened, blushing at being exposed and humiliated in public like this. + <br><br> -<<set $tipmod to 0.2>><<tipset "serving">> + <<set $tipmod to 0.2>><<tipset "serving">> -<<set $tip += 500>> -<<set $tip += 500>> + <<set $tip += 500>> + <<set $tip += 500>> -The rest of the shift passes uneventfully. Someone left you a tip. -<<tipreceive>> -<br><br> + The rest of the shift passes uneventfully. Someone left you a tip. + <<tipreceive>> + <br><br> <</if>> <<pass 1 hour>> @@ -673,19 +758,19 @@ The rest of the shift passes uneventfully. Someone left you a tip. :: Ocean Breeze Whore <<if $sexstart is 1>> -<<set $sexstart to 0>> -<<consensual>> -<<set $consensual to 1>> -<<neutral 1>> - -<<maninit>> -<<set $enemytrust += 40>> -<<set $tipmod to 2>><<tipset "serving">> -"Meet me in the alley next to the cafe in five minutes, behind the dumpster." <<He>> leaves without looking back. -<<pass 5>> -You slip out while no one is looking, and find <<him>> waiting for you behind the dumpster as promised. <<He>> doesn't waste any time. -<<promiscuity2>> -<br><br> + <<set $sexstart to 0>> + <<consensual>> + <<set $consensual to 1>> + <<neutral 1>> + + <<maninit>> + <<set $enemytrust += 40>> + <<set $tipmod to 2>><<tipset "serving">> + "Meet me in the alley next to the cafe in five minutes, behind the dumpster." <<He>> leaves without looking back. + <<pass 5>> + You slip out while no one is looking, and find <<him>> waiting for you behind the dumpster as promised. <<He>> doesn't waste any time. + <<promiscuity2>> + <br><br> <</if>> <<effects>> @@ -717,39 +802,37 @@ The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $consensual is 1>> - <<if $enemyarousal gte $enemyarousalmax>> - <<ejaculation>><<set $prostitutionstat += 1>><<fameprostitution 1>> + <<ejaculation>><<set $prostitutionstat += 1>><<fameprostitution 1>> - "Here's your pay, whore." <<He>> drops some cash on you as <<he>> leaves. <<tearful>> you hurry back inside before you're missed. - <br><br> - <<tipreceive>> + "Here's your pay, whore." <<He>> drops some cash on you as <<he>> leaves. <<tearful>> you hurry back inside before you're missed. + <br><br> + <<tipreceive>> <<else>> - - "Fine. I hope you don't expect anything." <<He>> looks at you with disgust as <<he>> leaves. <<tearful>> you hurry back inside before you're missed. - <br><br> + "Fine. I hope you don't expect anything." <<He>> looks at you with disgust as <<he>> leaves. <<tearful>> you hurry back inside before you're missed. + <br><br> <</if>> - <<else>> - <<if $enemyarousal gte $enemyarousalmax>> - <<ejaculation>><<fameprostitution 1>><<set $prostitutionstat += 1>> - "Here's your pay, whore." <<He>> drops some cash on you as <<he>> leaves. <<tearful>> you hurry back inside before you're missed. - <br><br> - <<tipreceive>> + <<ejaculation>><<fameprostitution 1>><<set $prostitutionstat += 1>> + "Here's your pay, whore." <<He>> drops some cash on you as <<he>> leaves. <<tearful>> you hurry back inside before you're missed. + <br><br> + <<tipreceive>> + <<elseif $enemyhealth lte 0>> - You manage to knock the <<person>> backwards, giving you time to escape. <<tearful>> you flee back into the cafe. - <br><br> + You manage to knock the <<person>> backwards, giving you time to escape. <<tearful>> you flee back into the cafe. + <br><br> <</if>> <<if $alarm gte 1>> - Sam bursts through the cafe back entrance to see what the fuss is about. The <<person>> shields hides <<his>> face and darts away, pushing you to the ground. Sam helps you up and gently steers you back inside. + Sam bursts through the cafe back entrance to see what the fuss is about. + The <<person>> shields hides <<his>> face and darts away, pushing you to the ground. Sam helps you up and gently steers you back inside. <<famerape 1>> <br><br> - <</if>> + <</if>> <</if>> <br><br> @@ -771,22 +854,22 @@ The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. <<danceactions>> <<if $danceevent is 0 and $exhibitionism lte 74 and $exposed gte 2>> -There's no way you can continue dancing while so exposed! Face reddening, you flee the scene. -<br><br> + There's no way you can continue dancing while so exposed! Face reddening, you flee the scene. + <br><br> <<elseif $danceevent is 0 and $exhibitionism lte 34 and $exposed gte 1>> -There's no way you can continue dancing while so exposed! Face reddening, you flee the scene. -<br><br> + There's no way you can continue dancing while so exposed! Face reddening, you flee the scene. + <br><br> <</if>> <<if $danceevent is "finish">> -<<link [[Next|Ocean Breeze]]>><<endevent>><<clotheson>><</link>> + <<link [[Next|Ocean Breeze]]>><<endevent>><<clotheson>><</link>> <<elseif $danceevent is 0>> <<if $exposed gte 2 and $exhibitionism lte 74>> - <<link [[Flee|Ocean Breeze Dance Stop]]>><</link>> + <<link [[Flee|Ocean Breeze Dance Stop]]>><</link>> <<elseif $exposed gte 1 and $exhibitionism lte 34>> - <<link [[Flee|Ocean Breeze Dance Stop]]>><</link>> + <<link [[Flee|Ocean Breeze Dance Stop]]>><</link>> <<else>> - <<link [[Stop|Ocean Breeze Dance Stop]]>><</link>> + <<link [[Stop|Ocean Breeze Dance Stop]]>><</link>> <</if>> <</if>> @@ -807,31 +890,8 @@ You rush to a back room, out of sight. <<clotheson>> The rest of the shift passe You earn <<moneyGain 5>>. -<<if $timer is 12>> -<<pass 60>> -<<elseif $timer is 11>> -<<pass 55>> -<<elseif $timer is 10>> -<<pass 50>> -<<elseif $timer is 9>> -<<pass 45>> -<<elseif $timer is 8>> -<<pass 40>> -<<elseif $timer is 7>> -<<pass 35>> -<<elseif $timer is 6>> -<<pass 30>> -<<elseif $timer is 5>> -<<pass 25>> -<<elseif $timer is 4>> -<<pass 20>> -<<elseif $timer is 3>> -<<pass 15>> -<<elseif $timer is 2>> -<<pass 10>> -<<elseif $timer is 1>> -<<pass 5>> -<</if>> +<<set _pass to 5 * Math.clamp($timer, 0, 12)>> +<<pass _pass>> <br><br> @@ -842,22 +902,23 @@ You earn <<moneyGain 5>>. <<set $outside to 0>><<set $location to "cafe">><<effects>> <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> -<<if $danger gte (9900 - $allure)>><<set $outside to 1>> -You decide you're being paranoid, and walk over to the dumpster. As you turn to leave however, you find the pair blocking your path. The <<person1>><<person>> grabs your arms and covers your mouth, while the <<person2>><<person>> grins at you. "Such a pretty little thing." -<br><br> +<<if $danger gte (9900 - $allure)>> + <<set $outside to 1>> + You decide you're being paranoid, and walk over to the dumpster. As you turn to leave however, you find the pair blocking your path. + The <<person1>><<person>> grabs your arms and covers your mouth, while the <<person2>><<person>> grins at you. "Such a pretty little thing." + <br><br> -<<link [[Next|Ocean Breeze Rape]]>><<set $molestationstart to 1>><</link>> -<br> + <<link [[Next|Ocean Breeze Rape]]>><<set $molestationstart to 1>><</link>> + <br> <<else>> -You decide you're being paranoid, and walk over to the dumpster. The pair check you out as you walk by, but don't say anything. -<br><br> - -The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. -<<pass 1 hour>> -<br><br> + You decide you're being paranoid, and walk over to the dumpster. The pair check you out as you walk by, but don't say anything. + <br><br> -<<link [[Next|Ocean Breeze]]>><<endevent>><</link>> + The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. + <<pass 1 hour>> + <br><br> + <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> <</if>> :: Ocean Breeze Dumpster Refuse @@ -875,15 +936,15 @@ The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. :: Ocean Breeze Rape <<if $molestationstart is 1>> -<<set $molestationstart to 0>> -<<controlloss>> -<<violence 1>> -<<neutral 1>> -<<molested>> - -<<enable_rescue>> -<<maninit>> -<<set $leftarm to "grappled">><<set $rightarm to "grappled">><<hand_gag 0 left>><<set $NPCList[0].righthand to "arms">> + <<set $molestationstart to 0>> + <<controlloss>> + <<violence 1>> + <<neutral 1>> + <<molested>> + + <<enable_rescue>> + <<maninit>> + <<set $leftarm to "grappled">><<set $rightarm to "grappled">><<hand_gag 0 left>><<set $NPCList[0].righthand to "arms">> <</if>> <<effects>> @@ -903,18 +964,19 @@ The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> -Satisfied, the pair leave you be. <<tearful>> you hurry back inside before you're missed. -<br><br> + <<ejaculation>> + Satisfied, the pair leave you be. <<tearful>> you hurry back inside before you're missed. + <br><br> <<elseif $enemyhealth lte 0>> -You manage to knock the pair against the dumpster, giving you time to escape. <<tearful>> you flee back into the cafe. -<br><br> + You manage to knock the pair against the dumpster, giving you time to escape. <<tearful>> you flee back into the cafe. + <br><br> <<elseif $alarm gte 1>> -Sam bursts through the cafe's back entrance to see what the fuss is about. The pair flee the scene, pushing you to the ground as they do. Sam helps you up and gently steers you back inside. -<<set $rescued += 1>><<famerape 1>> -<br><br> + Sam bursts through the cafe's back entrance to see what the fuss is about. The pair flee the scene, pushing you to the ground as they do. + Sam helps you up and gently steers you back inside. + <<set $rescued += 1>><<famerape 1>> + <br><br> <</if>> <<clothesontowel>> @@ -931,34 +993,35 @@ The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. <<set $outside to 0>><<set $location to "cafe">><<effects>> <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> -<<if $danger gte (9900 - $allure)>><<set $outside to 1>> -You decide you're being paranoid, and walk over to the dumpster. As you turn to leave however, the <<beasttype>> blocks your path. -<br><br> +<<if $danger gte (9900 - $allure)>> + <<set $outside to 1>> + You decide you're being paranoid, and walk over to the dumpster. As you turn to leave however, the <<beasttype>> blocks your path. + <br><br> -<<link [[Next|Ocean Breeze Dog Rape]]>><<set $molestationstart to 1>><</link>> -<br> + <<link [[Next|Ocean Breeze Dog Rape]]>><<set $molestationstart to 1>><</link>> + <br> <<else>> -You decide you're being paranoid, and walk over to the dumpster. The <<beasttype>> runs away as you draw closer. -<br><br> + You decide you're being paranoid, and walk over to the dumpster. The <<beasttype>> runs away as you draw closer. + <br><br> -The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. -<<pass 1 hour>> -<br><br> + The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. + <<pass 1 hour>> + <br><br> -<<link [[Next|Ocean Breeze]]>><<endevent>><</link>> + <<link [[Next|Ocean Breeze]]>><<endevent>><</link>> <</if>> :: Ocean Breeze Dog Rape <<if $molestationstart is 1>> -<<set $molestationstart to 0>> -<<controlloss>> -<<violence 1>> -<<neutral 1>> -<<molested>> + <<set $molestationstart to 0>> + <<controlloss>> + <<violence 1>> + <<neutral 1>> + <<molested>> <<beastCombatInit>> -<<enable_rescue>> + <<enable_rescue>> <</if>> @@ -986,18 +1049,19 @@ The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $enemyarousal gte $enemyarousalmax>> -<<beastejaculation>> -Satisfied, the <<beasttype>> leaves you be. <<tearful>> you head back into the cafe. -<br><br> + <<beastejaculation>> + Satisfied, the <<beasttype>> leaves you be. <<tearful>> you head back into the cafe. + <br><br> <<elseif $enemyhealth lte 0>> -The <<beasttype>> yelps in pain and flees. <<tearful>> you head back into the cafe. -<br><br> + The <<beasttype>> yelps in pain and flees. <<tearful>> you head back into the cafe. + <br><br> <<elseif $alarm gte 1>> -Sam bursts through the cafe back entrance to see what the fuss is about. Startled, the <<beasttype>> flees. You feel humiliated, but Sam helps you up and gently steers you back inside. -<<famebestiality 1>><<set $rescued += 1>> -<br><br> + Sam bursts through the cafe back entrance to see what the fuss is about. + Startled, the <<beasttype>> flees. You feel humiliated, but Sam helps you up and gently steers you back inside. + <<famebestiality 1>><<set $rescued += 1>> + <br><br> <</if>> <<clothesontowel>> @@ -1014,29 +1078,30 @@ The rest of the shift passes uneventfully. You earn <<moneyGain 5>>. <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $phase is 0>> -You spin on the spot, flaring your skirt up even more and making sure everyone gets a good view before the wind dies down. -<<exhibitionism1>> -<br><br> + You spin on the spot, flaring your skirt up even more and making sure everyone gets a good view before the wind dies down. + <<exhibitionism1>> + <br><br> -<<set $tipmod to 0.2>><<tipset "serving">> + <<set $tipmod to 0.2>><<tipset "serving">> -<<set $tip += 500>> -<<set $tip += 200>> + <<set $tip += 500>> + <<set $tip += 200>> -The rest of the shift passes uneventfully. Someone left you a tip. -<<tipreceive>> -<br><br> + The rest of the shift passes uneventfully. Someone left you a tip. + <<tipreceive>> + <br><br> <<else>> -You press down on the front of your skirt to cover your <<genitals>> but lean forward as you do, sticking your bare butt out while feigning embarrassment. <<exhibitionism3>> -<br><br> + You press down on the front of your skirt to cover your <<genitals>> but lean forward as you do, sticking your bare butt out while feigning embarrassment. <<exhibitionism3>> + <br><br> -<<set $tipmod to 0.2>><<tipset "serving">> + <<set $tipmod to 0.2>><<tipset "serving">> -<<set $tip += 500>> -<<set $tip += 500>> + <<set $tip += 500>> + <<set $tip += 500>> -The rest of the shift passes uneventfully. Someone left you a tip.<<tipreceive>> -<br><br> + The rest of the shift passes uneventfully. Someone left you a tip. + <<tipreceive>> + <br><br> <</if>> <<link [[Next|Ocean Breeze]]>><<endevent>><<pass 1 hour>><</link>> @@ -1048,8 +1113,8 @@ Cheeks flushing, you press down on your skirt to cover your dignity before the s <br><br> <<if $player.gender_appearance is "f" and $player.penisExist>> -As you escape into the cafe you think you hear someone say, "Was that a penis?" -<br><br> + As you escape into the cafe you think you hear someone say, "Was that a penis?" + <br><br> <</if>> <<set $tipmod to 0.2>><<tipset "serving">> @@ -1068,13 +1133,14 @@ The rest of the shift passes uneventfully. Someone left you a tip.<<tipreceive>> You sit. The <<person>> passes you a spoon, then looks down. "I've left my shoes untied," <<he>> sighs. <<He>> disappears beneath the table. <br><br> -You press the spoon into the bun, but are interrupted by the <<person>> appearing between your knees. "Now that I'm down here," <<he>> whispers. "I've a different craving." You glance around. No one else has noticed. +You press the spoon into the bun, but are interrupted by the <<person>> appearing between your knees. +"Now that I'm down here," <<he>> whispers. "I've a different craving." You glance around. No one else has noticed. <br><br> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> -<<He>> tries to lift your $worn.lower.name. +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> + <<He>> tries to lift your $worn.lower.name. <<else>> -<<He>> tries pull down your $worn.lower.name. + <<He>> tries pull down your $worn.lower.name. <</if>> <br><br> @@ -1087,11 +1153,11 @@ You press the spoon into the bun, but are interrupted by the <<person>> appearin <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $submissive gte 1150>> -"S-sorry," you say. "I'm supposed to be working." + "S-sorry," you say. "I'm supposed to be working." <<elseif $submissive lte 850>> -"Can't," you say. "I've a job to do." + "Can't," you say. "I've a job to do." <<else>> -"I'm working," you say. "I don't want to get in trouble." + "I'm working," you say. "I don't want to get in trouble." <</if>> <br><br> @@ -1126,7 +1192,7 @@ You let the <<person>> continue. <<His>> eyes widen as <<he>> exposes your chastity belt. <<promiscuity1>> - "You're all locked up," <<he>> says. "And I was so keen on having a taste." <<He>> disappears once more, and emerges beside <<his>> chair. + "You're all locked up," <<he>> says. "And I was so keen on having a taste." <<He>> disappears once more, and emerges beside <<his>> chair. "Your secret's safe with me." <<He>> winks. <br><br> @@ -1135,8 +1201,8 @@ You let the <<person>> continue. <<else>> <<if $player.penisExist and $player.vaginaExist>> - <<His>> eyes light up as <<he>> exposes your <<genitals>>. "They're beautiful," <<he>> says, - before closing <<his>> eyes in rapture and planting kisses down your shaft, from tip to base, and then over your labia. + <<His>> eyes light up as <<he>> exposes your <<genitals>>. + "They're beautiful," <<he>> says, before closing <<his>> eyes in rapture and planting kisses down your shaft, from tip to base, and then over your labia. <br><br> You erect in response. <<He>> pulls away and examines you. @@ -1147,7 +1213,7 @@ You let the <<person>> continue. <</if>> <<He>> leans forward again, and runs <<his>> tongue along your length. <<else>> - <<His>> eyes light up as <<he>> exposes your <<genitals>>, then close in rapture as <<he>> kisses it. <<He>> looks up at you. + <<His>> eyes light up as <<he>> exposes your <<genitals>>, then close in rapture as <<he>> kisses it. <<He>> looks up at you. "Your <<print ($player.penisExist ? "penis" : "pussy")>> is beautiful," <<he>> says. <<He>> closes <<his>> eyes and plants another kiss. Then another. <<promiscuity1>> @@ -1171,14 +1237,15 @@ You let the <<person>> continue. <</if>> <br><br> - <<He>> continues licking, kissing and blowing you. <<He>> alternates between looking up at your face, and at your <<genitals>>. + <<He>> continues licking, kissing and blowing you. <<He>> alternates between looking up at your face, and at your <<genitals>>. <<Hes>> sensitive to your responses, and adapts before you get too used to any one technique. Your breath quickens. <br><br> <<arousal 1000>><<orgasm>> <<if $player.penisExist>> - <<He>> closes <<his>> eyes as you shudder, and catches your semen with <<his>> face. <<He>> scoops with <<his>> fingers and laps it up. "The best cream," <<he>> whispers. + <<He>> closes <<his>> eyes as you shudder, and catches your semen with <<his>> face. + <<He>> scoops with <<his>> fingers and laps it up. "The best cream," <<he>> whispers. <<else>> <<He>> watches as you shudder, and smiles. "I hope you enjoyed the treat," <<he>> whispers. <</if>> @@ -1203,10 +1270,12 @@ The rest of the shift passes uneventfully. Someone left you a tip.<<tipreceive>> :: Cafe Coffee <<endevent>> <<set _coffee to ["mocha", "latte", "caramel latte", "white chocolate mocha", "flat white", "caramel iced latte"].pluck()>> -You take a seat at one of the elevated seats at the window and order a <<print _coffee>> from the menu. It arrives promptly; Wafting the delicious smell of fresh coffee up your nose. +You take a seat at one of the elevated seats at the window and order a <<print _coffee>> from the menu. +It arrives promptly; Wafting the delicious smell of fresh coffee up your nose. -<<if setup.clothes.lower[$worn.lower.index].skirt is 1 and $exhibitionism gte 55>> - A wicked thought occurs to you as you take a sip of your coffee. The seat has your legs elevated to almost eye level from the perspective of passers-by, and you're wearing a skirt. +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $exhibitionism gte 55>> + A wicked thought occurs to you as you take a sip of your coffee. + The seat has your legs elevated to almost eye level from the perspective of passers-by, and you're wearing a skirt. <<if $exhibitionism gte 75 and $worn.under_lower.exposed>> You're also not wearing any underwear. <<arousal 500>><<garousal>> <br><br> @@ -1257,7 +1326,8 @@ You take a seat at one of the elevated seats at the window and order a <<print _ <<cafecoffeesip>> <<elseif $arousal gte $arousalmax - 20>> <<orgasm>> - Still hazy from your orgasm you look up to see the strangers outside grinning at you, a few of them are giggling and gossiping with each other. You've been caught, given away by your own body no less. + Still hazy from your orgasm you look up to see the strangers outside grinning at you, a few of them are giggling and gossiping with each other. + You've been caught, given away by your own body no less. <<if $cameras_raised gte 1>> <span class="pink"> Some of them even got your orgasm on camera. @@ -1266,7 +1336,8 @@ You take a seat at one of the elevated seats at the window and order a <<print _ You feel utterly humiliated. <<trauma 10>><<gtrauma>> <<else>> - Your tummy flutters in delight at having an audience for your public orgasm. It doesn't hurt that you managed to get off purely from exposing yourself either. + Your tummy flutters in delight at having an audience for your public orgasm. + It doesn't hurt that you managed to get off purely from exposing yourself either. <<stress -5>><<exhibitionism4>> <</if>> <<fameexhibitionism 50>> @@ -1276,7 +1347,8 @@ You take a seat at one of the elevated seats at the window and order a <<print _ <<switch $phase>> <<case 0>> <<if !$still>> - You bring the coffee up to your mouth to partially obscure your face, and bring your knees ever so slightly apart. Not very far, just far enough to give the tiniest glimpse at your <<undies>> to anyone who happens to be looking. + You bring the coffee up to your mouth to partially obscure your face, and bring your knees ever so slightly apart. + Not very far, just far enough to give the tiniest glimpse at your <<undies>> to anyone who happens to be looking. You take a sip of your coffee. <<cafecoffeesip>> <<else>> @@ -1294,7 +1366,8 @@ You take a seat at one of the elevated seats at the window and order a <<print _ <</if>> <<case 1>> <<if !$still>> - Taking another sip of your coffee you adjust your legs to bring your knees to a slight part, exposing a tantalising amount of your <<undies>> to onlookers without giving all your secrets away. + Taking another sip of your coffee you adjust your legs to bring your knees to a slight part, + exposing a tantalising amount of your <<undies>> to onlookers without giving all your secrets away. <<cafecoffeesip>> <<else>> Taking another sip of your coffee you adjust your feet a little, making sure to stay at about the same level of exposure. It's fun to tease. @@ -1329,19 +1402,23 @@ You take a seat at one of the elevated seats at the window and order a <<print _ <<set _caught to 1>> <</if>> <<case 3>> - Feeling daring <<seatedflashcrotchunderskirt>> giving the onlookers a <<print ["wonderful", "delightful", "fantastic"].pluck()>> view of your bare <<undies>> while you take another sip of your coffee. + Feeling daring <<seatedflashcrotchunderskirt>> giving the onlookers a <<print ["wonderful", "delightful", "fantastic"].pluck()>> + view of your bare <<undies>> while you take another sip of your coffee. <<cafecoffeesip>> <br><br> <<if $skulduggery gte 400 + random(0, 50)>> - Some of the strangers gawk at what they're seeing, struggling to hide their voyeurism. A few of them jab the others in the rib to try and keep them from spoiling the fun. + Some of the strangers gawk at what they're seeing, struggling to hide their voyeurism. + A few of them jab the others in the rib to try and keep them from spoiling the fun. <<else>> - Some of the strangers gawk at what they're seeing, struggling to hide their voyeurism. A few of them point at you, whisper something to the others before looking back at you and meeting your gaze with a smirk. You've been caught. + Some of the strangers gawk at what they're seeing, struggling to hide their voyeurism. + A few of them point at you, whisper something to the others before looking back at you and meeting your gaze with a smirk. You've been caught. <<trauma $phase>><<gtrauma>> <br><br> <<set _caught to 1>> <</if>> <<case 4>> - You let your legs slowly come to a natural close, taking a moment to enjoy a giggle to yourself at what you've gotten away with. The strangers who were making excuses to spend time staring at the window begin to disperse, thinking the show's over. + You let your legs slowly come to a natural close, taking a moment to enjoy a giggle to yourself at what you've gotten away with. + The strangers who were making excuses to spend time staring at the window begin to disperse, thinking the show's over. You take another sip of your coffee. <<cafecoffeesip>> <br><br> @@ -1440,15 +1517,11 @@ You take a seat at one of the elevated seats at the window and order a <<print _ <<if !$resting and random(0, 9) + $phase gte 8>> <<set $cameras_raised to random(1, 3)>> - <span class="pink"> - <<switch $cameras_raised>> - <<case 1>>One - <<case 2>>Two - <<case 3>>Three - <<case 4>>Four - <</switch>> - of the onlookers take their phone<<if $cameras_raised gt 1>>s<</if>> out of their pocket<<if $cameras_raised gt 1>>s<</if>>. - </span> + <<if $cameras_raised is 1>> + <span class="pink">One of the onlookers takes their phone out of their pocket.</span> + <<else>> + <span class="pink"><<Number $cameras_raised>> of the onlookers take their phones out of their pockets.</span> + <</if>> <</if>> /* handle how aroused we feel about things */ @@ -1506,12 +1579,13 @@ You take a seat at one of the elevated seats at the window and order a <<print _ <<link [[Finish your drink|Cafe Coffee Finish]]>><</link>> :: Cafe Coffee Finish -<<if def $resting>> <<unset $resting>> <</if>> -<<if def $cameras_raised>> <<unset $cameras_raised>> <</if>> -<<if def $still>> <<unset $still>> <</if>> -<<if def $coffee_sips>> <<unset $coffee_sips>> <</if>> +<<unset $resting>> +<<unset $cameras_raised>> +<<unset $still>> +<<unset $coffee_sips>> -You drink the last of your coffee and place the mug back down on the table, before wiggling off your seat. You feel a little more refreshed with the caffeine in your system. +You drink the last of your coffee and place the mug back down on the table, before wiggling off your seat. +You feel a little more refreshed with the caffeine in your system. <br><br> <<endevent>> <<link [[Next|Ocean Breeze]]>><</link>> @@ -1520,13 +1594,19 @@ You drink the last of your coffee and place the mug back down on the table, befo <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $weather is "rain">> - You take a seat and order a fruit salad. It arrives promptly; fresh strawberries, blueberries, kiwifruit, and chunks of pineapple. It's sweet and delicious. You stare out the window at the rain-filled street, and feel comfy. + You take a seat and order a fruit salad. + It arrives promptly; fresh strawberries, blueberries, kiwifruit, and chunks of pineapple. It's sweet and delicious. + You stare out the window at the rain-filled street, and feel comfy. <br><br> <<elseif $weather is "snow">> - You take a seat and order a fruit salad. It arrives promptly; fresh strawberries, blueberries, kiwifruit, and chunks of pineapple. It's sweet and delicious. You stare out the window at the snowy street, and feel comfy. + You take a seat and order a fruit salad. + It arrives promptly; fresh strawberries, blueberries, kiwifruit, and chunks of pineapple. It's sweet and delicious. + You stare out the window at the snowy street, and feel comfy. <br><br> <<else>> - You take a seat outside and order a fruit salad. It arrives promptly; fresh strawberries, blueberries, kiwifruit, and chunks of pineapple. It's sweet and delicious. You stare out over the sea, and enjoy the breeze. + You take a seat outside and order a fruit salad. + It arrives promptly; fresh strawberries, blueberries, kiwifruit, and chunks of pineapple. It's sweet and delicious. + You stare out over the sea, and enjoy the breeze. <br><br> <</if>> @@ -1537,20 +1617,24 @@ You drink the last of your coffee and place the mug back down on the table, befo <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $weather is "rain">> - You take a seat and order pancakes. They arrive soon after, along with a cup of coffee. It's tastier than anything you've had at the orphanage. You stare out the window at the rain-filled street, and feel comfy. + You take a seat and order pancakes. They arrive soon after, along with a cup of coffee. + It's tastier than anything you've had at the orphanage. You stare out the window at the rain-filled street, and feel comfy. <br><br> <<elseif $weather is "snow">> - You take a seat and order pancakes. They arrive soon after, along with a cup of coffee. It's tastier than anything you've had at the orphanage. You stare out the window at the snowy street, and feel comfy. + You take a seat and order pancakes. They arrive soon after, along with a cup of coffee. + It's tastier than anything you've had at the orphanage. You stare out the window at the snowy street, and feel comfy. <br><br> <<else>> - You take a seat and order pancakes. They arrive soon after, along with a cup of coffee. It's tastier than anything you've had at the orphanage. You stare out over the sea, and enjoy the breeze. + You take a seat and order pancakes. They arrive soon after, along with a cup of coffee. + It's tastier than anything you've had at the orphanage. You stare out over the sea, and enjoy the breeze. <br><br> <</if>> <<set $rng to random(0, 10)>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1 and $rng gte 6>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $rng gte 6>> <<endevent>> - You notice a <<generate1>><<person1>><<person>> staring at you from across the cafe. Suddenly you realise you've let your legs drift apart slightly, and the <<person>> is trying to look up your skirt. + You notice a <<generate1>><<person1>><<person>> staring at you from across the cafe. + Suddenly you realise you've let your legs drift apart slightly, and the <<person>> is trying to look up your skirt. <<if $worn.under_lower.exposed>> You remember you aren't wearing any underwear. <<arousal 500>><<garousal>> @@ -1568,8 +1652,10 @@ You drink the last of your coffee and place the mug back down on the table, befo <<link [[Ignore the pervert and finish your food|Ocean Breeze]]>><<endevent>><</link>><br> <</if>> <<if $exhibitionism lte 54>> - You close your legs carefully so <<he>> doesn't see any more than <<he>> already has. As you carry on eating your delicious pancakes you can't help imagining what it would feel like to spread your legs and expose everything to <<his>> wandering eyes. - <<arousal +15>><<garousal>> + You close your legs carefully so <<he>> doesn't see any more than <<he>> already has. + As you carry on eating your delicious pancakes you can't help imagining what it would feel like to spread your legs + and expose everything to <<his>> wandering eyes. + <<arousal 15>><<garousal>> <br><br> <<link [[Finish your food|Ocean Breeze]]>><<endevent>><</link>> <</if>> @@ -1580,7 +1666,7 @@ You drink the last of your coffee and place the mug back down on the table, befo <<else>> /* we don't, so shut your legs you dirty normie */ You close your legs tightly, not wanting to give the pervert any more of a view than you already have. - <<stress +5>><<gstress>> + <<stress 5>><<gstress>> <br><br> <<link [[Ignore the pervert and finish your food|Ocean Breeze]]>><<endevent>><</link>> <br> @@ -1600,53 +1686,86 @@ You pretend to occupy yourself with your pancakes as you gently part your legs a /* are we good enough to at least not provoke mockery at our poor attempts at stealth exhibitionism? */ <<elseif $skulduggery gte 100>> - Knowing you're exposing yourself sends a gentle shiver down your spine but you make sure not to give any indication of your building arousal. Noticing <<his>> increased interest you decide to tease a little. <<seatedflashcrotchunderskirt>> giving <<him>> a clear view of your $worn.under_lower.name covered crotch. The <<person>> takes a sip of <<his>> drink and smirks a little to <<himself>>, it seems you weren't quite as subtle as you thought. + Knowing you're exposing yourself sends a gentle shiver down your spine but you make sure not to give any indication of your building arousal. + Noticing <<his>> increased interest you decide to tease a little. + <<seatedflashcrotchunderskirt>> giving <<him>> a clear view of your $worn.under_lower.name covered crotch. + The <<person>> takes a sip of <<his>> drink and smirks a little to <<himself>>, it seems you weren't quite as subtle as you thought. <br><br> - The act of exposing your underwear to a stranger in a cafe gives you a lewd thrill, and knowing <<he>> caught you doing it on purpose fills you with a mixture of nervousness and exhilaration. + The act of exposing your underwear to a stranger in a cafe gives you a lewd thrill, + and knowing <<he>> caught you doing it on purpose fills you with a mixture of nervousness and exhilaration. <<exhibitionism3>> - You decide to stop before things get out of hand, finishing up your pancakes before carefully getting out of your seat and leaving. <<His>> eyes and knowing smirk follow you as you make your way to the door, but <<he>> seems happy to leave you alone. + You decide to stop before things get out of hand, finishing up your pancakes before carefully getting out of your seat and leaving. + <<His>> eyes and knowing smirk follow you as you make your way to the door, but <<he>> seems happy to leave you alone. <br><br> <<CafeExhibitionismLegsPartNormalTerminate>> /* were bad at this and should feel bad */ <<else>> - Knowing you're exposing yourself sends a gentle shiver down your spine but you try your best not to give any indication of your building arousal. The <<person>> takes a sip of <<his>> drink and smirks a little to <<himself>>, barely suppressing a chuckle. It seems you were nowhere near as subtle as you thought. + Knowing you're exposing yourself sends a gentle shiver down your spine but you try your best not to give any indication of your building arousal. + The <<person>> takes a sip of <<his>> drink and smirks a little to <<himself>>, barely suppressing a chuckle. + It seems you were nowhere near as subtle as you thought. <br><br> - The act of exposing your underwear to a stranger in a cafe gives you a lewd thrill, and knowing <<he>> caught you doing it on purpose fills you with a mixture of nervousness and exhilaration. + The act of exposing your underwear to a stranger in a cafe gives you a lewd thrill, + and knowing <<he>> caught you doing it on purpose fills you with a mixture of nervousness and exhilaration. <<exhibitionism2>> - Embarrassed, you finish up your pancakes before getting out of your seat and leaving. <<His>> eyes and knowing smirk follow you as you make your way to the door, but <<he>> seems happy to leave you alone. + Embarrassed, you finish up your pancakes before getting out of your seat and leaving. + <<His>> eyes and knowing smirk follow you as you make your way to the door, but <<he>> seems happy to leave you alone. <br><br> <<CafeExhibitionismLegsPartNormalTerminate>> <</if>> :: Cafe Exhibitionism Legs Part Photo -With butterflies churning in your stomach you let the <<person>> snap a photo of your exposed $worn.under_lower.name with their phone, and then another, and then another. Revelling in the thrill of letting a stranger have such compromising photos of you, you alter your leg positions a few times to give them a wide variety of revealing shots. -<<arousal +15>><<garousal>> +With butterflies churning in your stomach you let the <<person>> snap a photo of your exposed $worn.under_lower.name with their phone, and then another, and then another. +Revelling in the thrill of letting a stranger have such compromising photos of you, you alter your leg positions a few times to give them a wide variety of revealing shots. +<<arousal 15>><<garousal>> <br><br> -Eventually you decide the <<person>> has had enough photos for now and let your legs come to a natural close. A mildly disappointed but clearly aroused <<person>> pockets their phone while you ponder where exactly those lewd photos of you might eventually end up. +Eventually you decide the <<person>> has had enough photos for now and let your legs come to a natural close. +A mildly disappointed but clearly aroused <<person>> pockets their phone while you ponder where exactly those lewd photos of you might eventually end up. <<set $rng to random(1, 5)>> <<fameexhibitionism $rng pic>> <<CafeExhibitionimsmLegsPartSuccessS2>> :: Cafe Exhibitionism Legs Part No Photo -Not wanting photos of your $worn.under_lower.name in the hands of a stranger you clasp your legs shut before <<he>> can take the photo. The <<person>> curses under their breath and pockets their phone, no doubt wondering if you caught them peeking or if luck is just not on their side today. You polish off the last of your pancakes before heading out the door. +Not wanting photos of your $worn.under_lower.name in the hands of a stranger you clasp your legs shut before <<he>> can take the photo. +The <<person>> curses under their breath and pockets their phone, no doubt wondering if you caught them peeking or if luck is just not on their side today. +You polish off the last of your pancakes before heading out the door. <br><br> <<CafeExhibitionismLegsPartNormalTerminate>> :: Cafe Exhibitionism Legs Part Panty Takeoff -You carefully put your fork down before making your way to the cafe bathroom. With the door safely locked you reach under your clothes and remove your underwear, stopping for a moment to feel the thrill of what you're about to do. With your $worn.under_lower.name off you unlatch the door to head back to your plate and the unsuspecting <<person>>. -<br><br> -The <<person>> looks up at you discreetly as you seat yourself, and not wanting to ruin the surprise you make sure your skirt hem is safely covering your exposed <<genitals>> as you take your seat. You decide to play a little at first, fidgeting with your legs as you slowly savour your pancakes. You want <<his>> full attention for what you plan next. -<br><br> -Slowly, you part your knees a little. At first just enough to make <<him>> wonder if <<hes>> seeing things, and then as you lean down to help yourself to a particularly tasty looking piece of pancake you part them completely, giving <<him>> a complete unobstructed view of your inner thighs and everything in between. The <<persons>> eyes visibly widen in shock as <<he>> stares at your bare <<genitals>>, unsure of how to react to your clearly deliberate act of exhibitionism.<<if $player.gender_appearance isnot $player.gender>> From the look on <<his>> face it's clear <<he>> was not expecting you to be <<if $player.gender is "m">>a boy<<elseif $player.gender is "h">>someone with both a penis and pussy<<else>>a girl<</if>>.<</if>> Meeting <<his>> gaze with a wink and a stretch of your legs you place one last piece of pancake in your mouth before you make your exit, leaving the flabbergasted and visibly aroused <<person>> in your wake. +You carefully put your fork down before making your way to the cafe bathroom. +With the door safely locked you reach under your clothes and remove your underwear, stopping for a moment to feel the thrill of what you're about to do. +With your $worn.under_lower.name off you unlatch the door to head back to your plate and the unsuspecting <<person>>. +<br><br> +The <<person>> looks up at you discreetly as you seat yourself, +and not wanting to ruin the surprise you make sure your skirt hem is safely covering your exposed <<genitals>> as you take your seat. +You decide to play a little at first, fidgeting with your legs as you slowly savour your pancakes. +You want <<his>> full attention for what you plan next. +<br><br> +Slowly, you part your knees a little. At first just enough to make <<him>> wonder if <<hes>> seeing things, +and then as you lean down to help yourself to a particularly tasty looking piece of pancake you part them completely, +giving <<him>> a complete unobstructed view of your inner thighs and everything in between. +The <<persons>> eyes visibly widen in shock as <<he>> stares at your bare <<genitals>>, unsure of how to react to your clearly deliberate act of exhibitionism. +<<if $player.gender_appearance isnot $player.gender>> + From the look on <<his>> face it's clear <<he>> was not expecting you to + <<if $player.gender is "h">> + have both a penis and pussy. + <<else>> + be a <<print ($player.gender is "m" ? "boy" : "girl")>>. + <</if>> +<</if>> +Meeting <<his>> gaze with a wink and a stretch of your legs you place one last piece of pancake in your mouth before you make your exit, +leaving the flabbergasted and visibly aroused <<person>> in your wake. <br><br> <<exhibitionism5>> <<CafeExhibitionismLegsPartNormalTerminate>> :: Cafe Exhibitionism Legs Part Premature End -Seeing <<his>> attempts to hide <<his>> gaze get poorer as time goes on you decide to finish up your plate and head off before <<he>> realises you're deliberately putting on a show. With one last mouthful of your food you make your exit, passing the now rather disappointed looking <<person>> on the way. +Seeing <<his>> attempts to hide <<his>> gaze get poorer as time goes on you decide to finish up your plate +and head off before <<he>> realises you're deliberately putting on a show. +With one last mouthful of your food you make your exit, passing the now rather disappointed looking <<person>> on the way. <br><br> <<CafeExhibitionismLegsPartNormalTerminate>> @@ -1656,7 +1775,8 @@ You pretend to occupy yourself with your pancakes as you gently part your legs a /* are we stealthy enough to pretend not to be putting on a show? */ <<set $rng to random(0, 50)>> <<if $skulduggery gte (350 + $rng)>> - Knowing you're exposing yourself sends a gentle shiver down your spine but you make sure not to give any indication of your building arousal. Noticing <<his>> increased interest you decide to tease a little more. <<seatedflashcrotchunderskirt>>, giving <<him>> a clear view of your bare <<genitals>>. + Knowing you're exposing yourself sends a gentle shiver down your spine but you make sure not to give any indication of your building arousal. + Noticing <<his>> increased interest you decide to tease a little more. <<seatedflashcrotchunderskirt>>, giving <<him>> a clear view of your bare <<genitals>>. <br><br> The act of exposing your <<genitals>> to a stranger in a cafe gives you a lewd thrill. <<exhibitionism5>> @@ -1672,64 +1792,81 @@ You pretend to occupy yourself with your pancakes as you gently part your legs a /* are we good enough to at least not provoke mockery at our poor attempts at stealth exhibitionism? */ <<elseif $skulduggery gte 100>> - Knowing you're exposing yourself sends a gentle shiver down your spine but you make sure not to give any indication of your building arousal. Noticing <<his>> increased interest you decide to tease a little. <<seatedflashcrotchunderskirt>> giving <<him>> a clear view of your bare <<genitals>>. The <<person>> takes a sip of <<his>> drink and smirks a little to <<himself>>, it seems you weren't quite as subtle as you thought. + Knowing you're exposing yourself sends a gentle shiver down your spine but you make sure not to give any indication of your building arousal. + Noticing <<his>> increased interest you decide to tease a little. <<seatedflashcrotchunderskirt>> giving <<him>> a clear view of your bare <<genitals>>. + The <<person>> takes a sip of <<his>> drink and smirks a little to <<himself>>, it seems you weren't quite as subtle as you thought. <br><br> - The act of exposing your <<genitals>> to a stranger in a cafe gives you a lewd thrill, and knowing <<he>> caught you doing it on purpose fills you with a mixture of nervousness and exhilaration. + The act of exposing your <<genitals>> to a stranger in a cafe gives you a lewd thrill, + and knowing <<he>> caught you doing it on purpose fills you with a mixture of nervousness and exhilaration. <<exhibitionism5>> - You decide to stop before things get out of hand, finishing up your pancakes before carefully getting out of your seat and leaving. <<His>> eyes and knowing smirk follow you as you make your way to the door, but <<he>> seems happy to leave you alone. + You decide to stop before things get out of hand, finishing up your pancakes before carefully getting out of your seat and leaving. + <<His>> eyes and knowing smirk follow you as you make your way to the door, but <<he>> seems happy to leave you alone. <br><br> <<CafeExhibitionismLegsPartNormalTerminate>> /* were bad at this and should feel bad */ <<else>> - Knowing you're exposing yourself sends a gentle shiver down your spine but you try your best not to give any indication of your building arousal. The <<person>> takes a sip of <<his>> drink and smirks a little to <<himself>>, barely suppressing a chuckle. It seems you were nowhere near as subtle as you thought. + Knowing you're exposing yourself sends a gentle shiver down your spine but you try your best not to give any indication of your building arousal. + The <<person>> takes a sip of <<his>> drink and smirks a little to <<himself>>, barely suppressing a chuckle. + It seems you were nowhere near as subtle as you thought. <br><br> - The act of exposing your <<genitals>> to a stranger in a cafe gives you a lewd thrill, and knowing <<he>> caught you doing it on purpose fills you with a mixture of nervousness and exhilaration. + The act of exposing your <<genitals>> to a stranger in a cafe gives you a lewd thrill, + and knowing <<he>> caught you doing it on purpose fills you with a mixture of nervousness and exhilaration. <<exhibitionism4>> - Embarrassed, you finish up your pancakes before getting out of your seat and leaving. <<His>> eyes and knowing smirk follow you as you make your way to the door, but <<he>> seems happy to leave you alone. + Embarrassed, you finish up your pancakes before getting out of your seat and leaving. + <<His>> eyes and knowing smirk follow you as you make your way to the door, but <<he>> seems happy to leave you alone. <br><br> <<CafeExhibitionismLegsPartNormalTerminate>> <</if>> :: Cafe Exhibitionism Legs Part Pantiless Photo -With butterflies churning in your stomach you let the <<person>> snap a photo of your exposed <<genitals>> with their phone, and then another, and then another. Revelling in the thrill of letting a stranger have such compromising photos of you, you alter your leg positions a few times to give them a wide variety of extremely revealing shots. -<<arousal +35>><<garousal>> -<br><br> -Eventually you decide the <<person>> has had enough photos for now and let your legs come to a natural close. A mildly disappointed but clearly quite aroused <<person>> pockets their phone while you ponder where exactly those lewd photos of you and your exposed <<genitals>> might eventually end up. +With butterflies churning in your stomach you let the <<person>> snap a photo of your exposed <<genitals>> with their phone, and then another, and then another. +Revelling in the thrill of letting a stranger have such compromising photos of you, +you alter your leg positions a few times to give them a wide variety of extremely revealing shots. +<<arousal 35>><<garousal>> +<br><br> +Eventually you decide the <<person>> has had enough photos for now and let your legs come to a natural close. +A mildly disappointed but clearly quite aroused <<person>> pockets their phone while you ponder +where exactly those lewd photos of you and your exposed <<genitals>> might eventually end up. <<set $rng to random(1, 10)>> <<fameexhibitionism $rng pic>> <br><br> <<CafeExhibitionismLegsPartNormalTerminate>> :: Cafe Exhibitionism Legs Part Pantiless No Photo -Not wanting photos of your <<genitals>> in the hands of a stranger you clasp your legs shut before <<he>> can take the photo. The <<person>> curses under their breath and pockets their phone, no doubt wondering if you caught them peeking or if luck is just not on their side today. You polish off the last of your pancakes before heading out the door. +Not wanting photos of your <<genitals>> in the hands of a stranger you clasp your legs shut before <<he>> can take the photo. +The <<person>> curses under their breath and pockets their phone, no doubt wondering if you caught them peeking or if luck is just not on their side today. +You polish off the last of your pancakes before heading out the door. <br><br> <<CafeExhibitionismLegsPartNormalTerminate>> :: Cafe Exhibitionism Legs Part Pantiless Wink -Bracing yourself for what you're about to do, you lock eyes with the <<person>>. You deliberately spread your legs, giving them a wink as they settle far enough apart to leave nothing to the imagination. The <<persons>> jaw drops as they stare at your bare <<genitals>>, clearly not expecting their attempt at covert voyeurism to be rewarded with such a brazen act of exhibitionism. <<seatedflashcrotchunderskirt>>, giving <<him>> a nice long look at your bare <<genitals>>. +Bracing yourself for what you're about to do, you lock eyes with the <<person>>. +You deliberately spread your legs, giving them a wink as they settle far enough apart to leave nothing to the imagination. +The <<persons>> jaw drops as they stare at your bare <<genitals>>, +clearly not expecting their attempt at covert voyeurism to be rewarded with such a brazen act of exhibitionism. +<<seatedflashcrotchunderskirt>>, giving <<him>> a nice long look at your bare <<genitals>>. <br><br> The act of blatantly exposing yourself to a total stranger in a cafe gives you a lewd thrill. <<exhibitionism5>> -Eventually you decide the <<person>> has seen enough for now and let your legs come to a natural close. The mildly disappointed but clearly quite aroused <<person>> stares at you as you make your way out chewing the last of your pancakes. +Eventually you decide the <<person>> has seen enough for now and let your legs come to a natural close. +The mildly disappointed but clearly quite aroused <<person>> stares at you as you make your way out chewing the last of your pancakes. <br><br> <<CafeExhibitionismLegsPartNormalTerminate>> :: Cafe Exhibitionism Skirt Flashing Act [widget] -<<widget "flashcrotchunderskirt">><<script>> -let possibilities = [ - "You stretch your leg, raising it up into the air and wiggling your foot a little to prolong your exposure", - "You part your knees a little as you stretch, bringing your feet a little closer together to widen the gap", - "You lift your feet up as you stretch, rocking yourself back a little in your seat and wiggling your feet a little as you \"accidentally\" part your legs", - "You reach down a little and move your foot to one side, reaching down to scratch a non-existent itch on your leg and stabilising by moving your other leg even further apart", - "You act as if you have some particularly uncomfortable debris stuck on your foot, lifting it up and bringing it close to your body in search of a non-existent pebble" -]; -let i = Math.floor(Math.random() * possibilities.length); -$(output).wiki(possibilities[i]); -<</script>><</widget>> +<<widget "flashcrotchunderskirt">> + <<print either( + "You stretch your leg, raising it up into the air and wiggling your foot a little to prolong your exposure", + "You part your knees a little as you stretch, bringing your feet a little closer together to widen the gap", + "You lift your feet up as you stretch, rocking yourself back a little in your seat and wiggling your feet a little as you \"accidentally\" part your legs", + "You reach down a little and move your foot to one side, reaching down to scratch a non-existent itch on your leg and stabilising by moving your other leg even further apart", + "You act as if you have some particularly uncomfortable debris stuck on your foot, lifting it up and bringing it close to your body in search of a non-existent pebble" + )>> +<</widget>> :: Cafe Cream Bun <<set $outside to 0>><<set $location to "cafe">><<effects>> @@ -1737,7 +1874,8 @@ $(output).wiki(possibilities[i]); You take a seat and order a cream bun, advertised on the menu as using "locally sourced milk." It soon arrives. <br><br> -It's big, and bursting with cream. It's a struggle to eat without cream squeezing onto the plate at odd angles. You don't succeed, but you don't mind. It's tasty, and leaves you feeling warm and contented. +It's big, and bursting with cream. It's a struggle to eat without cream squeezing onto the plate at odd angles. +You don't succeed, but you don't mind. It's tasty, and leaves you feeling warm and contented. <br><br> <<link [[That's enough|Ocean Breeze]]>><</link>> @@ -1750,9 +1888,8 @@ It's big, and bursting with cream. It's a struggle to eat without cream squeezin You lift the plate and lap the cream off it directly. - <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> - <<if $danger gte (9900 - $allure)>> - +<<set $danger to random(1, 10000)>><<set $dangerevent to 0>> +<<if $danger gte (9900 - $allure)>> You catch a <<generate1>><<person1>><<person>> staring at you, <<his>> spoon suspended halfway to <<his>> mouth. <br><br> @@ -1761,18 +1898,21 @@ You lift the plate and lap the cream off it directly. <<link [[Ignore|Cafe Cream Ignore]]>><</link>> <br> - <<else>> +<<else>> No one pays much attention. You lean back, satisfied. <br><br> <<link [[Next|Ocean Breeze]]>><</link>> <br> - <</if>> + +<</if>> :: Cafe Cream Show <<set $outside to 0>><<set $location to "cafe">><<effects>> -You make eye contact with the <<person>>, but don't stop licking the plate. You slow your pace and exaggerate your movements, letting <<him>> see the cream on your tongue from each lick before you take it into your mouth. You half-close your eyes in feigned rapture and keep licking until your plate is perfectly clean. +You make eye contact with the <<person>>, but don't stop licking the plate. +You slow your pace and exaggerate your movements, letting <<him>> see the cream on your tongue from each lick before you take it into your mouth. +You half-close your eyes in feigned rapture and keep licking until your plate is perfectly clean. <<exhibitionism1>> You lean back, satisfied. The <<person>> looks away, <<his>> face bright red. <br><br> @@ -1809,10 +1949,12 @@ You ignore the <<person>> and finish licking the plate clean. You lean back, sat <<set $tip += 400>> <<elseif $submissive gte 1150>> You tell them about your abuse and degradation in the kind of gratuitous detail that you hope will satisfy their morbid curiosity. - <<if $english gte 400>>You are open, eloquent and explicit. They clearly get off on it. - <<set $tip += 1000>> - <<else>>Your words fail to convey any feeling. They soon start to lose interest. - <<set $tip += 200>> + <<if $english gte 400>> + You are open, eloquent and explicit. They clearly get off on it. + <<set $tip += 1000>> + <<else>> + Your words fail to convey any feeling. They soon start to lose interest. + <<set $tip += 200>> <</if>> <<elseif $rapetrait gte 1>> "It was bad," you say. "I mean, it still is, but... I guess I'm used to it now." @@ -1846,10 +1988,10 @@ You ignore the <<person>> and finish licking the plate clean. You lean back, sat <br> <<if $famerape gte 800>> A nearby customer laughs. "Right! - <<if $player.gender_appearance is "f">> - <<if $player.gender is "f">>She's notorious!<<else>>'She' is notorious!<</if>> + <<if $player.gender_appearance isnot $player.gender>> + '<<pShe>>' is notorious! <<else>> - <<if $player.gender is "m">>He's notorious!<<else>>'He' is notorious!<</if>> + <<Shes>> notorious! <</if>> Half the town's played around with that little fucktoy." <br> @@ -1873,10 +2015,10 @@ You ignore the <<person>> and finish licking the plate clean. You lean back, sat <<if $submissive gte 1150>> You make up a story of abuse and degradation that you hope will satisfy their morbid curiosity. <<if $english gte 400>> - You are eloquent and convincing. They get off on it. - <<set $tip += 500>> + You are eloquent and convincing. They get off on it. + <<set $tip += 500>> <<else>> - Your words are hollow and your story doesn't make sense. They soon lose interest. + Your words are hollow and your story doesn't make sense. They soon lose interest. <</if>> <<else>> "Sorry," you tell them. "I don't like talking about it." @@ -1930,16 +2072,17 @@ The rest of the shift passes uneventfully. You earn £5. <<set $outside to 0>><<set $location to "cafe">><<effects>> <<set $chef_state to 8>> <<npc Sam>><<person1>> -You enter through the doors of the rebuilt Ocean Breeze. The main room is much wider and taller than before. You see more tables up on a second floor. They overhang the first. The rustic look is gone, replaced by an elegant deco design. +You enter through the doors of the rebuilt Ocean Breeze. The main room is much wider and taller than before. You see more tables up on a second floor. +They overhang the first. The rustic look is gone, replaced by an elegant deco design. <br><br> Sam stands in the middle, talking to another member of staff. <<Hes>> wearing a <<if $pronoun is "m">>suit and tie<<else>>red dress<</if>>. <br><br> <<He>> turns to you and beams. "It's the chef!" <<he>> says, rushing over and grasping your hands. "How do you like the new look?" <<he>> asks. "The building. Not me." <br><br> -<<link [[Say it looks pretentious|Ocean Breeze Pretentious]]>><<set $NPCName[$NPCNameList.indexOf("Sam")].love -= 1>><</link>><<llove>> +<<link [[Say it looks pretentious|Ocean Breeze Pretentious]]>><<npcincr Sam love -1>><</link>><<llove>> <br> -<<link [[Say it looks wonderful|Ocean Breeze Wonderful]]>><<set $NPCName[$NPCNameList.indexOf("Sam")].love += 1>><</link>><<glove>> +<<link [[Say it looks wonderful|Ocean Breeze Wonderful]]>><<npcincr Sam love 1>><</link>><<glove>> <br> <<link [[Say it looks okay|Ocean Breeze Okay]]>><</link>> @@ -1947,18 +2090,20 @@ Sam stands in the middle, talking to another member of staff. <<Hes>> wearing a <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $submissive gte 1150>> -You look at your feet. "I liked the old cafe more," you admit. "Sorry." + You look at your feet. "I liked the old cafe more," you admit. "Sorry." <<elseif $submissive lte 850>> -You scoff. "It's a bit much for some cream buns," you say "Don't you think?" + You scoff. "It's a bit much for some cream buns," you say "Don't you think?" <<else>> -"It's a little gaudy," you admit. + "It's a little gaudy," you admit. <</if>> <br><br> Sam frowns, but it only lasts a moment. "You're underestimating your talent," <<he>> says. "I've always wanted a place like this." <br><br> -<<He>> looks around the room. "I've begun preparations for the grand opening," <<he>> says. "I'd like you to make an appearance. Nothing big! Just a little speech. People from all over the world are coming, so the town's movers and shakers will want to make an appearance." +<<He>> looks around the room. "I've begun preparations for the grand opening," <<he>> says. +"I'd like you to make an appearance. Nothing big! Just a little speech. +People from all over the world are coming, so the town's movers and shakers will want to make an appearance." <br><br> "There's no need to be shy," <<he>> adds. "You can say whatever you like, really. People just like to know who's making the food." @@ -1971,18 +2116,20 @@ Sam frowns, but it only lasts a moment. "You're underestimating your talent," << <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $submissive gte 1150>> -"It's wonderful," you say. "Like a dream." + "It's wonderful," you say. "Like a dream." <<elseif $submissive lte 850>> -"It's certainly an upgrade," you say. + "It's certainly an upgrade," you say. <<else>> -"I like it a lot," you say. "Very fancy." + "I like it a lot," you say. "Very fancy." <</if>> <br><br> Sam nods. "I know! I've always wanted a place like this." <br><br> -<<He>> looks around the room. "I've begun preparations for the grand opening," <<he>> says. "I'd like you to make an appearance. Nothing big! Just a little speech. People from all over the world are coming, so the town's movers and shakers will want to make an appearance." +<<He>> looks around the room. "I've begun preparations for the grand opening," <<he>> says. +"I'd like you to make an appearance. Nothing big! Just a little speech. +People from all over the world are coming, so the town's movers and shakers will want to make an appearance." <br><br> "There's no need to be shy," <<he>> adds. "You can say whatever you like, really. People just like to know who's making the food." @@ -1995,11 +2142,11 @@ Sam nods. "I know! I've always wanted a place like this." <<set $outside to 0>><<set $location to "cafe">><<effects>> <<if $submissive gte 1150>> -"I-I don't know," you say. "I'm not used to fancy things." + "I-I don't know," you say. "I'm not used to fancy things." <<elseif $submissive lte 850>> -"As long as I can work in peace," you say. "It's fine." + "As long as I can work in peace," you say. "It's fine." <<else>> -"It looks okay," you say. "It does stand out." + "It looks okay," you say. "It does stand out." <</if>> <br><br> @@ -2007,7 +2154,9 @@ Sam nods. "I know! I've always wanted a place like this." Sam nods. "I've always wanted a place like this." <br><br> -<<He>> looks around the room. "I've begun preparations for the grand opening," <<he>> says. "I'd like you to make an appearance. Nothing big! Just a little speech. People from all over the world are coming, so the town's movers and shakers will want to make an appearance." +<<He>> looks around the room. "I've begun preparations for the grand opening," <<he>> says. +"I'd like you to make an appearance. Nothing big! Just a little speech. +People from all over the world are coming, so the town's movers and shakers will want to make an appearance." <br><br> "There's no need to be shy," <<he>> adds. "You can say whatever you like, really. People just like to know who's making the food." diff --git a/game/overworld-town/loc-cafe/widgets.twee b/game/overworld-town/loc-cafe/widgets.twee index a143f01aedfb96e8f92caa347fab8610a46a2eb7..faa0c473ba69d55d34451a79e04a1e2fb94069da 100644 --- a/game/overworld-town/loc-cafe/widgets.twee +++ b/game/overworld-town/loc-cafe/widgets.twee @@ -225,7 +225,7 @@ Suspicion: <</widget>> <<widget "CafeExhibitionismLegsPartEnd">> - <<his>> attempts to hide <<his>> gaze get poorer as time goes on. You decide to finish up your plate and head off before <<he>> realises you're letting <<him>> look up your skirt on purpose. + <<His>> attempts to hide <<his>> gaze get poorer as time goes on. You decide to finish up your plate and head off before <<he>> realises you're letting <<him>> look up your skirt on purpose. <br><br> <<CafeExhibitionismLegsPartNormalTerminate>> <</widget>> diff --git a/game/overworld-town/loc-dance-studio/main.twee b/game/overworld-town/loc-dance-studio/main.twee index 04243e3000c3ad7576899be9e26ee0f090ebe83b..96bdabc291826432578e0ebd0fcdad87e6ea06e3 100644 --- a/game/overworld-town/loc-dance-studio/main.twee +++ b/game/overworld-town/loc-dance-studio/main.twee @@ -266,7 +266,7 @@ Your heart beats faster as you walk away from the dance studio, and away from re Held aloft, you are able to fully demonstrate your grace and skill. <</if>> <br><br> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You realise it may have been a mistake to wear a skirt. Performing airborne exercises without displaying your <<undies>> for the whole class to see proves to be virtually impossible. <<if $uncomfortable.nude is false>> <span class="lewd">You don't mind people looking.</span> diff --git a/game/overworld-town/loc-danube-homes/work.twee b/game/overworld-town/loc-danube-homes/work.twee index 215b68a583a896833b81a72a69bb7d0121b24267..b06c8dbffd3cbbc0ba084d46aad9cfbbebeddb8e 100644 --- a/game/overworld-town/loc-danube-homes/work.twee +++ b/game/overworld-town/loc-danube-homes/work.twee @@ -1,90 +1,90 @@ :: Danube House Knock <<set $outside to 1>><<set $location to "town">><<effects>><<set $bus to "danube">> -You walk up to one of the mansions and knock on the door. -<br><br> + You walk up to one of the mansions and knock on the door. + <br><br> <<if $rng gte 91 and $breastfeedingdisable is "f" and $malechance lt 100>> - <<generatef1>><<person1>>A <<person>> answers the door. <<Hes>> wearing nothing but a shirt and panties. "Can I help you?" <<he>> asks. - <br><br> + <<generatef1>><<person1>>A <<person>> answers the door. <<Hes>> wearing nothing but a shirt and panties. "Can I help you?" <<he>> asks. + <br><br> - <<link [[Ask for work|Danube House Work]]>><<set $phase to 7>><</link>> - <br> - <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Ask for work|Danube House Work]]>><<set $phase to 7>><</link>> + <br> + <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> + <br> <<elseif $rng gte 61>> - There's no response. - <br><br> + There's no response. + <br><br> - <<link [[Break in|Danube House Lock]]>><</link>> - <br> - <<link [[Go to the next house (0:02)|Danube House Knock]]>><<pass 2>><</link>> - <br> - <<link [[Stop|Danube Street]]>><</link>> - <br> + <<link [[Break in|Danube House Lock]]>><</link>> + <br> + <<link [[Go to the next house (0:02)|Danube House Knock]]>><<pass 2>><</link>> + <br> + <<link [[Stop|Danube Street]]>><</link>> + <br> <<elseif $rng gte 51>> - <<generatey1>><<generate2>><<person2>>A <<person>> answers the door. "Can I help you?" <<he>> asks. - <br><br> + <<generatey1>><<generate2>><<person2>>A <<person>> answers the door. "Can I help you?" <<he>> asks. + <br><br> - <<link [[Ask for work|Danube House Work]]>><<set $phase to 6>><</link>> - <br> - <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Ask for work|Danube House Work]]>><<set $phase to 6>><</link>> + <br> + <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> + <br> <<elseif $rng gte 41>> - <<generate1>><<generate2>><<person2>>A <<person>> answers the door. "You aren't who we were expecting," <<he>> says. - <br><br> + <<generate1>><<generate2>><<person2>>A <<person>> answers the door. "You aren't who we were expecting," <<he>> says. + <br><br> - <<link [[Ask for work|Danube House Work]]>><<set $phase to 1>><</link>> - <br> - <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Ask for work|Danube House Work]]>><<set $phase to 1>><</link>> + <br> + <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> + <br> <<elseif $rng gte 31>> - <<generate1>><<person1>>A <<person>> answers the door. "I do not like being disturbed. Speak." <<he>> says. - <br><br> + <<generate1>><<person1>>A <<person>> answers the door. "I do not like being disturbed. Speak." <<he>> says. + <br><br> - <<link [[Ask for work|Danube House Work]]>><<set $phase to 2>><</link>> - <br> - <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Ask for work|Danube House Work]]>><<set $phase to 2>><</link>> + <br> + <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> + <br> <<elseif $rng gte 21>> - <<generate1>><<person1>>A <<person>> answers the door. <<He>> examines you head to feet before speaking. "Such a fine young thing," <<he>> says. "Is there anything I can do for you?" - <br><br> + <<generate1>><<person1>>A <<person>> answers the door. <<He>> examines you head to feet before speaking. "Such a fine young thing," <<he>> says. "Is there anything I can do for you?" + <br><br> - <<link [[Ask for work|Danube House Work]]>><<set $phase to 3>><</link>> - <br> - <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Ask for work|Danube House Work]]>><<set $phase to 3>><</link>> + <br> + <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> + <br> <<elseif $rng gte 11>> - <<generate1>><<generate2>><<person1>>A <<person>> answers the door. "My <<person2>><<master>> does not like being disturbed," <<he>> says. "Out with it." - <br><br> + <<generate1>><<generate2>><<person1>>A <<person>> answers the door. "My <<person2>><<master>> does not like being disturbed," <<he>> says. "Out with it." + <br><br> - <<link [[Ask for work|Danube House Work]]>><<set $phase to 4>><</link>> - <br> - <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Ask for work|Danube House Work]]>><<set $phase to 4>><</link>> + <br> + <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> + <br> <<else>> - <<generatey1>><<person1>>A <<person>> answers the door. <<He>> opens it slightly and peeks through the gap. <<He>> doesn't say anything. - <br><br> + <<generatey1>><<person1>>A <<person>> answers the door. <<He>> opens it slightly and peeks through the gap. <<He>> doesn't say anything. + <br><br> - <<link [[Ask for work|Danube House Work]]>><<set $phase to 5>><</link>> - <br> - <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Ask for work|Danube House Work]]>><<set $phase to 5>><</link>> + <br> + <<link [[Say you've got the wrong address and leave|Danube Street]]>><<endevent>><</link>> + <br> <</if>> @@ -93,108 +93,114 @@ You walk up to one of the mansions and knock on the door. <<if $phase is 1>> <<if $rng gte 1>> -<<He>> pauses for a moment, considering. "Our help hasn't arrived, but you look... fit," <<he>> says. "I'm throwing a party and need someone to distribute refreshments. You'll get £20 for two hours work." <<He>> rummages in something to <<his>> left, out of your view, before producing a small waist apron. "£60, if you wear this." -<br><br> + <<He>> pauses for a moment, considering. "Our help hasn't arrived, but you look... fit," <<he>> says. + "I'm throwing a party and need someone to distribute refreshments. You'll get £20 for two hours work." + <<He>> rummages in something to <<his>> left, out of your view, before producing a small waist apron. "£60, if you wear this." + <br><br> -You look more closely at the apron. It's such a slight thing it would be little protection against spillages, and would barely cover more than your crotch. -<br><br> + You look more closely at the apron. It's such a slight thing it would be little protection against spillages, and would barely cover more than your crotch. + <br><br> -"It wouldn't do much to protect your other clothes, which is why you shouldn't wear any." <<He>> smiles. "Hence the extra pay. So what do you think?" -<br><br> + "It wouldn't do much to protect your other clothes, which is why you shouldn't wear any." <<He>> smiles. "Hence the extra pay. So what do you think?" + <br><br> <<if $exhibitionism gte 55>> - <<link [[Agree to work in the apron|Danube Apron]]>><</link>><<exhibitionist4>> - <br> + <<link [[Agree to work in the apron|Danube Apron]]>><</link>><<exhibitionist4>> + <br> <<else>> - You aren't lewd enough to take up <<his>> scandalous offer. - <br><br> + You aren't lewd enough to take up <<his>> scandalous offer. + <br><br> <</if>> -<<link [[Agree to work in normal clothes|Danube Party]]>><</link>> -<br> -<<link [[Refuse|Danube Street]]>><<endevent>><</link>> -<br> + <<link [[Agree to work in normal clothes|Danube Party]]>><</link>> + <br> + <<link [[Refuse|Danube Street]]>><<endevent>><</link>> + <br> <<else>> - "There's nothing," <<he>> says. "Now if you'll excuse me, I have a party to get back to." <<He>> shuts the door. - <br><br> + "There's nothing," <<he>> says. "Now if you'll excuse me, I have a party to get back to." <<He>> shuts the door. + <br><br> - <<link [[Try another house|Danube House Knock]]>><<endevent>><</link>> - <br> - <<link [[Stop|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Try another house|Danube House Knock]]>><<endevent>><</link>> + <br> + <<link [[Stop|Danube Street]]>><<endevent>><</link>> + <br> <</if>> <<elseif $phase is 2>> <<if $rng gte 1>> -"You're an insolent little thing," <<he>> says. "But as it happens I do need something. There's a family heirloom in my attic I need retrieved. I can't do it myself, it's too dusty up there. It will take up to an hour and I'll give you £15 for finding it." -<br><br> + "You're an insolent little thing," <<he>> says. + "But as it happens I do need something. There's a family heirloom in my attic I need retrieved. + I can't do it myself, it's too dusty up there. It will take up to an hour and I'll give you £15 for finding it." + <br><br> -<<link [[Accept|Danube Attic]]>><</link>> -<br> -<<link [[Refuse|Danube Street]]>><<endevent>><</link>> -<br> + <<link [[Accept|Danube Attic]]>><</link>> + <br> + <<link [[Refuse|Danube Street]]>><<endevent>><</link>> + <br> <<else>> - "Insolent whelp," <<he>> says. "Begone." - <br><br> + "Insolent whelp," <<he>> says. "Begone." + <br><br> - <<link [[Try another house|Danube House Knock]]>><<endevent>><</link>> - <br> - <<link [[Stop|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Try another house|Danube House Knock]]>><<endevent>><</link>> + <br> + <<link [[Stop|Danube Street]]>><<endevent>><</link>> + <br> <</if>> <<elseif $phase is 3>> <<if $rng gte 1>> - The <<person>> smiles. "There's nothing I need," <<he>> says. "But I'll give you £15 to join me for tea. It will take about an hour." - <br><br> + The <<person>> smiles. "There's nothing I need," <<he>> says. "But I'll give you £15 to join me for tea. It will take about an hour." + <br><br> - <<link [[Accept|Danube Tea]]>><</link>> - <br> - <<link [[Refuse|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Accept|Danube Tea]]>><</link>> + <br> + <<link [[Refuse|Danube Street]]>><<endevent>><</link>> + <br> <<else>> - "There's nothing I need," <<he>> says, "But don't be afraid to call again, sweetie." - <br><br> + "There's nothing I need," <<he>> says, "But don't be afraid to call again, sweetie." + <br><br> - <<link [[Try another house|Danube House Knock]]>><<endevent>><</link>> - <br> - <<link [[Stop|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Try another house|Danube House Knock]]>><<endevent>><</link>> + <br> + <<link [[Stop|Danube Street]]>><<endevent>><</link>> + <br> <</if>> <<elseif $phase is 4>> <<if $rng gte 1>> - <<person1>><<He>> stares down <<his>> nose at you. "There is something," <<he>> says, "We have a problem with weeds growing and strangling our other plants. We would give you £50 for four hours work." - <br><br> + <<person1>><<He>> stares down <<his>> nose at you. + "There is something," <<he>> says, "We have a problem with weeds growing and strangling our other plants. We would give you £50 for four hours work." + <br><br> - <<link [[Enter|Danube Garden]]>><<tending 1>><</link>><<gtending>> - <br> - <<link [[Refuse|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Enter|Danube Garden]]>><<tending 1>><</link>><<gtending>> + <br> + <<link [[Refuse|Danube Street]]>><<endevent>><</link>> + <br> <<else>> - "No," <<he>> says, and slams the door shut. - <br><br> + "No," <<he>> says, and slams the door shut. + <br><br> - <<link [[Try another house|Danube House Knock]]>><<endevent>><</link>> - <br> - <<link [[Stop|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Try another house|Danube House Knock]]>><<endevent>><</link>> + <br> + <<link [[Stop|Danube Street]]>><<endevent>><</link>> + <br> <</if>> <<elseif $phase is 5>> <<if $rng gte 1>> - <<His>> demeanour changes. "I'm hosting a tea party and there's a spare seat," <<he>> says with enthusiasm. "I'll give you £10 if you fill in for the missing guest. It will take forty minutes." + <<His>> demeanour changes. "I'm hosting a tea party and there's a spare seat," <<he>> says with enthusiasm. + "I'll give you £10 if you fill in for the missing guest. It will take forty minutes." <br><br> <<link [[Accept (0:40)|Danube Doll]]>><</link>> @@ -218,8 +224,13 @@ You look more closely at the apron. It's such a slight thing it would be little <<schooleffects>> <<if !["first","second","third","lunch","fourth","fifth"].includes($schoolstate)>> <<set $rng1 to random(1, 4)>> - <<He>> looks at you with interest. "Our <<person1>><<daughter>> is preparing for a - <<if $rng1 is 1>>science<<elseif $rng1 is 2>>maths<<elseif $rng1 is 3>>English<<elseif $rng1 is 4>>history<</if>> + <<He>> looks at you with interest. "Our <<person1>><<daughter>> is preparing for + <<switch $rng1>> + <<case 1>>a science + <<case 2>>a maths + <<case 3>>an English + <<case 4>>a history + <</switch>> exam. Perhaps you could tutor <<him>> for an hour? We'll pay between £10 and £100. Depends how good you are." <br><br> @@ -239,51 +250,54 @@ You look more closely at the apron. It's such a slight thing it would be little <<else>> - <<He>> shakes <<his>> head. "There's nothing we need, thanks." - <br><br> + <<He>> shakes <<his>> head. "There's nothing we need, thanks." + <br><br> - <<link [[Try another house|Danube House Knock]]>><<endevent>><</link>> - <br> - <<link [[Stop|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Try another house|Danube House Knock]]>><<endevent>><</link>> + <br> + <<link [[Stop|Danube Street]]>><<endevent>><</link>> + <br> <</if>> <<else>> -<<He>> smiles. "You look thirsty," <<he>> says. "And my chest is so heavy." <<He>> cups <<his>> $NPCList[0].breastdesc. "Take the burden off me and I'll give you £5." -<br><br> + <<He>> smiles. "You look thirsty," <<he>> says. "And my chest is so heavy." <<He>> cups <<his>> $NPCList[0].breastdesc. "Take the burden off me and I'll give you £5." + <br><br> -<<if $awareness gte 200>> -<<He>> wants you to drink from <<his>> breast. -<br><br> -<<else>> -You aren't sure what <<he>> means. <<He>> recognises your confusion. "I want you to suckle from my breast," <<he>> adds. -<br><br> -<</if>> + <<if $awareness gte 200>> + <<He>> wants you to drink from <<his>> breast. + <br><br> + <<else>> + You aren't sure what <<he>> means. <<He>> recognises your confusion. "I want you to suckle from my breast," <<he>> adds. + <br><br> + <</if>> -<<if $promiscuity gte 35>> -<<link [[Accept (0:15)|Danube Breast]]>><<pass 15>><<breastfed>><</link>><<promiscuous3>><<lpurity>> -<br> -<<else>> -You are not promiscuous enough to accept <<his>> offer. -<br><br> -<</if>> + <<if $promiscuity gte 35>> + <<link [[Accept (0:15)|Danube Breast]]>><<pass 15>><<breastfed>><</link>><<promiscuous3>><<lpurity>> + <br> + <<else>> + You are not promiscuous enough to accept <<his>> offer. + <br><br> + <</if>> -<<link [[Refuse|Danube Street]]>><<endevent>><</link>> -<br> + <<link [[Refuse|Danube Street]]>><<endevent>><</link>> + <br> <</if>> :: Danube Breast <<effects>> You blush, but nod. -<<promiscuity3>> The lady steps back, and you enter <<his>> house. It's small for Danube Street, but still spacious and neat. <br><br> -The <<person>> sits down on a cushion-laden sofa. <<He>> pulls off <<his>> shirt without hesitation, exposing <<his>> $NPCList[0].breastsdesc. <<He>> now wears only the pair of panties. <<He>> beckons you over. +The <<person>> sits down on a cushion-laden sofa. <<He>> pulls off <<his>> shirt without hesitation, exposing <<his>> $NPCList[0].breastsdesc. +<<He>> now wears only the pair of panties. <<He>> beckons you over. <br><br> -You sit down next to <<him>>, and blush more deeply as she gently guides your head towards her breast. You shift to access her chest better, and move your lips over her nipple. Sweet, creamy milk leaks out as soon as your tongue touches <<his>> bud. You suckle. It tastes sweet and warm. A calmness falls over you. <<His>> free hand creeps up your thigh. +You sit down next to <<him>>, and blush more deeply as she gently guides your head towards her breast. +You shift to access her chest better, and move your lips over her nipple. Sweet, creamy milk leaks out as soon as your tongue touches <<his>> bud. +You suckle. It tastes sweet and warm. A calmness falls over you. <<His>> free hand creeps up your thigh. +<<promiscuity3>> <br><br> After a while, the milk stops flowing. You look up. <br><br> @@ -292,7 +306,7 @@ After a while, the milk stops flowing. You look up. <<link [[Stop|Danube Breast Stop]]>><</link>> <br> -<<link [[Continue (0:15)|Danube Breast Continue]]>><<pass 15>><<breastfed>><<arousal 1200>><</link>><<garousal>><<lpurity>> +<<link [[Continue (0:15)|Danube Breast Continue]]>><<pass 15>><<breastfed>><</link>><<ggarousal>><<lpurity>> :: Danube Breast Stop <<effects>> @@ -321,24 +335,29 @@ You lean toward <<his>> other breast, and suckle. <<He>> laughs, and inches <<hi "Trying to stay pure?" <<he>> questions while withdrawing <<his>> hand. <<elseif $player.penisExist>> <<if $penissize gte 4>> - "Ah!" <<He>> withdraws <<his>> hand and stares at your crotch. <<He>> looks startled. "How are you so big? Sorry, I don't mean to be rude." <<He>> returns <<his>> hand and continues to stroke as you suckle. + "Ah!" <<He>> withdraws <<his>> hand and stares at your crotch. <<He>> looks startled. + "How are you so big? Sorry, I don't mean to be rude." <<He>> returns <<his>> hand and continues to stroke as you suckle. <<elseif $penissize gte 3>> - "You're pretty big." <<he>> coos. <<He>> strokes your length as you suckle. + "You're pretty big." <<he>> coos. <<He>> strokes your length as you suckle. <<elseif $penissize gte 2>> - <<He>> strokes your length as you suckle. + <<He>> strokes your length as you suckle. <<elseif $penissize gte 1>> - "Cute," <<he>> says. <<He>> strokes your length as you suckle. + "Cute," <<he>> says. <<He>> strokes your length as you suckle. <<else>> - <<He>> laughs. "It's so tiny. Sorry, I don't mean to be rude." <<He>> strokes your length with just one finger as you suckle. + <<He>> laughs. "It's so tiny. Sorry, I don't mean to be rude." <<He>> strokes your length with just one finger as you suckle. <</if>> <<if $player.vaginaExist>> <<He>> frowns as <<his>> fingers find your <<pussy>>. "Is that what I think it is?" <<he>> asks. "You do have a lot of secrets." <</if>> <<else>> -<<He>> strokes your clit as you suckle. + <<He>> strokes your clit as you suckle. <</if>> +<<arousal 1200>><<ggarousal>> +/* Note: Add some dialog describing the player orgasming from this if it puts them at max arousal? */ <br><br> -This continues for several minutes, until the leaking slows to a trickle. <<He>> pulls <<his>> shirt back on and shows you to the door, where <<he>> hands you more money than was promised. + +This continues for several minutes, until the leaking slows to a trickle. +<<He>> pulls <<his>> shirt back on and shows you to the door, where <<he>> hands you more money than was promised. <br><br> You've made <<moneyGain 10>>. @@ -352,25 +371,36 @@ You've made <<moneyGain 10>>. <<undress "danubeparty">> -<<set $lowertemp to "init">><<lowerwear 4>><<set $worn.lower.colour to either("black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow")>> +<<set $lowertemp to "init">><<lowerwear 4>> +<<set $worn.lower.colour to either("black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow")>> <<exposure>> You enter the mansion. You hear voices and the clinking of glasses further in. <<if $rightarm is "bound" or $leftarm is "bound" or $feetuse is "bound">> - Noticing your bound <<if $leftarm is "bound" or $rightarm is "bound">>arms<</if>><<if ($leftarm is "bound" or $rightarm is "bound") and $feetuse is "bound">> and <</if>><<if $feetuse is "bound">>legs<</if>>, <<he>> gives you a strange smile. "It's not that kind of party. Not this time.<<if $leftarm is "bound" or $rightarm is "bound">> You'll at least need your hands.<</if>>" + Noticing your bound <<boundBodyParts>>, <<he>> gives you a strange smile. + "It's not that kind of party. Not this time.<<if _boundparts.includes("arm")>> You'll at least need your hands.<</if>>" <br> <<He>> moves behind you and a moment later <span class="green">your limbs fall free.</span> <<unbind>> <br><br> <</if>> -<<He>> passes you the apron and gestures to the door on your left. "You can get changed in the pantry," <<he>> says. "When you're ready, go through the door opposite and you'll find some platters. Take each in turn and offer them to the guests. Now if you'll excuse me, I need to get back to being a good <<if $pronoun is "m">>host<<else>>hostess<</if>>." +<<He>> passes you the apron and gestures to the door on your left. +"You can get changed in the pantry," <<he>> says. +"When you're ready, go through the door opposite and you'll find some platters. Take each in turn and offer them to the guests. +Now if you'll excuse me, I need to get back to being a good <<print ($pronoun is "m" ? "host" : "hostess")>>." <br><br> -You enter the room as instructed. It's small enough that getting changed is difficult, but you <<nervously>> remove your clothing and wrap the apron around your waist. It almost feels like you're wearing nothing at all. You wish you had a mirror to examine yourself properly. +You enter the room as instructed. +It's small enough that getting changed is difficult, but you <<nervously>> remove your clothing and wrap the apron around your waist. +It almost feels like you're wearing nothing at all. You wish you had a mirror to examine yourself properly. <br><br> -Properly attired and with a tray of champagne in one hand, you enter the main room where the party is being held. A <<person1>><<person>> gasps and drops their glass, the sound of its shattering drawing more attention. Soon everyone in the room is watching you, murmuring amongst themselves. You offer another glass to the <<person>>, who doesn't take <<his>> eyes off your <<lewdness>> as <<he>> takes from the tray. <<exhibitionism4>><<fameexhibitionism 30>> +Properly attired and with a tray of champagne in one hand, you enter the main room where the party is being held. +A <<person1>><<person>> gasps and drops their glass, the sound of its shattering drawing more attention. +Soon everyone in the room is watching you, murmuring amongst themselves. +You offer another glass to the <<person>>, who doesn't take <<his>> eyes off your <<lewdness>> as <<he>> takes from the tray. +<<exhibitionism4>><<fameexhibitionism 30>> <br><br> <<link [[Next|Danube Apron2]]>><</link>> @@ -379,57 +409,66 @@ Properly attired and with a tray of champagne in one hand, you enter the main ro :: Danube Party <<set $outside to 0>><<set $location to "town">><<effects>><<set $bus to "danube">> -You enter the mansion. You hear voices and the clinking of glasses further in. "There's some platters in the kitchen," <<he>> gestures to the door on your right. "Take each in turn and offer them to the guests. +You enter the mansion. You hear voices and the clinking of glasses further in. +"There's some platters in the kitchen," <<he>> gestures to the door on your right. <<if $rightarm is "bound" or $leftarm is "bound" or $feetuse is "bound">> - " + "Take each in turn and offer them to the guests." <br><br> - Noticing your bound <<if $leftarm is "bound" or $rightarm is "bound">>arms<</if>><<if ($leftarm is "bound" or $rightarm is "bound") and $feetuse is "bound">> and <</if>><<if $feetuse is "bound">>legs<</if>>, <<he>> gives you a strange smile. "It's not that kind of party.<<if $leftarm is "bound" or $rightarm is "bound">> You'll definitely need your hands.<</if>>" + Noticing your bound <<boundBodyParts>>, <<he>> gives you a strange smile. + "It's not that kind of party. Not this time.<<if _boundparts.includes("arm")>> You'll at least need your hands.<</if>>" <br> <<He>> moves behind you and a moment later <span class="green">your limbs fall free.</span> <<unbind>> <br><br> - "Now if you'll excuse me," <<he>> goes on. " + "Now if you'll excuse me," <<he>> goes on. "I need to get back to being a good <<print ($pronoun is "m" ? "host" : "hostess")>>." <<else>> - Now if you'll excuse me, + "Take each in turn and offer them to the guests. Now if you'll excuse me, I need to get back to being a good <<print ($pronoun is "m" ? "host" : "hostess")>>." <</if>> -I need to get back to being a good <<if $pronoun is "m">>host<<else>>hostess<</if>>." <br><br> <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> <<if $danger gte (9900 - $allure)>> -You begin the job as instructed. Most guests pay you little attention, few even so much as look at you as they take from the proffered tray or politely decline the offer. An hour into the job however, a <<person1>><<person>> takes an interest in you. You notice <<him>> watching you from across the room. -<br><br> -<<pass 1 hour>> -You offer <<him>> a glass of champagne. "No thanks, darling." As you turn to leave, <<he>> wraps an arm around your waist and grabs your <<bottom>> with <<his>> free hand. -<br><br> + You begin the job as instructed. + Most guests pay you little attention, few even so much as look at you as they take from the proffered tray or politely decline the offer. + An hour into the job however, a <<person1>><<person>> takes an interest in you. You notice <<him>> watching you from across the room. + <br><br> + <<pass 1 hour>> + You offer <<him>> a glass of champagne. + "No thanks, darling." + As you turn to leave, <<he>> wraps an arm around your waist and grabs your <<bottom>> with <<his>> free hand. + <br><br> -<<link [[Endure it|Danube Party Endure]]>><<stress 6>><<trauma 6>><<set $submissive += 1>><</link>><<gtrauma>><<gstress>> -<br> -<<link [[Struggle free|Danube Party Struggle]]>><<stress -12>><<trauma -6>><<set $submissive -= 1>><</link>><<ltrauma>><<lstress>> -<br> + <<link [[Endure it|Danube Party Endure]]>><<stress 6>><<trauma 6>><<set $submissive += 1>><</link>><<gtrauma>><<gstress>> + <br> + <<link [[Struggle free|Danube Party Struggle]]>><<stress -12>><<trauma -6>><<set $submissive -= 1>><</link>><<ltrauma>><<lstress>> + <br> <<else>> -You begin the job as instructed. No one pays you much attention, few even so much as look at you as they take from the proffered tray or politely decline the offer. After two hours the party seems to be winding down, and the <<person>> approaches you. "Thanks for the help. Here." <<He>> hands you <<moneyGain 20>>. -<br><br> + You begin the job as instructed. + No one pays you much attention, few even so much as look at you as they take from the proffered tray or politely decline the offer. + After two hours the party seems to be winding down, and the <<person>> approaches you. "Thanks for the help. Here." <<He>> hands you <<moneyGain 20>>. + <br><br> -<<pass 2 hours>> + <<pass 2 hours>> -<<link [[Next|Danube Street]]>><<endevent>><</link>> -<br> + <<link [[Next|Danube Street]]>><<endevent>><</link>> + <br> <</if>> :: Danube Party Endure <<set $outside to 0>><<set $location to "town">><<effects>><<set $bus to "danube">> -You grit your teeth and bear it. The <<person>> pulls you closer and fondles your <<bottom>> for a few moments. Other guests turn and watch the spectacle, not quite sure what to make of it. You hear nervous laughter. +You grit your teeth and bear it. The <<person>> pulls you closer and fondles your <<bottom>> for a few moments. +Other guests turn and watch the spectacle, not quite sure what to make of it. You hear nervous laughter. <br><br> "That's enough, let the poor <<girl>> go," says the <<person2>><<person>>. The <<person1>><<person>> releases you, but gives you a parting spank as <<he>> does. <br><br> -<<person2>>After another hour the party seems to be winding down, and the <<person>> approaches you. "Thanks for the help. Here's extra for the trouble." <<He>> hands you <<moneyGain 30>>. +After another hour the party seems to be winding down, and the <<person2>><<person>> approaches you. +"Thanks for the help. Here's extra for the trouble." <<He>> hands you <<moneyGain 30>>. <br><br> <<pass 1 hour>> @@ -441,7 +480,8 @@ You grit your teeth and bear it. The <<person>> pulls you closer and fondles you :: Danube Party Struggle <<set $outside to 0>><<set $location to "town">><<effects>><<set $bus to "danube">> -You stomp hard on the <<persons>> foot, and <<he>> shouts, tumbling backwards to the ground where <<he>> rolls around in pain. Laughter erupts among the assembled guests. +You stomp hard on the <<persons>> foot, and <<he>> shouts, tumbling backwards to the ground where <<he>> rolls around in pain. +Laughter erupts among the assembled guests. <br><br> "Serves the perv right." @@ -457,7 +497,17 @@ The <<person2>><<person>> grips your arm and leads you out the room. "You've rui :: Danube Apron2 <<set $outside to 0>><<set $location to "town">><<effects>><<set $bus to "danube">> -You continue your task, and people eventually go back to mingling, though you still feel eyes on you at all times. At one point you catch a reflection of yourself, a nearly naked <<girl>> surrounded by well-dressed <<if $malechance is 0>>women<<elseif $malechance is 100>>men<<else>>elite<</if>>. +<<if $malechance is 0>> + <<set _elite to "women">> +<<elseif $malechance is 100>> + <<set _elite to "men">> +<<else>> + <<set _elite to "elite">> +<</if>> + +You continue your task, and people eventually go back to mingling, though you still feel eyes on you at all times. +At one point you catch a reflection of yourself, a nearly naked <<girl>> surrounded by well-dressed _elite. + <<if $goocount + $semencount gte 30>>Wearing so little, the copious sexual fluids coating your skin are obvious to all. <<elseif $player.bodyliquid.anus.semen + $player.bodyliquid.vagina.semen gte 3>>The apron does nothing to hide the semen running down from between your legs. <<elseif $semencount gte 10>>Wearing so little, the semen on your body is obvious to all. @@ -465,56 +515,62 @@ You continue your task, and people eventually go back to mingling, though you st <<elseif $goocount + $semencount gte 10>>Wearing so little, the lewd sexual fluids on your skin are clearly visible. <<elseif $wolfgirl gte 6>>You notice the guests check out your wolf tail. <<elseif $wolfgirl gte 4 and (!["hidden", "disabled"].includes($transformationParts.wolf.pubes) or !["hidden", "disabled"].includes($transformationParts.wolf.pits))>>Wearing so little, the wolfish hair covering your body is visible to all. -<<elseif $physique gte ($physiquesize / 7) * 5>>Wearing so little shows off your flat stomach and your firm, powerful physique. -<<elseif $beauty gte ($beautymax / 7) * 4>>Wearing so little shows off your natural good looks and charm. +<<elseif $physique gte ($physiquesize * 5/7)>>Wearing so little shows off your flat stomach and your firm, powerful physique. +<<elseif $beauty gte ($beautymax * 4/7)>>Wearing so little shows off your natural good looks and charm. <</if>><<garousal>><<arousal 600>> <br><br> <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> <<if $danger gte (9900 - $allure) and $eventskip is 0>> -You offer the <<person1>><<person>> another drink, but as <<he>> reaches out for it <<he>> slaps the tray, throwing the glasses into the air and tipping their contents all over you. "Oops, I'm so clumsy!" <<he>> says, as the liquid drips from your skin and seeps into your apron. -<br><br> + You offer the <<person1>><<person>> another drink, but as <<he>> reaches out for it <<he>> slaps the tray, + throwing the glasses into the air and tipping their contents all over you. + "Oops, I'm so clumsy!" <<he>> says, as the liquid drips from your skin and seeps into your apron. + <br><br> -People are staring at you with a hungry look in their eyes. More so than normal. You look down and see the deluge has made your apron completely transparent. You feel your face heat up at this new humiliation. You're suddenly struck by just how exposed and vulnerable you are. <<covered>> -<br><br> + People are staring at you with a hungry look in their eyes. More so than normal. + You look down and see the deluge has made your apron completely transparent. You feel your face heat up at this new humiliation. + You're suddenly struck by just how exposed and vulnerable you are. <<covered>> + <br><br> -The <<person>> continues. "I'm ever so sorry. Let me help get that wet thing off of you..." -<br><br> -<<pass 1 hour>> -<<link [[Next|Danube Apron Molestation]]>><<set $molestationstart to 1>><</link>> -<br> + The <<person>> continues. "I'm ever so sorry. Let me help get that wet thing off of you..." + <br><br> + <<pass 1 hour>> + <<link [[Next|Danube Apron Molestation]]>><<set $molestationstart to 1>><</link>> + <br> <<else>> -<<pass 2 hours>>After a couple of hours the party seems to be winding down. The <<person2>><<person>> approaches you. "Thank you, that'll give them something to remember. Here." <<He>> hands you <<moneyGain 60>>. -<br><br> + <<pass 2 hours>> + After a couple of hours the party seems to be winding down. + The <<person2>><<person>> approaches you. "Thank you, that'll give them something to remember. Here." <<He>> hands you <<moneyGain 60>>. + <br><br> -<<endevent>> + <<endevent>> -You return to the pantry and put your clothes back on. -<br><br> + You return to the pantry and put your clothes back on. + <br><br> -<<link [[Next|Danube Street]]>><<storeon "danubeparty">><</link>> -<br> + <<link [[Next|Danube Street]]>><<storeon "danubeparty">><</link>> + <br> <</if>> :: Danube Apron Molestation <<if $molestationstart is 1>> -<<set $molestationstart to 0>> -<<controlloss>> -<<violence 1>> -<<neutral 1>> -<<molested>> + <<set $molestationstart to 0>> + <<controlloss>> + <<violence 1>> + <<neutral 1>> + <<molested>> -<<set $enemyno to 1>><<set $enemynomax to 1>><<maninit>> + <<set $enemyno to 1>><<set $enemynomax to 1>><<maninit>> -<<set $NPCList[1].penis to "none">> -<<set $NPCList[1].lefthand to "none">> -<<set $NPCList[1].righthand to "none">> -<<set $NPCList[1].mouth to "none">> -<<set $NPCList[1].vagina to "none">> + <<set $NPCList[1].penis to "none">> + <<set $NPCList[1].lefthand to "none">> + <<set $NPCList[1].righthand to "none">> + <<set $NPCList[1].mouth to "none">> + <<set $NPCList[1].vagina to "none">> <</if>> @@ -538,57 +594,62 @@ You return to the pantry and put your clothes back on. :: Danube Apron Molestation Finish <<if $enemyhealth lte 0>> -The <<person>> winces in pain. "<<pShe>> is a feisty one," <<he>> says. -<br><br> + The <<person>> winces in pain. "<<pShe>> is a feisty one," <<he>> says. + <br><br> -<<person2>>"That's enough," says the <<person>>. <<He>> grasps your arm and drags you from the room. "That'll be all," <<he>> says when you're alone. "I didn't want a scene like this. Take your money and go." <<He>> hands you <<moneyGain 60>>. -<br><br> + <<person2>>"That's enough," says the <<person>>. <<He>> grasps your arm and drags you from the room. + "That'll be all," <<he>> says when you're alone. "I didn't want a scene like this. Take your money and go." <<He>> hands you <<moneyGain 60>>. + <br><br> -<<tearful>> you return to the pantry and put your clothes back on. + <<tearful>> you return to the pantry and put your clothes back on. -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<br><br> + <br><br> -<<link [[Next|Danube Street]]>><<storeon "danubeparty">><</link>> -<br> + <<link [[Next|Danube Street]]>><<storeon "danubeparty">><</link>> + <br> <<elseif $enemyarousal gte $enemyarousalmax>> -<<ejaculation>><<famerape 30>> + <<ejaculation>><<famerape 30>> -<<He>> turns to the <<person2>><<person>> "How much for this one?" <<person1>><<he>> says. -<br><br> + <<He>> turns to the <<person2>><<person>> "How much for this one?" <<person1>><<he>> says. + <br><br> -"I'm only renting <<phim>>." -<br><br> + "I'm only renting <<phim>>." + <br><br> -"Pity." -<br><br> + "Pity." + <br><br> -The <<person2>><<person>> takes you by your arm and drags you from the room. "That'll be all," <<he>> says when you're alone. "Thanks for being a good sport. Here's a little something extra." <<He>> hands you <<moneyGain 120>>. -<br><br> + The <<person2>><<person>> takes you by your arm and drags you from the room. + "That'll be all," <<he>> says when you're alone. "Thanks for being a good sport. Here's a little something extra." <<He>> hands you <<moneyGain 120>>. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<endevent>> + <<endevent>> -<<tearful>> you return to the pantry and put your clothes back on. -<br><br> -<<pass 1 hour>> -<<link [[Next|Danube Street]]>><<storeon "danubeparty">><</link>> -<br> + <<tearful>> you return to the pantry and put your clothes back on. + <br><br> + <<pass 1 hour>> + <<link [[Next|Danube Street]]>><<storeon "danubeparty">><</link>> + <br> <</if>> :: Danube Attic <<set $outside to 0>><<set $location to "town">><<effects>><<set $bus to "danube">> -The <<person>> leads you up a flight of stairs and tugs on a trapdoor in the ceiling. It opens in a shower of dust and a ladder falls out. "The antique is a painting of an ancestor. They look a lot like me so you should know when you've found it." <<He>> leaves you to ascend the creaky ladder alone. +The <<person>> leads you up a flight of stairs and tugs on a trapdoor in the ceiling. It opens in a shower of dust and a ladder falls out. +"The antique is a painting of an ancestor. They look a lot like me so you should know when you've found it." +<<He>> leaves you to ascend the creaky ladder alone. <br><br> -You cough as you reach the top and peer through the murk. There's a lot of old furniture, but you don't see any paintings. It might be in one of the boxes stacked about the room. There's a gigantic cobweb in one corner, about twice your size. You hope whatever made it isn't around. +You cough as you reach the top and peer through the murk. There's a lot of old furniture, but you don't see any paintings. +It might be in one of the boxes stacked about the room. There's a gigantic cobweb in one corner, about twice your size. You hope whatever made it isn't around. <br><br> <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> @@ -596,34 +657,41 @@ You cough as you reach the top and peer through the murk. There's a lot of old f <<if $swarmdisable is "f" and $spiderdisable is "f" and $rng gte 1>> - <<pass 30>>After half an hour of fruitless searching you spot it, in the corner of the room behind the spider web. You look for a way round, but that part of the room is completely blocked off. Something moves in the darkness above the web. Looking up you see several large, twitching egg sacs, each the size of your head. - <br><br> + <<pass 30>> + After half an hour of fruitless searching you spot it, in the corner of the room behind the spider web. + You look for a way round, but that part of the room is completely blocked off. Something moves in the darkness above the web. + Looking up you see several large, twitching egg sacs, each the size of your head. + <br><br> - <<link [[Abandon your task|Danube Abandon]]>><</link>> - <br> - <<link [[Break through the web|Danube Spiders]]>><<set $molestationstart to 1>><</link>> - <br> + <<link [[Abandon your task|Danube Abandon]]>><</link>> + <br> + <<link [[Break through the web|Danube Spiders]]>><<set $molestationstart to 1>><</link>> + <br> <<else>> - <<pass 1 hour>>You spend an hour searching the attic, until you've explored every inch. There's no sign of the painting. - <br><br> + <<pass 1 hour>> + You spend an hour searching the attic, until you've explored every inch. There's no sign of the painting. + <br><br> - <<link [[Abandon your task|Danube Abandon]]>><</link>> - <br> + <<link [[Abandon your task|Danube Abandon]]>><</link>> + <br> <</if>> <<else>> -You search for an hour before you find the painting hidden inside one of the boxes. It's heavier than it looks, but you manage to carry it down the ladder. The <<person>> must have heard it creak as <<he>> soon arrives beside you. "That's it. Thank you," <<he>> says as <<he>> takes the painting and hands you <<moneyGain 15>>. <<His>> smile turns sour as <<he>> notices your dust-covered clothing. "Please leave, before you make a mess of the carpet." -<br><br> + You search for an hour before you find the painting hidden inside one of the boxes. It's heavier than it looks, but you manage to carry it down the ladder. + The <<person>> must have heard it creak as <<he>> soon arrives beside you. + "That's it. Thank you," <<he>> says as <<he>> takes the painting and hands you <<moneyGain 15>>. + <<His>> smile turns sour as <<he>> notices your dust-covered clothing. "Please leave, before you make a mess of the carpet." + <br><br> -<<pass 1 hour>> -<<endevent>> + <<pass 1 hour>> + <<endevent>> -<<link [[Next|Danube Street]]>><</link>> -<br> + <<link [[Next|Danube Street]]>><</link>> + <br> <</if>> @@ -634,9 +702,9 @@ You climb down the ladder and find the <<person>> already waiting for you. "I se <br><br> <<if $rng gte 81>> -<<link [[Ask for payment|Danube Attic Molestation]]>><<set $molestationstart to 1>><</link>> + <<link [[Ask for payment|Danube Attic Molestation]]>><<set $molestationstart to 1>><</link>> <<else>> -<<link [[Ask for payment|Danube Payment]]>><</link>> + <<link [[Ask for payment|Danube Payment]]>><</link>> <</if>> <br> <<link [[Leave quietly|Danube Street]]>><<endevent>><</link>> @@ -650,7 +718,10 @@ You climb down the ladder and find the <<person>> already waiting for you. "I se <<molested>> <<controlloss>> - You try to pull apart the web, but your hands get stuck. You manage to pull them free, but the rest of your body becomes tangled in the process, leaving you suspended in the air. Your struggling causes one of the egg sacs to fall from its perch. It breaks apart on the wooden floor, releasing thousands of tiny, live spiders, which start crawling up the web toward you. + You try to pull apart the web, but your hands get stuck. + You manage to pull them free, but the rest of your body becomes tangled in the process, leaving you suspended in the air. + Your struggling causes one of the egg sacs to fall from its perch. + It breaks apart on the wooden floor, releasing thousands of tiny, live spiders, which start crawling up the web toward you. <br><br> <<set $combat to 1>> @@ -660,15 +731,15 @@ You climb down the ladder and find the <<person>> already waiting for you. "I se <</if>> <<if $timer gte 25>> -The old timbers above the web creak. If this keeps up they'll break. + The old timbers above the web creak. If this keeps up they'll break. <<elseif $timer gte 20>> -Splinters break from the ceiling. + Splinters break from the ceiling. <<elseif $timer gte 10>> -The wood continues to break down. + The wood continues to break down. <<elseif $timer gte 1>> -The wooden ceiling creaks ominously. + The wooden ceiling creaks ominously. <<else>> -A wooden beam breaks from the ceiling and the web tumbles to the ground. + A wooden beam breaks from the ceiling and the web tumbles to the ground. <</if>> <br><br> @@ -684,16 +755,16 @@ A wooden beam breaks from the ceiling and the web tumbles to the ground. :: Danube Attic Molestation <<if $molestationstart is 1>> -<<set $molestationstart to 0>> -<<controlloss>> -<<violence 1>> -<<neutral 1>> -<<molested>> - -<<maninit>><<npcspank>><<npcidlegenitals>> -"How dare you," <<he>> says, outraged. "I think you need a lesson in manners." <<He>> grabs your arms and bends you over the banister. -<br><br> -<<set $enemyanger += 100>> + <<set $molestationstart to 0>> + <<controlloss>> + <<violence 1>> + <<neutral 1>> + <<molested>> + + <<maninit>><<npcspank>><<npcidlegenitals>> + "How dare you," <<he>> says, outraged. "I think you need a lesson in manners." <<He>> grabs your arms and bends you over the banister. + <br><br> + <<set $enemyanger += 100>> <</if>> <<effects>> @@ -730,34 +801,37 @@ A wooden beam breaks from the ceiling and the web tumbles to the ground. <<if $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> -"I hope that teaches you to be behave around your betters. Now get out." <<tearful>> you leave the building. -<br><br> + <<ejaculation>> + "I hope that teaches you to be behave around your betters. Now get out." <<tearful>> you leave the building. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> + + <<link [[Next|Danube Street]]>><</link>> + <br> -<<link [[Next|Danube Street]]>><</link>> -<br> <<elseif $enemyhealth lte 0>> -<<He>> recoils in pain and you squirm from <<his>> grip. <<tearful>> you run from the building. -<br><br> + <<He>> recoils in pain and you squirm from <<his>> grip. <<tearful>> you run from the building. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> + + <<link [[Next|Danube Street]]>><</link>> + <br> -<<link [[Next|Danube Street]]>><</link>> -<br> <<elseif $enemyanger lte 0>> -"I hope that teaches you to be behave around your betters. Now get out." <<tearful>> you leave the building. -<br><br> -<<clotheson>> -<<endcombat>> + "I hope that teaches you to be behave around your betters. Now get out." <<tearful>> you leave the building. + <br><br> -<<link [[Next|Danube Street]]>><</link>> -<br> + <<clotheson>> + <<endcombat>> + + <<link [[Next|Danube Street]]>><</link>> + <br> <</if>> :: Danube Spiders Finish @@ -780,7 +854,14 @@ Startled by the collapse, the spiders flee into the darker places of the room. < :: Danube Tea <<set $outside to 0>><<set $location to "town">><<effects>><<set $bus to "danube">> -The <<person>> leads you to <<his>> garden, where a table has already been set<<if $weather is "rain">>, sheltered from the rain by a white parasol<<elseif $weather is "snow">>, sheltered from the snow by a white parasol<</if>>. A teapot and some cups sit there along with a plate of biscuits, and a bowl of strawberries and cream. The <<person>> takes a seat and gestures for you to do the same. +The <<person>> leads you to <<his>> garden, +<<switch $weather>> + <<case "rain">> where a table has already been set, sheltered from the rain by a white parasol. + <<case "snow">> where a table has already been set, sheltered from the snow by a white parasol. + <<default>> where a table has already been set. +<</switch>> +A teapot and some cups sit there along with a plate of biscuits, and a bowl of strawberries and cream. +The <<person>> takes a seat and gestures for you to do the same. <br><br> <<if $rightarm is "bound" or $leftarm is "bound">> @@ -799,14 +880,14 @@ The <<person>> leads you to <<his>> garden, where a table has already been set<< <<if $player.bodyliquid.mouth.semen + $player.bodyliquid.face.semen + $player.bodyliquid.hair.semen gte 4>> At one point <<he>> hands you a napkin. "You have some, ah... cream... <<if $player.bodyliquid.mouth.semen gte 2>> - running down your chin." <<he>> says politely. - <<set $player.bodyliquid.mouth.semen -= 1>> + running down your chin." <<he>> says politely. + <<set $player.bodyliquid.mouth.semen -= 1>> <<elseif $player.bodyliquid.face.semen gte 2>> - you got it up there on your cheek, somehow!" <<he>> says. - <<set $player.bodyliquid.face.semen -= 1>> + you got it up there on your cheek, somehow!" <<he>> says. + <<set $player.bodyliquid.face.semen -= 1>> <<else>> - somehow you got it in your hair, you clumsy <<girl>>," <<he>> exclaims. - <<set $player.bodyliquid.hair.semen -= 1>> + somehow you got it in your hair, you clumsy <<girl>>," <<he>> exclaims. + <<set $player.bodyliquid.hair.semen -= 1>> <</if>> <<gstress>> <br><br> @@ -834,26 +915,28 @@ The <<person>> leads you to <<his>> garden, where a table has already been set<< <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> <<if $danger gte (9900 - $allure)>> -<<pass 30>>After thirty minutes <<he>> shifts <<his>> chair closer to yours. "I've been so lonely since my <<spouse>> died," <<he>> says, now uncomfortably close. "I've almost forgotten what it feels like." <<He>> reaches out and gropes your <<breasts>>. -<br><br> + <<pass 30>>After thirty minutes <<he>> shifts <<his>> chair closer to yours. + "I've been so lonely since my <<spouse>> died," <<he>> says, now uncomfortably close. + "I've almost forgotten what it feels like." <<He>> reaches out and gropes your <<breasts>>. + <br><br> <<if $promiscuity gte 15>> - <<link [[Allow it|Danube Tea Sex]]>><<set $sexstart to 1>><</link>><<promiscuous2>> - <br> - <<link [[Offer yourself for money|Danube Tea Offer]]>><</link>><<promiscuous2>> - <br> + <<link [[Allow it|Danube Tea Sex]]>><<set $sexstart to 1>><</link>><<promiscuous2>> + <br> + <<link [[Offer yourself for money|Danube Tea Offer]]>><</link>><<promiscuous2>> + <br> <</if>> -<<link [[Push away|Danube Tea Push]]>><</link>> -<br> + <<link [[Push away|Danube Tea Push]]>><</link>> + <br> <<else>> -<<pass 1 hour>>The <<person>> looks at <<his>> watch. "An hour already?" <<he>> says. "Thank you for the company. Here." <<He>> hands you <<moneyGain 15>>. -<br><br> + <<pass 1 hour>>The <<person>> looks at <<his>> watch. "An hour already?" <<he>> says. "Thank you for the company. Here." <<He>> hands you <<moneyGain 15>>. + <br><br> -<<link [[Next|Danube Street]]>><<endevent>><</link>> -<br> + <<link [[Next|Danube Street]]>><<endevent>><</link>> + <br> <</if>> @@ -862,42 +945,43 @@ The <<person>> leads you to <<his>> garden, where a table has already been set<< <<if $rng gte 81>> -"No," <<he>> says. "I'm paying you good money to be here, you'll show me respect." <<He>> grabs you with more force. -<br><br> + "No," <<he>> says. "I'm paying you good money to be here, you'll show me respect." <<He>> grabs you with more force. + <br><br> -<<link [[Next|Danube Tea Sex]]>><<set $molestationstart to 1>><</link>> -<br> + <<link [[Next|Danube Tea Sex]]>><<set $molestationstart to 1>><</link>> + <br> <<else>> -<<He>> recoils from you as if stung. "I'm so sorry," <<he>> says. "I don't know what came over me." <<He>> hands you <<moneyGain 15>>. "If you'll excuse me, I need to be alone." -<br><br> + <<He>> recoils from you as if stung. "I'm so sorry," <<he>> says. "I don't know what came over me." + <<He>> hands you <<moneyGain 15>>. "If you'll excuse me, I need to be alone." + <br><br> -<<link [[Next|Danube Street]]>><<endevent>><</link>> -<br> + <<link [[Next|Danube Street]]>><<endevent>><</link>> + <br> <</if>> :: Danube Tea Sex <<if $molestationstart is 1>> -<<set $molestationstart to 0>> -<<controlloss>> -<<violence 1>> -<<neutral 1>> -<<molested>> + <<set $molestationstart to 0>> + <<controlloss>> + <<violence 1>> + <<neutral 1>> + <<molested>> -<<maninit>> -<<set $enemyanger += 40>> + <<maninit>> + <<set $enemyanger += 40>> <<elseif $sexstart is 1>> -<<set $sexstart to 0>> -<<set $consensual to 1>> -<<neutral 1>> + <<set $sexstart to 0>> + <<set $consensual to 1>> + <<neutral 1>> -<<maninit>> -<<set $enemytrust += 40>> + <<maninit>> + <<set $enemytrust += 40>> -<<promiscuity2>> + <<promiscuity2>> <</if>> @@ -924,41 +1008,41 @@ The <<person>> leads you to <<his>> garden, where a table has already been set<< <<if $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> -"Thank you for cooperating. Here's your money." <<tearful>> you take the <<moneyGain 15>> and leave. -<br><br> + <<ejaculation>> + "Thank you for cooperating. Here's your money." <<tearful>> you take the <<moneyGain 15>> and leave. + <br><br> <<if $phase is 1>> - <<tipreceive>><<set $prostitutionstat += 1>> - <<fameprostitution 1>> + <<tipreceive>><<set $prostitutionstat += 1>> + <<fameprostitution 1>> <</if>> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<link [[Next|Danube Street]]>><</link>> -<br> + <<link [[Next|Danube Street]]>><</link>> + <br> <<elseif $enemyhealth lte 0>> -<<He>> recoils in pain, giving the chance you need. <<tearful>> you run through the building and back out onto the street. -<br><br> + <<He>> recoils in pain, giving the chance you need. <<tearful>> you run through the building and back out onto the street. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<link [[Next|Danube Street]]>><</link>> -<br> + <<link [[Next|Danube Street]]>><</link>> + <br> <<elseif $finish is 1>> -"That's a shame. Here's your money, now leave." <<tearful>> you take the <<moneyGain 15>> and leave. -<br><br> + "That's a shame. Here's your money, now leave." <<tearful>> you take the <<moneyGain 15>> and leave. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<link [[Next|Danube Street]]>><</link>> -<br> + <<link [[Next|Danube Street]]>><</link>> + <br> <</if>> @@ -973,33 +1057,34 @@ The <<person>> leads you to <<his>> garden, where a table has already been set<< <<if $seductionrating gte $seductionrequired>> -<<set $tipmod to 2>><<tipset>> + <<set $tipmod to 2>><<tipset>> -Fingers shaking, <<he>> looks in <<his>> <<wallet>>. "I'll give you <<printmoney $tip>>," <<he>> says. "Please, I need this." -<br><br> + Fingers shaking, <<he>> looks in <<his>> <<wallet>>. "I'll give you <<printmoney $tip>>," <<he>> says. "Please, I need this." + <br><br> -<<link [[Accept|Danube Tea Sex]]>><<set $sexstart to 1>><<set $phase to 1>><</link>> -<br> -<<link [[Refuse|Danube Tea Refuse]]>><</link>> -<br> + <<link [[Accept|Danube Tea Sex]]>><<set $sexstart to 1>><<set $phase to 1>><</link>> + <br> + <<link [[Refuse|Danube Tea Refuse]]>><</link>> + <br> <<else>> -<<set $rng to random(1, 100)>> + <<set $rng to random(1, 100)>> <<if $rng gte 81>> - "We already agreed on your price," <<he>> says, grabbing you with more force. - <br><br> + "We already agreed on your price," <<he>> says, grabbing you with more force. + <br><br> - <<link [[Next|Danube Tea Sex]]>><<set $molestationstart to 1>><</link>> - <br> + <<link [[Next|Danube Tea Sex]]>><<set $molestationstart to 1>><</link>> + <br> <<else>> - "I'm sorry," <<he>> says. "But I think you should take your money and leave. I didn't realise I let a whore in." <<He>> hands you <<moneyGain 15>> and gestures for you to leave. - <br><br> + "I'm sorry," <<he>> says. "But I think you should take your money and leave. I didn't realise I let a whore in." + <<He>> hands you <<moneyGain 15>> and gestures for you to leave. + <br><br> - <<link [[Next|Danube Street]]>><<endevent>><</link>> - <br> + <<link [[Next|Danube Street]]>><<endevent>><</link>> + <br> <</if>> <</if>> @@ -1009,28 +1094,29 @@ Fingers shaking, <<he>> looks in <<his>> <<wallet>>. "I'll give you <<printmoney <<if $rng gte 81>> -"You're right, we agreed on £15," <<he>> says, grabbing you with more force. -<br><br> + "You're right, we agreed on £15," <<he>> says, grabbing you with more force. + <br><br> -<<link [[Next|Danube Tea Sex]]>><<set $molestationstart to 1>><</link>> -<br> + <<link [[Next|Danube Tea Sex]]>><<set $molestationstart to 1>><</link>> + <br> <<else>> -"I'm sorry," <<he>> says. "But I think you should take your money and leave. I didn't realise I let such a whore in." <<He>> hands you <<moneyGain 15>> and gestures for you to leave. -<br><br> + "I'm sorry," <<he>> says. "But I think you should take your money and leave. I didn't realise I let such a whore in." <<He>> hands you <<moneyGain 15>> and gestures for you to leave. + <br><br> -<<link [[Next|Danube Street]]>><<endevent>><</link>> -<br> + <<link [[Next|Danube Street]]>><<endevent>><</link>> + <br> <</if>> :: Danube Garden <<set $outside to 1>><<set $location to "town">><<effects>><<set $bus to "danube">> -You are led to the sprawling back garden, the extent of which is concealed by several poorly-kept hedgerows. "Just do what you can. Don't be lazy though," <<He>> points at a kennel surrounded by bones. "Brutus is +You are led to the sprawling back garden, the extent of which is concealed by several poorly-kept hedgerows. +"Just do what you can. Don't be lazy though," <<He>> points at a kennel surrounded by bones. <<if $rightarm is "bound" or $leftarm is "bound" or $feetuse is "bound">> - ... Wait. What? What's going on with your <<if $leftarm is "bound" or $rightarm is "bound">>arms<</if>><<if ($leftarm is "bound" or $rightarm is "bound") and $feetuse is "bound">> and <</if>><<if $feetuse is "bound">>legs<</if>>? Are they tied up?" + "Brutus is... Wait. What? What's going on with your <<if $leftarm is "bound" or $rightarm is "bound">>arms<</if>><<if ($leftarm is "bound" or $rightarm is "bound") and $feetuse is "bound">> and <</if>><<if $feetuse is "bound">>legs<</if>>? Are they tied up?" <br><br> <<He>> <<if $rightarm is "bound" or $leftarm is "bound">>spins you around to look at your bound arms<<elseif $feetuse is "bound">>crouches to look at your bound legs<</if>> and @@ -1064,7 +1150,7 @@ You are led to the sprawling back garden, the extent of which is concealed by se <br> <</if>> <<else>> - watching." + "Brutus is watching." <br><br> You kneel in front of one of the hedges and get to work removing the weeds. @@ -1168,15 +1254,15 @@ You hum a gentle tune. <<set $outside to 1>><<set $location to "town">> <<if $molestationstart is 1>> -<<set $molestationstart to 0>> -<<set $combat to 1>> -<<set $enemytype to "tentacles">> -<<molested>> -<<controlloss>> + <<set $molestationstart to 0>> + <<set $combat to 1>> + <<set $enemytype to "tentacles">> + <<molested>> + <<controlloss>> -<<tentaclestart 6 15 "root" "vine" true>> -<<set $tentacles[0].shaft to "leftarm">><<set $leftarm to "tentgrappled">><<set $lefttarget to "tentacles">> -<<set $tentacles[1].shaft to "rightarm">><<set $rightarm to "tentgrappled">><<set $righttarget to "tentacles">> + <<tentaclestart 6 15 "root" "vine" true>> + <<set $tentacles[0].shaft to "leftarm">><<set $leftarm to "tentgrappled">><<set $lefttarget to "tentacles">> + <<set $tentacles[1].shaft to "rightarm">><<set $rightarm to "tentgrappled">><<set $righttarget to "tentacles">> <</if>> @@ -1216,14 +1302,14 @@ You continue your work. Now wary, you stay far from the denser foliage. After an :: Danube Dog <<if $molestationstart is 1>> -<<set $molestationstart to 0>> -<<controlloss>> -<<violence 1>> -<<neutral 1>> -<<molested>> + <<set $molestationstart to 0>> + <<controlloss>> + <<violence 1>> + <<neutral 1>> + <<molested>> <<beastCombatInit>> -<<set $NPCList[0].stance to "top">> + <<set $NPCList[0].stance to "top">> <</if>> <<effects>> @@ -1249,46 +1335,46 @@ You continue your work. Now wary, you stay far from the denser foliage. After an <<if $enemyarousal gte $enemyarousalmax>> -<<beastejaculation>> + <<beastejaculation>> -Satisfied, the <<beasttype>> returns to its kennel. + Satisfied, the <<beasttype>> returns to its kennel. -<br><br> + <br><br> -<<clothesontowel>> -<<pass 2 hours>> + <<clothesontowel>> + <<pass 2 hours>> -<<tearful>> you continue your work. Now wary, you keep the kennel in your field of view at all times. After another two hours the <<person1>><<person>> seems satisfied, and hands you <<moneyGain 50>>. + <<tearful>> you continue your work. Now wary, you keep the kennel in your field of view at all times. After another two hours the <<person1>><<person>> seems satisfied, and hands you <<moneyGain 50>>. -<br><br> + <br><br> -<<endcombat>> -<<physique 6>> -<br><br> + <<endcombat>> + <<physique 6>> + <br><br> -<<link [[Next|Danube Street]]>><</link>> -<br> + <<link [[Next|Danube Street]]>><</link>> + <br> <<else>> -The <<beasttype>> flees back to its kennel. + The <<beasttype>> flees back to its kennel. -<br><br> + <br><br> -<<clothesontowel>> -<<pass 2 hours>> + <<clothesontowel>> + <<pass 2 hours>> -<<tearful>> you continue your work. Now wary, you keep the kennel in your field of view at all times. After another two hours the <<person1>><<person>> seems satisfied, and hands you <<moneyGain 50>>. + <<tearful>> you continue your work. Now wary, you keep the kennel in your field of view at all times. After another two hours the <<person1>><<person>> seems satisfied, and hands you <<moneyGain 50>>. -<br><br> + <br><br> -<<endcombat>> + <<endcombat>> -<<physique 6>> -<br><br> + <<physique 6>> + <br><br> -<<link [[Next|Danube Street]]>><</link>> -<br> + <<link [[Next|Danube Street]]>><</link>> + <br> <</if>> @@ -1299,14 +1385,15 @@ The <<beasttype>> flees back to its kennel. <<violence 1>> <<neutral 1>> <<molested>> - <<beastNEWinit 1 dog>> <<beastCombatInit>> <<set $phase to 3>> <</if>> <<effects>> -<<if $orgasmdown gte 1 and $phase gte 0>> - <<set $phase -= 1>> +<<if $phase lt 0>> + The <<person2>><<person>> and <<person3>><<person>> stand over you, looking down at the spectacle. + <<set $phase += 1>> /* in all other cases, $phase decreases by one. Adding 1 here cancels out the following -1. */ +<<elseif $orgasmdown gte 1>> <<if $phase % 2>> <<if $NPCList[0].gender is "m" and $vaginastate is "penetrated">>"Keep going, Brutus," the <<person2>><<person>> says, "She's squealing for your seed!" <<elseif $NPCList[0].gender is "m" and ($vaginastate is "imminent" or $vaginastate is "entrance")>>"Now, Brutus!" the <<person2>><<person>> says, "Fuck her! She needs it!" @@ -1318,18 +1405,18 @@ The <<beasttype>> flees back to its kennel. <<else>> "You were right, <<person3>><<Master>>. Look, the <<bitch>> is getting off on it!" <br> - <<if $famebestiality gte 400>>"Indeed," <<he>> says. "I recognised <<phim>>. <<pShes>> a well known 'animal-lover'." - <<else>>"Well even I didn't expect <<phim>> to enjoy it this much." + <<if $famebestiality gte 400>> + "Indeed," <<he>> says. "I recognised <<phim>>. <<pShes>> a well known 'animal-lover'." + <<else>> + "Well even I didn't expect <<phim>> to enjoy it this much." <</if>> <</if>> <br> You feel utterly humiliated. <<combattrauma 3>><<famebestiality 10>> -<<elseif ($vaginastate is "imminent" or $anusstate is "imminent") and $phase gte 0>> -<<set $phase -= 1>> +<<elseif ($vaginastate is "imminent" or $anusstate is "imminent")>> <<if $phase % 2>>"That's right, Brutus," the <<person2>><<person>> says, "Get it in there."<<else>>"Go on, Brutus. One hard push."<</if>> -<<elseif ($penisstate is "othermouthentrance" or $penisstate is "othermouthimminent") and $phase gte 0>> -<<set $phase -= 1>> +<<elseif ($penisstate is "othermouthentrance" or $penisstate is "othermouthimminent")>> <<if $phase % 2>> "Don't worry boy," the <<person3>><<person>> says. "Brutus doesn't bite!" <br> @@ -1339,45 +1426,61 @@ The <<beasttype>> flees back to its kennel. <<else>> "That's brave," the <<person2>><<person>> says. "Putting it in there. With all those teeth." <</if>> -<<elseif ($vaginastate is "penetrated" or $anusstate is "penetrated") and $phase gte 0>><<set $phase -= 1>> +<<elseif ($vaginastate is "penetrated" or $anusstate is "penetrated")>> <<if $phase % 2>>"That's right, Brutus," the <<person2>><<person>> says, "Breed your bitch."<<else>>"Harder Brutus! Make <<phim>> yelp."<</if>> -<<elseif $penisstate is "penetrated" and $phase gte 0>><<set $phase -= 1>> +<<elseif $penisstate is "penetrated">> <<if $phase % 2>>"That's right, Brutus," the <<person2>><<person>> says, "Ride your stud."<<else>>"Good girl! Make <<phim>> yelp."<</if>> -<<elseif $penisstate is "otheranus" and $phase gte 0>><<set $phase -= 1>> +<<elseif $penisstate is "otheranus">> <<if $NPCList[0].gender is "m">> - <<if $phase % 2 is 0>>"Well that... isn't quite what I expected."<<else>>"Boy! That's animal abuse!" - <br> - "It's okay," the <<person3>><<person>> says. "Brutus seems to like it."<</if>> + <<if $phase % 2 is 0>> + "Well that... isn't quite what I expected." + <<else>> + "Boy! That's animal abuse!" + <br> + "It's okay," the <<person3>><<person>> says. "Brutus seems to like it." + <</if>> <<else>> - <<if $phase % 2>>"Look at Brutus's face! I don't she think was expecting that hole!"<<else>>"Wrong hole boy." - <br> - "It's okay," the <<person3>><<person>> shrugs. "Look though... Brutus seems to like it."<</if>> + <<if $phase % 2>> + "Look at Brutus's face! I don't she think was expecting that hole!" + <<else>> + "Wrong hole boy." + <br> + "It's okay," the <<person3>><<person>> shrugs. "Look though... Brutus seems to like it." + <</if>> <</if>> -<<elseif $penisstate is "othermouth" and $phase gte 0>><<set $phase -= 1>> - <<if $phase % 2>>"Well there's something you don't see everyday." - <<else>>"How kind," the <<person2>><<person>> says. "He's giving the dog a bone!" - <br> - The <<person3>><<person>> rolls <<his>> eyes. +<<elseif $penisstate is "othermouth">> + <<if $phase % 2>> + "Well there's something you don't see everyday." + <<else>> + "How kind," the <<person2>><<person>> says. "He's giving the dog a bone!" + <br> + The <<person3>><<person>> rolls <<his>> eyes. <</if>> -<<elseif $mouthstate is "othervagina" and $phase gte 0>><<set $phase -= 1>> - <<if $phase % 2>>"No, Brutus," the <<person2>><<person>> says. "Stop. That's too-" - <br> - "Leave it!" The <<person3>><<person>> snaps. "We're paying <<phim>> aren't we? I want to see this." - <<else>>"How's that dog pussy taste?" the <<person2>><<person>> jeers. "Still feeling smart trying to waste my time? Huh?" - <br> - The <<person3>><<person>> rolls <<his>> eyes. "<<pShe>> can't exactly answer right now." +<<elseif $mouthstate is "othervagina">> + <<if $phase % 2>> + "No, Brutus," the <<person2>><<person>> says. "Stop. That's too-" + <br> + "Leave it!" The <<person3>><<person>> snaps. "We're paying <<phim>> aren't we? I want to see this." + <<else>> + "How's that dog pussy taste?" the <<person2>><<person>> jeers. "Still feeling smart trying to waste my time? Huh?" + <br> + The <<person3>><<person>> rolls <<his>> eyes. "<<pShe>> can't exactly answer right now." <</if>> -<<elseif $mouthstate is "penetrated" and $phase gte 0>><<set $phase -= 1>> - <<if $phase % 2>>"No, Brutus," the <<person2>><<person>> says. "Stop. That's too-" - <br> - "Leave it!" The <<person3>><<person>> snaps. "We're paying <<phim>> aren't we? I want to see this." - <<else>>"Still feel smart with a mouth full of <<beasttype>> dick?!" the <<person2>><<person>> jeers. - <br> - The <<person3>><<person>> smirks. "Listen! I think <<pshes>> trying to answer." +<<elseif $mouthstate is "penetrated">> + <<if $phase % 2>> + "No, Brutus," the <<person2>><<person>> says. "Stop. That's too-" + <br> + "Leave it!" The <<person3>><<person>> snaps. "We're paying <<phim>> aren't we? I want to see this." + <<else>> + "Still feel smart with a mouth full of <<beasttype>> dick?!" the <<person2>><<person>> jeers. + <br> + The <<person3>><<person>> smirks. "Listen! I think <<pshes>> trying to answer." <</if>> <<else>> The <<person2>><<person>> and <<person3>><<person>> stand over you, looking down at the spectacle. + <<set $phase += 1>> /* in all other cases, $phase decreases by one. Adding 1 here cancels out the following -1. */ <</if>> +<<set $phase -= 1>> <<effectsman>> <br><br> @@ -1412,9 +1515,9 @@ The <<beasttype>> flees back to its kennel. <<clotheson>> - A £50 is pressed into your hand. + A <<moneyGain 50>> is pressed into your hand. <br> - "Brutus needed that. <<moneyGain 50>>'s the going rate for a bitch, so as far I'm concerned we're even. Get out of here." + "Brutus needed that. <<moneyGainDisplay 50>>'s the going rate for a bitch, so as far I'm concerned we're even. Get out of here." <br><br> You are pushed into the street and the door slams behind. <<tearful>> you gather yourself. @@ -1445,90 +1548,98 @@ The <<beasttype>> flees back to its kennel. :: Danube Doll <<set $outside to 0>><<set $location to "town">><<effects>><<set $bus to "danube">> -<<He>> leads you upstairs to <<his>> bedroom, where a table waits. Various dolls and teddy bears ring the table, sitting as if attending, and a toy tea set sits on top. <<He>> sits and gestures for you to do likewise. +<<He>> leads you upstairs to <<his>> bedroom, where a table waits. +Various dolls and teddy bears ring the table, sitting as if attending, and a toy tea set sits on top. <<He>> sits and gestures for you to do likewise. <br><br> -You sit opposite <<him>>, between a doll missing one eye and a grey bear. "Ladies and gentlemen," <<he>> says, addressing the assembled toys. "Let me introduce my friend from abroad." <<He>> points at you. "Please make <<phim>> feel welcome." <<He>> picks up the empty teapot and starts mock pouring it into the cups. +You sit opposite <<him>>, between a doll missing one eye and a grey bear. +"Ladies and gentlemen," <<he>> says, addressing the assembled toys. "Let me introduce my friend from abroad." +<<He>> points at you. "Please make <<phim>> feel welcome." <<He>> picks up the empty teapot and starts mock pouring it into the cups. <br><br> -This continues for a time. The <<person>> talks about some fantastical story of adventure and intrigue, and occasionally responds to one of <<his>> toys as if they spoke. You don't say much, but <<he>> seems content. +This continues for a time. +The <<person>> talks about some fantastical story of adventure and intrigue, and occasionally responds to one of <<his>> toys as if they spoke. +You don't say much, but <<he>> seems content. <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> <<if $danger gte (9900 - $allure)>> -<<pass 20>>After twenty minutes <<he>> gives you a devious look. "Did I mention that where my friend is from, they take tea in their underwear?" You don't like where this is going. "<<pShe>> is being polite, but <<pshe>> would be much more comfortable in less clothes. You should undress." -<br><br> + <<pass 20>>After twenty minutes <<he>> gives you a devious look. + "Did I mention that where my friend is from, they take tea in their underwear?" You don't like where this is going. + "<<pShe>> is being polite, but <<pshe>> would be much more comfortable in less clothes. You should undress." + <br><br> <<if $worn.under_lower.type.includes("naked") and !$worn.genitals.type.includes("chastity")>> <<if $exhibitionism gte 75>> - You're self-conscious about your lack of underwear. The thought of exposing yourself excites you. - <br><br> + You're self-conscious about your lack of underwear. The thought of exposing yourself excites you. + <br><br> - <<link [[Strip|Danube Doll Strip]]>><<set $phase to 1>><</link>><<exhibitionist5>> - <br> + <<link [[Strip|Danube Doll Strip]]>><<set $phase to 1>><</link>><<exhibitionist5>> + <br> <<else>> - You're self-conscious about your lack of underwear. There's no way you could strip naked. - <br><br> + You're self-conscious about your lack of underwear. There's no way you could strip naked. + <br><br> <</if>> <<elseif $worn.under_lower.type.includes("naked") and $worn.genitals.type.includes("chastity")>> <<if $exhibitionism gte 75>> - You're self-conscious about your $worn.genitals.name. The thought of stripping down to it excites you. - <br><br> + You're self-conscious about your $worn.genitals.name. The thought of stripping down to it excites you. + <br><br> - <<link [[Strip|Danube Doll Strip]]>><<set $phase to 2>><</link>><<exhibitionist5>> - <br> + <<link [[Strip|Danube Doll Strip]]>><<set $phase to 2>><</link>><<exhibitionist5>> + <br> <<else>> - You're self-conscious about your $worn.genitals.name. There's no way you could strip down to it. - <br><br> + You're self-conscious about your $worn.genitals.name. There's no way you could strip down to it. + <br><br> <</if>> <<elseif $player.gender_appearance is "f">> <<if $exhibitionism gte 55>> - You're self-conscious about your <<breasts>>. The thought of exposing yourself excites you. - <br><br> + You're self-conscious about your <<breasts>>. The thought of exposing yourself excites you. + <br><br> - <<link [[Strip|Danube Doll Strip]]>><<set $phase to 3>><</link>><<exhibitionist4>> - <br> + <<link [[Strip|Danube Doll Strip]]>><<set $phase to 3>><</link>><<exhibitionist4>> + <br> <<else>> - You're self-conscious about your <<breasts>>. There's no way you could expose yourself. - <br><br> + You're self-conscious about your <<breasts>>. There's no way you could expose yourself. + <br><br> <</if>> <<elseif $breastsize gte 3>> <<if $exhibitionism gte 55>> - You're self-conscious about your <<breasts>>. The thought of exposing yourself excites you. - <br><br> + You're self-conscious about your <<breasts>>. The thought of exposing yourself excites you. + <br><br> - <<link [[Strip|Danube Doll Strip]]>><<set $phase to 4>><</link>><<exhibitionist4>> - <br> + <<link [[Strip|Danube Doll Strip]]>><<set $phase to 4>><</link>><<exhibitionist4>> + <br> <<else>> - You're self-conscious about your <<breasts>>. There's no way you could expose yourself. - <br><br> + You're self-conscious about your <<breasts>>. There's no way you could expose yourself. + <br><br> <</if>> <<else>> <<if $exhibitionism gte 15>> - The thought of stripping excites you, and you'd still have your $worn.under_lower.name. - <br><br> + The thought of stripping excites you, and you'd still have your $worn.under_lower.name. + <br><br> - <<link [[Strip|Danube Doll Strip]]>><<set $phase to 5>><</link>><<exhibitionist2>> - <br> + <<link [[Strip|Danube Doll Strip]]>><<set $phase to 5>><</link>><<exhibitionist2>> + <br> <<else>> - There's no way you would do such a humiliating thing. - <br><br> + There's no way you would do such a humiliating thing. + <br><br> <</if>> <</if>> -<<link [[Refuse|Danube Doll Refuse]]>><</link>> -<br> + <<link [[Refuse|Danube Doll Refuse]]>><</link>> + <br> <<else>> -<<pass 40>>After forty minutes, <<he>> stands up. "If you would excuse me, my friend has business elsewhere." You follow <<him>> back to the front door, where <<he>> hands you <<moneyGain 10>> and bids you goodbye. -<br><br> + <<pass 40>>After forty minutes, <<he>> stands up. "If you would excuse me, my friend has business elsewhere." + You follow <<him>> back to the front door, where <<he>> hands you <<moneyGain 10>> and bids you goodbye. + <br><br> -<<link [[Next|Danube Street]]>><<endevent>><</link>> -<br> + <<link [[Next|Danube Street]]>><<endevent>><</link>> + <br> <</if>> @@ -1537,22 +1648,23 @@ This continues for a time. The <<person>> talks about some fantastical story of <<if $rng gte 81>> -"I insist," <<he>> says, lunging across the table and grabbing your <<outfit>>. -<br><br> + "I insist," <<he>> says, lunging across the table and grabbing your <<outfit>>. + <br><br> -<<link [[Next|Danube Doll Molestation]]>><<set $molestationstart to 1>><</link>> -<br> + <<link [[Next|Danube Doll Molestation]]>><<set $molestationstart to 1>><</link>> + <br> <<else>> -"As I said, <<pshe>> is ever so polite," <<he>> says, but seems a bit upset by your refusal. -<br><br> + "As I said, <<pshe>> is ever so polite," <<he>> says, but seems a bit upset by your refusal. + <br><br> -<<pass 20>>After twenty minutes, <<he>> stands up. "If you would excuse me, my friend has business elsewhere." You follow <<him>> back to the front door, where <<he>> hands you <<moneyGain 10>> and bids you goodbye. -<br><br> + <<pass 20>>After twenty minutes, <<he>> stands up. "If you would excuse me, my friend has business elsewhere." + You follow <<him>> back to the front door, where <<he>> hands you <<moneyGain 10>> and bids you goodbye. + <br><br> -<<link [[Next|Danube Street]]>><<endevent>><</link>> -<br> + <<link [[Next|Danube Street]]>><<endevent>><</link>> + <br> <</if>> @@ -1563,43 +1675,64 @@ This continues for a time. The <<person>> talks about some fantastical story of <<if $phase is 1>> -<<flaunting>> you <<nervously>> remove your <<outfit>>. The <<person>> gasps when your <<genitals_are>> revealed. Once naked, you sit back at the table. Your nudity impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. -<<exhibitionism5>> -<br><br> + <<flaunting>> you <<nervously>> remove your <<outfit>>. + The <<person>> gasps when your <<genitals_are>> revealed. + Once naked, you sit back at the table. Your nudity impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. + <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. + <<exhibitionism5>> + <br><br> <<elseif $phase is 2>> -<<flaunting>> you <<nervously>> remove your <<outfit>>. The <<person>> gasps when your $worn.genitals.name. is revealed. "What exotic underwear!" <<he>> exclaims. Once naked, you sit back at the table. Your nudity impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. -<<exhibitionism5>> -<br><br> + <<flaunting>> you <<nervously>> remove your <<outfit>>. + The <<person>> gasps when your $worn.genitals.name. is revealed. "What exotic underwear!" <<he>> exclaims. + Once naked, you sit back at the table. Your nudity impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. + <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. + <<exhibitionism5>> + <br><br> <<elseif $phase is 3>> <<if $player.gender is "m">> - You <<nervously>> remove your <<outfit>>, your feminine appearance making you exceptionally self-conscious. Once stripped down to your $worn.under_lower.name, you sit back at the table. Your exposure impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. - <<exhibitionism4>> - <br><br> + You <<nervously>> remove your <<outfit>>, your feminine appearance making you exceptionally self-conscious. + Once stripped down to your $worn.under_lower.name, you sit back at the table. + Your exposure impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. + <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. + <<exhibitionism4>> + <br><br> <<else>> - You <<nervously>> remove your <<outfit>>. Once stripped down to your $worn.under_lower.name, you sit back at the table. Your exposure impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. - <<exhibitionism4>> - <br><br> + You <<nervously>> remove your <<outfit>>. + Once stripped down to your $worn.under_lower.name, you sit back at the table. + Your exposure impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. + <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. + <<exhibitionism4>> + <br><br> <</if>> <<elseif $phase is 4>> -You <<nervously>> remove your <<outfit>>. The <<person>> gasps as your <<breasts>> <<if $breastsize gte 2>>flop out<<else>>are exposed<</if>>. "You're a girl!, <<he>> exclaims. You feel your face flush. Once stripped down to your $worn.under_lower.name, you sit back at the table. Your exposure impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. -<<exhibitionism4>> -<br><br> + You <<nervously>> remove your <<outfit>>. + The <<person>> gasps as your <<breasts>> <<if $breastsize gte 2>>flop out<<else>>are exposed<</if>>. + "You're a girl!, <<he>> exclaims. You feel your face flush. + Once stripped down to your $worn.under_lower.name, you sit back at the table. + Your exposure impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. + <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. + <<exhibitionism4>> + <br><br> <<elseif $phase is 5>> -You <<nervously>> remove your <<outfit>>. Once stripped down to your $worn.under_lower.name, you sit back at the table. Your exposure impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. -<<exhibitionism2>> -<br><br> + You <<nervously>> remove your <<outfit>>. + Once stripped down to your $worn.under_lower.name, you sit back at the table. + Your exposure impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. + <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. + <<exhibitionism2>> + <br><br> <</if>> -<<pass 20>>After twenty minutes, <<he>> stands up. "If you would excuse me, my friend has business elsewhere." You follow <<him>> back to the front door, where <<he>> hands you <<moneyGain 20>> and bids you goodbye. +<<pass 20>>After twenty minutes, <<he>> stands up. "If you would excuse me, my friend has business elsewhere." +You follow <<him>> back to the front door, where <<he>> hands you <<moneyGain 20>> and bids you goodbye. <br><br> <<clotheson>> @@ -1609,13 +1742,13 @@ You <<nervously>> remove your <<outfit>>. Once stripped down to your $worn.under :: Danube Doll Molestation <<if $molestationstart is 1>> -<<set $molestationstart to 0>> -<<controlloss>> -<<violence 1>> -<<neutral 1>> -<<molested>> + <<set $molestationstart to 0>> + <<controlloss>> + <<violence 1>> + <<neutral 1>> + <<molested>> -<<maninit>><<npcstrip>><<npcidlegenitals>><<set $enemyanger += 40>> + <<maninit>><<npcstrip>><<npcidlegenitals>><<set $enemyanger += 40>> <</if>> <<effects>> @@ -1641,82 +1774,91 @@ You <<nervously>> remove your <<outfit>>. Once stripped down to your $worn.under <<if $worn.lower.type.includes("naked") and $worn.upper.type.includes("naked")>> -The <<person>> stands back to leer at you. <<covered>> "That's better," <<he>> says as <<he>> sits back down. Unable to leave like this, you follow suit. -<br><br> + The <<person>> stands back to leer at you. <<covered>> "That's better," <<he>> says as <<he>> sits back down. Unable to leave like this, you follow suit. + <br><br> -Your exposure impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. -<br><br> + Your exposure impacts <<his>> behaviour, <<he>> can't keep <<his>> eyes off you. <<He>> makes excuses to cross the room so <<he>> can look at you from other angles and sneak peeks at your <<undies>>. + <br><br> -<<pass 20>>After twenty minutes, <<he>> stands up. "If you would excuse me, my friend has business elsewhere." You follow <<him>> back to the front door, where <<he>> hands you <<moneyGain 10>> and bids you goodbye. -<br><br> + <<pass 20>>After twenty minutes, <<he>> stands up. "If you would excuse me, my friend has business elsewhere." You follow <<him>> back to the front door, where <<he>> hands you <<moneyGain 10>> and bids you goodbye. + <br><br> -<<clothesontowel>> -<<endcombat>> + <<clothesontowel>> + <<endcombat>> -<<link [[Next|Danube Street]]>><</link>> -<br> + <<link [[Next|Danube Street]]>><</link>> + <br> <<elseif $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> -<<He>> grimaces. "I'm sorry," <<he>> says. "I've been such a rude host. Here." <<He>> hands you <<moneyGain 10>>. <<tearful>> you leave the building. -<br><br> + <<ejaculation>> + <<He>> grimaces. "I'm sorry," <<he>> says. "I've been such a rude host. Here." <<He>> hands you <<moneyGain 10>>. <<tearful>> you leave the building. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> + + <<link [[Next|Danube Street]]>><</link>> + <br> -<<link [[Next|Danube Street]]>><</link>> -<br> <<elseif $enemyhealth lte 0>> -<<He>> falls in pain and starts screaming for help. <<tearful>> you run from the building. -<br><br> + <<He>> falls in pain and starts screaming for help. <<tearful>> you run from the building. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<link [[Next|Danube Street]]>><</link>> -<br> + <<link [[Next|Danube Street]]>><</link>> + <br> <</if>> :: Danube Tutor <<set $outside to 0>><<set $location to "town">><<effects>><<set $bus to "danube">> -You enter the lounge. The <<person2>><<person>> briefly quizzes you on +<<set _subject to ["science", "maths", "English", "history"][$rng1]>> +You enter the lounge. The <<person2>><<person>> briefly quizzes you on _subject. <<if $rng1 is 1>> - science. <<if $sciencetrait lte 0>> You don't understand the questions. You smile as <<he>> rattles off words that don't even sound like English. You can't answer anything <<he>> asks. <br><br> - <<He>> shakes <<his>> head. "Still..." <<he>> says. "It is revision and it'll help <<person1>><<him>> focus. <<He>> will probably learn something just explaining things to you." + <<He>> shakes <<his>> head. "Still..." <<he>> says. "It is revision and it'll help <<person1>><<him>> focus. + <<He>> will probably learn something just explaining things to you." <br><br> <<person2>><<He>> hands you <<moneyGain 10>>. <<set $phase to 0>> <<elseif $sciencetrait lte 1>> - <<His>> questions are tricky, and you struggle to answer many. For a minute or two, <<he>> starts teaching you the truth about <<print either("government chemtrails.", "fluoride in the water.", "homeopathy.", "the Van Allen belt and the Moon landing Hoax.","how 'safe' vaccines are.","chemicals in the water.")>> You listen with interest. + <<His>> questions are tricky, and you struggle to answer many. + For a minute or two, <<he>> starts teaching you the truth about + <<print either( + "government chemtrails.", "fluoride in the water.", "homeopathy.", + "the Van Allen belt and the Moon landing Hoax.", "how 'safe' vaccines are.", "chemicals in the water." + )>> + You listen with interest. <br><br> "Of course, your school will never tell you about this stuff," <<he>> says, handing you <<moneyGain 30>>. "Go on then. Through there." <<set $phase to 1>> <<elseif $sciencetrait lte 2>> - You're able to answer all of <<his>> questions, though some are tricky. <<He>> eagerly tells you some of <<his>> pet theories. They mostly sound like pseudoscience. + You're able to answer all of <<his>> questions, though some are tricky. + <<He>> eagerly tells you some of <<his>> pet theories. They mostly sound like pseudoscience. <br><br> "Okay," <<he>> says, handing you <<moneyGain 60>>. "You know what you're talking about." <<set $phase to 2>> <<else>> - <<His>> questions are trivial and you answer them with ease. Over the next minute or two, you effortlessly eviscerate several of <<his>> pseudoscientific 'theories' and misconceptions. + <<His>> questions are trivial and you answer them with ease. + Over the next minute or two, you effortlessly eviscerate several of <<his>> pseudoscientific 'theories' and misconceptions. <br><br> "Wow," <<he>> says, handing you the full <<moneyGain 100>>. "You're something else." <<set $phase to 3>> <</if>> <br><br> - <<person1>>You work for an hour teaching the <<person>> about science <<elseif $rng1 is 2>> - maths. <<if $mathstrait lte 0>> You barely understand the questions and have no idea how to calculate answers. <br><br> - <<He>> shakes <<his>> head. "Still..." <<he>> says. "I suppose working with someone like you will give <<person1>><<him>> confidence. <<He>> could learn something explaining things to you." + <<He>> shakes <<his>> head. "Still..." <<he>> says. + "I suppose working with someone like you will give <<person1>><<him>> confidence. <<He>> could learn something explaining things to you." <br><br> <<person2>><<He>> hands you <<moneyGain 10>>. <<set $phase to 0>> @@ -1737,13 +1879,12 @@ You enter the lounge. The <<person2>><<person>> briefly quizzes you on <<set $phase to 3>> <</if>> <br><br> - <<person1>>You work for an hour teaching the <<person>> about maths <<elseif $rng1 is 3>> - English. <<if $englishtrait lte 0>> - First <<he>> asks you about those old plays written in poetry that doesn't rhyme. When you explain that you don't know much about old books, <<he>> asks about your "Gramma." You start to tell <<him>> about your grandmother. + First <<he>> asks you about those old plays written in poetry that doesn't rhyme. + When you explain that you don't know much about old books, <<he>> asks about your "Gramma." You start to tell <<him>> about your grandmother. <br><br> - <<He>> laughs in your face. It's rude<<if $rapestat gte 5>>, but at least <<he>> isn't trying to rape you.<<else>>.<</if>> + <<He>> laughs in your face. <<if $rapestat gte 5>>It's rude, but at least <<he>> isn't trying to rape you.<<else>>It's rude.<</if>> <br><br> <<He>> shakes <<his>> head. "Explaining the basics to you will be good English practise." <br><br> @@ -1760,19 +1901,20 @@ You enter the lounge. The <<person2>><<person>> briefly quizzes you on "Okay," <<he>> says, handing you <<moneyGain 60>>. "You know what you're talking about. Go tutor." <<set $phase to 2>> <<else>> - <<His>> questions are trivial and you answer them with ease. Over the next minute or two, a discussion on how grammar changes over time turns into a brief debate on whether grammar should be modern and fluid or fixed and traditional. + <<His>> questions are trivial and you answer them with ease. + Over the next minute or two, + a discussion on how grammar changes over time turns into a brief debate on whether grammar should be modern and fluid or fixed and traditional. <br><br> "Very interesting," <<he>> says, handing you the full <<moneyGain 100>>. "Persuasive too. Please teach my <<person1>><<daughter>> some of that eloquence." <<set $phase to 3>> <</if>> <br><br> - <<person1>>You work for an hour teaching the <<person>> about English <<elseif $rng1 is 4>> - history. <<if $historytrait lte 0>> You smile as <<he>> rattles off various dates, events and 'important' events from history. Some of it sounds familiar but you can't answer any questions. <br><br> - <<He>> shakes <<his>> head. "You barely know what happened last week." <<He>> shrugs. "Revision and recounting will help <<person1>><<him>> focus. <<He>> will learn something just explaining the basics to you." + <<He>> shakes <<his>> head. "You barely know what happened last week." <<He>> shrugs. + "Revision and recounting will help <<person1>><<him>> focus. <<He>> will learn something just explaining the basics to you." <br><br> <<person2>><<He>> hands you <<moneyGain 10>>. <<set $phase to 0>> @@ -1793,10 +1935,11 @@ You enter the lounge. The <<person2>><<person>> briefly quizzes you on <<set $phase to 3>> <</if>> <br><br> - <<person1>>You work for an hour teaching the <<person>> about history <</if>> +You work for an hour teaching the <<person1>><<person>> about _subject <<if $phase is 0>> - as best you can. <<He>> is far more advanced than you, and spends most of the time explaining the basics. The <<person>> seems annoyed that <<his>> time has been wasted on this. However, the <<person2>><<person>> does thank you as you leave. + as best you can. <<He>> is far more advanced than you, and spends most of the time explaining the basics. + The <<person>> seems annoyed that <<his>> time has been wasted on this. However, the <<person2>><<person>> does thank you as you leave. <<elseif $phase is 1>> as best you can. It mostly works as group study, as the <<person>> is at about the same level as you. <br><br> diff --git a/game/overworld-town/loc-docks/main.twee b/game/overworld-town/loc-docks/main.twee index ecb95cb00fe39a4c9ad57240aedc4e0113739fff..820edee2ec25bf492d32cd5e05e53cac8426bd61 100644 --- a/game/overworld-town/loc-docks/main.twee +++ b/game/overworld-town/loc-docks/main.twee @@ -376,6 +376,7 @@ You slip beneath the table. "What are you-" <<he>> cuts off when you unzip <<his <<set $enemytrust += 100>> You reward <<him>> with a playful lick. <br><br> + <<npcoral>> <</if>> The surrounding passengers socialise, unaware of what you're up to beneath the table. @@ -845,7 +846,7 @@ You awaken naked on a chair. Lengths of rope criss-cross your body and tie you d <<generate1>><<generate2>><<generate3>><<person2>>"It's not fair," a <<person>> says. <<He>> sits opposite you with <<his>> arms folded. "You set it up wrong." <br><br> -A dart thuds into the board. The <<person1>><<person>> who threw it laughs. "Yeah yeah," <<he>> says. "We're all using the same board, if you haven't noticed." <<He>> throws another dart. "I win." <<He>> turns to a <<generate3>><<person3>><<person>>. "Unless you score perfect." +A dart thuds into the board. The <<person1>><<person>> who threw it laughs. "Yeah yeah," <<he>> says. "We're all using the same board, if you haven't noticed." <<He>> throws another dart. "I win." <<He>> turns to a <<person3>><<person>>. "Unless you score perfect." <br><br> The <<person>> stands and takes <<his>> position in front of the board as the <<person1>><<person>> approaches to retrieve <<his>> darts. "Hey," <<he>> says. "<<pShes>> awake." @@ -1071,7 +1072,7 @@ The pair cheer their colleague on. <<link [[Flirt|Docks Pub Crawl Flirt]]>><</link>><<promiscuous1>> <br> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<link [[Tease|Docks Pub Crawl Tease]]>><</link>><<exhibitionist1>> <br> <</if>> diff --git a/game/overworld-town/loc-domus-homes/work.twee b/game/overworld-town/loc-domus-homes/work.twee index 2f9af7b79fede7403730d8e78ae431418bd94696..2d836b5e2c49d1fee84276549b3877c6aadced15 100644 --- a/game/overworld-town/loc-domus-homes/work.twee +++ b/game/overworld-town/loc-domus-homes/work.twee @@ -374,7 +374,7 @@ You climb a ladder to reach the rooftop, and get to work clearing moss. <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> <<if $danger gte (9900 - $allure)>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> About an hour into your task you notice the <<person>> stood beneath you, pointing <<his>> camera phone up at you. You're perplexed for a moment, then realise <<he>> can see straight up your skirt. You put a hand between your thighs to cover yourself. "Don't be shy," <<he>> says, smiling. <<if $worn.under_lower.type.includes("naked")>> "You're a lewd thing to be clambering around with no underwear." diff --git a/game/overworld-town/loc-home/main.twee b/game/overworld-town/loc-home/main.twee index 2dca27f4b570093c05e8e9a2ccb1b027337bc94b..a2e3cad061609c4abaf940092112ffbf55be02af 100644 --- a/game/overworld-town/loc-home/main.twee +++ b/game/overworld-town/loc-home/main.twee @@ -115,7 +115,13 @@ You are in your bedroom. <br> <<if $nextPassageCheck is "Mirror">> <span class="nextLink"><<mirroricon>>[[Mirror]]</span> - <br> + <br> + <<elseif $christmas is 1 and !$christmas_wraith and _wraithEvent>> + <br> + <span class="purple">You catch a strange glint in your mirror.</span> + <br> + <<bloodmirroricon>><<link [[Mirror|Christmas Mirror]]>><</link>> + <br> <<elseif $hour is 3 and $hallucinations gte 2 and $mirrortentacles isnot 1 and $tentacledisable is "f">> <br> <span class="purple">An eerie light spills from your mirror.</span> @@ -410,6 +416,23 @@ You are in the bathroom. <br><br> <<link [[Next|Sleep Rape]]>><<set $molestationstart to 1>><</link>> <br> +<<elseif $christmas_kylar is 1>> + <<set $christmas_kylar to 2>> + <<set $schoolwake to 0>> + <<npc Kylar>><<person1>> + A jingle awakes you. + <br> + A sprinkling of hoar frost + <br> + Falls down by the window, + <br> + Now to rise or to toss? + <br><br> + + <<link [[Rise and investigate|Kylar Christmas]]>><<set $christmas_kylar to 3>><<towelup>><</link>> + <br> + <<link [[Toss and go back to sleep|Sleep]]>><<endevent>><</link>> + <br> <<elseif $location is "home" and $slimeWake is 1>> <<set $slimeWake to 0>> <<set _newLocations to ["Residential alleyways", "Commercial alleyways", "Park", "Industrial alleyways"]>> @@ -2635,7 +2658,7 @@ The <<person2>><<person>> grows bored of molesting you this way, and sends you t <<effects>> You lie on the table as instructed. The <<person2>><<person>> sits behind your head, and wraps an arm around your neck. <<if $worn.upper.set is $worn.lower.set>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> The <<person1>><<person>> flips up your skirt, exposing your <<undies>>. You try to cover yourself with your legs, but there's little you can do. <<He>> pulls your skirt up high, over your abdomen, and even your <<undertop>>. <<He>> holds the tub above your chest. <<else>> The <<person1>><<person>> pulls down your top, exposing your <<undertop>>. <<He>> holds the tub above your chest. diff --git a/game/overworld-town/loc-hospital/pharmacy.twee b/game/overworld-town/loc-hospital/pharmacy.twee index 24f62cf3173f21703fd22f41d3d22192df0599a5..7566c7787ae9421a79031033fb4283b7d3b1e389 100644 --- a/game/overworld-town/loc-hospital/pharmacy.twee +++ b/game/overworld-town/loc-hospital/pharmacy.twee @@ -295,12 +295,12 @@ The nurse looks at the item you're holding, <<case "nevermind">> You turn and leave.<br> "Hey," <<he>> says. "I didn't mean to upset you."<br><br> - <<link [[Next|Hospital Foyer]]>><</link>> + <<link [[Next|Hospital Foyer]]>><<endevent>><</link>> <<case "pay">> You hand over the money in awkward silence, take your box of pills, and leave.<br><br> <<set $money -= $price * 100>><<managePill "penis" $choice 14 false>><<boughtOnce>> - <<link [[Next|Hospital Foyer]]>><</link>> + <<link [[Next|Hospital Foyer]]>><<endevent>><</link>> <</switch>> @@ -471,7 +471,7 @@ The nurse looks at the item you're holding, <<link [[Leave|Hospital Foyer]]>><<set $eventskip to 1>><</link>> <<else>> <br><br> - <<link [[Next|Hospital Foyer]]>><<set $eventskip to 1>><</link>> + <<link [[Next|Hospital Foyer]]>><<endevent>><<set $eventskip to 1>><</link>> <</if>> <<unset $exposedPrev>> diff --git a/game/overworld-town/loc-landfill/events.twee b/game/overworld-town/loc-landfill/events.twee index 863ba91a2c9cdc91a4f69700567aaa3deb74c41f..a2375bd91e4943c47a47b1c3cbe78d3fa77c911f 100644 --- a/game/overworld-town/loc-landfill/events.twee +++ b/game/overworld-town/loc-landfill/events.twee @@ -1,59 +1,68 @@ + :: Trash Explain <<set $location to "landfill">><<set $outside to 1>><<effects>> You tell <<him>> you're lost. <<englishdifficulty 1 1000 true>> <<if $englishSuccess>> -<<He>> watches you in silence for a moment, then sighs. <span class="green">"Fine,"</span> <<he>> says. "Exit's that way. Don't get yourself caught again. Not everyone is as kind as me." -<br><br> + <<He>> watches you in silence for a moment, then sighs. + <span class="green">"Fine,"</span> <<he>> says. + "Exit's that way. Don't get yourself caught again. Not everyone is as kind as me." + <br><br> -<<endevent>> + <<endevent>> -<<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> -<br> + <<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> + <br> <<else>> -<<He>> watches you in silence for a moment, then laughs. <span class="red">"Yeah right,"</span> <<he>> says. "You're a scavenger. Looking to make an easy bob. I'm turning you out." <<He>> grins. "After a little fun." -<br><br> + <<He>> watches you in silence for a moment, then laughs. + <span class="red">"Yeah right,"</span> <<he>> says. + "You're a scavenger. Looking to make an easy bob. I'm turning you out." <<He>> grins. "After a little fun." + <br><br> -<<link [[Next|Trash Rape]]>><<set $molestationstart to 1>><</link>> -<br> + <<link [[Next|Trash Rape]]>><<set $molestationstart to 1>><</link>> + <br> <</if>> + :: Trash Seduce <<set $location to "landfill">><<set $outside to 1>><<effects>> <<set $seductiondifficulty to 6000>> <<seductioncheck>> <br><br> -<<if $seductionskill lt 1000>><span class="gold">You feel more confident in your powers of seduction.</span><</if>><<seductionskilluse>> +<<if $seductionskill lt 1000>> + <span class="gold">You feel more confident in your powers of seduction.</span> +<</if>> +<<seductionskilluse>> <br><br> You pout. "Do you treat all your guests this way?" you coo, walking up to <<him>>. "It's okay. I bet you're just lonely out here on your own." <<promiscuity2>> <<if $seductionrating gte $seductionrequired>> + <span class="green">The <<person>> blushes and looks away.</span> + "I-I don't know what you're-" <<he>> manages. <<He>> falls silent when you grasp <<his>> arm and pull <<him>> closer. + <br><br> -<span class="green">The <<person>> blushes and looks away.</span> "I-I don't know what you're-" <<he>> manages. <<He>> falls silent when you grasp <<his>> arm and pull <<him>> closer. -<br><br> - -<<link [[Next|Trash Sex]]>><<set $sexstart to 1>><</link>> -<br> + <<link [[Next|Trash Sex]]>><<set $sexstart to 1>><</link>> + <br> <<else>> + <span class="red">The <<person>> holds out an arm to keep you at bay.</span> + "You're nuts," <<he>> says, grabbing your arm. <<He>> tries to pull you towards the exit. + <br><br> -<span class="red">The <<person>> holds out an arm to keep you at bay.</span>"You're nuts," <<he>> says, grabbing your arm. <<He>> tries to pull you towards the exit. -<br><br> - -<<link [[Struggle|Trash Fight]]>><<set $fightstart to 1>><</link>> -<br> -<<link [[Don't struggle|Trash Rape End]]>><</link>> -<br> + <<link [[Struggle|Trash Fight]]>><<set $fightstart to 1>><</link>> + <br> + <<link [[Don't struggle|Trash Rape End]]>><</link>> + <br> <</if>> -:: Trash Sex +:: Trash Sex <<if $sexstart is 1>> <<set $sexstart to 0>> <<consensual>> @@ -78,8 +87,8 @@ You pout. "Do you treat all your guests this way?" you coo, walking up to <<him> <span id="next"><<link [[Next|Trash Sex]]>><</link>></span><<nexttext>> <</if>> -:: Trash Sex Finish +:: Trash Sex Finish <<set $outside to 0>><<effects>> <<if $enemyarousal gte $enemyarousalmax>> <<ejaculation>> @@ -110,6 +119,7 @@ You pout. "Do you treat all your guests this way?" you coo, walking up to <<him> <</if>> + :: Trash Run <<set $location to "landfill">><<set $outside to 1>><<effects>> @@ -117,37 +127,37 @@ You turn from the <<person>>, and run. "Stop!" <<he>> shouts after you, giving c <br><br> <<if $athleticsSuccess>> + <span class="green">You lose <<him>> in the maze of rubbish.</span> + <br><br> -<span class="green">You lose <<him>> in the maze of rubbish.</span> -<br><br> - -<<link [[Next|Trash]]>><<set $eventskip to 1>><<endevent>><</link>> -<br> + <<link [[Next|Trash]]>><<set $eventskip to 1>><<endevent>><</link>> + <br> <<else>> + <span class="red">You fail to lose <<him>> in the maze of rubbish.</span> <<He>> gains on you, and tackles you to the ground. + <br><br> -<span class="red">You fail to lose <<him>> in the maze of rubbish.</span> <<He>> gains on you, and tackles you to the ground. -<br><br> - -<<link [[Next|Trash Fight]]>><<set $fightstart to 1>><</link>> -<br> + <<link [[Next|Trash Fight]]>><<set $fightstart to 1>><</link>> + <br> <</if>> + :: Trash Fight <<if $molestationstart is 1>> -<<set $molestationstart to 0>> -<<set $enemyarousal to 0>> -<<set $enemyanger to 200>> + <<set $molestationstart to 0>> + <<set $enemyarousal to 0>> + <<set $enemyanger to 200>> + <<elseif $fightstart is 1>> -<<set $fightstart to 0>> + <<set $fightstart to 0>> -<<neutral 1>> + <<neutral 1>> -<<maninit>> -<<set $enemytrust -= 100>> -<<set $enemyanger += 200>> -<<npcidlegenitals>> + <<maninit>> + <<set $enemytrust -= 100>> + <<set $enemyanger += 200>> + <<npcidlegenitals>> <</if>> <<effects>> @@ -167,49 +177,47 @@ You turn from the <<person>>, and run. "Stop!" <<he>> shouts after you, giving c <span id="next"><<link [[Next|Trash Fight]]>><</link>></span><<nexttext>> <</if>> + :: Trash Fight Finish <<effects>> <<if $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> + <<ejaculation>> -The <<person>> drops to the ground, panting. -<br><br> + The <<person>> drops to the ground, panting. + <br><br> -<<tearful>> you seize the opportunity. You run. -<br><br> + <<tearful>> you seize the opportunity. You run. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> + <<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> <<elseif $enemyhealth lte 0>> + The <<person>> drops to the ground in pain. + <br><br> -The <<person>> drops to the ground in pain. -<br><br> - -<<tearful>> you seize the opportunity. You run. -<br><br> + <<tearful>> you seize the opportunity. You run. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> + <<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> <<else>> + You drop to the ground, too hurt to continue fighting. + <br><br> -You drop to the ground, too hurt to continue fighting. -<br><br> - -<<tearful>> you can do nothing as the <<person>> lifts you up, and carries you toward the exit. -<br><br> - -<<link [[Next|Trash Rape End]]>><</link>> + <<tearful>> you can do nothing as the <<person>> lifts you up, and carries you toward the exit. + <br><br> + <<link [[Next|Trash Rape End]]>><</link>> <</if>> -:: Trash Rape +:: Trash Rape <<if $molestationstart is 1>> <<set $molestationstart to 0>> <<controlloss>> @@ -237,36 +245,35 @@ You drop to the ground, too hurt to continue fighting. <span id="next"><<link [[Next|Trash Rape]]>><</link>></span><<nexttext>> <</if>> + :: Trash Rape Finish <<effects>> <<if $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> - -<<clotheson>> + <<ejaculation>> -The <<person>> grasps your arm and drags you away. <<tearful>> you do your best not to stumble. <<Hes>> taking you to the gate. -<br><br> + <<clotheson>> -<<link [[Struggle|Trash Fight]]>><<set $molestationstart to 1>><</link>> -<br> -<<link [[Don't struggle|Trash Rape End]]>><</link>> -<br> + The <<person>> grasps your arm and drags you away. <<tearful>> you do your best not to stumble. <<Hes>> taking you to the gate. + <br><br> + <<link [[Struggle|Trash Fight]]>><<set $molestationstart to 1>><</link>> + <br> + <<link [[Don't struggle|Trash Rape End]]>><</link>> + <br> <<else>> + You shove the <<person>> into an old bath, and run. You turn before you round a large pile of rubbish, and see <<him>> still struggling to escape the tub. + <br><br> -You shove the <<person>> into an old bath, and run. You turn before you round a large pile of rubbish, and see <<him>> still struggling to escape the tub. -<br><br> - -<<tearful>> you catch your breath. -<br><br> - -<<clotheson>> -<<endcombat>> + <<tearful>> you catch your breath. + <br><br> -<<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> + <<clotheson>> + <<endcombat>> + <<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> <</if>> + :: Trash Rape End <<set $location to "landfill">><<set $outside to 1>><<effects>> @@ -278,6 +285,7 @@ You arrive at the gate. <<He>> opens it, then shoves you out onto the tarmac. Th <<link [[Next|Elk Street]]>><<set $eventskip to 1>><</link>> <br> + :: Trash Pass Out <<set $location to "landfill">><<set $outside to 1>><<effects>> <<pain 1>> @@ -295,13 +303,15 @@ You struggle against the bonds, but they hold firm. You inch closer, and closer, <<link [[Next|Trash Pass Out 2]]>><</link>> <br> + :: Trash Pass Out 2 <<set $location to "landfill">><<set $outside to 1>><<effects>> Without warning, a siren blares, and a red light blinks into life. The conveyor belt grinds to a halt. <br><br> -Several metal tendrils slither from beneath, wrapping around your arms and legs. They cut through your bindings, and haul you from the belt. You land on a concrete floor below. +Several metal tendrils slither from beneath, wrapping around your arms and legs. +They cut through your bindings, and haul you from the belt. You land on a concrete floor below. <<gpain>><<pain 4>> <br><br> @@ -315,7 +325,8 @@ Several metal tendrils slither from beneath, wrapping around your arms and legs. The tendrils pull away from you, disappearing into cracks in the concrete floor. <br><br> - <<tearful>> you look around. You're in a dark corridor. The conveyor belt moves again above you. You search for a way out, and find a hatch in the wall. You pry it open, and squeeze outside. It snaps shut behind you. You're on Elk Street. + <<tearful>> you look around. You're in a dark corridor. The conveyor belt moves again above you. + You search for a way out, and find a hatch in the wall. You pry it open, and squeeze outside. It snaps shut behind you. You're on Elk Street. <br><br> <<set $stress -= 2000>> @@ -323,18 +334,18 @@ Several metal tendrils slither from beneath, wrapping around your arms and legs. <br> <</if>> + :: Trash Tentacles <<set $location to "landfill">><<set $outside to 1>><<effects>> <<if $molestationstart is 1>> -<<set $molestationstart to 0>> -<<set $combat to 1>> -<<set $enemytype to "tentacles">> -<<molested>> -<<controlloss>> - -<<tentaclestart 8 15 "tendril" "metal">> + <<set $molestationstart to 0>> + <<set $combat to 1>> + <<set $enemytype to "tentacles">> + <<molested>> + <<controlloss>> + <<tentaclestart 8 15 "tendril" "metal">> <</if>> <<statetentacles>> @@ -351,13 +362,15 @@ Several metal tendrils slither from beneath, wrapping around your arms and legs. <span id="next"><<link [[Next|Trash Tentacles]]>><</link>></span><<nexttext>> <</if>> + :: Trash Tentacles Finish <<effects>> The tendrils pull away from you, disappearing into cracks in the concrete floor. <br><br> -<<tearful>> you look around. You're in a dark corridor. The conveyor belt moves again above you. You search for a way out, and find a hatch in the wall. You pry it open, and squeeze outside. It snaps shut behind you. You're on Elk Street. +<<tearful>> you look around. You're in a dark corridor. The conveyor belt moves again above you. +You search for a way out, and find a hatch in the wall. You pry it open, and squeeze outside. It snaps shut behind you. You're on Elk Street. <br><br> <<clotheson>> @@ -366,15 +379,15 @@ The tendrils pull away from you, disappearing into cracks in the concrete floor. <<link [[Next|Elk Street]]>><<set $eventskip to 1>><</link>> <br> + :: Trash Beast <<if $molestationstart is 1>> -<<set $molestationstart to 0>> -<<controlloss>> -<<violence 1>> -<<neutral 1>> -<<molested>> + <<set $molestationstart to 0>> + <<controlloss>> + <<violence 1>> + <<neutral 1>> + <<molested>> <<beastCombatInit>> - <</if>> <<effects>> @@ -395,51 +408,49 @@ The tendrils pull away from you, disappearing into cracks in the concrete floor. <span id="next"><<link "Next">><<script>>state.display(state.active.title, null)<</script>><</link>></span><<nexttext>> <</if>> + :: Trash Beast Finish <<effects>> <<if $enemyarousal gte $enemyarousalmax>> + <<beastejaculation>> -<<beastejaculation>> - -The <<beasttype>> gives a happy bark, and walks away. -<br><br> - -<<tearful>> you gather yourself. -<br><br> + The <<beasttype>> gives a happy bark, and walks away. + <br><br> -<<clotheson>> -<<endcombat>> + <<tearful>> you gather yourself. + <br><br> -<<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> + <<clotheson>> + <<endcombat>> + <<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> <<else>> + The <<beasttype>> whimpers, and runs away. + <br><br> -The <<beasttype>> whimpers, and runs away. -<br><br> - -<<tearful>> you gather yourself. -<br><br> - -<<clotheson>> -<<endcombat>> + <<tearful>> you gather yourself. + <br><br> -<<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> + <<clotheson>> + <<endcombat>> + <<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> <</if>> + :: Trash Swarm <<set $outside to 1>><<set $location to "landfill">><<effects>> <<if $molestationstart is 1>> -<<set $molestationstart to 0>> -<<molested>> -<<controlloss>> -<<set $combat to 1>> -<<set $enemytype to "swarm">> -<<swarminit "maggots" "swarm" "crawling" "crawl" "keep back" 2 6>> - -<<set $timer to 10>> + <<set $molestationstart to 0>> + <<molested>> + <<controlloss>> + <<set $combat to 1>> + <<set $enemytype to "swarm">> + <<swarminit "maggots" "swarm" "crawling" "crawl" "keep back" 2 6>> + + <<set $timer to 10>> <</if>> <<swarmeffects>> @@ -454,44 +465,52 @@ The <<beasttype>> whimpers, and runs away. <span id="next"><<link "Next">><<script>>state.display(state.active.title, null)<</script>><</link>></span><<nexttext>> <</if>> + :: Trash Swarm Finish <<set $outside to 1>><<set $location to "landfill">><<effects>> <<if $stress gte $stressmax>> -<<endcombat>> -<<passouttrash>> - + <<endcombat>> + <<passouttrash>> <<else>> + The maggots crawl away from you. <<tearful>> you escape the pit. + <br><br> -The maggots crawl away from you. <<tearful>> you escape the pit. -<br><br> - -<<endcombat>> -<<clotheson>> - -<<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> -<br> + <<endcombat>> + <<clotheson>> + <<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> + <br> <</if>> + :: Trash Slime <<set $location to "landfill">><<set $outside to 1>><<effects>> <<generate1>><<person1>>"Stop right there," a voice shouts behind you. "This is private property. What the fuck do you think you're doing?" <br><br> -Before you can assess your options, you feel an unnatural urge. <span class="lewd">Something inside pressures you to give yourself to the <<person>>.</span> Somehow you know going along with the urges will feel good, and disobeying will be painful. +Before you can assess your options, you feel an unnatural urge. +<span class="lewd">Something inside pressures you to give yourself to the <<person>>.</span> +Somehow you know going along with the urges will feel good, and disobeying will be painful. <br><br> <<if $promiscuity gte 55 and $submissive gte 1900>> - <<link [["Submit willingly"|Trash Slime Submit willingly]]>><<corruption 3>><<pain -8>><<stress -12>><<trauma -24>><<set $submissive += 2>><</link>><<promiscuous4>><<ggcorruption>><<llpain>><<llltrauma>><<llstress>> + <<link [["Submit willingly"|Trash Slime Submit willingly]]>> + <<corruption 3>><<pain -8>><<stress -12>><<trauma -24>><<set $submissive += 2>> + <</link>><<promiscuous4>><<ggcorruption>><<llpain>><<llltrauma>><<llstress>> <br> <</if>> -<<link [[Obey|Trash Slime Obey]]>><<corruption 1>><<pain -4>><<stress -6>><<trauma -12>><<set $submissive += 1>><</link>><<gcorruption>><<lpain>><<lltrauma>><<lstress>> +<<link [[Obey|Trash Slime Obey]]>> + <<corruption 1>><<pain -4>><<stress -6>><<trauma -12>><<set $submissive += 1>> +<</link>><<gcorruption>><<lpain>><<lltrauma>><<lstress>> <br> -<<link [[Defy|Trash Slime Defy]]>><<corruption -1>><<pain 8>><<stress 6>><<trauma 6>><<set $submissive -= 1>><</link>><<lcorruption>><<ggpain>><<ggtrauma>><<ggstress>> +<<link [[Defy|Trash Slime Defy]]>> + <<corruption -1>><<pain 8>><<stress 6>><<trauma 6>><<set $submissive -= 1>> +<</link>><<lcorruption>><<ggpain>><<ggtrauma>><<ggstress>> <br> + :: Trash Slime Submit willingly <<set $location to "landfill">><<set $outside to 1>><<effects>> @@ -505,6 +524,7 @@ The <<person>> glances around, a small smile on <<his>> face. "I do tend to have <<link [[Next|Trash Slime Rape]]>><<set $sexstart to 1>><</link>> <br> + :: Trash Slime Obey <<set $location to "landfill">><<set $outside to 1>><<effects>> @@ -517,10 +537,12 @@ The <<person>> glances around, a small smile on <<his>> face. "I do tend to have <<link [[Next|Trash Slime Rape]]>><<set $molestationstart to 1>><</link>> <br> + :: Trash Slime Defy <<set $location to "landfill">><<set $outside to 1>><<effects>> -You turn and run. Pain jolts through your body, and you feel something try to wrest control away from you. For a moment your steps falter, as an outside force steals your strength. +You turn and run. Pain jolts through your body, and you feel something try to wrest control away from you. +For a moment your steps falter, as an outside force steals your strength. <br><br> <<tearful>> you manage to stumble away, where you crouch and hide behind a rundown car. <br><br> @@ -533,8 +555,8 @@ You turn and run. Pain jolts through your body, and you feel something try to wr <<link [[Next|Trash]]>><<set $eventskip to 1>><</link>> <br> -:: Trash Slime Rape +:: Trash Slime Rape <<if $molestationstart is 1>> <<set $molestationstart to 0>> <<controlloss>> @@ -570,28 +592,24 @@ You turn and run. Pain jolts through your body, and you feel something try to wr <span id="next"><<link [[Next|Trash Slime Rape]]>><</link>></span><<nexttext>> <</if>> + :: Trash Slime Rape Finish <<effects>> <<if $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> - -The <<person>> adjusts <<his>> clothes and walks away. "Still got it," you hear <<him>> say. -<br><br> - -Your knees buckle as the slime's influence gives way. <<tearful>> you steady yourself. -<br><br> + <<ejaculation>> -<<clotheson>> -<<endcombat>> + The <<person>> adjusts <<his>> clothes and walks away. "Still got it," you hear <<him>> say. + <br><br> + Your knees buckle as the slime's influence gives way. <<else>> + You shove the <<person>> away from you. "Crazy-" you hear <<him>> mutter as <<he>> walks away. + <br><br> -You shove the <<person>> away from you. "Crazy-" you hear <<him>> mutter as <<he>> walks away. -<br><br> - -A jolt of pain tears through your body as the slime punishes you for defiance. -<<corruption -1>><<pain 8>><<stress 6>><<trauma 6>><<set $submissive -= 1>><<lcorruption>><<ggpain>><<ggtrauma>><<ggstress>> -<br><br> + A jolt of pain tears through your body as the slime punishes you for defiance. + <<corruption -1>><<pain 8>><<stress 6>><<trauma 6>><<set $submissive -= 1>><<lcorruption>><<ggpain>><<ggtrauma>><<ggstress>> + <br><br> +<</if>> <<tearful>> you steady yourself. <br><br> @@ -599,8 +617,6 @@ A jolt of pain tears through your body as the slime punishes you for defiance. <<clotheson>> <<endcombat>> -<</if>> - <i>Obeying the slime will provide benefits, but increase your corruption. The slime will become more powerful, and harder to resist, as corruption increases.</i> <br><br> diff --git a/game/overworld-town/loc-museum/bdsm.twee b/game/overworld-town/loc-museum/bdsm.twee index 263b1e5f81e7d605366218501c17d5b131ed72da..9e2e985feee646a1583b64c62d8ce20c677704fa 100644 --- a/game/overworld-town/loc-museum/bdsm.twee +++ b/game/overworld-town/loc-museum/bdsm.twee @@ -175,7 +175,7 @@ With a final push of the lever, the chair lowers the rest of the way, submerging :: Museum Duck Extreme 3 -<<effects>><<rngWraith 2>> +<<effects>><<rngWraith 1>> <<if $swimmingSuccess>> diff --git a/game/overworld-town/loc-park/robin.twee b/game/overworld-town/loc-park/robin.twee index 64a00b4822ff1f125c1686a8ec32e250a61655ed..6b61c927290e944bf1a0944388dd99f14cb18248 100644 --- a/game/overworld-town/loc-park/robin.twee +++ b/game/overworld-town/loc-park/robin.twee @@ -85,7 +85,7 @@ <<if $danger gte (9900 - $allure)>> <br><br> A <<person>> creeps up behind you, - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <span class="purple">and grasps the hem of your skirt.</span> <<elseif $worn.lower.set isnot $worn.upper.set>> <span class="purple">and grasps the hem of your $worn.lower.name.</span> @@ -302,7 +302,7 @@ The other customers are less creepy. :: Robin Chocolate Endure <<effects>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.under_lower.type.includes("naked")>> <<if $worn.genitals.type.includes("chastity")>> The <<person>> lifts your $worn.lower.name, <span class="lewd">exposing your $worn.genitals.name in the middle of the park.</span> diff --git a/game/overworld-town/loc-park/science-project.twee b/game/overworld-town/loc-park/science-project.twee index da96fe51b2d2b7996515dee552cb027e42424e61..d09b5ce126b73406eb638a5da29065137f3fb511 100644 --- a/game/overworld-town/loc-park/science-project.twee +++ b/game/overworld-town/loc-park/science-project.twee @@ -36,7 +36,7 @@ You approach the statue in the middle of the park. It's covered in white lichen. <<gstress>><<gpain>><<stress 3>><<pain 6>> <br><br> <<npc Avery>><<initnpc Avery>><<person1>>You hear a <<nnpc_gender "Avery">>'s laughter. Before you can recover a pair of arms picks you up by your shoulders. Not stopping there, <<he>> holds you by the hips and helps lift you with surprising strength. It's enough for you to clamber up. - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You feel your face flush as you realise <<he>> could have seen up your $worn.lower.name. If <<he>> did <<he>> gives no sign. <</if>> <<He>> smiles at you. "Why'd you want to go up there anyway?" @@ -51,7 +51,7 @@ You approach the statue in the middle of the park. It's covered in white lichen. <<set $outside to 1>><<set $location to "park">><<effects>><<set $bus to "park">> You look around for someone who might help. You see a <<npc Avery>><<initnpc Avery>><<person1>><<nnpc_gender "Avery">> already watching you. <<He>> laughs and approaches you. <<He>> says nothing, but grabs you by the hips and helps lift you with surprising strength. It's enough for you to clamber up. -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You feel your face flush as you realise <<he>> could have seen up your $worn.lower.name. If <<he>> did <<he>> gives no sign. <</if>> <<He>> smiles at you. "Why'd you want to go up there anyway?" @@ -144,7 +144,7 @@ The lichen is attached firm, but you manage to pry it free with some effort. <<H :: Park Lichen Accept <<set $outside to 0>><<set $location to "park">><<effects>> -<<He>> leads you to a small cafe at the edge of the park. <<He>> orders a coffee for <<him>> and some fruit juice for you. The <<generate3>><<person3>><<if $pronoun is "m">>waiter<<else>>waitress<</if>><<person1>> thinks you're Avery's <<if $player.gender_appearance is "m">>son<<else>>daughter<</if>>. <<He>> is old enough to be your <<if $pronoun is "m">>father<<else>>mother<</if>>, but <<hes>> in good shape. <<He>> smiles at you across the table. +<<He>> leads you to a small cafe at the edge of the park. <<He>> orders a coffee for <<him>> and some fruit juice for you. The <<generateRole 2 0 "waiter/waitress">><<person3>><<personsimple>><<person1>> thinks you're Avery's <<if $player.gender_appearance is "m">>son<<else>>daughter<</if>>. <<He>> is old enough to be your <<if $pronoun is "m">>father<<else>>mother<</if>>, but <<hes>> in good shape. <<He>> smiles at you across the table. <br><br> You talk with Avery over the drinks. <<He>> asks a lot of questions, but is reluctant to answer yours. <<He>> doesn't take <<his>> eyes off you. <br><br> diff --git a/game/overworld-town/loc-photography/main.twee b/game/overworld-town/loc-photography/main.twee index 86ec28f9661995ea8f26344e9d60fcca4f8eab2b..cee258b42f49b6d44fdccbb1be0cbeef9d94760c 100644 --- a/game/overworld-town/loc-photography/main.twee +++ b/game/overworld-town/loc-photography/main.twee @@ -221,11 +221,11 @@ A young <<nnpc_gender "Niki">> stands there, a white stick poking out of <<his>> <<if $niki_seen is undefined>> <<if $submissive gte 1150>> - "I-I'm looking for a photographer," you say. "Sam said they were here." + "I-I'm looking for a photographer," you say. "Sam said they were here." <<elseif $submissive lte 850>> - "Sam sent me," you say. "I'm the star." + "Sam sent me," you say. "I'm the star." <<else>> - "Sam sent me," you say. "From the Ocean Breeze." + "Sam sent me," you say. "From the Ocean Breeze." <</if>> <br><br> @@ -271,7 +271,7 @@ You stand in front of the camera. <<if $pronoun is "m">>Niki strokes <<his>> stu <<He>> only talks to give instructions, or advice. <br><br> -<<link [[Do your best to follow them|Photography Chef 4]]>><<set $phase to 0>><<set $submissive += 1>><<set $NPCName[$NPCNameList.indexOf("Niki")].love += 1>><</link>> +<<link [[Do your best to follow them|Photography Chef 4]]>><<set $phase to 0>><<set $submissive += 1>><<npcincr Niki love 1>><</link>> <br> <<link [[Add your own flair|Photography Chef 4]]>><<set $phase to 1>><<set $submissive -= 1>><</link>> <br> @@ -280,9 +280,9 @@ You stand in front of the camera. <<if $pronoun is "m">>Niki strokes <<his>> stu <<set $outside to 0>><<set $location to "town">><<effects>> <<pass 60>> <<if $phase is 0>> -You follow Niki's instructions to the letter. + You follow Niki's instructions to the letter. <<else>> -You take Niki's instructions as a guideline, and do your own thing when the urge strikes you. Niki seems neither impressed nor bothered. + You take Niki's instructions as a guideline, and do your own thing when the urge strikes you. Niki seems neither impressed nor bothered. <</if>> "Props," <<he>> says into <<his>> phone after an hour. "I'll be back shortly," <<he>> says. "The cream is stored separately. Regulations. My people will arrive soon with the rest." <<He>> leaves the room, leaving you stood alone in front of the screen. @@ -318,14 +318,13 @@ You walk over. The <<person1>><<person>> holds an arm out. "Don't get in the way "But I want to see," you say, ignoring <<him>>. You approach the oven, and bend over to look inside. "I said-" the <<person>> begins, but <<he>> cuts off when you start wiggling your <<bottom>>. The others stop working. You can feel their eyes on you. <<exhibitionism1>><<fameexhibitionism 6>> -<br><br> <<if $promiscuity gte 55>> -<span class="lewd">An idea strikes you.</span> -<br><br> + <span class="lewd">An idea strikes you.</span> + <br><br> -<<link [[Ask for their cream|Photography Chef Cream]]>><</link>><<promiscuous4>> -<br> + <<link [[Ask for their cream|Photography Chef Cream]]>><</link>><<promiscuous4>> + <br> <</if>> <<link [[Leave them to work|Photography Chef Leave]]>><</link>> <br> @@ -423,10 +422,10 @@ Niki has you pose holding various kitchen utensils. You smile for the camera, po <br><br> <<if $exhibitionism gte 15 and $chef_picture is "lewd">> -<span class="lewd">Another lewd idea strikes you.</span> -<br><br> -<<link [[Use the lewd fluid you collected|Photography Chef Lewd Cream]]>><<set $chef_picture to "lewd">><</link>><<exhibitionist2>> -<br> + <span class="lewd">Another lewd idea strikes you.</span> + <br><br> + <<link [[Use the lewd fluid you collected|Photography Chef Lewd Cream]]>><<set $chef_picture to "lewd">><</link>><<exhibitionist2>> + <br> <</if>> <<link [[Use normal cream|Photography Chef Normal Cream]]>><<set $chef_picture to "normal">><</link>> <br> diff --git a/game/overworld-town/loc-police/community.twee b/game/overworld-town/loc-police/community.twee index 842f84726f05d4a69c5cf757da6fe97a13e0b8b5..9a82bbcd905ec12566cd489b1c1d6456ea950c24 100644 --- a/game/overworld-town/loc-police/community.twee +++ b/game/overworld-town/loc-police/community.twee @@ -584,7 +584,7 @@ The van rumbles to a halt, and the doors open. <<effects>> You ignore the <<persons>> creeping hand. -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<He>> lifts the hem of your skirt, and for a moment you're afraid <<he>> means to expose you to the whole van, but <<he>> instead squeezes your thigh. <<else>> For a moment you're afraid <<he>> means to grope your <<genitals>>, but <<he>> instead squeezes your thigh. @@ -1104,7 +1104,7 @@ The van rumbles into life. You catch a <<person2>><<person>> sitting opposite ch :: Police Community Clean Tease <<effects>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You cross your legs, showing a good deal of your thigh and almost flashing your <<undies>>. <<elseif $player.penisExist>> You spread your legs, and emphasis the bulge beneath your $worn.lower.name. @@ -1198,7 +1198,7 @@ You take a litter stick and get to work. You and the other criminals move along the street while the <<person>> observes. You're reaching into a drain when you feel a light tug on your $worn.lower.name. <<person2>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> A moment later, <span class="lewd">someone flips up the hem, revealing your <<if $worn.under_lower.type.includes("naked")>> <<bottom>>.<<fameexhibitionism 5>> Someone whistles. diff --git a/game/overworld-town/loc-police/pillory.twee b/game/overworld-town/loc-police/pillory.twee index 5ad0dea6e1e2c18eb4fcb6157c6e252d78d5f2ee..60c799308d760a7a275f134e5fa13f2a851a6aab 100644 --- a/game/overworld-town/loc-police/pillory.twee +++ b/game/overworld-town/loc-police/pillory.twee @@ -336,7 +336,7 @@ A <<generate1>><<person1>><<person>> in a police uniform arrives. <<He>> removes <br> <<link [[Stay still|Pillory Skirt]]>><<trauma 6>><<stress 6>><</link>><<gtrauma>><<gstress>> <br> - <<elseif $worn.lower.exposed lte 1 and $worn.lower.set isnot "upperset" and setup.clothes.lower[$worn.lower.index].skirt isnot 1>> + <<elseif $worn.lower.exposed lte 1 and $worn.lower.set isnot "upperset" and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt isnot 1>> A <<generate1>><<person1>><<person>> walks behind you and grabs the hem of your $worn.lower.name. <br><br> <<link [[Kick them|Pillory Kick]]>><<stress -12>><<trauma -6>><<attackstat>><<set $pilloryaudience += 1>><</link>><<ltrauma>><<llstress>> | <span class="pink">Attracts attention</span> @@ -605,7 +605,7 @@ You kick the <<person>> in the shin. "Ow!" <<he>> says. "Fucking bitch." <<He>> <<set $outside to 1>><<set $location to "town">><<effects>> <<if $rng gte 51>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<He>> flips the hem of your skirt up, laying bare your <<undies>> for all to see. "Yes," <<he>> says. "I think this suits you better." <<He>> returns to the crowd, leaving you exposed. <<else>> <<He>> unbuttons the front of your trousers, laying bare your <<undies>> for all to see. "Yes," <<he>> says. "I think this suits you better." <<He>> returns to the crowd, leaving you exposed. @@ -619,14 +619,14 @@ You kick the <<person>> in the shin. "Ow!" <<he>> says. "Fucking bitch." <<He>> <<else>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<He>> lifts the hem of your skirt slightly and peeks under. <<else>> <<He>> pulls your waistband out slightly and peeks inside. <</if>> <<if $worn.under_lower.type.includes("naked") and !$worn.genitals.type.includes("chastity")>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> "<<pShe>> isn't wearing anything under <<pher>> skirt!" the <<person>> announces loudly. <<else>> "<<pShe>> isn't wearing anything under <<pher>> there!" the <<person>> announces loudly. @@ -908,14 +908,14 @@ The <<person>> approaches you, <<else>> <<bodywriting_npc_normal "right_bottom" _pen>> <</if>> -<<elseif $rng gte 8 and ($worn.lower.type.includes("naked") or setup.clothes.lower[$worn.lower.index].skirt is 1) and ($worn.over_lower.type.includes("naked") or setup.clothes.over_lower[$worn.over_lower.index].skirt is 1) and !$skin.left_thigh.pen>> +<<elseif $rng gte 8 and ($worn.lower.type.includes("naked") or setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) and ($worn.over_lower.type.includes("naked") or setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1) and !$skin.left_thigh.pen>> <<He>> circles behind, and writes on your left thigh. <<if random(1, 2) is 2>> <<bodywriting_criminal "left_thigh" _pen>> <<else>> <<bodywriting_npc_normal "left_thigh" _pen>> <</if>> -<<elseif $rng gte 7 and ($worn.lower.type.includes("naked") or setup.clothes.lower[$worn.lower.index].skirt is 1) and ($worn.over_lower.type.includes("naked") or setup.clothes.over_lower[$worn.over_lower.index].skirt is 1) and !$skin.right_thigh.pen>> +<<elseif $rng gte 7 and ($worn.lower.type.includes("naked") or setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) and ($worn.over_lower.type.includes("naked") or setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1) and !$skin.right_thigh.pen>> <<He>> circles behind, and writes on your right thigh. <<if random(1, 2) is 2>> <<bodywriting_criminal "right_thigh" _pen>> diff --git a/game/overworld-town/loc-prison/events.twee b/game/overworld-town/loc-prison/events.twee index fc1352bfe854021c582c712252649f9dff2f34c5..1b28c73b8163045a00fe0ed205b00cae97d5ed20 100644 --- a/game/overworld-town/loc-prison/events.twee +++ b/game/overworld-town/loc-prison/events.twee @@ -57,7 +57,7 @@ You walk closer. <<person2>><<tattooed_inmate 0 cap>> grabs your arm and pulls y You turn away. "Are you deaf <<bitch>>?" <<tattooed_inmate 1>> snarls. "You're coming with us." <br><br> -"No <<he>> ain't," says an unfamiliar voice from the side. <<tattooed_inmate 1 cap>> and <<his>> goons spin in alarm. <<scarred_inmate 0 cap>> walks closer, a <<person5>><<person>> and <<person6>><<person>> on either side. +"No <<pshe>> ain't," says an unfamiliar voice from the side. <<tattooed_inmate 1 cap>> and <<his>> goons spin in alarm. <<scarred_inmate 0 cap>> walks closer, a <<person5>><<person>> and <<person6>><<person>> on either side. <br><br> <<link [[Next|Prison Attention Gangs]]>><</link>> @@ -285,7 +285,7 @@ You shout. The <<person>> shoves a hand over your mouth. "You'll regret that, sl You leave your clothes on the bench. <br><br> - <<link [[Next|Prison Shower Take]]>><<pass 10>><</link>> + <<link [[Next|Prison Shower Take]]>><<endevent>><<pass 10>><</link>> <br> <<else>> You stomp on the <<persons>> foot. <span class="red"><<He>> doesn't budge.</span> Instead, <<he>> leans in. "So that's how you want it," <<he>> whispers. diff --git a/game/overworld-town/loc-prison/intro.twee b/game/overworld-town/loc-prison/intro.twee index 640c05fd7da3ddecda2acc123f3d47e66bed7b29..5294e40fbc8e8f00a6bf08a002ac88639966c2d0 100644 --- a/game/overworld-town/loc-prison/intro.twee +++ b/game/overworld-town/loc-prison/intro.twee @@ -904,7 +904,7 @@ You emerge on a walkway above a long hall, stretching in both directions. Three <br> "I missed that ass." <br> - "It is wrong if I hoped I'd see you again?" + "Is it wrong if I hoped I'd see you again?" <br> "Let's pick up where we left off." <<elseif $prison.inmates gte 40>> diff --git a/game/overworld-town/loc-prison/main.twee b/game/overworld-town/loc-prison/main.twee index 3d4ba031cd1e96021821d4183d5511328c983f3d..31c3dfb258cf6fd46b3aee15ef7a174f3cf1578e 100644 --- a/game/overworld-town/loc-prison/main.twee +++ b/game/overworld-town/loc-prison/main.twee @@ -1575,19 +1575,19 @@ You close the door behind you, and walk towards the light, emerging on a beach. :: Prison Yard Speak <<effects>> - <<generate_veteran_guard 0>><<person1>> -<<generate2>><<generate3>> +<<generate2>> <<if $prison.veteran gte 60 and !$NPCList[0].name_known>> <<generatep3>> You find <<veteran_guard 0>> examining something in <<his>> palm. <<He>> closes <<his>> fist around it when <<he>> sees you approach. <<He>> was so absorbed <<he>> didn't notice you at first. Nor does <<he>> notice the <<person2>><<person>> backing into <<person1>><<him>>. <br><br> - The collision is accidental, but <<veteran_guard 0>> reaches for <<his>> baton, and delivers a punishing blow to the <<person2>><<persons>> stomach. The object slips from <<person1>><<his>> hand, landing in the grass. + The collision is accidental, but <<veteran_guard 0>> reaches for their baton, and delivers a punishing blow to the <<person2>><<persons>> stomach. The object slips from <<person1>><<his>> hand, landing in the grass. <br><br> <<link [[Pick it up|Prison Yard Locket]]>><</link>> <br> <<else>> + <<generate3>> You approach <<veteran_guard 0>>. <<He>> seems happy to chat, despite <<his>> gruff demeanor. @@ -1638,10 +1638,10 @@ Panting, <<veteran_guard 0>> steps away from the curled <<person2>><<person>>. Y <<link [[Next|Prison Spire Intro]]>><<set $prison.spire_intro to 1>><<set $prison.birds to 0>><</link>> <br> <<else>> - <<generate_anxious_guard 0>><<person1>><<beastNEWinit 5 "hawk">> + <<beastNEWinit 5 "hawk">><<generate_anxious_guard 5>><<person1>> You are in the small cabin atop the spire. <<if $prison.schedule is "work">> - <<anxious_guard 0 cap>> sits in front of several security monitors, but <<person1>><<his>> eyes follow the <<person2>><<beastsplural 1>> outside. + <<anxious_guard 5 cap>> sits in front of several security monitors, but <<person6>><<his>> eyes follow the <<person2>><<beastsplural 1>> outside. <<else>> You watch the <<person2>><<beastsplural 1>> through a window. <</if>> diff --git a/game/overworld-town/loc-prison/scarred.twee b/game/overworld-town/loc-prison/scarred.twee index 596fa7e732ab22e7d6dea5d2e279f55688b94603..ddf379fce408e4b718fe387964baf1a3349806b4 100644 --- a/game/overworld-town/loc-prison/scarred.twee +++ b/game/overworld-town/loc-prison/scarred.twee @@ -1,6 +1,6 @@ :: Prison Scarred <<effects>> - +<<endevent>><!-- Fully make sure no event failures prior can cause a failure here with NPC gen, because saveNPC of scarred_inmate occurs later. --> <<generate_scarred_inmate 0>><<person1>> You enter <<scarred_inmate 0 apo>> cell. @@ -398,8 +398,8 @@ You turn and grasp the bars of the cell. <<His>> hands are a blur as <<he>> ties <<tearful>> you leave the cell. <br><br> <<clotheson>> - <<endcombat>> <span class="green">You've gained <<scarred_inmate 0 apo>> protection.</span><<set $prison.protection to "scarred">> + <<endcombat>> <br><br> <<prison_unbind>> <<link [[Next|Prison Walkway]]>><</link>> @@ -413,9 +413,9 @@ You turn and grasp the bars of the cell. <<His>> hands are a blur as <<he>> ties <<tearful>> you leave the cell. <br><br> <<clotheson>> - <<endcombat>> <br><br> <span class="green">You've gained <<scarred_inmate 0 apo>> protection.</span><<set $prison.protection to "scarred">> + <<endcombat>> <br><br> <<prison_unbind>> <<link [[Next|Prison Walkway]]>><</link>> @@ -672,8 +672,8 @@ The other inmates watch with increasing lechery. They look between you, <<scarre <<tearful>> you take a deep breath. That was dangerous. <br><br> <<clotheson>> - <<endcombat>> <span class="green">You've gained <<scarred_inmate 0 apo>> protection.</span><<set $prison.protection to "scarred">> + <<endcombat>> <br><br> <<prison_unbind>> <<prison_detach_leash>> @@ -752,9 +752,8 @@ The other inmates watch with increasing lechery. They look between you, <<scarre The crowd backs away, shocked by your power.<<gggrespect>><<prison_inmates 10>> <br><br> <<clotheson>> - <<endcombat>> - <span class="green">You've gained <<scarred_inmate 0 apo>> protection.</span><<set $prison.protection to "scarred">> + <<endcombat>> <br><br> <<tearful>> you get your bearings. You see <<generate_scarred_inmate 0>><<person1>><<scarred_inmate 0>> lying in the mud. <br><br> @@ -822,8 +821,8 @@ You help <<scarred_inmate 0>> up, and take <<him>> to medical. <<tearful>> you leave the cell. <br><br> <<clotheson>> - <<endcombat>> <span class="green">You've gained <<scarred_inmate 0 apo>> protection.</span><<set $prison.protection to "scarred">> + <<endcombat>> <br><br> <<prison_unbind>> <<prison_detach_leash>> @@ -844,8 +843,8 @@ You help <<scarred_inmate 0>> up, and take <<him>> to medical. <<tearful>> you leave the cell. <br><br> <<clotheson>> - <<endcombat>> <span class="green">You've gained <<scarred_inmate 0 apo>> protection.</span><<set $prison.protection to "scarred">> + <<endcombat>> <br><br> <<prison_unbind>> <<prison_detach_leash>> diff --git a/game/overworld-town/loc-prison/widgets.twee b/game/overworld-town/loc-prison/widgets.twee index 187080f5eeaadbee988d524c22513b7ff833f925..64a2294d39e294a83e7ecb2ae7ee385847ccdc6c 100644 --- a/game/overworld-town/loc-prison/widgets.twee +++ b/game/overworld-town/loc-prison/widgets.twee @@ -271,9 +271,7 @@ <<if $prison_intro is 1>> <<loadNPC $args[0] "relaxed_guard">> <<else>> - <<generate1>> - <<set $NPCList[0].description to "relaxed">> - <<set $NPCList[0].role to "guard">> + <<generateRole 0 "relaxed" "guard">> <<saveNPC 0 "relaxed_guard">> <</if>> <</widget>> @@ -282,20 +280,28 @@ <<if $prison_intro is 1>> <<loadNPC $args[0] "anxious_guard">> <<else>> - <<generate2>> - <<set $NPCList[1].description to "anxious">> - <<set $NPCList[1].role to "guard">> + <<generateRole 1 "anxious" "guard">> <<saveNPC 1 "anxious_guard">> <</if>> <</widget>> <<widget "generate_veteran_guard">> <<if $prison_intro is 1>> - <<loadNPC $args[0] "veteran_guard">> + <<set $_id to $args[0]>> + <<loadNPC $_id "veteran_guard">> + <<if $per_npc.veteran_guard and !$per_npc.veteran_guard.description>> + <!-- Fix for the veteran guard being saved over as an empty NPCList object in some saves --> + <<clearsinglenpc $_id>> + <<generateRole $_id "veteran" "guard">> + <<if $per_npc.veteran_guard.name_known is 1>> + <<set $NPCList[$_id].name_known to 1>> + <<set $NPCList[$_id].fullDescription to $NPCList[0].name>> + <</if>> + <<clearNPC "veteran_guard">> + <<saveNPC $_id "veteran_guard">> + <</if>> <<else>> - <<generate3>> - <<set $NPCList[2].description to "veteran">> - <<set $NPCList[2].role to "guard">> + <<generateRole 2 "veteran" "guard">> <<saveNPC 2 "veteran_guard">> <</if>> <</widget>> @@ -304,20 +310,28 @@ <<if $prison_intro is 1>> <<loadNPC $args[0] "methodical_guard">> <<else>> - <<generate4>> - <<set $NPCList[3].description to "methodical">> - <<set $NPCList[3].role to "guard">> + <<generateRole 3 "methodical" "guard">> <<saveNPC 3 "methodical_guard">> <</if>> <</widget>> <<widget "generate_scarred_inmate">> <<if $prison_intro is 1>> - <<loadNPC $args[0] "scarred_inmate">> + <<set $_id to $args[0]>> + <<loadNPC $_id "scarred_inmate">> + <<if $per_npc.scarred_inmate and !$per_npc.scarred_inmate.description>> + <!-- Fix for the scarred inmate being saved over as an empty NPCList object in some saves --> + <<clearsinglenpc $_id>> + <<generateRole $_id "scarred" "inmate">> + <<if $per_npc.scarred_inmate.name_known is 1>> + <<set $NPCList[$_id].name_known to 1>> + <<set $NPCList[$_id].fullDescription to $NPCList[0].name>> + <</if>> + <<clearNPC "scarred_inmate">> + <<saveNPC $_id "scarred_inmate">> + <</if>> <<else>> - <<generate5>> - <<set $NPCList[4].description to "scarred">> - <<set $NPCList[4].role to "inmate">> + <<generateRole 4 "scarred" "inmate">> <<saveNPC 4 "scarred_inmate">> <</if>> <</widget>> @@ -334,39 +348,57 @@ <</widget>> <<widget "save_relaxed_guard">>/*The right NPC fill $NPCList[0] slot */ -<<clearNPC "relaxed_guard">> -<<saveNPC 0 "relaxed_guard">> -<<prison_feat_check>> +<<if $NPCList[0].role is "guard">> + <<set $NPCList[0].fullDescription to $NPCList[0].name>> + <<clearNPC "relaxed_guard">> + <<saveNPC 0 "relaxed_guard">> + <<prison_feat_check>> +<</if>> <</widget>> <<widget "save_anxious_guard">> -<<clearNPC "anxious_guard">> -<<saveNPC 0 "anxious_guard">> -<<prison_feat_check>> +<<if $NPCList[0].role is "guard">> + <<set $NPCList[0].fullDescription to $NPCList[0].name>> + <<clearNPC "anxious_guard">> + <<saveNPC 0 "anxious_guard">> + <<prison_feat_check>> +<</if>> <</widget>> <<widget "save_veteran_guard">> -<<clearNPC "veteran_guard">> -<<saveNPC 0 "veteran_guard">> -<<prison_feat_check>> +<<if $NPCList[0].role is "guard">> + <<set $NPCList[0].fullDescription to $NPCList[0].name>> + <<clearNPC "veteran_guard">> + <<saveNPC 0 "veteran_guard">> + <<prison_feat_check>> +<</if>> <</widget>> <<widget "save_methodical_guard">> -<<clearNPC "methodical_guard">> -<<saveNPC 0 "methodical_guard">> -<<prison_feat_check>> +<<if $NPCList[0].role is "guard">> + <<set $NPCList[0].fullDescription to $NPCList[0].name>> + <<clearNPC "methodical_guard">> + <<saveNPC 0 "methodical_guard">> + <<prison_feat_check>> +<</if>> <</widget>> <<widget "save_scarred_inmate">> -<<clearNPC "scarred_inmate">> -<<saveNPC 0 "scarred_inmate">> -<<prison_feat_check>> +<<if $NPCList[0].role is "inmate">> + <<set $NPCList[0].fullDescription to $NPCList[0].name>> + <<clearNPC "scarred_inmate">> + <<saveNPC 0 "scarred_inmate">> + <<prison_feat_check>> +<</if>> <</widget>> <<widget "save_tattooed_inmate">> -<<clearNPC "tattooed_inmate">> -<<saveNPC 0 "tattooed_inmate">> -<<prison_feat_check>> +<<if $NPCList[0].role is "inmate">> + <<set $NPCList[0].fullDescription to $NPCList[0].name>> + <<clearNPC "tattooed_inmate">> + <<saveNPC 0 "tattooed_inmate">> + <<prison_feat_check>> +<</if>> <</widget>> <<widget "prison_feat_check">> diff --git a/game/overworld-town/loc-prison/work.twee b/game/overworld-town/loc-prison/work.twee index 12d9b9e96f640fd5adfa6897f88497324fcbdf29..eb976f48040eb1e775f19763494d215c81081e98 100644 --- a/game/overworld-town/loc-prison/work.twee +++ b/game/overworld-town/loc-prison/work.twee @@ -1771,7 +1771,7 @@ You take the <<person>> by the hand, and lead <<him>> into the prison block. Oth The <<person>> leans back, a relieved look on <<his>> face. "I needed that," <<he>> says. "Not enough sluts in here."<<ghope>><<prison_hope 1>> <br><br> <<set _rng to random(7, 15)>> - "Here," <<he>> says, rummaging around <<his>> cell. <span class="green">He grabs a small brown bag and throws it to you.</span> <<prison_teeth _rng>><<prison_teeth_text _rng>> + "Here," <<he>> says, rummaging around <<his>> cell. <span class="green"><<He>> grabs a small brown bag and throws it to you.</span> <<prison_teeth _rng>><<prison_teeth_text _rng>> <br><br> <<tearful>> you leave the cell. <br><br> diff --git a/game/overworld-town/loc-prison/wren.twee b/game/overworld-town/loc-prison/wren.twee index 5b78ead8d8f2e98bf4acf4341dc7f976313ffa51..0a7588da0ad6719855fbb1158091e63418c12c30 100644 --- a/game/overworld-town/loc-prison/wren.twee +++ b/game/overworld-town/loc-prison/wren.twee @@ -305,7 +305,7 @@ Wren hands you a small hammer, barely the size of your thumb. "Hope you weren't <span class="gold">You now have a small hammer.</span> <br><br> -<<link [[Next|Prison Yard]]>><</link>> +<<link [[Next|Prison Yard]]>><<endevent>><</link>> <br> @@ -318,7 +318,7 @@ Wren hands you a small hammer, barely the size of your thumb. "Hope you weren't <span class="gold">You now have a poster on your cell wall.</span> <br><br> -<<link [[Next|Prison Yard]]>><</link>> +<<link [[Next|Prison Yard]]>><<endevent>><</link>> <br> :: Prison Wren Ask diff --git a/game/overworld-town/loc-pub/main.twee b/game/overworld-town/loc-pub/main.twee index e3444f7fbbe272a5d6488de4f7ba405867f8ac96..f93ca26e41572bf7b260bd33192a07f882900980 100644 --- a/game/overworld-town/loc-pub/main.twee +++ b/game/overworld-town/loc-pub/main.twee @@ -316,11 +316,11 @@ You push the money across the table. :: Pub Guard <<effects>> -<<generate1>><<person1>> -You ask the landlord if <<he>> knows anyone in need of work. <<He>> nods at a -<<endevent>><<generate1>><<person1>><<set $NPCList[0].skills.security to random(1, 600)>> +<<generate1>><<set $NPCList[0].skills.security to random(1, 600)>> +<<generate2>><<person2>> +You ask the landlord if <<he>> knows anyone in need of work. <<He>> nods at a <<person1>><<person>> <<if $NPCList[0].traits.includes("relaxed")>> - <<person>> sat alone, reclining near the window. <<He>> looks up as you walk over. "How can I help you?" <<he>> asks, gesturing at the seat opposite. + sat alone, reclining near the window. <<He>> looks up as you walk over. "How can I help you?" <<he>> asks, gesturing at the seat opposite. <br><br> <<if $submissive gte 1150>> @@ -335,7 +335,7 @@ You ask the landlord if <<he>> knows anyone in need of work. <<He>> nods at a The <<person>> regards you over <<his>> drink. "Sounds interesting," <<he>> says. "It'll cost you." <br><br> <<elseif $NPCList[0].traits.includes("sociable")>> - <<person>> sat with friends, chatting. You have to tap <<his>> shoulder to get <<his>> attention. + sat with friends, chatting. You have to tap <<his>> shoulder to get <<his>> attention. <br><br> <<He>> agrees to sit with you at another table. "So what's this about?" <<he>> says. @@ -354,7 +354,7 @@ You ask the landlord if <<he>> knows anyone in need of work. <<He>> nods at a <br><br> <<elseif $NPCList[0].traits.includes("brooding")>> - <<person>> sat alone in a dark corner. <<Hes>> already watching you. + sat alone in a dark corner. <<Hes>> already watching you. <br><br> You take the seat opposite <<him>>. @@ -370,19 +370,11 @@ You ask the landlord if <<he>> knows anyone in need of work. <<He>> nods at a <br><br> <<else>> - <<person>> trying to chat up a - <<if $pronoun is "m">> - <<if $homochance gte random(1, 100)>> - boy - <<else>> - girl - <</if>> + trying to chat up a + <<if random(1, 100) lte $homochance>> + <<print ($pronoun is "m" ? "boy" : "girl")>> <<else>> - <<if $homochance gte random(1, 100)>> - girl - <<else>> - boy - <</if>> + <<print ($pronoun is "m" ? "girl" : "boy")>> <</if>> at the bar. <<His>> quarry walks away, leaving <<him>> leaning against the counter. You take the now vacant seat. <br><br> @@ -428,8 +420,6 @@ You ask the landlord if <<he>> knows anyone in need of work. <<He>> nods at a <<He>> stumbles a little on the way out of the pub. <br><br> - <<link [[Next|Pub]]>><<endevent>><</link>> - <br> <<elseif $NPCList[0].traits.includes("sociable")>> "Sounds grand," the <<person>> says. "Call me <span class="gold"><<print $NPCList[0].name>></span>. So where is this farm of yours?" <br><br> @@ -440,14 +430,10 @@ You ask the landlord if <<he>> knows anyone in need of work. <<He>> nods at a <<He>> rises, and returns to <<his>> friends. <br><br> - <<link [[Next|Pub]]>><<endevent>><</link>> - <br> <<elseif $NPCList[0].traits.includes("brooding")>> "Alright," the <<person>> says. "I'm <span class="gold"><<print $NPCList[0].name>></span>." <<He>> rises to <<his>> feet. "I know the way." <<He>> leaves the pub. <br><br> - <<link [[Next|Pub]]>><<endevent>><</link>> - <br> <<else>> The <<person>> hesitates, then nods. "Could be fun," <<he>> says. "You can call me <span class="gold"><<print $NPCList[0].name>></span>. Plenty of time to get to know each other. Where's this farm? <br><br> @@ -458,8 +444,6 @@ You ask the landlord if <<he>> knows anyone in need of work. <<He>> nods at a <<He>> swaggers from the pub. <br><br> - <<link [[Next|Pub]]>><<endevent>><</link>> - <br> <</if>> <<saveNPC 0 "farm_tower_guard">> @@ -467,3 +451,6 @@ You ask the landlord if <<he>> knows anyone in need of work. <<He>> nods at a <<set $farm.tower_guard_unpaid to 1>> <<set $farm.tower_guard_skill to clone($NPCList[0].skills.security)>> <<earnFeat "To Watch the Fields">> + +<<link [[Next|Pub]]>><<endevent>><</link>> +<br> \ No newline at end of file diff --git a/game/overworld-town/loc-pub/seduction.twee b/game/overworld-town/loc-pub/seduction.twee index 2757494bb3067ccefc54230950c82c79303133fb..b85d873873cb377f97384b2bd6e50acbfdd3506e 100644 --- a/game/overworld-town/loc-pub/seduction.twee +++ b/game/overworld-town/loc-pub/seduction.twee @@ -890,6 +890,8 @@ You knock <<him>> into the stall door, which <<he>> crashes through. <<tearful>> You disappear with <<him>> into the forest. Shortly after <<he>> turns to you. "I always loved this forest," <<he>> says. "I have something for you." <<He>> holds out <<his>> hand, showing you a pink pill. "You'll like it. I promise." <br><br> + <<link [[Eat the pill|Pub Wraith Mimic Hallucinogen]]>><<set $hallucinogen += 240>><<drugs 180>><</link>> + <br> <<if $hallucinations gte 1>> <<link [[Refuse|Pub Wraith Mimic Refuse]]>><</link>> <<else>> @@ -1294,7 +1296,7 @@ They lead you out onto the street. They stay close to you, making sure you have You enter a small room. Briar is there, flanked by two more thugs.<<endevent>> <<npc Briar>><<person1>>"I tried to warn you," <<he>> says. <<His>> thugs pick you up by the legs, dropping your head and chest to the ground. - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> Your $worn.lower.name slip down your thighs, baring your <<undies>>. <</if>> diff --git a/game/overworld-town/loc-school/canteen.twee b/game/overworld-town/loc-school/canteen.twee index 5c995f7e354749960bfb524d8f26745bda3949ea..e266f57edc409555d5e52a2b33b200c535dc9f90 100644 --- a/game/overworld-town/loc-school/canteen.twee +++ b/game/overworld-town/loc-school/canteen.twee @@ -42,20 +42,25 @@ You are in the school canteen. <<if $schoolstate is "early">> <<elseif $schoolstate is "late">> <<elseif $schoolstate is "lunch">> - <<if $robinReunionScene is "dungeon" and $robinmissing isnot 1 and $exposed lte 0>> + <<run getRobinLocation()>> + + <<if _robin_location is "school" and $robinReunionScene is "dungeon" and $exposed lte 0>> <<npc Robin>><<person1>> <<unset $robinReunionScene>><<set $robinPostMortem to true>> - You hear a gasp from one of the tables. Turning in the direction of the sound, you spot Robin at a packed table, mouth agape. A framed picture of the two of you sits nearby them. <<He>> jumps up and sprints towards you. + You hear a gasp from one of the tables. Turning in the direction of the sound, you spot Robin at a packed table, mouth agape. + A framed picture of the two of you sits nearby them. <<He>> jumps up and sprints towards you. <br><br> "I don’t believe it!" <<he>> squeals before burying <<himself>> in your chest. "I-I thought you were gone forever!" <br> - Eventually, Robin calms down a bit. <<He>> looks at you with misty eyes. "We need to talk about this at home," <<he>> says, sniffling. "Wh-when you’re ready, of course." + Eventually, Robin calms down a bit. <<He>> looks at you with misty eyes. + "We need to talk about this at home," <<he>> says, sniffling. "Wh-when you’re ready, of course." <br><br> <<if $NPCName[$NPCNameList.indexOf("Kylar")].state is "active">> <<if $NPCName[$NPCNameList.indexOf("Kylar")].rage gte 60>> - You open your mouth to respond, but before you get the chance, Kylar squeezes between the two of you. <<nnpc_He "Kylar">> shoves Robin out of the way. + You open your mouth to respond, but before you get the chance, Kylar squeezes between the two of you. + <<nnpc_He "Kylar">> shoves Robin out of the way. <br> "I-I was worried about you too," <<nnpc_he "Kylar">> "I lost track of you."<<stress 3>><<gstress>> <br><br> @@ -63,11 +68,16 @@ You are in the school canteen. <<if $NPCName[$NPCNameList.indexOf("Robin")].dom gte 80>> Robin takes notice, and <<he>> turns to face Kylar with a serious expression, arms crossed. <br> - "Will you stop that?" <<he>> demands, causing Kylar to jolt in surprise. "You're being a bother. <<pShes>> clearly under a lot of stress right now, so please, either behave yourself or leave my <<if $robinromance is 1>><<girl>><</if>>friend alone!" + "Will you stop that?" <<he>> demands, causing Kylar to jolt in surprise. + "You're being a bother. <<pShes>> clearly under a lot of stress right now, so please, either behave yourself or leave my <<if $robinromance is 1>><<girl>><</if>>friend alone!" <br> - Robin huffs as <<he>> finishes, breathing heavily. Kylar looks astonished. <<nnpc_He "Kylar">> gapes at Robin for a moment, then sticks <<nnpc_his "Kylar">> tongue out and scurries back to <<nnpc_his "Kylar">> table. + Robin huffs as <<he>> finishes, breathing heavily. Kylar looks astonished. + <<nnpc_He "Kylar">> gapes at Robin for a moment, then sticks <<nnpc_his "Kylar">> tongue out and scurries back to <<nnpc_his "Kylar">> table. <br><br> - Eventually, Robin starts to calm down. <<He>> looks embarrassed. "S-sorry, that was rude," <<he>> mumbles. "I should apologise to <<nnpc_him "Kylar">>." <<He>> glances towards Kylar's table, where <<nnpc_he "Kylar">> stabs <<nnpc_his "Kylar">> food with more resentment than usual. "M-maybe later, though." + Eventually, Robin starts to calm down. <<He>> looks embarrassed. + "S-sorry, that was rude," <<he>> mumbles. "I should apologise to <<nnpc_him "Kylar">>." + <<He>> glances towards Kylar's table, where <<nnpc_he "Kylar">> stabs <<nnpc_his "Kylar">> food with more resentment than usual. + "M-maybe later, though." <br> <<He>> gives you a nervous smile and a wave as <<he>> returns to <<his>> table. <<else>> @@ -90,30 +100,35 @@ You are in the school canteen. <<else>> <<if $NPCName[$NPCNameList.indexOf("Robin")].init is 0>> <<set $robindebt to 0>><<set $robindebtlimit to 5>> - <<npc Robin>><<initnpc Robin>><<person1>>You hear a voice shout behind you. "Hey!" It's Robin. <<Hes>> another resident at the orphanage. <<Hes>> always looked up to you, despite being about the same age. <<He>> runs towards you and fails to slow down in time, colliding with you and almost spilling <<his>> food tray. You hold <<his>> arm to steady <<him>>. "Thanks," <<he>> says, looking embarrassed though still smiling. + <<npc Robin>><<initnpc Robin>><<person1>>You hear a voice shout behind you. "Hey!" It's Robin. <<Hes>> another resident at the orphanage. + <<Hes>> always looked up to you, despite being about the same age. + <<He>> runs towards you and fails to slow down in time, colliding with you and almost spilling <<his>> food tray. + You hold <<his>> arm to steady <<him>>. "Thanks," <<he>> says, looking embarrassed though still smiling. <br><br> - "I didn't see you this morning. Remember, <span class="gold">you can visit me in my room at home</span> anytime you want. I've been waiting to show you something. I'm so excited!" <<He>> gives you a one-armed hug, carefully balancing <<his>> tray with the other arm, before running off to find a seat. + "I didn't see you this morning. Remember, <span class="gold">you can visit me in my room at home</span> anytime you want. + I've been waiting to show you something. I'm so excited!" + <<He>> gives you a one-armed hug, carefully balancing <<his>> tray with the other arm, before running off to find a seat. <br><br> <<endevent>> <<link [[Eat with Robin (0:20)|Canteen Lunch Robin]]>><<stress -6>><<trauma -2>><<pass 20>><<set $luncheaten to 1>><<npcincr Robin love 1>><</link>><<ltrauma>><<lstress>> <br> - <<elseif $robinmissing isnot 1 and $NPCName[$NPCNameList.indexOf("Robin")].init is 1 and $luncheaten isnot 1 and $exposed lte 0>> + <<elseif _robin_location is "school" and $NPCName[$NPCNameList.indexOf("Robin")].init is 1 and $luncheaten isnot 1 and $exposed lte 0>> <<set $rng to random(1, 100)>> <<if $rng gte 96>> - <<npc Robin>><<person1>>You see Robin trying to eat <<his>> lunch while a group of delinquents harass <<him>>.<<endevent>> - <br> - <<link [[Intervene (0:20)|Canteen Lunch Intervene]]>><<set $luncheaten to 1>><<npcincr Robin love 5>><</link>> - <br><br> + <<npc Robin>><<person1>>You see Robin trying to eat <<his>> lunch while a group of delinquents harass <<him>>.<<endevent>> + <br> + <<link [[Intervene (0:20)|Canteen Lunch Intervene]]>><<set $luncheaten to 1>><<npcincr Robin love 5>><</link>> + <br><br> <<elseif $rng gte 91 and $NPCName[$NPCNameList.indexOf("Whitney")].dom gte 16 and $NPCName[$NPCNameList.indexOf("Whitney")].state isnot "dungeon">> - You see Robin eating lunch. - <br> - <<link [[Eat with Robin (0:20)|Robin Kiyoura Start]]>><<stress -6>><<trauma -2>><<pass 20>><<set $luncheaten to 1>><<npcincr Robin love 1>><</link>><<ltrauma>><<lstress>> - <br> + You see Robin eating lunch. + <br> + <<link [[Eat with Robin (0:20)|Robin Kiyoura Start]]>><<stress -6>><<trauma -2>><<pass 20>><<set $luncheaten to 1>><<npcincr Robin love 1>><</link>><<ltrauma>><<lstress>> + <br> <<else>> - You see Robin eating lunch. - <br> - <<link [[Eat with Robin (0:20)|Canteen Lunch Robin]]>><<stress -6>><<trauma -2>><<pass 20>><<set $luncheaten to 1>><<npcincr Robin love 1>><</link>><<ltrauma>><<lstress>> - <br> + You see Robin eating lunch. + <br> + <<link [[Eat with Robin (0:20)|Canteen Lunch Robin]]>><<stress -6>><<trauma -2>><<pass 20>><<set $luncheaten to 1>><<npcincr Robin love 1>><</link>><<ltrauma>><<lstress>> + <br> <</if>> <</if>> <<if $NPCName[$NPCNameList.indexOf("Kylar")].state is "active" and $luncheaten isnot 1 and $exposed lte 0>> @@ -194,7 +209,9 @@ You are in the school canteen. <<set $danger to random(1, 10000)>><<set $dangerevent to 0>> <<if $danger gte (9900 - $allure)>> <<set $canteenapproach to 1>> - <<generatey1>>As you turn to leave, a <<person1>><<person>> puts <<his>> hand on your shoulder. "I've a better idea," <<he>> says. "How about you show us your <<if $player.gender_appearance is "m">>cock<<else>>cunt<</if>>?" The others laugh as the <<person>> forces you to the ground. + <<generatey1>>As you turn to leave, a <<person1>><<person>> puts <<his>> hand on your shoulder. + "I've a better idea," <<he>> says. "How about you show us your <<print ($player.gender_appearance is "m" ? "cock" : "cunt")>>?" + The others laugh as the <<person>> forces you to the ground. <br><br> <<link [[Next|Canteen Students Molestation]]>><<set $molestationstart to 1>><</link>> @@ -249,7 +266,8 @@ You are in the school canteen. :: Canteen Students Molestation Finish <<if $enemyhealth lte 0>> - <<He>> recoils in pain, a glint of fear in <<his>> eyes. "I think you've had enough," <<he>> says, acting confident, but betrayed by the quiver in <<his>> voice. <<tearful>> you walk away. + <<He>> recoils in pain, a glint of fear in <<his>> eyes. + "I think you've had enough," <<he>> says, acting confident, but betrayed by the quiver in <<his>> voice. <<tearful>> you walk away. <br><br> <<clotheson>> @@ -267,7 +285,8 @@ You are in the school canteen. <<link [[Next|Canteen]]>><</link>> <<elseif $alarm is 1 and $rescue is 1>> - The <<person>> is interrupted by <<his>> friends. "Come on, we don't want to get in trouble." <<He>> hesitates, then relents in <<his>> assault. <<He>> shoves you away. <<tearful>> you pick yourself off the ground. + The <<person>> is interrupted by <<his>> friends. "Come on, we don't want to get in trouble." <<He>> hesitates, then relents in <<his>> assault. + <<He>> shoves you away. <<tearful>> you pick yourself off the ground. <br><br> <<clotheson>> @@ -390,7 +409,8 @@ You lean seductively against the table and address the <<person>>. "You look ten :: Canteen Tray <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> -You reach above the counter and take a tray. Holding it in front of you, you take a deep breath, and stand. You walk around the edge of the room, trying to act as if nothing is amiss. Fortunately, no one pays you any attention, and you arrive at the door. +You reach above the counter and take a tray. Holding it in front of you, you take a deep breath, and stand. +You walk around the edge of the room, trying to act as if nothing is amiss. Fortunately, no one pays you any attention, and you arrive at the door. <br><br> <<if $rng gte 51>> @@ -400,10 +420,12 @@ You reach above the counter and take a tray. Holding it in front of you, you tak <<link [[Next|Hallways]]>><</link>> <<else>> - As you reach for the handle however, the doors suddenly open, knocking you onto your back and sending your protective tray sprawling away from you. Worse, the sound of the collision got the attention of the rest of the room. + As you reach for the handle however, the doors suddenly open, knocking you onto your back and sending your protective tray sprawling away from you. + Worse, the sound of the collision got the attention of the rest of the room. <br><br> - For a moment, the room goes silent, as everyone notices the underdressed <<girl>> on the floor, <<lewdness>> on display. Your daze is cruelly lifted when the room erupts into a jeering cheer. On the verge of panic, you flee from the room, chased by the jeers and whistles. + For a moment, the room goes silent, as everyone notices the underdressed <<girl>> on the floor, <<lewdness>> on display. + Your daze is cruelly lifted when the room erupts into a jeering cheer. On the verge of panic, you flee from the room, chased by the jeers and whistles. <<gtrauma>><<gstress>><<lcool>><<trauma 6>><<stress 6>><<status -10>> <br><br> @@ -413,7 +435,9 @@ You reach above the counter and take a tray. Holding it in front of you, you tak :: Canteen Wait <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> -You wait, huddled beneath the counter as the students eat their lunches, so close yet unaware of your presence. The bell rings and your hear the room clearing. When it seems safe, you tentatively leave the safety of your hiding place. You peek through the door to make sure the hall is empty before exiting the canteen. +You wait, huddled beneath the counter as the students eat their lunches, so close yet unaware of your presence. +The bell rings and your hear the room clearing. When it seems safe, you tentatively leave the safety of your hiding place. +You peek through the door to make sure the hall is empty before exiting the canteen. <br><br><br><br> <<link [[Next|Hallways]]>><</link>> <br> diff --git a/game/overworld-town/loc-school/changing-rooms.twee b/game/overworld-town/loc-school/changing-rooms.twee index b180b0efd56da1a4761cc38dc6e51d16cb710571..d6f6c4c376e22c0f8b66436a5a965b551a4e2f0f 100755 --- a/game/overworld-town/loc-school/changing-rooms.twee +++ b/game/overworld-town/loc-school/changing-rooms.twee @@ -23,27 +23,22 @@ You are in the boys' changing room. <br><br> <<if $exposed gte 2>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<elseif $exposed is 1>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<else>> <<link [[Leave|School Pool Entrance]]>><</link>> - <br> <</if>> - <<schoolpoolclothes "schoolBoys">> - <<link [[Locker|School Boy Wardrobe]]>><</link>> - <br> + <br> <<if $exposed gte 2 and $exhibitionism gte 75>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>><<if $swimall isnot 1>><<gdelinquency>><</if>> - <br><br> <<elseif $exposed gte 2>> <span class="pink">You can't enter the pool while so exposed!</span> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <</if>> + <br> + <<schoolpoolclothes "schoolBoys">> + <<link [[Locker|School Boy Wardrobe]]>><</link>> <<else>><!-- $player.gender_appearance is "f" --> <<if $exposed gte 2 and $malechance isnot 0>> You peek around the corner. You see boys in various states of undress. They'd spot you if you tried to enter. @@ -109,27 +104,22 @@ You are in the boys' changing room. <br><br> <<if $exposed gte 2>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<elseif $exposed is 1>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<else>> <<link [[Leave|School Pool Entrance]]>><</link>> - <br> <</if>> - <<schoolpoolclothes "schoolBoys">> - <<link [[Locker|School Boy Wardrobe]]>><</link>> <br> <<if $exposed gte 2 and $exhibitionism gte 75>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>><<if $swimall isnot 1>><<gdelinquency>><</if>> - <br><br> <<elseif $exposed gte 2>> <span class="pink">You can't enter the pool while so exposed!</span> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <</if>> + <br> + <<schoolpoolclothes "schoolBoys">> + <<link [[Locker|School Boy Wardrobe]]>><</link>> <<else>><!-- $player.gender_appearance is "f" --> <<if $exposed gte 2 and $malechance isnot 0>> You peek around the corner. You see boys in various states of undress. They'd spot you if you tried to enter. @@ -183,39 +173,32 @@ You are in the boys' changing room. <br><br> <<if $exposed gte 2>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<elseif $exposed is 1>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<else>> <<link [[Leave|School Pool Entrance]]>><</link>> - <br> <</if>> - <<school_pool_swap>> - <<schoolpoolclothes "schoolBoys">> - <<link [[Locker|School Boy Wardrobe]]>><</link>> <br> - <<boy_lockers>> <<if $swimall isnot 1>> <<if $exposed gte 2 and $exhibitionism gte 75>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>><<gdelinquency>> - <br><br> <<elseif $exposed gte 2>> <span class="pink">You can't enter the pool while so exposed!</span> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <</if>> <<else>> <<if $exposed gte 2>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <</if>> <</if>> + <br> + <<school_pool_swap>> + <<boy_lockers>> + <<schoolpoolclothes "schoolBoys">> + <<link [[Locker|School Boy Wardrobe]]>><</link>> <<else>><!-- $player.gender_appearance is "f" --> <<if $player.gender is "f">> Even alone, being here makes you feel naughty, as well as worried you'll be caught. @@ -223,29 +206,24 @@ You are in the boys' changing room. <br><br> <<if $exposed gte 2>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<elseif $exposed is 1>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<else>> <<link [[Leave|School Pool Entrance]]>><</link>> - <br> <</if>> - <<school_pool_swap>> - <<schoolpoolclothes "schoolBoys">> - <<link [[Locker|School Boy Wardrobe]]>><</link>> <br> - <<boy_lockers>> <<if $exposed gte 2 and $exhibitionism gte 75>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>><<if $swimall isnot 1>><<gdelinquency>><</if>> - <br><br> <<elseif $exposed gte 2>> <span class="pink">You can't enter the pool while so exposed!</span> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <</if>> + <br> + <<school_pool_swap>> + <<boy_lockers>> + <<schoolpoolclothes "schoolBoys">> + <<link [[Locker|School Boy Wardrobe]]>><</link>> <</if>> <<elseif $poolroomstate is "other">><!-- $changingroomstate is "empty" --> It's currently empty, though you can hear activity in the pool proper. @@ -253,29 +231,24 @@ You are in the boys' changing room. <br><br> <<if $exposed gte 2>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<elseif $exposed is 1>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<else>> <<link [[Leave|School Pool Entrance]]>><</link>> - <br> <</if>> - <<school_pool_swap>> - <<schoolpoolclothes "schoolBoys">> - <<link [[Locker|School Boy Wardrobe]]>><</link>> <br> - <<boy_lockers>> <<if $exposed gte 2 and $exhibitionism gte 75>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>><<if $swimall isnot 1>><<gdelinquency>><</if>> - <br><br> <<elseif $exposed gte 2>> <span class="pink">You can't enter the pool while so exposed!</span> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <</if>> + <br> + <<school_pool_swap>> + <<boy_lockers>> + <<schoolpoolclothes "schoolBoys">> + <<link [[Locker|School Boy Wardrobe]]>><</link>> <<else>><!-- $player.gender_appearance is "f" --> <<if $player.gender is "f">> Even alone, being here makes you feel naughty, as well as worried you'll be caught. @@ -283,48 +256,43 @@ You are in the boys' changing room. <br><br> <<if $exposed gte 2>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<elseif $exposed is 1>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<else>> <<link [[Leave|School Pool Entrance]]>><</link>> - <br> <</if>> - <<school_pool_swap>> - <<schoolpoolclothes "schoolBoys">> - <<link [[Locker|School Boy Wardrobe]]>><</link>> <br> - <<boy_lockers>> <<if $exposed gte 2 and $exhibitionism gte 75>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>><<gdelinquency>> - <br><br> <<elseif $exposed gte 2>> <span class="pink">You can't enter the pool while so exposed!</span> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <</if>> + <br> + <<school_pool_swap>> + <<boy_lockers>> + <<schoolpoolclothes "schoolBoys">> + <<link [[Locker|School Boy Wardrobe]]>><</link>> <</if>> <<else>><!-- $poolroomstate is "empty" and $changingroomstate is "empty" --> <<if $player.gender is "m">> It's empty. <br><br> - <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <<link [[Leave|School Pool Entrance]]>><</link>> <br> + <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> + <br> <<schoolpoolclothes "schoolBoys">> <<link [[Locker|School Boy Wardrobe]]>><</link>> <br> <<else>> It's empty. Even so, being here makes you feel naughty. <br><br> - <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <<link [[Leave|School Pool Entrance]]>><</link>> <br> + <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> + <br> <<schoolpoolclothes "schoolBoys">> <<link [[Locker|School Boy Wardrobe]]>><</link>> <br> @@ -408,24 +376,20 @@ You are in the girls' changing room. <br><br> <<if $exposed gte 1>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<else>> <<link [[Leave|School Pool Entrance]]>><</link>> - <br> <</if>> - <<schoolpoolclothes "schoolGirls">> - <<link [[Locker|School Girl Wardrobe]]>><</link>> <br> <<if $exposed gte 2 and $exhibitionism gte 75>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>><<if $swimall isnot 1>><<gdelinquency>><</if>> - <br><br> <<elseif $exposed gte 2>> <span class="pink">You can't enter the pool while so exposed!</span> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <</if>> + <br> + <<schoolpoolclothes "schoolGirls">> + <<link [[Locker|School Girl Wardrobe]]>><</link>> <</if>> <<elseif $changingroomstate is "other">> <<if $player.gender_appearance is "m">> @@ -493,27 +457,22 @@ You are in the girls' changing room. <br><br> <<if $exposed gte 2>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<elseif $exposed is 1>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<else>> <<link [[Leave|School Pool Entrance]]>><</link>> - <br> <</if>> - <<schoolpoolclothes "schoolGirls">> - <<link [[Locker|School Girl Wardrobe]]>><</link>> <br> <<if $exposed gte 2 and $exhibitionism gte 75>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>><<if $swimall isnot 1>><<gdelinquency>><</if>> - <br><br> <<elseif $exposed gte 2>> <span class="pink">You can't enter the pool while so exposed!</span> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <</if>> + <br> + <<schoolpoolclothes "schoolGirls">> + <<link [[Locker|School Girl Wardrobe]]>><</link>> <</if>> <<elseif $poolroomstate is "own">><!-- $changingroomstate is "empty" --> It's currently empty, though you can hear activity in the pool proper. Your lesson is in session. @@ -524,66 +483,54 @@ You are in the girls' changing room. <br><br> <<if $exposed gte 2>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<elseif $exposed is 1>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<else>> <<link [[Leave|School Pool Entrance]]>><</link>> - <br> <</if>> - <<school_pool_swap>> - <<schoolpoolclothes "schoolGirls">> - <<link [[Locker|School Girl Wardrobe]]>><</link>> <br> - <<girl_lockers>> <<if $exposed gte 2 and $exhibitionism gte 75>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>><<if $swimall isnot 1>><<gdelinquency>><</if>> - <br><br> <<elseif $exposed gte 2>> <span class="pink">You can't enter the pool while so exposed!</span> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <</if>> + <br> + <<school_pool_swap>> + <<girl_lockers>> + <<schoolpoolclothes "schoolGirls">> + <<link [[Locker|School Girl Wardrobe]]>><</link>> <<else>><!-- $player.gender_appearance is "f" --> <br><br> <<if $exposed gte 2>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<elseif $exposed is 1>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<else>> <<link [[Leave|School Pool Entrance]]>><</link>> - <br> <</if>> - <<school_pool_swap>> - <<schoolpoolclothes "schoolGirls">> - <<link [[Locker|School Girl Wardrobe]]>><</link>> <br> - <<girl_lockers>> <<if $swimall isnot 1>> <<if $exposed gte 2 and $exhibitionism gte 75>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>><<gdelinquency>> - <br><br> <<elseif $exposed gte 2>> <span class="pink">You can't enter the pool while so exposed!</span> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <</if>> <<else>> <<if $exposed gte 2>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>><<gdelinquency>> - <br><br> <</if>> <</if>> + <br> + <<school_pool_swap>> + <<girl_lockers>> + <<schoolpoolclothes "schoolGirls">> + <<link [[Locker|School Girl Wardrobe]]>><</link>> <</if>> <<elseif $poolroomstate is "other">><!-- $changingroomstate is "empty" --> It's currently empty, though you can hear activity in the pool proper. @@ -594,75 +541,65 @@ You are in the girls' changing room. <br><br> <<if $exposed gte 2>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<elseif $exposed is 1>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<else>> <<link [[Leave|School Pool Entrance]]>><</link>> - <br> <</if>> - <<school_pool_swap>> - <<schoolpoolclothes "schoolGirls">> - <<link [[Locker|School Girl Wardrobe]]>><</link>> <br> - <<girl_lockers>> <<if $exposed gte 2 and $exhibitionism gte 75>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>><<if $swimall isnot 1>><<gdelinquency>><</if>> - <br><br> <<elseif $exposed gte 2>> <span class="pink">You can't enter the pool while so exposed!</span> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <</if>> + <br> + <<school_pool_swap>> + <<girl_lockers>> + <<schoolpoolclothes "schoolGirls">> + <<link [[Locker|School Girl Wardrobe]]>><</link>> <<else>><!-- $player.gender_appearance is "f" --> <br><br> <<if $exposed gte 2>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<elseif $exposed is 1>> <<link [[Leave|School Pool Entrance Exhibitionism]]>><</link>> - <br> <<else>> <<link [[Leave|School Pool Entrance]]>><</link>> - <br> <</if>> - <<school_pool_swap>> - <<schoolpoolclothes "schoolGirls">> - <<link [[Locker|School Girl Wardrobe]]>><</link>> <br> - <<girl_lockers>> <<if $exposed gte 2 and $exhibitionism gte 75>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>><<if $swimall isnot 1>><<gdelinquency>><</if>> - <br><br> <<elseif $exposed gte 2>> <span class="pink">You can't enter the pool while so exposed!</span> - <br><br> <<else>> <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <</if>> + <br> + <<school_pool_swap>> + <<girl_lockers>> + <<schoolpoolclothes "schoolGirls">> + <<link [[Locker|School Girl Wardrobe]]>><</link>> <</if>> <<else>><!-- $poolroomstate is "empty" and $changingroomstate is "empty" --> <<if $player.gender is "m">> It's empty. Even so, being here makes you feel naughty. <br><br> - <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <<link [[Leave|School Pool Entrance]]>><</link>> <br> + <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> + <br> <<schoolpoolclothes "schoolGirls">> <<link [[Locker|School Girl Wardrobe]]>><</link>> <br> <<else>> It's empty. <br><br> - <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> - <br><br> <<link [[Leave|School Pool Entrance]]>><</link>> <br> + <<swimmingicon>><<link [[Enter the pool room|School Pool]]>><</link>> + <br> <<schoolpoolclothes "schoolGirls">> <<link [[Locker|School Girl Wardrobe]]>><</link>> <br> @@ -1499,4 +1436,4 @@ Mason can't bring <<himself>> to meet your gaze. "You're terrible," <<he>> says. <br><br> <<endevent>> -<<destination_pool>> \ No newline at end of file +<<destination_pool>> diff --git a/game/overworld-town/loc-school/classes/maths-events.twee b/game/overworld-town/loc-school/classes/maths-events.twee index 6d547c33926d109d0279814da3f2a726992fbbbf..ac982b4f8a28b1d20c33770190d2fab1e6bb753c 100644 --- a/game/overworld-town/loc-school/classes/maths-events.twee +++ b/game/overworld-town/loc-school/classes/maths-events.twee @@ -915,7 +915,7 @@ You unfurl the paper, and see a brief, scrawled message. <<effects>> <<if $worn.under_lower.type.includes("naked")>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You lift your skirt at the thigh, high enough to show your waistline, confirming that you're not wearing underwear beneath. You cover yourself quickly.<<exhibitionism1>> "Nice," Whitney says, prompting River to turn and glare. @@ -929,7 +929,7 @@ You unfurl the paper, and see a brief, scrawled message. <<unset $whitneypantiesmaths>> <</if>> <<elseif $whitneypantiescheck is 1>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You lift your skirt at the thigh, high enough to show your waistline, showing your $worn.under_lower.name beneath. You cover yourself quickly.<<exhibitionism1>> Whitney glares at you, but doesn't say anything. This won't be the end of it. @@ -945,7 +945,7 @@ You unfurl the paper, and see a brief, scrawled message. <<set $whitneypantiesmaths to "seen">> <</if>> <<else>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You lift your skirt at the thigh, high enough to show your $worn.under_lower.name. You cover yourself quickly.<<exhibitionism1>> "Nice," Whitney says, prompting River to turn and glare. @@ -967,7 +967,7 @@ You unfurl the paper, and see a brief, scrawled message. :: Maths Whitney Undies Trick <<effects>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You lift your skirt to your waistline, and try to hoist up your $worn.under_lower.name, hoping to give the impression that you're wearing nothing beneath. <<else>> You pull your $worn.lower.name and $worn.under_lower.name down a little, hoping to give the impression that you're wearing nothing beneath. diff --git a/game/overworld-town/loc-school/detention.twee b/game/overworld-town/loc-school/detention.twee index 0d84f9b28222d83f18ffaaaf67fff9fffce6b8d8..7f3004c0a2bd6f68f9a7ca7e9f60ed068468b54b 100644 --- a/game/overworld-town/loc-school/detention.twee +++ b/game/overworld-town/loc-school/detention.twee @@ -100,7 +100,7 @@ <</if>> <<link [[Do nothing|School Detention Paddle Watch]]>><<stress 6>><<trauma 6>><<arousal 300>><</link>><<gstress>><<gtrauma>><<garousal>> <br> - <<link [[Intervene|School Detention Paddle Intervene]]>><</link>><<status 5>><<set $delinquency += 50>><<gcool>><<gdelinquency>> + <<link [[Intervene|School Detention Paddle Intervene]]>><<status 5>><<set $delinquency += 50>><</link>><<gcool>><<gdelinquency>> <br> <</if>> <<elseif $detention lte 40>> @@ -864,7 +864,7 @@ The <<person>> gives you a commiserating look, but <<he>> seems grateful that yo <<if $corruptionMasturbation isnot true and random(0,3) gt $orgasmcurrent and $corruption_slime gt ($willpower / 10)>> <<link [[Stop|$passage]]>><<set $corruptionMasturbation to true>><</link>> <<elseif $corruptionMasturbation isnot true>> - <<link [[Stop|School Detention Paddle Masturbate]]>><<set $finish to 1>><</link>> + <<link [[Stop|School Detention Paddle Masturbate Finish]]>><<set $finish to 1>><</link>> <<else>> The slime in your ear will not allow you to stop. <</if>> diff --git a/game/overworld-town/loc-school/fame.twee b/game/overworld-town/loc-school/fame.twee index 9cf6c4143191b4aefc37c928e6b95a4e0f2bb5be..e7226abcb6944475ecb0f1a89a4d03b6d781a12d 100644 --- a/game/overworld-town/loc-school/fame.twee +++ b/game/overworld-town/loc-school/fame.twee @@ -59,7 +59,7 @@ Leighton starts tearing them down, but <<he>> puts them in <<his>> own pocket. < :: School Fame Blackmail <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> -You follow <<npc Leighton>><<person1>> into <<his>> office and stand in front of <<his>> desk while <<he>> takes <<his>> seat. <<He>> reclines and examines you. +You follow <<person1>> into <<his>> office and stand in front of <<his>> desk while <<he>> takes <<his>> seat. <<He>> reclines and examines you. <br><br> "I have something interesting," <<he>> says, an odd smile on <<his>> face. "Pictures. Of you. Doing such lewd things. Pictures that everyone in school could see." <<He>> leans forward and pulls a camera from a drawer. "Unless you cooperate. All I want is a little photoshoot. No one has to see a thing." @@ -224,7 +224,7 @@ After a while <<he>> puts down <<his>> camera. "Don't go anywhere just yet," <<h Leighton starts tearing them down, but <<he>> puts them in <<his>> own pocket. <<He>> doesn't acknowledge you. <<He>> removes the last of the pictures and leaves you stood alone in the corridor. <br><br> -<<link [[Next|Hallways]]>><<set $eventskip to 1>><</link>> +<<link [[Next|Hallways]]>><<endevent>><<set $eventskip to 1>><</link>> <br> :: School Fame Gangbang Finish diff --git a/game/overworld-town/loc-school/hallways.twee b/game/overworld-town/loc-school/hallways.twee index 66981f5106060c357dfac32871d4860598b43513..f0b183d9301dd7ade8d5bf3e4d8f51234c016f31 100644 --- a/game/overworld-town/loc-school/hallways.twee +++ b/game/overworld-town/loc-school/hallways.twee @@ -896,7 +896,7 @@ The <<person>> becomes more forceful. :: Hallways Catcall Flirt <<effects>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You lift the hem of your $worn.lower.name, just short of showing off your <<undies>>. <<if $submissive gte 1150>> "You think I'm cute?" you ask. @@ -1528,5 +1528,5 @@ You give the <<persons>> ass a swift spank as you pass, eliciting laughter from <br><br> <</if>> -<<link [[Next|Hallways]]>><</link>> +<<link [[Next|Hallways]]>><<endevent>><<set $eventskip to 1>><</link>> <br> diff --git a/game/overworld-town/loc-school/inspections.twee b/game/overworld-town/loc-school/inspections.twee index 221195dccb1fe9acfd5473ead544f516532a524c..bb7c750191feb2e0aa16bf3a631c86fac5da0d41 100644 --- a/game/overworld-town/loc-school/inspections.twee +++ b/game/overworld-town/loc-school/inspections.twee @@ -950,13 +950,13 @@ You grit your teeth in annoyance. Leighton forcing you to come up was bad enough Acting on impulse, <<if !$worn.under_lower.type.includes("naked")>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> you grab the hem of your skirt in one hand and your $worn.under_lower.name in the other, swiftly pulling both aside and flashing your <<pussy>>. <<else>> you hook your thumbs around the waist of your $worn.lower.name and $worn.under_lower.name, pulling them both down, low enough to you bare your <<pussy>>. <</if>> <<else>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> you grab the hem of your skirt and swiftly yank it up, flashing your <<pussy>>. <<else>> you hook your thumbs around the waist of your $worn.lower.name and pull them down, low enough to bare your <<pussy>>. @@ -1190,7 +1190,7 @@ aren't speaking much, and shift their legs uncomfortably. :: Pussy Inspection Flaunt No Pussy <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> <<fameexhibitionism 50 pic>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.under_lower.type.includes("naked")>> Wasting no time, you climb atop the desk and lift your skirt to your chin. You cock your head. "I'm not wearing panties," you say, trying to sound apologetic. @@ -1258,13 +1258,13 @@ The class erupts into whispering when they see your <<penis>>. "Not wearing any?" Leighton announces. You hear someone giggle. "I'll overlook it. Get on the desk." - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You climb atop the desk and lift your skirt just above your <<genitals>>. <<else>> You climb atop the desk and pull down your $worn.lower.name. <</if>> <<else>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You lift your skirt and pull down your $worn.under_lower.name, then hand them to Leighton.<<underlowerruined>> You climb atop the desk and lift your skirt just above your <<genitals>>. <<else>> You climb atop the desk and pull down your $worn.lower.name. Your $worn.under_lower.name come next. You slip them off your legs, and hand them to Leighton.<<underlowerruined>> @@ -1342,7 +1342,7 @@ You look away as Leighton takes a picture. <<fameexhibitionism 50 pic>> <<if $worn.under_lower.type.includes("naked")>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You grip the hem of your skirt and flash Leighton. "No panties," you say, sounding apologetic. <<else>> You tug down the hem of your $worn.lower.name and flash Leighton. "No panties," you say, sounding apologetic. @@ -1414,13 +1414,13 @@ Leighton pauses, then smiles as <<he>> takes a picture. <<fameexhibitionism 30 pic>> <<if $worn.under_lower.type.includes("naked")>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You climb atop the desk and lift your skirt just above your <<genitals>>. <<else>> You climb atop the desk and pull down your $worn.lower.name. <</if>> <<else>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You lift your skirt and pull down your $worn.under_lower.name down to your ankles. You climb atop the desk and lift your skirt just above your <<genitals>>. <<else>> You climb atop the desk and pull down your $worn.lower.name. Your $worn.under_lower.name come next. You slip them down to your ankles. @@ -1453,9 +1453,9 @@ You silently fume as you stare at the camera in Leighton's hand. You're not even <br><br> Overcome with emotion, you -<<if setup.clothes.lower[$worn.lower.index].skirt is 1 and !$worn.under_lower.type.includes("naked")>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and !$worn.under_lower.type.includes("naked")>> grasp the hem of your skirt in one hand, your $worn.under_lower.name in the other. You yank them aside in a blur, exposing your <<penis>>. -<<elseif setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> grasp the hem of your skirt with both hands, yanking it up and exposing your <<penis>>. <<elseif !$worn.under_lower.type.includes("naked")>> hook your fingers around the waistband of your $worn.lower.name and $worn.under_lower.name, tugging them both down in one daring motion. diff --git a/game/overworld-town/loc-school/library.twee b/game/overworld-town/loc-school/library.twee index 4cacd756526ea574fc6ec4ba7422edbecd107191..479936006f81d4f4732f72af016c196202f33272 100644 --- a/game/overworld-town/loc-school/library.twee +++ b/game/overworld-town/loc-school/library.twee @@ -26,6 +26,9 @@ A large desk sits near the back of the library, with a sign reading "Book Rental There are several shelves with typical academic literature. You see books on engineering, biology, social sciences and language learning. Everything that is useful in catching up. <br> Next to it is a small basket with returned and not yet sorted books. +<<if ($month is "november" and $monthday gte 24) or $month is "december">> + You notice a strange, olive-coloured book tucked amidst the rest. +<</if>> <<if $english lt 200>> You wonder if there may be something more interesting here if you were one of those bookworms. <</if>> @@ -182,30 +185,34 @@ Next to it is a small basket with returned and not yet sorted books. <br><br> <</if>> <<if $exposed gte 1>> - <<link [[Study science (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 1>><</link>><<gscience>> + <<scienceicon>><<link [[Study science (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 1>><</link>><<gscience>> <br> - <<link [[Study maths (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 2>><</link>><<gmaths>> + <<mathicon>><<link [[Study maths (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 2>><</link>><<gmaths>> <br> - <<link [[Study English (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 3>><</link>><<genglish>> + <<englishicon>><<link [[Study English (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 3>><</link>><<genglish>> <br> - <<link [[Study history (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 4>><</link>><<ghistory>> + <<historyicon>><<link [[Study history (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 4>><</link>><<ghistory>> <br> <<else>> - <<link [[Study science (0:20)|Library Study]]>><<pass 20>><<set $phase to 1>><</link>><<gscience>> + <<scienceicon>><<link [[Study science (0:20)|Library Study]]>><<pass 20>><<set $phase to 1>><</link>><<gscience>> <br> - <<link [[Study maths (0:20)|Library Study]]>><<pass 20>><<set $phase to 2>><</link>><<gmaths>> + <<mathicon>><<link [[Study maths (0:20)|Library Study]]>><<pass 20>><<set $phase to 2>><</link>><<gmaths>> <br> - <<link [[Study English (0:20)|Library Study]]>><<pass 20>><<set $phase to 3>><</link>><<genglish>> + <<englishicon>><<link [[Study English (0:20)|Library Study]]>><<pass 20>><<set $phase to 3>><</link>><<genglish>> <br> - <<link [[Study history (0:20)|Library Study]]>><<pass 20>><<set $phase to 4>><</link>><<ghistory>> + <<historyicon>><<link [[Study history (0:20)|Library Study]]>><<pass 20>><<set $phase to 4>><</link>><<ghistory>> <br> <</if>> /*indev - scarlet book possible to be taken. English 200+ required*/ <<if $english gte 300>> - <<link [[Take "Raul and Janet" from the basket (0:01)|ScarletBook1]]>><<pass 1>><<set $scarletExitPassage to "School Library">><</link>> + <<scarleticon>><<link [[Take "Raul and Janet" from the basket (0:01)|ScarletBook1]]>><<pass 1>><<set $scarletExitPassage to "School Library">><</link>> <br> <<elseif $english gte 200>> - <<link [[Take the medium-sized scarlet book from the basket (0:01)|ScarletBook1]]>><<pass 1>><</link>> + <<scarleticon>><<link [[Take the medium-sized scarlet book from the basket (0:01)|ScarletBook1]]>><<pass 1>><</link>> + <br> + <</if>> + <<if ($month is "november" and $monthday gte 24) or $month is "december">> + <<oliveicon>><<link [[Take the olive-coloured book from the basket (0:01)|Olive Book 1]]>><<set $oliveExitPassage to "School Library">><<pass 1>><</link>> <br> <</if>> <br> @@ -721,11 +728,19 @@ You <<switch $bookRent>> <<case "return">> return the<<if $book_rent_timer lt 0>><<set $recentReturnTimer to 14>> overdue<</if>> - <<if $phase is 5>> - copy of "Raul and Janet". - <<else>> - $studyBooks.rented textbook. - <</if>> + <<switch $phase>> + <<case 6>> + <<if $per_npc.pinch isnot undefined>> + copy of "How <<if $per_npc.pinch.pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch Groped Christmas" + <<clearNPC pinch>> + <<else>> + olive-coloured book. + <</if>> + <<case 5>> + copy of "Raul and Janet". + <<default>> + $studyBooks.rented textbook. + <</switch>> <<set $studyBooks.rented to "none">> <<if _sydney_location is "library">> <<if $book_rent_timer lt 0>> @@ -761,9 +776,19 @@ You <br> <</if>> <<case "rent">> - rent a - <<if $phase is 5>> - copy of "Raul and Janet". + rent + <<if $phase is 6>> + the strange, olive-coloured book. + <<switch _sydneyStatus>> + <<case "corrupt" "corruptLust">> + Sydney snickers. "I thought this book was for kids. Dunno what it's doing here. But hey, knock yourself out." + <<default>> + Sydney smiles. "Oh, I love this old book! <<nnpc_Brother "Jordan">> Jordan used to read it to me every year around Christmastime." + <</switch>> + <br><br> + <<He>> slides the book towards you, but stops, staring down at the cover with a frown. "That's weird..." <<He>> starts to thumb through the pages, before shaking <<his>> head and handing it to you. "Enjoy." + <<elseif $phase is 5>> + a copy of "Raul and Janet". <<switch _sydneyStatus>> <<case "pure">> <<if $sydneyromance is 1>> @@ -781,7 +806,7 @@ You Sydney looks down at the book and frowns. "A story full of love and sin." <<if $temple_rank>><<He>> leans in and whispers. "Jordan's actually a big fan of this book, but don't tell <<nnpc_him "Jordan">> I told you! <<nnpc_He "Jordan">> says it's a good cautionary tale of the consequences of lust."<</if>> <<He>> hands the book back to you. "Enjoy." <</switch>> <<else>> - $studyBooks.rented textbook. + a $studyBooks.rented textbook. <<if $sydneyromance is 1>> Sydney smiles at you. "Look at you, putting the extra work in! I'm proud of you." <<else>> @@ -795,6 +820,8 @@ You renew your rented <<if $studyBooks.rented is "Raul and Janet">> copy of "Raul and Janet". + <<elseif $studyBooks.rented is "Pinch">> + olive-coloured book. <<else>> $studyBooks.rented textbook. <</if>> @@ -803,11 +830,13 @@ You <br><br> <<sydneyOptions>> <<case "steal">> - steal a - <<if $phase is 5>> - copy of "Raul and Janet". + steal + <<if $phase is 6>> + an olive-coloured book. + <<elseif $phase is 5>> + a copy of "Raul and Janet". <<else>> - $studyBooks.stolen textbook. + a $studyBooks.stolen textbook. <</if>> <<set $bookStolen to 1>> <br><br> @@ -824,7 +853,14 @@ You <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> <<sydneySchedule>><<NPCStatusCheck "Sydney">> You return the stolen -<<if $phase is 5>> +<<if $phase is 6>> + <<if $per_npc.pinch isnot undefined>> + copy of "How <<if $per_npc.pinch.pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch Groped Christmas" + <<clearNPC pinch>> + <<else>> + olive-coloured book. + <</if>> +<<elseif $phase is 5>> copy of "Raul and Janet". <<else>> $studyBooks.stolen textbook. diff --git a/game/overworld-town/loc-school/main.twee b/game/overworld-town/loc-school/main.twee index a0d674ef5a50a070ddde9bb692810c498f615b97..c3515f67fca21855ce2680cab7af3f3bf7841bc3 100644 --- a/game/overworld-town/loc-school/main.twee +++ b/game/overworld-town/loc-school/main.twee @@ -1258,7 +1258,7 @@ You turn away from the pervert and shut your eyes. "You're no fun," <<he>> says. :: School Stump Flash <<set $outside to 1>><<set $location to "school">><<schooleffects>><<effects>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You lift your $worn.lower.name, exposing your <<undies>>. <<He>> whistles at you and leans into the fence for a closer look. <<else>> You pull down your $worn.lower.name, exposing your <<undies>>. <<He>> whistles at you and leans into the fence for a closer look. @@ -1279,7 +1279,7 @@ You wink at <<him>> and cover up before anyone else can see. <<He>> leaves with :: School Stump Genital Flash <<set $outside to 1>><<set $location to "school">><<schooleffects>><<effects>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You lift your $worn.lower.name, exposing your <<undies>>. <<He>> whistles at you and leans into the fence for a closer look. <<else>> You pull down your $worn.lower.name, exposing your <<undies>>. <<He>> whistles at you and leans into the fence for a closer look. @@ -1838,7 +1838,7 @@ The <<person2>><<person>> tries to grab you again, but you bat <<his>> arm away. <br><br> At last satisfied, the three swagger away. <<else>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.under_lower.type.includes("naked")>> The <<person1>><<person>> crouches beside you, grasps the hem of your skirt, and lifts it. <span class="pink">Your <<genitals 1>> are revealed.</span> <<else>> @@ -1927,7 +1927,7 @@ The bullies share a worried glance, but do as they're told. <<effects>> <<fameexhibitionism 3>> Blushing with shame, -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.under_lower.type.includes("naked")>> you lift your skirt, <span class="pink">revealing your <<genitals 1>></span>. <<else>> @@ -1973,7 +1973,7 @@ You cover yourself and leave before they get any ideas. They don't stop you. <<effects>> <<fameexhibitionism 3>> <<flaunting>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.under_lower.type.includes("naked")>> you lift your skirt, <span class="pink">revealing your <<genitals 1>></span>. <<else>> diff --git a/game/overworld-town/loc-school/maths-project.twee b/game/overworld-town/loc-school/maths-project.twee index 49cbbfc4d2353019a416d8027ae90e7261413168..c5460e130ddbf8953f294915a089e2b06c1ebf28 100644 --- a/game/overworld-town/loc-school/maths-project.twee +++ b/game/overworld-town/loc-school/maths-project.twee @@ -1378,7 +1378,7 @@ You remain silent as Bailey drives you into town, and back to the orphanage. :: Maths Library Student Seduce <<effects>> -You saunter up to the <<person>>, and lean over <<his>> desk. <<if $worn.upper.type.includes("naked")>><<His>> eyes are drawn to your bare chest<<else>><<He>> gets a good look down your deliberately dishevelled $worn.upper.name<</if>>. You <<if setup.clothes.lower[$worn.lower.index].skirt>>lift up the side of<<else>>pull down<</if>> your $worn.lower.name just far enough to <<if $worn.under_lower.type.includes("naked")>>hint at your lack of underwear<<else>>reveal a glimpse of your $worn.under_lower.name<</if>>. +You saunter up to the <<person>>, and lean over <<his>> desk. <<if $worn.upper.type.includes("naked")>><<His>> eyes are drawn to your bare chest<<else>><<He>> gets a good look down your deliberately dishevelled $worn.upper.name<</if>>. You <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt>>lift up the side of<<else>>pull down<</if>> your $worn.lower.name just far enough to <<if $worn.under_lower.type.includes("naked")>>hint at your lack of underwear<<else>>reveal a glimpse of your $worn.under_lower.name<</if>>. <<exhibitionism1>> <<if $submissive gte 1150>> @@ -1685,7 +1685,7 @@ You pick up the paper and return to the microphone. <br><br> <<endevent>> <<if $mathsprojectwhitney is 1 and $worn.lower.name isnot "naked">> - <<if $worn.lower.set is $worn.upper.set and setup.clothes.lower[$worn.lower.index].skirt isnot 1>> + <<if $worn.lower.set is $worn.upper.set and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt isnot 1>> You pass the judges on the way down from the stage. You take your seat and wait for their decision. <br><br> <<link [[Next|Maths Competition End]]>><</link>> @@ -1704,7 +1704,7 @@ You pick up the paper and return to the microphone. :: Maths Competition Exposure <<set $outside to 0>><<set $location to "town">><<effects>> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You feel a tug on your $worn.lower.name. You look down just in time to see it flare up, pulled by some invisible force. You push down the front of the hem fast enough to prevent your <<undies>> being revealed, but you feel cool air on your <<bottom>>. <br><br> You hear giggles and murmuring from the audience. <<npc River>><<person1>>River puts <<his>> hands over <<his>> eyes. One of the suited guests raises a hand to their mouth. The other looks away, blushing. Leighton is smiling. @@ -1980,6 +1980,7 @@ Heart still thumping, you step down from the stage. You take your seat and wait :: Maths Competition End <<set $outside to 0>><<set $location to "town">><<effects>> +<<run delete $river_help>> <<endevent>> <<npc Leighton>><<person1>> Leighton, River and the two guests confer on stage for a moment. diff --git a/game/overworld-town/loc-school/special-olive.twee b/game/overworld-town/loc-school/special-olive.twee new file mode 100644 index 0000000000000000000000000000000000000000..55096d71d96978ffb7885fdb7b36171c9d2179ce --- /dev/null +++ b/game/overworld-town/loc-school/special-olive.twee @@ -0,0 +1,1328 @@ +:: Olive Book 1 +<<if $per_npc.pinch>> + <<loadNPC 0 pinch>> + <<person1>> +<<else>> + <<generate1>><<person1>> + <<if $NPCList[0].gender is "m">> + <<set $NPCList[0].penisdesc to "tiny penis">> + <<set $NPCList[0].penissize to 1>> + <</if>> + <<set $NPCList[0].fullDescription to ($NPCList[0].pronoun is "m" ? "Mr." : "Ms.") + " Pinch">> + <<saveNPC 0 pinch>> +<</if>> + +<<if $oliveExitPassage is "School Library">> + You take the olive book from the basket. The title, written in stylised white letters, reads "How <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch Groped Christmas". +<<else>> + You settle in bed with the olive book. The title, written in stylised white letters, reads "How <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch Groped Christmas". +<</if>> +<br><br> + +<<if $englishtrait gte 3>> + You know the book very well. It's a classic Christmas tale, with more than half a century's worth of history. It teaches the general populace of the values of the festivity. You can't help but notice that this version seems different compared to other versions you've heard of. + <br><br> + <<link [[Read (0:20)|Olive Book 2]]>><<pass 20>><<stress -6>><<englishskill>><</link>><<genglish>><<lstress>> + <br> +<<elseif $englishtrait gte 2>> + You know the book well. And who wouldn't? It's a classic Christmas story. You can't help but notice that this version seems different compared to other versions you've heard of. + <br><br> + <<link [[Read (0:20)|Olive Book 2]]>><<pass 20>><<stress -6>><<englishskill>><</link>><<genglish>><<lstress>> + <br> +<<elseif $englishtrait gte 1>> + You know the book. It's a classic Christmas story. + <br><br> + <<link [[Read (0:20)|Olive Book 2]]>><<pass 20>><<englishskill>><</link>><<genglish>> + <br> +<<elseif $englishtrait gte 0>> + The title sounds familiar to you, but you can't quite place it. + <br><br> + <<link [[Read (0:20)|Olive Book 2]]>><<pass 20>><<englishskill>><</link>><<genglish>> + <br> +<<else>> + You open the book on a random page. It looks like the same dumb Christmas story you hear every year. Uninterested, you set it back down. + <br><br> +<</if>> +<<link [[Put the book away|$oliveExitPassage]]>><<unset $oliveExitPassage>><<pinchEnd>><</link>> + +/*indev scarlet book event. English: 300-399*/ +:: Olive Book 2 + +You're reading "How <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch Groped Christmas". +<br><br> + +The book tells the story of "<<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch", a vile and bitter young <<personsimple>>. Peevish as <<he>> is pervish, <<he>> lives in seclusion in a cold and lonely fortress, isolated from the rest of the world. +<br><br> + +Just south of the castle is a bustling town, with many upbeat residents showing cheer and excitement for the Christmas festivities. +<br><br> + +Fed up with it all, <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch's plan is to "defile" their Christmas spirit. <<His>> wicked ways know no bounds, and no limits. +<br><br> + +<<if $englishtrait gte 1>> + Despite the notable differences, this still remains a Christmas classic. Regardless of what version or copy you read, reading this old tale makes you feel warm inside. + <br><br> + <<link [[Continue reading (0:20)|Olive Book 3]]>><<pass 20>><<englishskill>><</link>><<genglish>> + <br> +<<else>> + Nothing interesting. Just the same dumb Christmas story you hear every year. + <br><br> +<</if>> +<<link [[Put the book away|$oliveExitPassage]]>><<unset $oliveExitPassage>><<pinchEnd>><</link>> + +:: Olive Book 3 + +You're reading "How <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch Groped Christmas". +<br><br> + +Fed up with it all, <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch's plan is to "defile" their Christmas spirit. <<His>> wicked ways know no bounds, and no limits. +<br><br> + +<<He>> dons a Santa Claus outfit and heads down the tower, carrying a large linen sack. Upon reaching the town, <<he>> infiltrates the first home via the chimney and proceeds to rob the poor family blind of all their presents. +<br><br> + +A <<if $player.gender_appearance is "f">>lovely lass<<else>>handsome lad<</if>> by the name of Lew awakens to the thievery, but <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch deceives <<phim>>. But <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch does not leave it there... +<br><br> + +<<if $englishtrait gte 2>> + <<if $christmas_book_read gte 1>> + You shiver with anticipation, knowing what's to come. + <<else>> + You don't remember this part of the book. Part of you wants to stop, but a perverse curiosity eggs you on. + <</if>> + <br><br> + <<link [[Continue reading (0:20)|Olive Book 4]]>><<pass 20>><<stress -6>><<englishskill>><<arousal 1200>><</link>><<genglish>><<lstress>><<ggarousal>> + <br> +<<else>> + The story is interesting. You think to return to it later. + <br><br> +<</if>> +<<link [[Put the book away|$oliveExitPassage]]>><<unset $oliveExitPassage>><<pinchEnd>><</link>> +<br> + +:: Olive Book 4 + +You're reading "How <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch Groped Christmas". +<br><br> + +Away <<he>> goes to other homes, and repeats <<his>> deeds there. Once satisfied, <<his>> sordid needs take precedence. <<He>> returns to the first home <<he>> ransacked, Lew fast asleep in <<pher>> bedroom, and the rest is left unspoken. +<br><br> + +A wicked, nasty deed, followed up by one even nastier. <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch's heart is a dumpheap, overflowing with all sorts of rubbish imaginable. +<br><br> + +<<He>> returns to the tower after a hefty climb, satisfied with <<himself>>. As the sun rises, <<he>> expects tears, and jeers, but is shocked when <<he>> instead receives... singing. And not just any singing, but one of which <<he>> will never forget. +<br><br> + +Realising <<his>> grave mistake, <<he>> rushes to town in a much more cheerful tune to return the stolen gifts. They have something else in mind for dear <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch, however. +<br><br> + +It is there <<he>> learns the most valuable lesson of Christmas. And it is there where it is said that a certain part of <<him>> grew over three sizes that day. +<br><br> + +With each telling of the story, it takes different meanings. A once innocent tale has taken a turn for the worse, now more than ever in this darker version. This book seems to have taught you to believe what the true message is behind the old, happy tale - purity and innocence, defiled by debauchery and depravity. You feel a mix of jealousy, lust and anger. And some part of you likes the feelings. +<br><br> + +<<link [[Read the whole book (0:20)|Olive Book Full]]>><<pass 20>><<stress -6>><<englishskill>><</link>><<if !$christmas_book_read>> | <span class="blue">? ? ?</span><<else>><<genglish>><<lstress>><<garousal>><</if>> +<br> +<<if $bus is "schoollibrary">> + <<if $schoolday is 1>> + <<if $schoolstate is "lunch" and $exhibitionism gte 75>> + <<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist5>> + <br> + <<elseif $schoolstate is "early" and $exhibitionism gte 35>> + <<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist3>> + <br> + <<elseif $schoolstate is "late" and $exhibitionism gte 35>> + <<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist3>> + <br> + <<elseif $exhibitionism gte 55>> + <<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist4>> + <br> + <</if>> + <<elseif $exhibitionism gte 15>> + <<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist2>> + <br> + <</if>> +<</if>> +<<if $christmas_book_read gte 2 and $arousal gte ($arousalmax / 5) * 2>> + <<link [[Imagine yourself as Lew|Olive Book Lew]]>><<pass 30>><<arousal 600>><<set $phase to 2>><</link>><<garousal>> + <br> +<</if>> +<<if $christmas_book_read gte 3 and $arousal gte ($arousalmax / 5) * 2>> + <<link [[Imagine yourself as Pinch|Olive Book Pinch]]>><<pass 30>><<arousal 600>><<set $phase to 2>><</link>><<garousal>> + <br> +<</if>> +<<link [[Put the book away|$oliveExitPassage]]>><<unset $oliveExitPassage>><<pinchEnd>><</link>> +<br> + +:: Olive Book Full +<<set $outside to 0>><<set $location to "tower">><<effects>> +<<pinchStart>> + +Among folks down at the forestside town, +<br> +<span class="black">One common feeling was shared all around.</span> +<br><br> + +They all liked Christmas. +<br> +<span class="black">They liked it a lot!</span> +<br> +Except <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch. +<br> +<span class="black"><<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch... did not.</span> +<br><br> + +<<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch hated Christmas! <<He>> bashed the whole season! +<br> +<span class="black">Now, please don't ask why. No one quite knows the reason.</span> +<br><br> + +<<if $NPCList[0].penis isnot "none">> + It could be, perhaps, that <<his>> shoes were too tight. + <br> + <span class="black">It could be <<his>> head wasn't screwed on just right.</span> + <br> + But I think that the most likely reason of all, + <br> + <span class="black">May have been <<his>> cock was two sizes too small.</span> +<<else>> + It could be the townsfolk had given <<him>> fright. + <br> + <span class="black">It could be <<his>> get-up had itched just a smite.</span> + <br> + But I think the answer that sounds the most right + <br> + <span class="black">Would be that <<his>> quim was two sizes too tight.</span> +<</if>> +<br><br> + +But whatever the reason, <<his>> <<if $NPCList[0].penis isnot "none">>schlong or <<his>> shoes<<else>>cunt or <<his>> clothes<</if>>, +<br> +<span class="black"><<He>> looked down with a frown at the bright little town</span> +<br> +<<if $NPCList[0].penis isnot "none">> + And soaked in <<his>> hatred, and simmered and stewed +<<else>> + And the bright little people <<he>> thoroughly loathed +<</if>> +<br> +<span class="black">From <<his>> great gloomy spire, <<he>> grumbled and groused.</span> +<br><br> + +<<link [[Keep reading|Olive Book Full 2]]>><</link>> +<br> + +:: Olive Book Full 2 +<<set $outside to 0>><<set $location to "tower">><<effects>> + +"They'll have their gifts, their songs, their feasts, +<br> +<span class="black">their stupid, sappy cheer.</span> +<br> +I just can't stand it in the least, +<br> +<span class="black">And it gets worse every year!"</span> +<br><br> + +"I'd stifle their spirit," <<he>> grumbled aloud, +<br> +<span class="black">"I'd stomp on their cheer if I only knew how!"</span> +<br><br> + +Then <<he>> stopped... +<br> +<span class="black">And <<he>> paused...</span> +<br> +And <<he>> grinned ear-to-ear. +<br> +<span class="black">In <<his>> dirty mind popped a nasty idea!</span> +<br><br> + +Using needles and fleece (and some knickers <<he>>'d nicked) +<br> +<span class="black"><<He>> cobbled together a quick Santa hat.</span> +<br> +With a red suit to boot, <<he>> looked just like Saint Nick! +<br> +<span class="black"><<He>> topped off the look with a big empty sack.</span> +<br><br> + +"I'll steal all their presents! They won't know what hit 'em!" +<br> +<span class="black"><<He>> said as <<he>> hopped in <<his>> ramshackle sleigh,</span> +<br> +"They'll rubbish their Christmas as soon as I lift 'em!" +<br> +<span class="black">Then <<he>> plunged to the town without a delay.</span> +<br><br> + +<<link [[Keep reading|Olive Book Full 3]]>><</link>> +<br> + +:: Olive Book Full 3 +<<set $outside to 0>><<set $location to "riding_school">><<effects>> + +<<set $time to 1320>> + +The windows were dark, no one knew <<he>> was coming, +<br> +<span class="black">They were all fast asleep - and ripe for the plucking!</span> +<br><br> + +<<He>> climbed up the roof, empty bag in <<his>> hand, +<br> +<span class="black">When <<he>> came to house on the edge of the land.</span> +<br><br> + +"Stop number one," <<he>> said with a hiss +<br> +<span class="black">As <<he>> slid down the chimney, 'twasn't a cinch.</span> +<br> +If Mr. Claus could, so could <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch! +<br><br> + +<<link [[Keep reading|Olive Book Full 4]]>><</link>> +<br> + +:: Olive Book Full 4 +<<set $outside to 0>><<set $location to "alex_cottage">><<effects>> + +<<His>> filthy face popped out the fireplace +<br> +<span class="black">Where the stockings were hung in a row.</span> +<br> +<<He>> sneered as he pinched them, one at a time, +<br> +<span class="black">"These ought to be the first to go!"</span> +<br><br> + +In a deed that would leave the devil aghast, +<br> +<span class="black"><<He>> pinched every present, down to the last.</span> +<br> +Card games and consoles and new mobile phones, +<br> +<span class="black">Board games and toys, even clothes that were sewn!</span> +<br><br> + +Each of them greedily stuffed in the bag +<br> +<span class="black">Slung over <<his>> shoulder, proud of <<his>> snag!</span> +<br><br> + +<<link [[Keep reading|Olive Book Full 5]]>><</link>> +<br> + +:: Olive Book Full 5 +<<set $outside to 0>><<set $location to "alex_cottage">><<effects>> + +<<set $time to 1330>> + +As <<he>> pinched the last gift, <<he>> heard a loud gasp. +<br> +<span class="black">Caught in the act, <<he>> twirled 'round in a flash.</span> +<br> +A <<girl>>, a <<lass>> by the name of Lew, +<br> +<span class="black">Hurried downstairs and came into view.</span> +<br><br> + +"Why are you taking our presents?" <<pshe>> asked. +<br> +<span class="black">"Please, tell me, <<if $pronoun is "m">>Santa<<else>>Mrs.<</if>> Claus!"</span> +<br> +So dastardly clever, <<he>> spun <<pher>> a ruse +<br> +<span class="black">With just the slightest pause.</span> +<br><br> + +"There's faulty craftsmanship on these, +<br> +<span class="black">So I'm taking them back to my shop.</span> +<br> +A simple repair, with my expertise, +<br> +<span class="black">And I'll bring them back, quick as a swap!"</span> +<br><br> + +<<link [[Keep reading|Olive Book Full 6]]>><</link>> +<br> + +:: Olive Book Full 6 +<<set $outside to 0>><<set $location to "alex_cottage">><<effects>> + +<<His>> fib fooled the <<lass>>, reluctant as <<pshe>> was, +<br> +<span class="black"><<pShe>> returned to bed shortly afterward.</span> +<br> +<<pHer>> naive belief in the so-called "right cause" +<br> +<span class="black">Left the jolly impostor utterly floored.</span> +<br><br> + +<<He>> crumpled to the chimney, sack in <<his>> hand, +<br> +<span class="black">Stuffing it all the way up.</span> +<br> +<<He>> sidled <<his>> way up the length of the shaft +<br> +<span class="black">Giddier than a young pup.</span> +<br><br> + +Then <<he>> did the same to the other houses, +<br> +<span class="black">Thoroughly thieving, not leaving a trace.</span> +<br> +Not even a slight crumb left for the mouses, +<br> +<span class="black">All the town's merriment, turned to disgrace!</span> +<br><br> + +<<link [[Keep reading|Olive Book Full 7]]>><</link>> +<br> + +:: Olive Book Full 7 +<<set $outside to 0>><<set $location to "alex_cottage">><<effects>> + +<<set $time to 1420>> + +A quarter to midnight, the town soundly dreaming, +<br> +<span class="black">In old Pinch's head was a sinister scheming.</span> +<br> +<<His>> sack big and bulging, <<his>> work nearly done, +<br> +<span class="black"><<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch stopped and smirked. "Why not have some fun?"</span> +<br><br> + +One last heinous act before <<he>> was through, +<br> +<span class="black"><<He>> oozed <<his>> way back to the home of poor Lew.</span> +<br> +<<He>> snuck up the stairs where the <<girl>> soundly slept, +<br> +<span class="black">Closer and closer <<his>> pernicious paws crept.</span> +<br><br> + +<i>You turn the page, but a thought intrudes. +<br> +What if instead of ill-fated Lew, +<br> +What if, perchance, the victim were you?</i> +<br><br> + +<<link [[Imagine yourself in helpless Lew's stead|Olive Book Lew]]>><<set $phase to 1>><</link>> +<br> +<<link [[Ignore the feeling, just read on ahead|Olive Book Lew]]>><<set $phase to 0>><</link>> +<br> + +:: Olive Book Lew +<<set $outside to 0>><<set $location to "alex_cottage">><<effects>> + +<<if $phase is 2>> + <<pinchStart>> + <<set $time to 1420>> +<</if>> + +<<set $pinchArousal += 1000>> + +<<if $phase gte 1>> + <<becomePinch "Lew">> + As Pinch licked <<his>> lips and wiggled <<his>> fingers, + <br> + <span class="black">Over the bedroom, an evil air lingered.</span> + <br><br> + + <<if $player.gender_appearance is "f">> + For the last gift of Christmas to be taken + <br> + <span class="black">Is the gift of taking an untaken maiden.</span> + <<else>> + For there's but one gift to bring a sicko joy + <br> + <span class="black">And that is the gift of an unsullied boy.</span> + <</if>> + <br> + A precious gift, the purest - virginity + <br> + <span class="black">Clean and pristine, all share an affinity.</span> + <br><br> + + A familiar shape loomed over Lew + <br> + <span class="black">And pinched off the covers, <<his>> vices ensue.</span> + <br> + "So cosy and safe," a creaking voice said. + <br> + <span class="black">"I can't help myself. I must have you in bed!"</span> + <br><br> + + <<link [[Next|Olive Book Lew Molestation]]>><<set $molestationstart to 1>><</link>> + <br> + + <<if $christmas_book_read lte 1>> + <<set $christmas_book_read to 2>> + <</if>> +<<else>> + <i>You shake your head to clear out your thoughts + <br> + And look to the book for where you left off.</i> + <br><br> + + And then came a deed so deeply obscene, + <br> + <span class="black">We need not précis, it would leave you unclean.</span> + <br><br> + + <<if $player.gender_appearance is "f">> + For the last gift of Christmas to be taken + <br> + <span class="black">Is the gift of taking an untaken maiden.</span> + <<else>> + For there's but one gift to bring a sicko joy + <br> + <span class="black">And that is the gift of an unsullied boy.</span> + <</if>> + <br> + A precious gift, the purest - virginity + <br> + <span class="black">Clean and pristine, all share an affinity.</span> + <br><br> + + <<link [[Keep reading|Olive Book Full 8]]>><<set $phase to 0>><</link>> + <br> +<</if>> + +:: Olive Book Lew Molestation + +<<if $molestationstart is 1>> + <<set $molestationstart to 0>> + <<controlloss>> + <<violence 1>> + <<neutral 1>> + <<molested>> + <<maninit>> + <<set $pinchSpeech to 1>> + <<set $speechdisable to 1>> + <<hand_gag 0 left>> +<</if>> +<<effects>> +<<effectsman>><<man>> +<<if random(1, 4) is 1>> + <<He>> <<print either("cackles","whispers","rasps","sniggers","sneers")>>. + <<switch $pinchSpeech>> + <<case 1>> + "Do not fret. I am no threat." + <<case 2>> + "No partner is better than me. Wouldn't you agree?" + <<case 3>> + "I'm working up a sweat, but I'll have you wet." + <<case 4>> + "Needs you forget? I'm not done yet." + <</switch>> + <<if $pinchSpeech lte 3>> + <<set $pinchSpeech += 1>> + <<else>> + <<set $pinchSpeech to 1>> + <</if>> +<</if>> +<<stateman>> +<br><br> +<<actionsman>> + +<<if $enemyarousal gte $enemyarousalmax>> + <span id="next"><<link [[Next|Olive Book Lew Finish]]>><</link>></span><<nexttext>> +<<elseif $enemyhealth lte 0>> + <span id="next"><<link [[Next|Olive Book Lew Finish]]>><</link>></span><<nexttext>> +<<elseif $alarm is 1 and $rescue is 1>> + <span id="next"><<link [[Next|Olive Book Lew Finish]]>><</link>></span><<nexttext>> +<<else>> + <span id="next"><<link [[Next|Olive Book Lew Molestation]]>><</link>></span><<nexttext>> +<</if>> + +:: Olive Book Lew Finish +<<set $outside to 0>><<set $location to "alex_cottage">><<effects>> + +<<if $player.virginity.anal isnot true or $player.virginity.vaginal isnot true>> + <<set $pinchPenile to true>> +<</if>> +<<if $player.virginity.penile isnot true>> + <<if $penisstate is "penetrated">> + <<set $pinchVaginal to true>> + <<else>> + <<set $pinchAnal to true>> + <</if>> +<</if>> +<<if $player.virginity.kiss isnot true>> + <<set $pinchKiss to true>> +<</if>> +<<unset $pinchSpeech>> + +<<if $enemyarousal gte $enemyarousalmax>><<set $pinchArousal += 2000>> + <<ejaculation>> + + <<He>> smiled and gave Lew a pat on the cheek, + <br> + <span class="black">Then leapt off the bed and left <<phim>> to weep.</span> + <br> + <<He>> croaked to <<himself>> as <<he>> crept his way out, + <br> + <span class="black">"Enjoy my gift - it's what the season's about!"</span> +<<elseif $enemyhealth lte 0>> + <<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch stumbled backwards and let out a hiss, + <br> + <span class="black">Though all things considered, <<he>> wasn't too pissed.</span> + <br> + In spite of Lew bravely defeating the beast, + <br> + <<if $player.virginity.vaginal isnot true or $player.virginity.penile isnot true>> + <span class="black"><<pHer>> virginity wasn't spared in the least.</span> + <<else>> + <span class="black"><<pHer>> innocence hadn't been spared in the least.</span> + <</if>> + <br><br> + + "Whatever, you whore," Pinch snickered and sneered + <br> + <span class="black">As <<he>> clumsily rose from the floor.</span> + <br> + "Hope you like Christmas without any cheer!" + <br> + <span class="black">Then <<he>> scurried <<his>> way to the door.</span> +<</if>> +<br><br> + +<<silently>><<endcombat>><</silently>> + +<<link [[Keep reading|Olive Book Full 8]]>><<set $phase to 1>><</link>> +<br> + +:: Olive Book Full 8 +<<set $outside to 0>><<set $location to "tower">><<effects>> + +<<set $time to 40>> +<<if $weekday is 7>> + <<set $weekday to 1>> +<<else>> + <<set $weekday += 1>> +<</if>> +<<set $monthday to 25>> +<<set $weather to "snow">> + +<<if $phase is 1>> + <<unbecomePinch>> + <<loadNPC 0 pinch>><<person1>> +<</if>> + +<<His>> wicked itch scratched, <<he>> loaded the sleigh +<br> +<span class="black">With a pause to applaud <<his>> vulgar display.</span> +<br> +Then <<he>> zipped cross the plains, <<his>> passage back home, +<br> +<span class="black">And revelled the naughtiness up in <<his>> dome.</span> +<br><br> + +"Serves those chumps right!" <<he>> creepily cackled. +<br> +<span class="black">"Come Christmas morning, they'll surely be baffled!"</span> +<br> +Ten-thousand feet up, up the side of <<his>> tower, +<br> +<span class="black"><<He>> skittered up top, waiting hour by hour.</span> +<br><br> + +Soon daybreak broke out on the horizon +<br> +<span class="black">To which Pinch broke out in a horrible grin.</span> +<br><br> + +<<link [[Keep reading|Olive Book Full 9]]>><</link>> +<br> + +:: Olive Book Full 9 +<<set $outside to 0>><<set $location to "tower">><<effects>> +<<set $time to 300>> + +"Those merry morons, I know just what they'll do, +<br> +<span class="black">Their mouths will hang open, a minute or two,</span> +<br> +And then the townsfolk will all cry 'Boohoo!'" +<br><br> + +<span class="black">"Now there's a noise I can't wait to hear!"</span> +<br> +<<He>> sneered as <<he>> cupped <<his>> hand to <<his>> ear. +<br> +<span class="black"><<He>> soon heard a sound rising over the snow,</span> +<br> +It started out low, then it started to grow! +<br><br> + +<span class="black">But wait just a minute! This sound wasn't sad.</span> +<br> +As a matter of fact, this sound sounded... glad! +<br> +<span class="black">All of the townsfolk, from tallest to small,</span> +<br> +Were singing - without any presents at all! +<br><br> + +<<link [[Keep reading|Olive Book Full 10]]>><</link>> +<br> + +:: Olive Book Full 10 +<<set $outside to 0>><<set $location to "tower">><<effects>> + +<<His>> dastardly deeds hadn't slowed down its progress, +<br> +<span class="black">Despite <<his>> worst efforts, Christmas came regardless!</span> +<br> +Pinching <<his>> fingers, ice-cold in the snow, +<br> +<span class="black"><<He>> stood and <<he>> puzzled and gazed down below.</span> +<br><br> + +"This can't be! How? It came without presents! +<br> +<span class="black">You should be in tears, you annoying peasants!"</span> +<br><br> + +As <<he>> puzzled and puzzled the puzzle <<he>> saw, +<br> +<span class="black"><<He>> had a great thought that <<he>> hadn't before.</span> +<br><br> + +Maybe Christmas, <<he>> thought, doesn't come from a store. +<br> +<span class="gold">Maybe Christmas, perhaps, means a little bit more!</span> +<br><br> + +Now that <<his>> heart didn't feel quite so tight +<br> +<span class="black"><<He>> rode to the town in the bright morning light.</span> +<br><br> + +<i>A strange new sensation comes over you +<br> +As you turn the last page, but stop halfway through. +<br> +It seems like a happy ending's in store, +<br> +But the heat in your loins yearns for something... more.</i> +<br><br> + +<<link [["Imagine yourself in " + $NPCList[0].pronouns.his + " too-tight shoes"|Olive Book Pinch]]>><</link>> +<br> +<<link [[The book's nearly done, just read the rest through|Olive Book Full 11]]>><</link>> +<br> + +:: Olive Book Full 11 +<<set $outside to 0>><<set $location to "riding_school">><<effects>> +<<set $time to 360>> + +<<He>> was so fed up living the life of a crook +<br> +<span class="black">That <<he>> rode back to town to return what <<he>> took!</span> +<br> +Their card games and consoles and new mobile phones, +<br> +<span class="black">Their board games and toys and those clothes that were sewn!</span> +<br><br> + +<<He>> fell to <<his>> knees and confessed to <<his>> fault, +<br> +<span class="black"><<He>> nabbed all their things and put Christmas on halt!</span> +<br><br> + +What happened then, well the townsfolk they say, +<br> +<span class="black"><<if $pronoun is "m">>Mr<<else>>Ms<</if>>. Pinch felt the goodness of people that day.</span> +<br><br> + +There the true meaning of Christmas came through, +<br> +<span class="black">And this, <<he>>'ll attest, was very much true!</span> +<br><br> + +<<link [[Next|Olive Book End]]>><<set $phase to 0>><</link>> +<br> + +:: Olive Book Pinch +<<set $outside to 0>><<set $location to "riding_school">><<effects>> +<<if $phase is 2>> + <<pinchStart>> + <<set $monthday to 25>> +<</if>> + +<<set $time to 360>> +<<endevent>> +<<becomePinch "Pinch">> +<<generate1>><<generate2>><<generate3>><<generate4>> + +<<pinchHe>> was so fed up living the life of a crook +<br> +<span class="black">That <<pinchhe>> rode back to town to return what <<pinchhe>> took!</span> +<br> +Their card games and consoles and new mobile phones, +<br> +<span class="black">Their board games and toys and those clothes that were sewn!</span> +<br><br> + +<<pinchHe>> fell to <<pinchhis>> knees and admitted <<pinchhis>> fault, +<br> +<span class="black"><<pinchHe>> nabbed all their things and put Christmas on halt!</span> +<br><br> + +But from the townsfolk, <<pinchhe>> did not feel forgiveness. +<br> +<span class="black">The feelings <<pinchhe>> felt were a bit more vindictive!</span> +<br> +It turned out that he had been caught in the act +<br> +<span class="black">Of tainting their Christmas, and Lew, to be exact!</span> +<br><br> + +<<link [[Next|Olive Book Pinch 2]]>><</link>> +<br> + +:: Olive Book Pinch 2 +<<set $outside to 0>><<set $location to "riding_school">><<effects>> + +"<<pinchHe>> ruined our Christmas," +<br> +<span class="black">Said the folks of the town,</span> +<br> +"<<pinchHe>> ought to be punished, +<br> +<span class="black">But punish <<pinchhim>> how?"</span> +<br><br> + +The rack or the gallows, or maybe the stocks, +<br> +<span class="black">Or maybe just pelt <<pinchhim>> with sharp, pointy rocks?</span> +<br><br> + +Then they got an idea. An awful idea! +<br> +<span class="lewd">The folks had a dreadful, awful idea!</span> +<br><br> + +"I know what to do," +<br> +<span class="black">A townsperson joked.</span> +<br> +They reached for <<pinchhis>> throat +<br> +<span class="black">But <<pinchhis>> groin was groped!</span><<arousal 2000>> +<br><br> + +<<if $pinchPronoun is "m">> + His future looked grim, + <br> + <span class="black">His chances were slim.</span> + <br> + "Defile our Christmas? + <br> + <span class="black">NAY! Defile him!"</span> +<<else>> + She fearfully twitched, + <br> + <span class="black">She felt quite at risk.</span> + <br> + "Ruin our Christmas? + <br> + <span class="black">NAY! Ruin the bitch!"</span> +<</if>> +<br><br> + +<<link [[Next|Olive Book Pinch Gangbang]]>><<set $molestationstart to 1>><</link>> +<br> + +<<if $christmas_book_read lte 2>> + <<set $christmas_book_read to 3>> +<</if>> + +:: Olive Book Pinch Gangbang + +<<if $molestationstart is 1>> + <<set $molestationstart to 0>> + <<controlloss>> + <<violence 1>> + <<neutral 1>> + <<molested>> + <<maninit>> + <<set $speechdisable to 1>> + <<set $pinchSong to 3>> + <br> + + "Let's give <<pinchhim>> a gift, + <br> + <span class="black">Some real holiday cheer!"</span> + <br> + Brayed a lecherous <<person1>><<if $pronoun is "m">>lad<<else>>lass<</if>> + <br> + <span class="black">To the cheers of <<his>> peers.</span> + <br><br> +<</if>> +<<effects>> +<<effectsman>><<man>> +<<if $enemynomax gte 4>> + <<if $pinchSong gte 3>> + <<if $pinchSong is 3>> + They begin to sing. + <<else>> + They continue to sing. + <</if>> + <<set $pinchSong to 2>> + <br><br> + + "You're a rapist, <<if $pinchPronoun is "m">>Mr.<<else>>Missus<</if>> Pinch." + <br> + <span class="black">"You really are a tear."</span> + <br> + "Your sex skills are appalling, you're as intimate as a bear, <<if $pinchPronoun is "m">>Mr.<<else>>Missus<</if>> Pinch." + <br> + <span class="black">"You're a bad egg, greasy as a rotten pear!"</span> + <br><br> + <<elseif $pinchSong is 2>> + They continue to sing. + <<set $pinchSong to 1>> + <br><br> + + "You're a molester, <<if $pinchPronoun is "m">>Mr.<<else>>Missus<</if>> Pinch." + <br> + <span class="black">"You vye for empty holes."</span> + <br> + "Your brain is utterly, sexually droll, you've semen in your soul, <<if $pinchPronoun is "m">>Mr.<<else>>Missus<</if>> Pinch." + <br> + <span class="black">"I wouldn't fuck you with twenty-seven and a half meters of roll!"</span> + <br><br> + <<elseif $pinchSong is 1>> + They continue to sing. + <<set $pinchSong to 4>> + <br><br> + + "You are rancid, <<if $pinchPronoun is "m">>Mr.<<else>>Missus<</if>> Pinch." + <br> + <span class="black">"You have maggots in your ass."</span> + <br> + "You have all the subtle qualities of a bitch in heat, <<if $pinchPronoun is "m">>Mr.<<else>>Missus<</if>> Pinch." + <br> + <span class="black">"Given a choice between the two of you, I'd take the bitch in heat!"</span> + <br><br> + <</if>> +<</if>> + +<<stateman>> +<br><br> +<<actionsman>> + +<<if $enemyarousal gte $enemyarousalmax>> + <span id="next"><<link [[Next|Olive Book Pinch Finish]]>><</link>></span><<nexttext>> +<<elseif $enemyhealth lte 0>> + <span id="next"><<link [[Next|Olive Book Pinch Finish]]>><</link>></span><<nexttext>> +<<elseif $orgasmdown gte 1>> + <span id="next"><<link [[Next|Olive Book Pinch Finish]]>><</link>></span><<nexttext>> +<<else>> + <span id="next"><<link [[Next|Olive Book Pinch Gangbang]]>><</link>></span><<nexttext>> +<</if>> + +:: Olive Book Pinch Finish +<<set $outside to 0>><<set $location to "riding_school">><<effects>> + +<<unset $pinchSong>> + +<<if $enemyarousal gte $enemyarousalmax>><<set $pinchArousal += 2000>> + <<ejaculation>> + + Their climax was just the distraction <<pinchhe>> needed, + <br> + <span class="black"><<pinchHe>> slipped from their grip and swiftly retreated.</span> + <br><br> + + <<pinchHe>> scrambled away, <<pinchhis>> feet in high gear, + <br> + <span class="black"><<pinchHis>> "clever" scheme having fell flat on its face.</span> + <br> + "Whatever," <<pinchhe>> sneered, "I'll get them next year!" + <br> + <span class="black">And then <<pinchhe>> was gone, with hardly a trace.</span> + <br><br> + + Since that day, <<pinchhe>> became like a ghost. + <br> + <span class="black"><<pinchHe>> only cropped up in stories, at most.</span> + <br> + Though they'll never forget that fond memory + <br> + <span class="black">Of the lesson they taught <<pinchhim>> - and neither will <<pinchhe>>!</span> +<<elseif $enemyhealth lte 0>> + It seemed for the townsfolk <<pinchhis>> strength was too much + <br> + <span class="black">As they stumbled back in the snow.</span> + <br> + Or maybe they just deemed <<pinchhim>> too gross to touch. + <br> + <span class="black">Regardless, they let the creep go.</span> + <br><br> + + From that day forth, they were mindful of danger + <br> + <span class="black">Every year onwards, come Christmas night.</span> + <br> + They hid their presents and distrusted strangers, + <br> + <span class="black">And made sure to lock their bedroom doors tight.</span> + <br><br> + + Still to this day, near the holiday season + <br> + <span class="black">They tell tales of Pinch and the things <<pinchhe>> would do</span> + <br> + To careless young fools who trust without reason. + <br> + <span class="black">So don't be a fool, lest you get pinched, too!</span> +<<else>><<set $pinchArousal += 4000>> + <<if $pinchPronoun is "m">>Mr<<else>>Ms<</if>>. Pinch's face flushed - <<pinchhe>> felt rather craven + <br> + <span class="black">To have mingled pleasure with such degradation!</span> + <br><br> + + But once <<pinchhe>> cooled down, <<pinchhe>> didn't feel mad. + <br> + <span class="black">As a matter of fact, <<pinchhe>> felt rather... glad!</span> + <br> + <<pinchHe>> didn't resent them for their abuse. + <br> + <span class="black">In fact, it felt good being thoroughly used!</span> + <br><br> + + Then <<pinchhe>> thought of something <<pinchhe>> hadn't before. + <br> + <span class="black">Maybe cumming, <<pinchhe>> thought, didn't just come from whores.</span> + <br> + <span class="gold">Maybe cumming, perhaps, meant a little bit more!</span> + <br><br> + + <<pinchHe>> enjoyed <<pinchhis>> new role as a receptacle + <br> + <span class="black">For the town's lusty passion; <<pinchhe>> was but a hole.</span> + <br> + For the meaning of Christmas that <<pinchhe>> came to know + <br> + <span class="black">Is to give yourself up - your body and soul.</span> +<</if>> +<br><br> + +<<silently>><<endcombat>><</silently>> + +<<link [[Next|Olive Book End]]>><<set $phase to 1>><</link>> +<br> + +:: Olive Book End +<<set $outside to 0>><<effects>> + +<<if $phase is 1>> + <<set _phase to 1>> + <<unbecomePinch>> +<</if>> +<<pinchEnd "full">> + +You close the book, feeling +<<if $arousal gte ($arousalmax / 5) * 4>> + a lewd warmth in your belly. +<<elseif $arousal gte ($arousalmax / 5) * 2>> + oddly heated. +<<else>> + warm inside. +<</if>> +You shiver as you recount the events.<<arousal $pinchArousal>><<garousal>> +<<unset $pinchArousal>> +<br><br> + +You liked it, +<<if _phase is 1>> + despite knowing that the original story went differently. +<<else>> + despite its unique spin on the old tale. +<</if>> +<br><br> + +<<link [[Next|$oliveExitPassage]]>><<unset $oliveExitPassage>><</link>> +<br> + +:: Pinch Widgets [widget] +<<widget "pinchStart">> + <<if $christmas_book_read is undefined>> + <<set $christmas_book_read to 1>> + <</if>> + + <<set $real_weather to $weather>> + <<set $real_season to $season>> + <<set $real_weekday to $weekday>> + <<set $real_monthday to $monthday>> + <<set $real_month to $month>> + <<set $real_year to $year>> + <<set $real_moonstate to $moonstate>> + <<set $real_minute to $minute>> + <<set $real_time to $time>> + <<set $statFreeze to true>> + + <<set $time to 1260>> + <<set $month to "december">> + <<set $season to "winter">> + <<set $weather to "snow">> + <<set $pinchArousal to 0>> +<</widget>> + +<<widget "becomePinch">> + <<set $real_playersex to $player.sex>> + <<set $real_playergender to $player.gender>> + <<set $real_penisexist to $player.penisExist>> + <<set $real_vaginaexist to $player.vaginaExist>> + <<set $real_eyecolour to $eyecolour>> + <<set $real_haircolour to $haircolour>> + <<set $real_hairlength to $hairlength>> + <<set $real_breastsize to $breastsize>> + <<set $real_penissize to $penissize>> + <<set $real_ballsexist to $player.ballsExist>> + + <<set $real_goooutsidecount to $goooutsidecount>> + <<set $real_semenoutsidecount to $semenoutsidecount>> + <<set $real_bodyliquid to clone($player.bodyliquid)>> + <<set $real_parasite to clone($parasite)>> + <<set $real_virginity to clone($player.virginity)>> + <<set $real_pain to $pain>> + <<set $real_arousal to $arousal>> + <<set $real_tiredness to $tiredness>> + <<set $real_stress to $stress>> + <<set $real_trauma to $trauma>> + <<set $real_control to $control>> + <<set $real_angel to $angel>> + <<set $real_angelbuild to $angelbuild>> + <<set $real_demon to $demon>> + <<set $real_wolfgirl to $wolfgirl>> + <<set $real_cat to $cat>> + <<set $real_cow to $cow>> + <<set $real_famesex to $famesex>> + <<set $real_famerape to $famerape>> + <<set $real_fameexhibitionism to $fameexhibitionism>> + <<set $real_famescrap to $famescrap>> + <<set $real_fame to $fame>> + <<set $real_sexStats to clone($sexStats)>> + <<set $real_skulduggery to $skulduggery>> + <<set $real_purity to $purity>> + <<set $real_spray to $spray>> + <<set $real_skin to clone($skin)>> + /*store player clothing*/ + + <<undress "pinch">> + <<if $worn.genitals.name isnot "naked">> + <<set $real_wornGenitals to clone($worn.genitals)>> + <<set $worn.genitals to clone(setup.clothes.genitals[0])>> + <</if>> + /*morph player*/ + <<if $args[0] is "Lew">> + <<set $player.virginity to {anal:true,oral:true,penile:true,vaginal:true,temple:false,handholding:true,kiss:true}>> + <<set $eyecolour to "light blue">> + <<set $haircolour to "golden">> + <<generalWear "upper" 74 "red">> + <<generalWear "lower" 65 "green">> + <<legswear 9>> + <<elseif $args[0] is "Pinch">> + <<set $pinchPronoun to $per_npc.pinch.pronoun>> + <<set $player.gender to $per_npc.pinch.gender>> + <<set $player.sex to $per_npc.pinch.gender>> + <<if $player.sex is "f">> + <<set $vaginastate to 0>> + <<set $vaginause to 0>> + <<set $player.vaginaExist to true>> + <<set $player.penisExist to false>> + <<set $player.ballsExist to false>> + <<elseif $player.sex is "m">> + <<set $penisstate to 0>> + <<set $penisusue to 0>> + <<set $player.vaginaExist to false>> + <<set $player.penisExist to true>> + <<set $player.ballsExist to true>> + <<set $penissize to 1>> + <<else>> + <<set $vaginastate to 0>> + <<set $vaginause to 0>> + <<set $penisstate to 0>> + <<set $penisuse to 0>> + <<set $player.vaginaExist to true>> + <<set $player.penisExist to true>> + <<set $player.ballsExist to false>> + <<set $penissize to 1>> + <</if>> + <<set $breastsize to $per_npc.pinch.breastsize>> + + <<set $player.virginity to {anal:true,oral:true,penile:true,vaginal:true,temple:false,handholding:true,kiss:true}>> + <<if $pinchPenile>> + <<takeVirginity "Lew" "penile">> + <<elseif $pinchVaginal>> + <<takeVirginity "Lew" "vaginal">> + <<elseif $pinchAnal>> + <<takeVirginity "Lew" "anal">> + <</if>> + <<if $pinchKiss>> + <<takeVirginity "Lew" "kiss">> + <</if>> + + <<set $eyecolour to "red">> + <<set $haircolour to "green">> + <<feetwear 18>> + <<headwear 8>> + <<upperwear 30>> + <<lowerwear 33>> + <<underlowerwear 30>> + <</if>> + <<for _bodypart range setup.bodyliquid.bodyparts>> + <<set $player.bodyliquid[_bodypart].goo to 0>> + <<set $player.bodyliquid[_bodypart].semen to 0>> + <</for>> + <<for _bodypart range $parasite.bodyparts>> + <<set $parasite[_bodypart] to {}>> + <</for>> + <<bodywriting_init>> + + <<set $pain to 0>> + <<set $arousal to 0>> + <<set $tiredness to 0>> + <<set $stress to 0>> + <<set $trauma to 0>> + <<set $control to 500>> + <<set $angel to 0>> + <<set $angelbuild to 0>> + <<set $demon to 0>> + <<set $wolfgirl to 0>> + <<set $cat to 0>> + <<set $cow to 0>> + <<hideTransformations>> + <<set $skulduggery to 0>> + <<set $spray to 0>> +<</widget>> + +<<widget "unbecomePinch">> + /*restore clothes integrity and undress*/ + <<set _rebuy to $clothingrebuy>> + <<set $clothingrebuy to 0>> + <<silently>><<clotheson>><</silently>> + <<ruined>> + <<set $clothingrebuy to _rebuy>> + + /*restore real clothes*/ + <<storeon "pinch">> + <<if $real_wornGenitals isnot undefined>> + <<set $worn.genitals to clone($real_wornGenitals)>> + <<unset $real_wornGenitals>> + <</if>> + + /*restore players stats*/ + <<set $player.sex to $real_playersex>> + <<set $player.gender to $real_playergender>> + <<set $player.penisExist to $real_penisexist>> + <<set $player.vaginaExist to $real_vaginaexist>> + <<if !$player.vaginaExist>> + <<set $player.bodyliquid.vaginaoutside.semen to 0>> + <<set $player.bodyliquid.vaginaoutside.goo to 0>> + <</if>> + <<set $eyecolour to $real_eyecolour>> + <<set $haircolour to $real_haircolour>> + <<set $hairlength to $real_hairlength>> + <<set $breastsize to $real_breastsize>> + <<set $penissize to $real_penissize>> + <<set $player.ballsExist to $real_ballsexist>> + <<set $goooutsidecount to $real_goooutsidecount>> + <<set $semenoutsidecount to $real_semenoutsidecount>> + <<set $player.bodyliquid to clone($real_bodyliquid)>> + <<set $parasite to clone($real_parasite)>> + <<set $player.virginity to clone($real_virginity)>> + <<set $pain to $real_pain>> + <<set $arousal to $real_arousal>> + <<set $tiredness to $real_tiredness>> + <<set $stress to $real_stress>> + <<set $trauma to $real_trauma>> + <<set $control to $real_control>> + <<set $angel to $real_angel>> + <<set $angelbuild to $real_angelbuild>> + <<set $demon to $real_demon>> + <<set $wolfgirl to $real_wolfgirl>> + <<set $cat to $real_cat>> + <<set $cow to $real_cow>> + <<showTransformations>> + <<set $famesex to $real_famesex>> + <<set $famerape to $real_famerape>> + <<set $fameexhibitionism to $real_fameexhibitionism>> + <<set $famescrap to $real_famescrap>> + <<set $fame to $real_fame>> + <<set $sexStats to clone($real_sexStats)>> + <<set $skulduggery to $real_skulduggery>> + <<set $purity to $real_purity>> + <<set $spray to $real_spray>> + <<set $skin to clone($real_skin)>> +<</widget>> + +<<widget "pinchhe">> + <<silently>><<set _text_output to ($pinchPronoun is "m"? "he" : "she")>><</silently>> + <<print _text_output>> +<</widget>> + +<<widget "pinchHe">><<silently>> +<<pinchhe>><<capitalise>> +<</silently>><<print _text_output>><</widget>> + + +<<widget "pinchhis">> + <<silently>><<set _text_output to ($pinchPronoun is "m"? "his" : "her")>><</silently>> + <<print _text_output>> +<</widget>> + +<<widget "pinchHis">><<silently>> +<<pinchhis>><<capitalise>> +<</silently>><<print _text_output>><</widget>> + + +<<widget "pinchhim">> + <<silently>><<set _text_output to ($pinchPronoun is "m"? "him" : "her")>><</silently>> + <<print _text_output>> +<</widget>> + +<<widget "pinchEnd">> + <<if $args[0] is "full">> + <<set $weather to $real_weather>> + <<set $season to $real_season>> + <<set $weekday to $real_weekday>> + <<set $monthday to $real_monthday>> + <<set $month to $real_month>> + <<set $year to $real_year>> + <<set $moonstate to $real_moonstate>> + <<set $minute to $real_minute>> + <<set $time to $real_time>> + <<unset $statFreeze>> + + <<if $oliveExitPassage is "School Library">> + <<set $location to "school">> + <<else>> + <<set $location to "home">> + <</if>> + + <<unset $pinchPenile>> + <<unset $pinchAnal>> + <<unset $pinchVaginal>> + <<unset $pinchKiss>> + <<unset $pinchPronoun>> + <</if>> + + <<if ($studyBooks and $studyBooks.rented isnot "Pinch" and $studyBooks.stolen isnot "Pinch") or $studyBooks is undefined>> + <<clearNPC pinch>> + <</if>> + + <<endevent>> +<</widget>> \ No newline at end of file diff --git a/game/overworld-town/loc-school/special-scarlet.twee b/game/overworld-town/loc-school/special-scarlet.twee index ecb354178cd6e1a7077a72c0bc6cec071a099809..31f4c2589a528e6588abf837cb6328c5859d5268 100644 --- a/game/overworld-town/loc-school/special-scarlet.twee +++ b/game/overworld-town/loc-school/special-scarlet.twee @@ -541,15 +541,12 @@ The words you have just read echo in your head. You can no longer ignore what yo <<set $real_haircolour to $haircolour>> <<set $real_hairlength to $hairlength>> <<set $real_breastsize to $breastsize>> +<<set $real_ballsexist to $player.ballsExist>> <<set $real_goooutsidecount to $goooutsidecount>> <<set $real_semenoutsidecount to $semenoutsidecount>> -<<set $real_vaginagoo to $player.bodyliquid.vagina.goo>> -<<set $real_vaginasemen to $player.bodyliquid.vagina.semen >> -<<set $real_anusgoo to $player.bodyliquid.anus.goo>> -<<set $real_anussemen to $player.bodyliquid.anus.semen >> -<<set $real_mouthgoo to $player.bodyliquid.mouth.goo>> -<<set $real_mouthsemen to $player.bodyliquid.mouth.semen >> +<<set $real_bodyliquid to clone($player.bodyliquid)>> +<<set $real_parasite to clone($parasite)>> <<set $real_virginity to clone($player.virginity)>> <<set $real_pain to $pain>> <<set $real_arousal to $arousal>> @@ -591,6 +588,13 @@ The words you have just read echo in your head. You can no longer ignore what yo <<set $haircolour to "platinumblond">> <<set $hairlength to 400>> <<set $breastsize to 5>> +<<for _bodypart range setup.bodyliquid.bodyparts>> + <<set $player.bodyliquid[_bodypart].goo to 0>> + <<set $player.bodyliquid[_bodypart].semen to 0>> +<</for>> +<<for _bodypart range $parasite.bodyparts>> + <<set $parasite[_bodypart] to {}>> +<</for>> <<bodywriting_init>> <<set $pain to 0>> @@ -653,14 +657,11 @@ The words you have just read echo in your head. You can no longer ignore what yo <<set $haircolour to $real_haircolour>> <<set $hairlength to $real_hairlength>> <<set $breastsize to $real_breastsize>> +<<set $player.ballsExist to $real_ballsexist>> <<set $goooutsidecount to $real_goooutsidecount>> <<set $semenoutsidecount to $real_semenoutsidecount>> -<<set $player.bodyliquid.vagina.goo to $real_vaginagoo>> -<<set $player.bodyliquid.vagina.semen to $real_vaginasemen>> -<<set $player.bodyliquid.anus.goo to $real_anusgoo>> -<<set $player.bodyliquid.anus.semen to $real_anussemen>> -<<set $player.bodyliquid.mouth.goo to $real_mouthgoo>> -<<set $player.bodyliquid.mouth.semen to $real_mouthsemen>> +<<set $player.bodyliquid to clone($real_bodyliquid)>> +<<set $parasite to clone($real_parasite)>> <<set $player.virginity to clone($real_virginity)>> <<set $pain to $real_pain>> <<set $arousal to $real_arousal>> diff --git a/game/overworld-town/loc-school/toilets-gloryhole.twee b/game/overworld-town/loc-school/toilets-gloryhole.twee index e0b9a2607bf8af6062058e8992e0ad22c594a120..5012164900b99677007932de3710e92b19098c6d 100644 --- a/game/overworld-town/loc-school/toilets-gloryhole.twee +++ b/game/overworld-town/loc-school/toilets-gloryhole.twee @@ -183,9 +183,9 @@ :: School Gloryhole Janitor Catch <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> -<<generate1>><<person1>> +<<generateRole 0 0 "janitor">><<person1>> -The janitor, a <<person>>, glares at you. "Look at the mess you're making in my bathrooms, <<girl>>! Do you know how long this will take to clean up all this spunk?" +The <<person>> glares at you. "Look at the mess you're making in my bathrooms, <<girl>>! Do you know how long this will take to clean up all this spunk?" <br><br> <<if $delinquency gte 600>> diff --git a/game/overworld-town/loc-school/widgets-events.twee b/game/overworld-town/loc-school/widgets-events.twee index 302cfd705d99d38204f07c3292cc46115ac930b4..055e224ad5546deb29c88607c50577f49219b55e 100644 --- a/game/overworld-town/loc-school/widgets-events.twee +++ b/game/overworld-town/loc-school/widgets-events.twee @@ -591,7 +591,7 @@ Other students ignore what is happening, or watch in amusement. <br><br> <</if>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.under_lower.type.includes("naked")>> <<if $exhibitionism gte 55>> <<link [[Flash|Hallways Lewd Flash]]>><</link>><<exhibitionist4>> @@ -635,7 +635,7 @@ Other students ignore what is happening, or watch in amusement. <</widget>> <<widget "eventsplayground">> - +<!-- Jimmy TODO: Convert this to use the macros: <<cleareventpool>>, <<addinlineevent>> and <<runeventpool>>. --> <<if $schoolstate isnot "early" and $schoolstate isnot "late" and $schoolstate isnot "earlynoschool" and $schoolstate isnot "latenoschool" and $schoolstate isnot "daynoschool">> <<if $exposed gte 1>> @@ -810,7 +810,7 @@ Other students ignore what is happening, or watch in amusement. <<endevent>> <<playground>> - <<elseif setup.clothes.under_upper[$worn.under_upper.index].strap is 1>> + <<elseif setup.clothes.under_upper[clothesIndex('under_upper', $worn.under_upper)].strap is 1>> Your $worn.under_upper.name comes loose in your $worn.upper.name. They undid the strap. <br><br> @@ -1598,7 +1598,7 @@ For better or worse, whatever they're doing apparently doesn't involve you... Ye <<widget "eventwhitneyparasiteexposelower">> "Get <<phim>> ready guys," Whitney commands. <<He>> steps forward with the <<eventwhitneyparasiteadjective>> thing, your mind races, wondering what they're going to do with you. With your arms restrained and your body utterly helpless you can do nothing to stop them as they - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> raise your skirt high above your waist <<if not $worn.under_lower.exposed>> <<set $rng to random(0, 3)>> @@ -1626,7 +1626,7 @@ For better or worse, whatever they're doing apparently doesn't involve you... Ye <</widget>> <<widget "eventwhitneyparasiteexposebutt">> "Get <<phim>> ready <<nnpc_gendery "Whitney">>s," Whitney commands to <<his>> friends. As <<he>> steps forward with the <<eventwhitneyparasiteadjective>> thing, your mind races, wondering what they're going to do with you. With your arms restrained and your body utterly helpless you can do nothing to stop them as they - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> twist you around and bend you over, grab and pull the hem of your skirt up and over your back, completely exposing your vulnerable hole to Whitney, the cool air, and everyone passing by. <<else>> twist you around and bend you over, grab and yank your waistband down to your knees, completely exposing your vulnerable hole to Whitney, the cool air, and everyone passing by. @@ -2047,7 +2047,7 @@ Whitney looms around a corner and rests <<his>> arm on your shoulder. <<His>> fr A gust of wind blows over you. - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $schoolstate is "lunch" or $schoolstate is "morning" or $schoolstate is "afternoon">> The breeze lifts your $worn.lower.name and exposes your <<undies>> until you push the fabric back down between your thighs. You don't think anyone saw. <<gstress>><<garousal>><<stress 1>><<arousal 600>> diff --git a/game/overworld-town/loc-school/widgets.twee b/game/overworld-town/loc-school/widgets.twee index 1aec611508dd34f676d410a1efb51810b04cf63c..b4e58884afbd6f75d2679b211d59f20c107cec5d 100644 --- a/game/overworld-town/loc-school/widgets.twee +++ b/game/overworld-town/loc-school/widgets.twee @@ -609,11 +609,11 @@ River gives the class some equations to solve while <<he>> manages paperwork. <<npc River>><<generates2>><<person2>> River has you come to the front of the class to solve an equation on the whiteboard. - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> As you write on the board, a <<person>> reaches over with a ruler and lifts up your skirt! <<if $worn.under_lower.type.includes("naked")>> <<if $panicattacks gte 1 and random(1, 2) is 2 and $controlled is 0>> - A cheer erupts from the class as they see you're not wearing underwear. You need to respond, to whack the ruler away, <span class="red">but your body freezes in mortified panic.</span> Thoughs dart half-formed as you wonder what horrible things the class have in store for you. + A cheer erupts from the class as they see you're not wearing underwear. You need to respond, to whack the ruler away, <span class="red">but your body freezes in mortified panic.</span> Thoughts dart half-formed as you wonder what horrible things the class have in store for you. <br><br> You hear them chatter, but you can't comprehend the words, only the clicks of phone cameras pointed at your <<bottom>> and <<if $player.penisExist>>hardening<</if>> <<genitals>>. <br><br> @@ -1290,7 +1290,7 @@ Kylar sits back down and smiles, oblivious to the embarrassment <<he>> caused. <</if>> <<elseif $rng gte 21>> Doren asks you to demonstrate your grammar on the whiteboard. As you walk to the front of the classroom, a foot protrudes into your path and trips you up. - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.under_lower.name is "naked" or $worn.under_lower.anus_exposed is 1>> Your skirt flares up as you fall to your knees, revealing your bare butt to the whole class. You struggle to your feet, face turning red, as the class whistles and jeers. <<stress 3>><<trauma 3>><<gstress>><<gtrauma>> @@ -1564,10 +1564,10 @@ Doren asks you to demonstrate your grammar on the whiteboard. As you walk to the <<elseif $rng gte 76>> <<generates1>><<person1>>You catch a normally shy <<person>> checking you out from across the room. <br><br> - <<if $exhibitionism gte 35 and setup.clothes.lower[$worn.lower.index].skirt is 1 and !$worn.under_lower.type.includes("naked")>> + <<if $exhibitionism gte 35 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and !$worn.under_lower.type.includes("naked")>> <<link [[Flash|History Flash]]>><</link>><<exhibitionist2>> <br> - <<elseif $exhibitionism gte 55 and setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<elseif $exhibitionism gte 55 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<link [[Flash|History Flash]]>><</link>><<exhibitionist4>> <br> <<else>> @@ -2114,17 +2114,17 @@ Doren asks you to demonstrate your grammar on the whiteboard. As you walk to the <<if $school gte 1600>> <<set $rng to random(1, 100)>> <<if $rng gte 81>> - <<npc Mason>><<person1>>Mason points at you. "Climb out, I want to see your diving technique." You climb out into the chilly air, and walk to the edge of the diving platform. You dive <<swimmingtext>> into the water. - <br><br> - You come back up to the surface. Mason gives you a thumbs up, then directs <<his>> attention elsewhere. You feel like something is amiss, and then you realise, your $worn.under_lower.name <<underlowerplural>> gone!<<endevent>> - <br><br> - <<generates1>><<person1>><<underlowerstrip>> - You look around and see your clothes floating in the water. You swim towards them, but a <<person>> beats you to it. <<He>> holds them out of your reach and smiles at you. "Stripping in public? Who'd have known a nerd like you would be so perverted." <<He>> examines your exposed body, then checks if Mason is still distracted. "I wanna have some fun with you. You better do what I want or you'll be spending the rest of the lesson naked." - <br><br> - <<link [[Accept|Events Swimming Molestation Single]]>><<set $molestationstart to 1>><</link>> - <br> - <<link [[Refuse|Events Swimming Refuse]]>><</link>> - <br> + You climb out into the chilly air, and walk to the edge of the diving platform. You dive <<swimmingtext>> into the water. + <br><br> + You come back up to the surface. Mason gives you a thumbs up, then directs <<his>> attention elsewhere. You feel like something is amiss, and then you realise, your $worn.under_lower.name <<underlowerplural>> gone!<<endevent>> + <br><br> + <<generates1>><<person1>><<underlowerstrip>> + You look around and see your clothes floating in the water. You swim towards them, but a <<person>> beats you to it. <<He>> holds them out of your reach and smiles at you. "Stripping in public? Who'd have known a nerd like you would be so perverted." <<He>> examines your exposed body, then checks if Mason is still distracted. "I wanna have some fun with you. You better do what I want or you'll be spending the rest of the lesson naked." + <br><br> + <<link [[Accept|Events Swimming Molestation Single]]>><<set $molestationstart to 1>><</link>> + <br> + <<link [[Refuse|Events Swimming Refuse]]>><</link>> + <br> <<else>> You climb out into the chilly air, and walk to the edge of the diving platform. You dive <<swimmingtext>> into the water. <br><br> @@ -2356,6 +2356,9 @@ Doren asks you to demonstrate your grammar on the whiteboard. As you walk to the <<case "Raul and Janet">> <<link [[Return "Raul and Janet"|Book Rental]]>><<set $phase to 5>><<set $bookRent to "return">><</link>> <br> + <<case "Pinch">> + <<link [[Return the olive-coloured book|Book Rental]]>><<set $phase to 6>><<set $bookRent to "return">><</link>> + <br> <<default>> <</switch>> <<switch $studyBooks.stolen>> @@ -2374,6 +2377,9 @@ Doren asks you to demonstrate your grammar on the whiteboard. As you walk to the <<case "Raul and Janet">> <<link [[Return your stolen copy of "Raul and Janet"|Book Rental Return Stolen]]>><<set $phase to 5>><</link>> <br> + <<case "Pinch">> + <<link [[Return the olive-coloured book|Book Rental Return Stolen]]>><<set $phase to 6>><</link>> + <br> <<default>> <</switch>> <<sydneySchedule>> @@ -2400,6 +2406,10 @@ Doren asks you to demonstrate your grammar on the whiteboard. As you walk to the <<link [[Rent "Raul and Janet" (£20)|Book Rental]]>><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 5>><<set $studyBooks.rented to "Raul and Janet">><</link>> <br> <</if>> + <<if (($month is "november" and $monthday gte 24) or $month is "december") and $studyBooks.stolen isnot "Pinch">> + <<link [[Rent the olive-coloured book (£20)|Book Rental]]>><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 6>><<set $studyBooks.rented to "Pinch">><</link>> + <br> + <</if>> <<else>> <<if $money gte 1500 and $book_rent_timer lte 13 and $book_rent_timer gt 0>> <<link [[Renew your book rental (£15)|Book Rental]]>><<set $money -= 1500>><<set $bookRent to "renew">><</link>> @@ -2437,6 +2447,10 @@ Doren asks you to demonstrate your grammar on the whiteboard. As you walk to the <<link [[Steal "Raul and Janet"|Book Rental]]>><<set $phase to 5>><<set $bookRent to "steal">><<set $studyBooks.stolen to "Raul and Janet">><</link>><<crime>> <br> <</if>> + <<if (($month is "november" and $monthday gte 24) or $month is "december") and $studyBooks.stolen isnot "Pinch">> + <<link [[Steal the olive-coloured book|Book Rental]]>><<set $phase to 6>><<set $bookRent to "steal">><<set $studyBooks.stolen to "Pinch">><</link>><<crime>> + <br> + <</if>> <<else>> You can only carry one stolen book at a time. <br> @@ -2463,6 +2477,9 @@ Doren asks you to demonstrate your grammar on the whiteboard. As you walk to the <<case "Raul and Janet">> <<link [[Read "Raul and Janet" (0:01)|ScarletBook1]]>><<pass 1>><<set $scarletExitPassage to $passage>><</link>> <br> + <<case "Pinch">> + <<link [[Read the olive-coloured book (0:01)|Olive Book 1]]>><<pass 1>><<set $oliveExitPassage to $passage>><</link>> + <br> <<default>> <</switch>> <<switch $studyBooks.stolen>> @@ -2481,6 +2498,9 @@ Doren asks you to demonstrate your grammar on the whiteboard. As you walk to the <<case "Raul and Janet">> <<link [[Read "Raul and Janet" (0:01)|ScarletBook1]]>><<pass 1>><<set $scarletExitPassage to $passage>><</link>> <br> + <<case "Pinch">> + <<link [[Read the olive-coloured book (0:01)|Olive Book 1]]>><<pass 1>><<set $oliveExitPassage to $passage>><</link>> + <br> <<default>> <</switch>> <</if>> diff --git a/game/overworld-town/loc-sea/events.twee b/game/overworld-town/loc-sea/events.twee index 1cad1af1ccf92b5275b703139fa2b7c109a0caf2..03df877aa7048fbe7897610e5f7442af92ca27e8 100644 --- a/game/overworld-town/loc-sea/events.twee +++ b/game/overworld-town/loc-sea/events.twee @@ -243,7 +243,7 @@ <<destinationeventend>> <<elseif $alarm is 1 and $rescue is 1>> <<set $rescued += 1>> - <<generate1>><<person1>>A whistle blows, startling the <<person>>. A lifeguard in a small boat races toward you. The <<person>> gives you an angry look, but leaves without further fuss. Seeing <<him>> leave, the lifeguard heads back to the beach. <<tearful>> you gather yourself. + A whistle blows, startling the <<person>>. A lifeguard in a small boat races toward you. The <<person>> gives you an angry look, but leaves without further fuss. Seeing <<him>> leave, the lifeguard heads back to the beach. <<tearful>> you gather yourself. <br><br> <<clotheson>> <<endcombat>> diff --git a/game/overworld-town/loc-shop/clothing-v2.twee b/game/overworld-town/loc-shop/clothing-v2.twee index 91da9c043fab981f8c4f3026ac77b52da882a946..2cfa8f68bcc21fc30a1d248ff577b814c75fb88f 100644 --- a/game/overworld-town/loc-shop/clothing-v2.twee +++ b/game/overworld-town/loc-shop/clothing-v2.twee @@ -238,7 +238,7 @@ <div @class="'clothing-shop-page page-' + _page + _hidden"> <<for _itemTemp range _itemsOnPage>> <<set _item = clone(_itemTemp)>> - <<set _itemData = setup.clothes[$clothingShopSlot][_item.index]>> + <<set _itemData = setup.clothes[$clothingShopSlot][clothesIndex($clothingShopSlot,_item)]>> <<set _locked = $specialClothes[_item.name.replace(/ /g,"")] is "locked">> <<set _unlocked = $specialClothes[_item.name.replace(/ /g,"")] is "unlocked">> <div class="clothing-item div-link"> @@ -308,7 +308,7 @@ <<set _csslot = $clothingShopSlot>> <<capture _item _itemData _shopLocation _csslot _outfits>> <<link _itemData.name_cap>> - <<set $clothes_choice = _item.index>> + <<set $clothes_choice = clothesIndex(_slot,_item)>> <<set $clothes_choice_reveal = _item.reveal>> <<set $clothes_choice_integrity = _itemData.integrity_max>> <<unset $colouraction>> @@ -943,7 +943,7 @@ <<for _clothing range _items_list>> <<set _item = _clothing.item>> <<set _slot = _clothing.slot>> - <<set _modeloptions['worn_' + _slot] to _item.index>> + <<set _modeloptions['worn_' + _slot] to clothesIndex(_slot,_item)>> <<if _col>> <<set _modeloptions['worn_' + _slot + '_colour'] to _col>> <<if _col is "custom">> @@ -1038,14 +1038,14 @@ <img @src="'img/clothes/' + _slot + '/' + _item.variable + '/full.png'"> <</if>> - <<if setup.clothes[_slot][_item.index].sleeve_img or _item.leftImage>> + <<if setup.clothes[_slot][clothesIndex(_slot,_item)].sleeve_img or _item.leftImage>> <img @src="'img/clothes/' + _slot + '/' + _item.variable + '/left.png'"> <</if>> - <<if setup.clothes[_slot][_item.index].sleeve_img or _item.rightImage>> + <<if setup.clothes[_slot][clothesIndex(_slot,_item)].sleeve_img or _item.rightImage>> <img @src="'img/clothes/' + _slot + '/' + _item.variable + '/right.png'"> <</if>> - <<if setup.clothes[_slot][_item.index].breast_img>> + <<if setup.clothes[_slot][clothesIndex(_slot,_item)].breast_img>> <img @src="'img/clothes/' + _slot + '/' + _item.variable + '/' + _breastImg + '.png'"> <</if>> diff --git a/game/overworld-town/loc-shop/tailor.twee b/game/overworld-town/loc-shop/tailor.twee index 1be805b1ad3c30dc32f70c0ff68b467c8720ebd8..4299b6ec21eace52e23be9342c2071c2e5d74a42 100644 --- a/game/overworld-town/loc-shop/tailor.twee +++ b/game/overworld-town/loc-shop/tailor.twee @@ -189,7 +189,7 @@ Your lower clothes have been fixed. <<set _value to 0>> <<for _label, _items range $wardrobe>> <<for _i to 0; _i lt _items.length; _i++>> - <<if setup.clothes[_label][_items[_i].index].shop.length is 0>> + <<if setup.clothes[_label][clothesIndex(_label,_items[_i])].shop.length is 0>> <<continue>> <</if>> <<if _items[_i].outfitSecondary isnot undefined>> diff --git a/game/overworld-town/loc-shop/tryOn.twee b/game/overworld-town/loc-shop/tryOn.twee index 87ca00bcf191b219783b43f0d35cd05258f20d69..bd57715f70aeb8c820d0949438232baeb325c1ce 100644 --- a/game/overworld-town/loc-shop/tryOn.twee +++ b/game/overworld-town/loc-shop/tryOn.twee @@ -80,7 +80,7 @@ <<set _custom_style = _tryon[1].colour == "custom" ? "color:" + _customRGB : "">> <span style="display:inline-flex">(<span @class="_tryon[1].colour.replace(/ /g, '-')" @style="_custom_style"><<print _colour>></span>)</span> <</if>> - <<print setup.clothes[_tryon[0]][_tryon[1].index].name_cap>> with a price tag of <<printmoney `getClothingCost(_tryon[1],_tryon[0])`>> + <<print setup.clothes[_tryon[0]][clothesIndex(_tryon[0],_tryon[1])].name_cap>> with a price tag of <<printmoney `getClothingCost(_tryon[1],_tryon[0])`>> <<capture _tryon[0]>> | <<link "Remove">><<clothingReset _tryon[0]>> <<updatesidebarimg>> diff --git a/game/overworld-town/loc-shop/widgets.twee b/game/overworld-town/loc-shop/widgets.twee index fb8a82ef34760e74e3967135b172301ac63338dc..ff43b95329da9b42fe3a6d05049166c77c9adf16 100644 --- a/game/overworld-town/loc-shop/widgets.twee +++ b/game/overworld-town/loc-shop/widgets.twee @@ -299,7 +299,7 @@ Forth argument - item index*/ <<set _listCount to 0>><<set _trueListCount to 0>> <<for _i to 0; _i lt setup.clothes[$clothingShopSlot].length; _i++>> <<set _item to clone(setup.clothes[$clothingShopSlot][_i])>> - <<set _itemData = setup.clothes[$clothingShopSlot][_item.index]>> + <<set _itemData = setup.clothes[$clothingShopSlot][clothesIndex($clothingShopSlot,_item)]>> <<if !_item.shop.includes(_shopLocation) or _item.outfitSecondary isnot undefined>> <<continue>> <</if>> diff --git a/game/overworld-town/loc-spa/widgets.twee b/game/overworld-town/loc-spa/widgets.twee index 394abb09bbfbfda450fc8739c7e95c9408e28b1f..90662c41abe1b713111d459dd07e725622b0a838 100644 --- a/game/overworld-town/loc-spa/widgets.twee +++ b/game/overworld-town/loc-spa/widgets.twee @@ -190,7 +190,7 @@ A <<person>> enters, <<if $worn.under_lower.type.includes("naked")>> <<fameexhibitionism 1>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<He>> flips it up, <<elseif $worn.lower.integrity gt 20>> <<He>> tugs it down, @@ -207,7 +207,7 @@ A <<person>> enters, <br><br> <<spa_end>> <<else>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<He>> flips it up, <<elseif $worn.lower.integrity gt 20>> <<He>> tugs it down, diff --git a/game/overworld-town/loc-spa/work.twee b/game/overworld-town/loc-spa/work.twee index 57f77501a416b2ceb812db03097e07bee101d27e..b995e7edbba34c9f1e79835c6abde512a708df48 100644 --- a/game/overworld-town/loc-spa/work.twee +++ b/game/overworld-town/loc-spa/work.twee @@ -740,7 +740,7 @@ You negotiate a fee of <<printmoney $tip>>, <<He>> grasps your $worn.under_lower.name with <<his>> other hand, <<if $worn.under_lower.open is 1 or _broken or $worn.under_lower.integrity lte 20>> <<fameexhibitionism 1>> - <<if setup.clothes.under_lower[$worn.under_lower.index].skirt is 1>> + <<if setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].skirt is 1>> and flips it up, <<elseif $worn.under_lower.integrity gt 20>> and tugs it down, diff --git a/game/overworld-town/loc-street/elk.twee b/game/overworld-town/loc-street/elk.twee index 17745c4da5807f81222b34d77f36ca66189b6464..973e57680438b04bd419d7ed153c9982fc73d01c 100644 --- a/game/overworld-town/loc-street/elk.twee +++ b/game/overworld-town/loc-street/elk.twee @@ -37,10 +37,10 @@ You are on Elk Street. There are roads leading to several large industrial compl Places of interest <br> <<if $trash_unlocked is 1>> - <<link [[Landfill (0:10)|Trash]]>><<pass 10>><<set $trash to 0>><</link>> + <<landfillicon>><<link [[Landfill (0:10)|Trash]]>><<pass 10>><<set $trash to 0>><</link>> <br> <<else>> - <<link [[Landfill (0:05)|Trash Gate Enter]]>><<pass 5>><</link>> + <<landfillicon>><<link [[Landfill (0:05)|Trash Gate Enter]]>><<pass 5>><</link>> <br> <</if>> <<if $compoundstate is 1>> diff --git a/game/overworld-town/loc-street/events.twee b/game/overworld-town/loc-street/events.twee index e5728d1edd8750482fd3e1cbb1589b5ba97fa870..94fa687f7ecfdeb9a9c7da58cef229ccaf3cace3 100644 --- a/game/overworld-town/loc-street/events.twee +++ b/game/overworld-town/loc-street/events.twee @@ -1562,7 +1562,7 @@ Your cries attract the attention of the people passing by the alley's entrance. <<effects>> <<if $phase is 1>> You agree to the transaction, and find a secluded spot in a nearby alley to conduct the exchange. - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> The <<person>> stares at you, eyes wide, as you lift the sides of your skirt and slip your $worn.under_lower.name down to your knees. You lift one leg out, then the other, and just like that you are naked beneath your skirt. <br><br> <<else>> @@ -1620,7 +1620,7 @@ Your cries attract the attention of the people passing by the alley's entrance. You give the <<person>> a coy smile. "But I'm not wearing any, <<print ["look.", "see?"].pluck()>>" <br><br> With a quick glance about and a wink - <<if (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.name is "naked")>> + <<if (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.name is "naked")>> you lift your skirt above your hips <<else>> you pull the front of your waistband down @@ -1719,7 +1719,7 @@ Your cries attract the attention of the people passing by the alley's entrance. <<effects>> <<if $phase is 1>> You agree to the transaction, and find a secluded spot in a nearby alley. You turn to face <<him>>. The <<person>> stares at you, eyes wide, - <<if (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.name is "naked")>> + <<if (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.name is "naked")>> <<if !$worn.under_lower.type.includes("naked")>>as you slip your $worn.under_lower.name down to your knees and lift your skirt up high.<<else>>as you lift your skirt up high.<</if>> <<else>> <<if !$worn.under_lower.type.includes("naked")>>as you pull your <<allBottoms>> to the floor, and then slip your $worn.under_lower.name down to your knees.<<else>>as you pull your <<allBottoms>> to the floor.<</if>> @@ -3108,7 +3108,7 @@ The hands quickly sweep your arms and legs, focusing a surprising amount of atte <<set $outside to 1>><<effects>> They push you over the hood of the car and -<<if (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.name is "naked")>> +<<if (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.name is "naked")>> lift your <<allBottoms>> up over your back <<else>> pull your <<allBottoms>> down to your feet. @@ -3736,7 +3736,7 @@ Humiliated beyond words, you want to be anywhere but here. So when they finally <<set $outside to 1>><<effects>> <<physiquedifficulty 5000 16000 true>> <<if $physiqueSuccess>> - <<if ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.name is "naked")) and !$worn.under_lower.type.includes("naked")>> + <<if ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.name is "naked")) and !$worn.under_lower.type.includes("naked")>> You hold on to your <<allBottoms>> as the tentacle thrashes around. <span class="green">The tentacle slips free,</span> and retreats into the manhole. <<gstress>><<stress 1>> <br><br> @@ -3748,7 +3748,7 @@ Humiliated beyond words, you want to be anywhere but here. So when they finally <<destinationeventend>> <</if>> <<else>> - <<if ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.name is "naked")) and !$worn.under_lower.type.includes("naked")>> + <<if ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.name is "naked")) and !$worn.under_lower.type.includes("naked")>> You hold on to your $worn.under_lower.name as the tentacle thrashes around. <span class="red">The tentacle tears it from your grip,</span> and retreats into the manhole, still clutching the ruined fabric. <<gtrauma>><<gstress>><<stress 6>><<trauma 6>> <br><br> @@ -3785,7 +3785,7 @@ You grab the tentacle and try to hold it still.<<deviancy1>> <br> <<destinationdrain>> <<else>> - <<if ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.name is "naked")) and !$worn.under_lower.type.includes("naked")>> + <<if ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.name is "naked")) and !$worn.under_lower.type.includes("naked")>> As it thrashes against your grip, <span class="red">it gets under your leg and trips you.</span> It tears your $worn.under_lower.name off your body and retreats into the manhole, still clutching the ruined fabric. <<gpain>><<pain 5>><<gtrauma>><<gstress>><<stress 6>><<trauma 6>> <br><br> @@ -3986,7 +3986,7 @@ You search among the stolen belongings. You find <<set $outside to 1>><<effects>> You pull away from the tentacle, hoping to shake it off. <<if $worn.over_lower.name is "naked">> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1 and !$worn.under_lower.type.includes("naked") and !$worn.genitals.type.includes("chastity")>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and !$worn.under_lower.type.includes("naked") and !$worn.genitals.type.includes("chastity")>> <<set $worn.under_lower.integrity -= 30>> <<if $worn.under_lower.integrity lte 0>> It tears your $worn.under_lower.name free as it retreats into the manhole, still clutching the ruined fabric. @@ -5036,14 +5036,14 @@ You act on the slime's urging, and approach the <<person>>. <</if>> <<if $worn.under_lower.name is "naked">> <<if $worn.over_lower.name isnot "naked">> - <<if setup.clothes.over_lower[$worn.over_lower.index].skirt is 1>><<set $worn.lower.skirt_down to 0>> + <<if setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1>><<set $worn.lower.skirt_down to 0>> You lift up your $worn.over_lower.name, <span class="lewd">exposing your <<if $worn.lower.name isnot "naked">>$worn.lower.name<<else>><<undies>><</if>>.</span> <<else>><<set $worn.lower.state to "thighs">> You pull down your $worn.over_lower.name, <span class="lewd">exposing your <<if $worn.lower.name isnot "naked">>$worn.lower.name<<else>><<undies>><</if>>.</span> <</if>> <</if>> <<if $worn.lower.name isnot "naked">> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>><<set $worn.lower.skirt_down to 0>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>><<set $worn.lower.skirt_down to 0>> You lift up your $worn.lower.name, <span class="lewd">exposing your <<undies>>.</span> <<else>><<set $worn.lower.state to "thighs">> You pull down your $worn.lower.name, <span class="lewd">exposing your <<undies>>.</span> @@ -5057,7 +5057,7 @@ You act on the slime's urging, and approach the <<person>>. <<if $worn.lower.name is "naked">> You pull down your $worn.under_lower.name, <span class="lewd">exposing your <<genitals>>.</span> <<else>> - <<if (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.name is "naked")>> + <<if (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.name is "naked")>> <<if $worn.over_lower.name isnot "naked">><<set $worn.over_lower.skirt_down to 0>><</if>> <<if $worn.lower.name isnot "naked">><<set $worn.lower.skirt_down to 0>><</if>> You lift up your <<allBottoms>> with one hand while lowering you $worn.under_lower.name with the other <span class="lewd">exposing your <<genitals>>.</span> @@ -8790,7 +8790,7 @@ You hear a voice whisper in your ear. "Mmm, you’re finally awake." They give y <br> "I thought you’d be the one," <<he>> mutters. <<He>> stands silently for a moment, blocking the door, before continuing. <br> - "I just wanted someone to satisfy my fetish! I never meant any harm. I see you having sex all the time. I thought you would have been the one. + "I just wanted someone to satisfy my fetish! I never meant any harm. I see you having sex all the time. I thought you would have been the one." <br><br> <<He>> sighs again, slumping against the wall. "You can go. Just leave me here." <<He>> looks like <<hes>> about to burst into tears. diff --git a/game/overworld-town/loc-street/oxford.twee b/game/overworld-town/loc-street/oxford.twee index 4eb41ae4357d43adedda783652d7a85b5f3d3f2a..ab17d3ea455a15f721f54ed24386c8e855f2a670 100644 --- a/game/overworld-town/loc-street/oxford.twee +++ b/game/overworld-town/loc-street/oxford.twee @@ -77,7 +77,7 @@ You are on Oxford Street. There's an eclectic mix of buildings, but most notable An expensive-looking car parks in front of you. Most of the students around you stop to gaze at it in awe. The windows lower and you recognise its driver, it's Avery. "There you are," <<he>> says with a smile. "I was on my way back home from work, so I thought I'd come pick you up." <br><br> - A few students murmur amongst themselves. They're wondering how you could possibly afford such treatment. + A few students murmur amongst themselves. They're wondering how you could possibly afford such treatment.<<gcool>><<status 1>> <</if>> <br><br> diff --git a/game/overworld-town/loc-street/widgets.twee b/game/overworld-town/loc-street/widgets.twee index e976d3d419a1467fbca88e04cab8d2e7051eeb25..d504705a4ae611aef94f2b37e91055bf36e8902c 100644 --- a/game/overworld-town/loc-street/widgets.twee +++ b/game/overworld-town/loc-street/widgets.twee @@ -77,7 +77,7 @@ You pass a <<person>>. <</widget>> <<widget "streetfootbridge">> -<<if setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.under_lower.type.includes("naked")>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.under_lower.type.includes("naked")>> You come to a footbridge that crosses a busy road. You climb the steps, but stop at the top. The floor is made from a metal mesh. You can see the traffic beneath. Anyone beneath would be able to see right up your skirt, <span class="lewd">and you're not wearing underwear.</span> <br><br> @@ -535,7 +535,7 @@ You hear voices up ahead, and take cover down a stairwell leading to a basement. <<link [[Ignore|Catcall Ignore]]>><</link>><<gstress>><<gtrauma>> <br> <</if>> - <<if (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.name is "naked")>> + <<if (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.name is "naked") or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.name is "naked")>> <<if $exhibitionism gte 75 and $worn.under_lower.type.includes("naked")>> <<link [[Give them a show|Catcall Skirt]]>><</link>><<exhibitionist5>><<lstress>><<garousal>> <br><br> @@ -668,7 +668,7 @@ You hear voices up ahead, and take cover down a stairwell leading to a basement. <<widget "street6">> -<<if setup.clothes.over_lower[$worn.over_lower.index].skirt is 1>> +<<if setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1>> Your $worn.over_lower.name snags on a passing car, <<set $worn.over_lower.integrity -= 10>> <<if $worn.over_lower.integrity lte 0>> <<overlowerruined>><<clothesruinstat>><<if $worn.lower.exposed gte 1>><<set $loweroff to 0>><</if>> @@ -688,7 +688,7 @@ You hear voices up ahead, and take cover down a stairwell leading to a basement. <</if>> <br><br> <<destinationeventend>> -<<elseif setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> Your $worn.lower.name snags on a passing car, <<set $worn.lower.integrity -= 10>> <<if $worn.lower.integrity lte 0>> <<lowerruined>><<clothesruinstat>><<set $loweroff to 0>> @@ -1318,7 +1318,7 @@ You take cover in a bus shelter, just as a bus rounds the corner. It slows down You feel something touch your thigh. You look down to see a slimy tentacle extending from an open manhole. It worms around your leg and -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if !$worn.genitals.type.includes("chastity") and !$worn.under_lower.type.includes("naked")>> up your $worn.lower.name. It tangles in your $worn.under_lower.name. <<elseif $worn.under_lower.type.includes("naked")>> @@ -1691,7 +1691,7 @@ You stumble in your heels and fall forwards. As your face approaches the ground, <<link [[Flaunt|Street Exhibitionism Fame Flaunt]]>><<set $flaunt_type to 'words'>><<set $flaunt_part to 'none'>><</link>><<lstress>> <br> <</if>> - <<if ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.type.includes("naked")))>> + <<if ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.type.includes("naked")))>> <<if $exhibitionism gte 75 and $worn.under_lower.type.includes("naked") and $uncomfortable.nude is false>> <<link [[Flash your skirt|Street Exhibitionism Fame Flaunt]]>><<set $flaunt_type to 'skirt'>> <<set $flaunt_part to 'genitals'>><</link>><<exhibitionist5>><<lstress>><<garousal>> <br> @@ -1942,9 +1942,9 @@ You smell freshly baked pastries, and hear a knock on a nearby door. You recogni After a brief exchange, the owner of the house hands out a small stack of bills to the <<personsimple>>. <<He>> beams, thanking the homeowner before moving on to the next house. <<stress -12>><<llstress>><<hope 1>><<ghope>> <<else>> <<if $bus is "domus">> - The owner of the home, a <<person2>><<person>>, inspects <<him>> briefly, before saying something that makes the <<person1>><<personsimple>> blush. <<He>> quickly backs up, and moves on to the next house without looking back.<<if $awareness gte 200>> You expect that <<he>> was propositioned, and refused.<</if>> You find <<his>> stubbornness inspiring. <<stress -6>><<lstress>> + The owner of the home, a <<person2>><<person>>, inspects <<person1>><<him>> briefly, before saying something that makes the <<personsimple>> blush. <<He>> quickly backs up, and moves on to the next house without looking back.<<if $awareness gte 200>> You expect that <<he>> was propositioned, and refused.<</if>> You find <<his>> stubbornness inspiring. <<stress -6>><<lstress>> <<else>> - The owner of the home, a <<person2>><<person>>, inspects <<him>> briefly, before holding out a large stack of bills. The <<person1>><<personsimple>> looks shocked. Even from here, you can tell it's a lot of money. <<He>> hands the entire box over to the <<person2>><<person>>, says <<person1>><<his>> thanks, and rushes back towards the orphanage with a look of pure joy. You expect <<hes>> off to bake more. <<stress -12>><<llstress>><<ghope>><<hope 2>> + The owner of the home, a <<person2>><<person>>, inspects <<person1>><<him>> briefly, before holding out a large stack of bills. The <<personsimple>> looks shocked. Even from here, you can tell it's a lot of money. <<He>> hands the entire box over to the <<person2>><<person>>, says <<person1>><<his>> thanks, and rushes back towards the orphanage with a look of pure joy. You expect <<hes>> off to bake more. <<stress -12>><<llstress>><<ghope>><<hope 2>> <</if>> <</if>> @@ -1956,9 +1956,9 @@ You smell freshly baked pastries, and hear a knock on a nearby door. You recogni After a brief but stormy exchange, the owner of the house slams the door in <<his>> face. Still, the <<personsimple>> doesn't seem to relent in <<his>> efforts, and moves on to the next house. You find <<his>> stubbornness inspiring. <<stress -6>><<lstress>> <<else>> <<if $bus is "domus">> - The owner of the home, a <<person2>><<person>>, inspects <<him>> briefly, before saying something that makes the <<person1>><<personsimple>> blush. <<He>> quickly backs up, and moves on to the next house without looking back.<<if $awareness gte 200>> You expect that <<he>> was propositioned, and refused.<</if>> You find <<his>> stubbornness inspiring. <<stress -6>><<lstress>> + The owner of the home, a <<person2>><<person>>, inspects <<person1>><<him>> briefly, before saying something that makes the <<personsimple>> blush. <<He>> quickly backs up, and moves on to the next house without looking back.<<if $awareness gte 200>> You expect that <<he>> was propositioned, and refused.<</if>> You find <<his>> stubbornness inspiring. <<stress -6>><<lstress>> <<else>> - The owner of the home, a <<person2>><<person>>, inspects <<him>> briefly, before holding out a large stack of bills. The <<person1>><<personsimple>> looks shocked, and the <<person2>><<person>> motions for <<person1>><<him>> to enter the house. <<He>> hesitates, but looks down at the money. Even from here, you can tell it's a lot. With a flushed face, <<he>> enters. <<gtrauma>><<trauma 3>><<lhope>><<hope -1>><<greb>><<reb 1>> + The owner of the home, a <<person2>><<person>>, inspects <<person1>><<him>> briefly, before holding out a large stack of bills. The <<personsimple>> looks shocked, and the <<person2>><<person>> motions for <<person1>><<him>> to enter the house. <<He>> hesitates, but looks down at the money. Even from here, you can tell it's a lot. With a flushed face, <<he>> enters. <<gtrauma>><<trauma 3>><<lhope>><<hope -1>><<greb>><<reb 1>> <</if>> <</if>> <</if>> diff --git a/game/overworld-town/loc-temple/garden.twee b/game/overworld-town/loc-temple/garden.twee index 260b7ca97b554f72b666929a66337c48968e9b08..7baa7724d294065ab8384ead2ff7b57331d77a18 100644 --- a/game/overworld-town/loc-temple/garden.twee +++ b/game/overworld-town/loc-temple/garden.twee @@ -210,7 +210,7 @@ You ask a priest what work needs doing around the garden. You're asked to tend t <<set _npcChastity to 1>><<generate1>><<person1>> You ask a priest what work needs doing around the garden. You're asked to assist the <<monk>> tending to the crops at the forest's edge. <br><br> -You find <<him>> tending to a row of trellises, each bearing a vibrant bine of hops. +You find <<him>> tending to a row of trellises, each bearing a vibrant vine of hops. <<set $rng to random(1, 100)>> <<if $rng gte 81>> <<He>> has you search the plants for mites. <<tending_text>> diff --git a/game/overworld-town/loc-temple/quarters.twee b/game/overworld-town/loc-temple/quarters.twee index ad43113864150f0003777305c9f48183763da354..10e72205421cd098bde43406e8ba4c38e10eaf1a 100644 --- a/game/overworld-town/loc-temple/quarters.twee +++ b/game/overworld-town/loc-temple/quarters.twee @@ -213,7 +213,7 @@ You decide to ignore the strange hole, and continue gathering clothes. Basket fu <<set $outside to 0>><<set $location to "temple">><<temple_effects>><<effects>> <<set $temple_harassed += 1>> You put up with it. The <<monkapo>> antics grow in aggressiveness. -<<if setup.clothes.lower[$worn.lower.index].skirt is 1>> +<<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if $worn.under_lower.type.includes("naked")>> After whipping <<his>> head around to make sure no one is looking too closely, <<he>> flips up your $worn.lower.name. <<He>> gropes your <<genitals>> directly. <br><br> diff --git a/game/overworld-town/special-avery/main.twee b/game/overworld-town/special-avery/main.twee index fc56aa729d723005f985cb49a6fa33ff55c36f32..70cbcc2ae6a381e3f9320a01b41217bd987e38be 100644 --- a/game/overworld-town/special-avery/main.twee +++ b/game/overworld-town/special-avery/main.twee @@ -671,24 +671,24 @@ Another click from the door grabs your attention, with Avery walking in shortly :: Avery Hotel 3 <<effects>><<pass 10>> -<<generate2>> +<<generateRole 1 0 "waiter/waitress">> <<if $exposed gte 2>><<exposure>><</if>> You step outside and take your seat at the ornate table. The balcony is covered, and the steam from the nearby hot tub keeps the area temperate<<if $exposed gte 2>> despite your nudity. <<exhibitionism5>><<else>>.<</if>> -It's not too long before there's a knock at the door. Avery opens it and motions towards the table. A <<person2>><<person>> in servant's garb enters. Avery sits down as the <<person2>><<if $pronoun is "m">>waiter<<else>>waitress<</if>> wheels in a tray with two plates on it. +It's not too long before there's a knock at the door. Avery opens it and motions towards the table. A <<person2>><<person>> in servant's garb enters. Avery sits down as the <<person2>><<personsimple>> wheels in a tray with two plates on it. <<if $exposed gte 2>> <<person2>><<He>> pauses upon seeing you, and <<person2>><<his>> professional demeanor falters for a moment as <<person2>><<his>> face turns red. Avery holds out a bundle of cash and gives <<person2>><<him>> a wink. <</if>> <br><br> <<if $phase is 0>> - The <<person2>><<if $pronoun is "m">>waiter<<else>>waitress<</if>> sets down a plate of pasta in front of Avery and a plate of the same pasta in front of you. Avery smiles at you. + The <<person2>><<personsimple>> sets down a plate of pasta in front of Avery and a plate of the same pasta in front of you. Avery smiles at you. <<elseif $phase is 1>> - The <<person2>><<if $pronoun is "m">>waiter<<else>>waitress<</if>> sets down a plate of pasta in front of Avery, and a fancy looking sandwich in front of you. + The <<person2>><<personsimple>> sets down a plate of pasta in front of Avery, and a fancy looking sandwich in front of you. <<elseif $phase is 2>> - The <<person2>><<if $pronoun is "m">>waiter<<else>>waitress<</if>> sets down a plate of steak in front of Avery, and the same dish in front of you. + The <<person2>><<personsimple>> sets down a plate of steak in front of Avery, and the same dish in front of you. <</if>> <br><br> -After delivering your meals, the <<person2>><<if $pronoun is "m">>waiter<<else>>waitress<</if>> sets down a bottle and two glasses in front of you. <<person2>><<He>> turns around and leaves with the tray<<if $exposed gte 2>> and a generous tip<</if>>. Avery begins idle chatter as the two of you eat. +After delivering your meals, the <<person2>><<personsimple>> sets down a bottle and two glasses in front of you. <<person2>><<He>> turns around and leaves with the tray<<if $exposed gte 2>> and a generous tip<</if>>. Avery begins idle chatter as the two of you eat. When the two of you finish eating, <<person1>><<he>> raises the bottle with a smile. "Champagne?" <br><br> diff --git a/game/overworld-town/special-kylar/christmas.twee b/game/overworld-town/special-kylar/christmas.twee new file mode 100644 index 0000000000000000000000000000000000000000..6c390e9c3007d5fb162c22b63717b80a810e4056 --- /dev/null +++ b/game/overworld-town/special-kylar/christmas.twee @@ -0,0 +1,315 @@ +:: Kylar Christmas +<<effects>><<set $outside to 0>> + +You rise from your covers, +<br> +And you creep to the door. +<br> +What wanders the twilight, +<br> +A creature from the moor? +<br> +"Ho ho HO!" says a voice from above. +<br> +"Ho," +<br> +"Ho," +<br> +"HO!" +<br><br> + +The last word it seems, +<br> +Was said in surprise, +<br> +And echoed to you, +<br> +From more than one side. +<br><br> + + +<<link [[Next|Kylar Christmas 2]]>><</link>> +<br> + +:: Kylar Christmas 2 +<<effects>> + +You run through the exit. +<br> +Along all the hallways. +<br> +You arrive at the tree. +<br> +Stood statue like always. +<br><br> + +"H-ho ho ho!" says the voice once again. +<br> +This time from the chimney. +<br> +"Ho," +<br> +"Ho," +<br> +"Hooooooo!" +<br><br> + +<<link [[Next|Kylar Christmas 3]]>><</link>> +<br> + +:: Kylar Christmas 3 +<<effects>> + +An avalanch of soot +<br> +Surges down from above. +<br> +Booted legs then follow. +<br> +Flailing arms wearing gloves. +<br><br> + +<<Hes>> stuck in the chimney +<br> +Just until, with a tear +<br> +<<His>> red dress rips apart, +<br> +Leaving <<him>> very bare. +<br><br> + +<<link [[Next|Kylar Christmas 4]]>><</link>> +<br> + + +:: Kylar Christmas 4 +<<effects>> + +<<He>> lands in the ashes. +<br> +And covers <<his>> bare chest. +<br> +Just a pair of +<<if $pronoun is "m">> + undies, +<<else>> + panties, +<</if>> +<br> +Covering all the rest. +<br><br> + +But this is not Santa. +<br> +Nor beast from the polar. +<br> +On the ground, lied sprawling. +<br> +Is a snow-covered Kylar! +<br><br> + +<<link [[Help Kylar cover|Kylar Christmas 5]]>><<set $phase to 0>><<npcincr Kylar love 5>><</link>><<gglove>> +<br> +<<link [[Leer|Kylar Christmas 5]]>><<set $phase to 1>><<npcincr Kylar lust 10>><<arousal 600>><</link>><<gglust>><<garousal>> +<br> + + +:: Kylar Christmas 5 +<<effects>> + +<<if $phase is 0>> + You tug down the red dress + <br> + And drop it at your feet. + <br> + <<He>> takes it, so grateful. + <br> + <<His>> face red like a beet. +<<else>> + You stand still and goggle. + <br> + As Kylar tries to stand. + <br> + One arm on <<his>> bare chest. + <br> + Reaching out with one hand. +<</if>> +<br><br> + +Now footsteps approach you. +<br> +Now Kylar, <<he>> watches +<br> +And looks out with horror. +<br> +Oh, of all the botches! +<br><br> + +<<link [[Next|Kylar Christmas 6]]>><</link>> +<br> + + +:: Kylar Christmas 6 +<<effects>> + +<<He>> dresses and so fast. +<br> +Just before they arrive. +<br> +The orphans, they heard you. +<br> +Now Kylar must survive. +<br><br> + +<<He>> runs to the window. +<br> +Then <<he>> pulls, and <<he>> tugs. +<br> +But locked tight by Bailey. +<br> +No escape from the thugs. +<br><br> + +<<link [[Next|Kylar Christmas 7]]>><</link>> +<br> + + +:: Kylar Christmas 7 +<<effects>> + +Kylar winces and faces +<br> +The shocked line of orphans. +<br> +<<His>> face one of horror. +<br> +No grip on <<his>> organs. +<br><br> + +The orphans, they goggle. +<br> +Then they cry out as one. +<br> +"It's Santa! It's Santa!" +<br> +Said just like a mantra. +<br><br> + +<<link [[Next|Kylar Christmas 8]]>><</link>> +<br> + + +:: Kylar Christmas 8 +<<effects>> +Kylar's role <<he>> accepts, +<br> +Thinking through these percepts, +<br> +Beware of your night gaze, +<br> +Shushing voices that raise. +<br><br> + +Wait with expectant eyes, +<br> +Much in need of surprise, +<br> +No santa would want to disappoint +<br> +Lover's eyes at knifepoint. +<br><br> + +<<link [[Next|Kylar Christmas 9]]>><</link>> +<br> + +:: Kylar Christmas 9 +<<effects>> + +Chinney bag Kylar lifts, +<br> +As they jump and they cheer. +<br> +Handing out sweet gifts +<br> +As more orphans appear. +<br><br> + +One by one get their share. +<br> +Chocolates and candies and cookies +<br> +and all handled with care. +<br> +"Thank you Santa!", some even say, +<br> +Going out on their way.<<ggghope>><<hope 10>> +<br><br> + +<<link [[Next|Kylar Christmas 10]]>><</link>> +<br> + +:: Kylar Christmas 10 +<<effects>> + +No to run, nor to hide +<br> +His gifts gone in yuletide. +<br> +"Sorry, they were for you." +<br> +Kylar shakes, naught to do. +<br><br> + +<span class="lewd">An idea quick to strike!</span> +<br> +Beneath skirt, hopes you like. +<br> +"Maybe Christmas doesn’t come from a store, +<br> +Maybe Christmas means a little bit more." +<br> +Something else then, of use, +<br> +Thing to lover seduce. +<br><br> + +<span class="lewd"><<His>> own +<<if $pronoun is "m">> + undies, +<<else>> + panties +<</if>> +it is!</span> +<br> +Removed with no restraint. +<br> +You grabbed gift with surprise, +<br> +Could yours be such a prize? +<br><br> + +<<link [[Next|Kylar Christmas 11]]>><</link>> +<br> + +:: Kylar Christmas 11 +<<effects>> + +Bailey's rage is <<his>> right. +<br> +Shouts as loud as <<he>> might, +<br> +Kylar runs kind of cool. +<br> +You do too, you're no fool. +<br><br> + +Now so safe and so far, +<br> +You think through the saga, +<br> +Of your Santa Kylar. +<br><br> + +<<link [[Next|Sleep]]>><<upperruined>><<lowerruined>><<endevent>><</link>> +<br> + diff --git a/game/overworld-town/special-kylar/main.twee b/game/overworld-town/special-kylar/main.twee index fd19c0c388be7a2c86fbaf4e19a9254d35bcca49..93631d31a33c2ec719ed7aee068fae67f230024b 100644 --- a/game/overworld-town/special-kylar/main.twee +++ b/game/overworld-town/special-kylar/main.twee @@ -4229,7 +4229,7 @@ The two of you continue walking. <br> :: Kylar Walk In The Park End 2 -<<set $outside to 1>><<effects>> +<<set $outside to 1>><<effects>><<set $kylarDaily.walkKiss to true>> <<if $phase is 1>> You feel like Kylar's hands are going to pierce through your shoulder, but you do your best to endure it. After an excessive amount of time, <<he>> releases you. <<if $submissive gte 1150>> @@ -4239,6 +4239,7 @@ The two of you continue walking. <<else>> "That was rude, you could have warned me first," you say. <</if>> + <br> Embarrassed, <<he>> nods. "Sorry." <<elseif $phase is 10>> You feel like Kylar's hands are going to pierce through your shoulder, but you do your best to endure it. After an excessive amount of time, <<he>> releases you. @@ -4249,11 +4250,11 @@ The two of you continue walking. <<else>> "That was rude, you could have warned me first," you say. <</if>> + <br> Embarrassed, <<he>> nods. "Sorry, I got... excited." <<He>> looks at you, <<his>> eyes shining. "That was my first kiss. And we have so many other firsts ahead of us." <<elseif $phase is 2>> You shake Kylar off of you. <<He>> looks stunned for a moment, before putting <<his>> face to <<his>> hands in shame. "I'm sorry, I don't know what came over me." <<else>> - <<set $kylarDaily.walkKiss to true>> <<npcincr Kylar love 1>><<npcincr Kylar lust 1>><<npcincr Kylar rage -5>> <<if $submissive gte 1150>> You slowly bring your face closer to <<his>>, and plant a kiss on <<his>> lips. diff --git a/game/overworld-town/special-leighton/main.twee b/game/overworld-town/special-leighton/main.twee index 540d522ab492901a9a95007fe17ef0fcf55c4d97..1f3e043e795174b55a956bf09202e3b884125120 100644 --- a/game/overworld-town/special-leighton/main.twee +++ b/game/overworld-town/special-leighton/main.twee @@ -443,7 +443,7 @@ Leighton smiles. "It would be an insult to my position if I didn't personally in "You're not gonna join in?" you say sitting next to the <<person>>. "Seems unfair that we get all the fun." <br><br> -Leighton pauses as the <<person>> pulls you into a kiss, then smiles. The headteacher <<if $NPCName[$NPCNameList.indexOf("Leighton")].pronoun is "m">>opens his fly, revealing his<<else>>lifts her skirt, revealing her<</if>> <<if $NPCName[$NPCNameList.indexOf("Leighton")].gender is "m">>erect $NPCName[$NPCNameList.indexOf("Leighton")].penisdesc.<<else>>pussy.<</if>> +Leighton pauses as the <<person>> pulls you into a kiss, then smiles. The headteacher <<if $NPCName[$NPCNameList.indexOf("Leighton")].pronoun is "m">>opens his fly, revealing his<<else>>lifts her skirt, revealing her<</if>> <<if $NPCName[$NPCNameList.indexOf("Leighton")].gender is "m">>erect <<print $NPCName[$NPCNameList.indexOf("Leighton")].penisdesc>>.<<else>>pussy.<</if>> <br><br> <<link [[Next|Leighton Private 2 Join Sex 2]]>><<set $sexstart to 1>><</link>> <</if>> diff --git a/game/overworld-town/special-robin/main.twee b/game/overworld-town/special-robin/main.twee index 6f1662d95d2172a21754d3cb48d2424718f56294..56525de4e3dca2e01d992c898608f5281c409f2f 100644 --- a/game/overworld-town/special-robin/main.twee +++ b/game/overworld-town/special-robin/main.twee @@ -119,14 +119,14 @@ Robin's eyes light up, and <<he>> rises to <<his>> feet. <<He>> points up. There :: Robin Unwrap Sex <<if $sexstart is 1>> -<<set $sexstart to 0>> -<<consensual>> -<<set $consensual to 1>> -<<neutral 1>> + <<set $sexstart to 0>> + <<consensual>> + <<set $consensual to 1>> + <<neutral 1>> -<<maninit>> -<<set $enemytrust += 500>><<npcexpose>><<set $speechdisable to 1>> -<<set $enemyarousalmax to 600>> + <<maninit>> + <<set $enemytrust += 500>><<npcexpose>><<set $speechdisable to 1>> + <<set $enemyarousalmax to 600>> <</if>> @@ -152,30 +152,30 @@ Robin's eyes light up, and <<he>> rises to <<his>> feet. <<He>> points up. There <<set $outside to 0>><<set $location to "home">><<schooleffects>><<effects>> <<if $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> + <<ejaculation>> -Robin clings to you and smiles. -<br><br> + Robin clings to you and smiles. + <br><br> <<elseif $enemyhealth lte 0>> -"Ow!" Robin says. <<Hes>> still smiling. -<br><br> + "Ow!" Robin says. <<Hes>> still smiling. + <br><br> <<elseif $finish is 1>> -Robin clings to you and smiles. -<br><br> + Robin clings to you and smiles. + <br><br> <</if>> <<He>> gazes into your eyes. "I love you." <<He>> kisses you again. - <<if $penisfucked is 1>> +<<if $penisfucked is 1>> "It feels so good to have you inside me." - <<elseif $vaginafucked is 1>> +<<elseif $vaginafucked is 1>> "It feels so good inside you." - <</if>> +<</if>> <<if $orgasmcurrent is 0 and not $worn.genitals.type.includes("chastity")>><<set _mouthful to 0>> <br> @@ -193,12 +193,12 @@ Robin clings to you and smiles. playful. "But you didn't cum yet," <<he>> whispers. <<His>> hands wander over your <<genitals>>. <<arousal 2500>> <<if $arousal gte $arousalmax>> - <<orgasm>>Robin looks pleased. + <<orgasm>>Robin looks pleased. <<else>> - After a few minutes <<he>> stops. "Sorry, I-I don't really know what I'm doing." - <br> - "It was good," you tell <<him>>. "Really good." - <br> + After a few minutes <<he>> stops. "Sorry, I-I don't really know what I'm doing." + <br> + "It was good," you tell <<him>>. "Really good." + <br> <</if>> <<else>><<set _mouthful to 1>> <<if $player.penisExist>> @@ -290,7 +290,9 @@ You take <<him>> by the hand and together walk to the kitchen. You pour <<him>> <<He>> frowns and smiles at the same time, and jumps to <<his>> feet. <br><br> -You walk to the High Street together. <<His>> pace picks up when the game shop comes into view. Five minutes later <<hes>> holding a large box in <<his>> arms, and you're £400 poorer. <<His>> face beams. +You walk to the High Street together. <<His>> pace picks up when the game shop comes into view. +Five minutes later <<hes>> holding a large box in <<his>> arms, and you're £400 poorer. <<His>> face beams. +<br><br> <<He>> runs ahead of you once back on Domus Street, eager to set it up. <br><br> @@ -325,7 +327,10 @@ You don't know if <<he>> would be capable of walking, so you take the bus. <<He> You don't need to wait long. A <<generate3>><<person3>><<person>> enters the foyer and immediately picks you out. "Please come with me," <<he>> says. <br><br> -You follow the doctor to <<his>> office, holding Robin's hand to make sure <<person1>><<he>> doesn't run off. Once inside and seated, the doctor examines Robin. <<He>> looks troubled. "I can't see the full extent of <<his>> injuries. You'll need to take your clothes off." Robin tenses and closes <<his>> eyes. You rest your hand on <<him>>. "It's okay," you say. "The doctor will help you." +You follow the doctor to <<his>> office, holding Robin's hand to make sure <<person1>><<he>> doesn't run off. +Once inside and seated, the doctor examines Robin. <<He>> looks troubled. +"I can't see the full extent of <<his>> injuries. You'll need to take your clothes off." Robin tenses and closes <<his>> eyes. +You rest your hand on <<him>>. "It's okay," you say. "The doctor will help you." <br><br> You stand to leave and give Robin some privacy, but <<person1>><<he>> grabs your arm. "Please stay," <<he>> says. You sit back down. @@ -342,7 +347,8 @@ The doctor turns away and types something into <<person3>><<his>> computer. Robi :: Robin Trauma Talk <<set $outside to 0>><<set $location to "home">><<effects>> -You talk with Robin. There are long periods of silence. You don't want to push <<him>>. <<He>> sometimes mentions the abuse <<hes>> endured. You hold <<him>> when <<he>> cries. +You talk with Robin. There are long periods of silence. You don't want to push <<him>>. +<<He>> sometimes mentions the abuse <<hes>> endured. You hold <<him>> when <<he>> cries. <br><br> <<robinoptions>> @@ -351,11 +357,13 @@ You talk with Robin. There are long periods of silence. You don't want to push < <<set $outside to 0>><<set $location to "town">><<effects>> <<if $pronoun is "f">> -You watch as Robin strips <<his>> clothes. <<He>> pulls down <<his>> skirt first, revealing white panties spotted with pink hearts. <<He>> pulls them down next, and makes no move to conceal <<his>> genitals from you. They're bruised and swollen still. -<br><br> + You watch as Robin strips <<his>> clothes. <<He>> pulls down <<his>> skirt first, revealing white panties spotted with pink hearts. + <<He>> pulls them down next, and makes no move to conceal <<his>> genitals from you. They're bruised and swollen still. + <br><br> <<else>> -You watch as Robin strips <<his>> clothes. <<He>> pulls down <<his>> shorts first, revealing white briefs. <<He>> pulls them down next, and makes no move to conceal <<his>> genitals from you. They're bruised and swollen still. + You watch as Robin strips <<his>> clothes. <<He>> pulls down <<his>> shorts first, revealing white briefs. + <<He>> pulls them down next, and makes no move to conceal <<his>> genitals from you. They're bruised and swollen still. <</if>> <<promiscuity1>> @@ -899,14 +907,14 @@ They argue for a while, the topic of conversation moving away from you. You're l :: Docks_Robin Fight <<if $fightstart is 1>> -<<set $fightstart to 0>> + <<set $fightstart to 0>> -<<neutral 1>> + <<neutral 1>> -<<maninit>><<set $enemyanger += 80>> -You jump onto the boat. "Good <<girl>>, now-" you interrupt <<him>> with a punch to <<his>> stupid face. -<<set $enemyhealth -= 20>> -<br><br> + <<maninit>><<set $enemyanger += 80>> + You jump onto the boat. "Good <<girl>>, now-" you interrupt <<him>> with a punch to <<his>> stupid face. + <<set $enemyhealth -= 20>> + <br><br> <</if>> <<effects>> @@ -930,35 +938,35 @@ You jump onto the boat. "Good <<girl>>, now-" you interrupt <<him>> with a punch <<set $outside to 1>><<set $location to "docks">><<effects>> <<if $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> + <<ejaculation>> -You seize the opportunity and lead Robin off the yacht before they notice you escaping. -<br><br> + You seize the opportunity and lead Robin off the yacht before they notice you escaping. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<link [[Next|Docks_Robin Rescue]]>><</link>> -<br> + <<link [[Next|Docks_Robin Rescue]]>><</link>> + <br> <<elseif $enemyhealth lte 0>> -The <<person1>><<person>> tumbles backwards off the boat. The others run over to help <<him>> back up. You seize the opportunity and lead Robin off the yacht before they notice you escaping. -<br><br> + The <<person1>><<person>> tumbles backwards off the boat. The others run over to help <<him>> back up. You seize the opportunity and lead Robin off the yacht before they notice you escaping. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<link [[Next|Docks_Robin Rescue]]>><</link>> -<br> + <<link [[Next|Docks_Robin Rescue]]>><</link>> + <br> <<else>> -You collapse in a heap. "Someone make room for the fresh one." -<br><br> + You collapse in a heap. "Someone make room for the fresh one." + <br><br> -<<link [[Next|Docks_Robin Swap]]>><<clotheson>><</link>> -<br> + <<link [[Next|Docks_Robin Swap]]>><<clotheson>><</link>> + <br> <</if>> @@ -1265,10 +1273,12 @@ You put the cash on the desk. Bailey snatches it, and reclines in <<his>> chair "Liar." <br><br> -"I know," the <<person3>><<person>> says. "We lower <<phim>> into the water. If there are no whales, we pull <<phim>> back onto the boat. If there are, we can eat whale." +"I know," the <<person3>><<person>> says. +"We lower <<phim>> into the water. If there are no whales, we pull <<phim>> back onto the boat. If there are, we can eat whale." <br><br> -"That's a fantastic idea," the <<person1>><<person>> says as <<he>> staggers to <<his>> feet. They tie a length of rope to your arms and release you from the table. They shove you to the edge of the yacht. +"That's a fantastic idea," the <<person1>><<person>> says as <<he>> staggers to <<his>> feet. +They tie a length of rope to your arms and release you from the table. They shove you to the edge of the yacht. <br><br> "I've tied the rope down," the <<person3>><<person>> says. @@ -1281,18 +1291,18 @@ The <<person1>><<person>> and <<person2>><<person>> lift you onto the railing. T <<if $voredisable is "f">> -You float to the surface and gasp for air. Something grabs your thighs and tugs you back down. You feel the rope snap. -<br><br> + You float to the surface and gasp for air. Something grabs your thighs and tugs you back down. You feel the rope snap. + <br><br> -<<link [[Next|Sea Vore]]>><<unbind>><<set $molestationstart to 1>><<set $sea to 40>><</link>> -<br> + <<link [[Next|Sea Vore]]>><<unbind>><<set $molestationstart to 1>><<set $sea to 40>><</link>> + <br> <<else>> -You feel the rope snap, and the boat speeds away from you. -<br><br> + You feel the rope snap, and the boat speeds away from you. + <br><br> -<<link [[Next|Sea]]>><<set $sea to 80>><</link>> -<br> + <<link [[Next|Sea]]>><<set $sea to 80>><</link>> + <br> <</if>> @@ -1327,11 +1337,11 @@ Robin</i>" "I read the note you left," you say. <<He>> tenses. <<if $submissive gte 1150>> -"I'm happy you wrote it." + "I'm happy you wrote it." <<elseif $submissive lte 850>> -"It was brave of you to write it." + "It was brave of you to write it." <<else>> -"It was very sweet." + "It was very sweet." <</if>> <br><br> @@ -1360,29 +1370,83 @@ You pull away again, this time turning aside so <<his>> kiss lands on your cheek :: Robin Stroke <<set $outside to 0>><<set $location to "home">><<effects>> -<<if $robinromance is 1>> -<<He>> makes a satisfied sound. "I feel so safe with you," <<he>> says. -<br><br> +<<set _robin to $NPCName[$NPCNameList.indexOf("Robin")]>> + +<<if $robinromance is 1 and random(0,100) gte _robin.lust>> + <<He>> makes a satisfied sound. "I feel so safe with you," <<he>> says with a sigh. + <br><br> <<else>> -You stroke <<his>> hair. "Stop," <<he>> says. "You'll make me fall asleep." You move your hand away. "I didn't mean actually stop." -<br><br> + You stroke <<his>> hair. + <<if _robin.trauma lt 20>> + It's soft. + <<elseif _robin.trauma gte 80>> + <<He>> hasn't been taking care of it. + <</if>> + <br><br> + + <<if _robin.trauma gte 80>> + <<He>> speaks up after a moment. "Stop," <<he>> says wearily. "You'll make me fall asleep." + <br><br> + + You move your hand away. + + <<else>> + <<He>> speaks up after a moment. "Stop," <<he>> says drowsily. "You'll make me fall asleep." + <br><br> + + <<if _robin.dom gte 20 and _robin.love gte 40>> + <<if _robin.dom gte 50>> + You begin to move your hand away, but Robin grabs it and pulls it back. "I didn't actually mean stop." + <<else>> + You begin to move your hand away, but Robin grabs it and moves it back. "Wait, I didn't mean actually stop", <<he>> says, blushing. + <</if>> + <<else>> + You move your hand away. "I didn't mean actually stop." + <</if>> + <</if>> + <br><br> + + <<if _robin.lust gte 80>> + After another minute or two of this, you realise that <<hes>> slowly begun pressing <<his>> head against your crotch. + <<if _robin.penis isnot "none" and _robin.penissize gte 2>> + As you look down, your eyes are drawn to a bulge forming in Robin's <<print ($pronoun is "m" ? "pants" : "skirt")>>. + <<if _robin.penissize is 3>> + It's big. + <<elseif _robin.penissize gte 4>> + It's huge. + <</if>> + <</if>> + <<if _robin.vagina isnot "none" or _robin.penissize lte 1>> + <<He>> also seems to be squeezing <<his>> legs together as <<he>> plays. + <</if>> + <<if $awareness gt 100>> + <<Hes>> clearly much more turned on by this than <<he>> realises. + <</if>> + <br><br> + + Somehow, Robin remains too engrossed in the game to notice any of this. + /* there's room here to expand this into a sex scene if you want. or a grope scene? */ + /* another possibility is just making robin cum right here at even higher lust. */ + <br><br> + + <</if>> <</if>> <<robinoptions>> :: Robin Kiss <<if $sexstart is 1>> -<<set $sexstart to 0>> -<<consensual>> -<<set $consensual to 1>> -<<neutral 1>> + <<set $sexstart to 0>> + <<consensual>> + <<set $consensual to 1>> + <<neutral 1>> -<<maninit>> -<<set $enemytrust += 200>><<npckiss>><<set $enemyarousalmax to 500>><<npcidlegenitals>> + <<maninit>> + <<set $enemytrust += 200>><<npckiss>><<set $enemyarousalmax to 500>><<npcidlegenitals>> -You lie down next to <<him>> and gently turn <<his>> head to face you. You kiss. <<He>> forgets about the game. -<<promiscuity1>> -<br><br> + You lie down next to <<him>> and gently turn <<his>> head to face you. You kiss. <<He>> forgets about the game. + <<promiscuity1>> + <br><br> <</if>> @@ -1415,31 +1479,32 @@ You are with Robin in <<his>> room. <<effects>> <<if $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> + <<ejaculation>> -Robin clings to you. <<Hes>> smiling and looks content. -<br><br> + Robin clings to you. <<Hes>> smiling and looks content. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> <<elseif $enemyhealth lte 0>> -"Not so rough!" Robin says. -<br><br> + "Not so rough!" Robin says. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> <<elseif $finish is 1>> -"I hope we continue later," Robin says, smiling. -<br><br> + "I hope we continue later," Robin says, smiling. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> <</if>> <<npc Robin>><<person1>> <br><br> + <<robinoptions>> :: Canteen Lunch Intervene @@ -1455,7 +1520,9 @@ You walk over to Robin. You stand between Robin and the delinquents. <</if>> <br><br> -One of them, a <<generatey1>><<person1>><<person>>, laughs. "Aww, is this your <<girlfriend>>? How cute." <<His>> fist clenches. "Looks like I get to show both of you your place." + +One of them, a <<generatey1>><<person1>><<person>>, laughs. "Aww, is this your <<girlfriend>>? How cute." +<<His>> fist clenches. "Looks like I get to show both of you your place." <br><br> <<link [[Next|Canteen Lunch Fight]]>><<set $fightstart to 1>><</link>> @@ -1467,7 +1534,7 @@ One of them, a <<generatey1>><<person1>><<person>>, laughs. "Aww, is this your < <<npc Robin>><<person1>> <<if $cool lte 40>> -You sit down next to Robin. The other students at the table pick up their food and leave, afraid of being seen with you. Robin doesn't care. "Hey," <<he>> says. + You sit down next to Robin. The other students at the table pick up their food and leave, afraid of being seen with you. Robin doesn't care. "Hey," <<he>> says. <<else>> <<if $rng gte 91>> @@ -1479,55 +1546,58 @@ You sit down next to Robin. The other students at the table pick up their food a <<bodywriting_exposure_check>> <<if $pain gte 40>> -<<He>> looks concerned. "What's wrong?" <<He>> puts <<his>> arms around you. "It's okay, I think I have a tissue." You feel a bit better. -<<set $pain -= 20>> -<<elseif _skin_array.includes("forehead") and $skin.forehead.pen isnot "tattoo" and $skin.forehead.pen isnot "brand" and $skin.forehead.pen isnot "magic" or -_skin_array.includes("left_cheek") and $skin.left_cheek.pen isnot "tattoo" and $skin.left_cheek.pen isnot "brand" and $skin.left_cheek.pen isnot "magic" or -_skin_array.includes("right_cheek") and $skin.right_cheek.pen isnot "tattoo" and $skin.right_cheek.pen isnot "brand" and $skin.right_cheek.pen isnot "magic">> + <<He>> looks concerned. "What's wrong?" <<He>> puts <<his>> arms around you. "It's okay, I think I have a tissue." You feel a bit better. + <<set $pain -= 20>> +<<elseif _skin_array.includes("forehead") and !["tattoo", "brand", "magic"].contains($skin.forehead.pen) or +_skin_array.includes("left_cheek") and !["tattoo", "brand", "magic"].contains($skin.left_cheek.pen) or +_skin_array.includes("right_cheek") and !["tattoo", "brand", "magic"].contains($skin.right_cheek.pen)>> <<He>> frowns and reaches for a tissue. "You have ink on your face." Before you can respond, <<hes>> gently dabbing your skin. - <<if $skin.forehead.pen is "pen" or $skin.forehead.pen is "lipstick" or $skin.forehead.pen is "mud">> + + <<if ["pen", "lipstick", "mud"].contains($skin.forehead.pen)>> <<bodywriting_clear forehead>> <</if>> - <<if $skin.left_cheek.pen is "pen" or $skin.left_cheek.pen is "lipstick" or $skin.left_cheek.pen is "mud">> + <<if ["pen", "lipstick", "mud"].contains($skin.left_cheek.pen)>> <<bodywriting_clear left_cheek>> <</if>> - <<if $skin.right_cheek.pen is "pen" or $skin.right_cheek.pen is "lipstick" or $skin.right_cheek.pen is "mud">> + <<if ["pen", "lipstick", "mud"].contains($skin.right_cheek.pen)>> <<bodywriting_clear right_cheek>> <</if>> <br><br> - <<if $skin.forehead.pen is "marker" and _skin_array.includes("forehead") or $skin.left_cheek.pen is "marker" and _skin_array.includes("left_cheek") and $skin.right_cheek.pen is "marker" and _skin_array.includes("right_cheek")>> + <<if $skin.forehead.pen is "marker" and _skin_array.includes("forehead") or + $skin.left_cheek.pen is "marker" and _skin_array.includes("left_cheek") or + $skin.right_cheek.pen is "marker" and _skin_array.includes("right_cheek")>> "Sorry," <<he>> says after a moment. "I can't get it all." <<else>> "All clean," <<he>> says. <</if>> <<elseif $rng gte 91>> -"How was maths? I wish I was better at it." + "How was maths? I wish I was better at it." <<elseif $rng gte 81>> -"I'm having a good day today." + "I'm having a good day today." <<elseif $rng gte 71>> -"I heard the funniest joke." + "I heard the funniest joke." <<elseif $rng gte 61>> <<if $stress gte ($stressmax / 5) * 3>> - "Are you okay? You look a bit stressed out." + "Are you okay? You look a bit stressed out." <<else>> - "I hope you're not pushing yourself too hard." + "I hope you're not pushing yourself too hard." <</if>> <<elseif $rng gte 51>> <<if $arousal gte ($arousalmax / 5) * 3>> - "Your face is red. Are you too warm?" + "Your face is red. Are you too warm?" <<else>> - "I always hope we get to eat together." + "I always hope we get to eat together." <</if>> <<elseif $rng gte 41>> -"I'm not really hungry today." + "I'm not really hungry today." <<elseif $rng gte 31>> -"The food here's better than at the orphanage." + "The food here's better than at the orphanage." <<elseif $rng gte 21>> -<<He>> looks happy. "An older <<girl>> said I was <<if $pronoun is "m">>handsome<<else>>pretty<</if>>!" + <<He>> looks happy. "An older <<girl>> said I was <<if $pronoun is "m">>handsome<<else>>pretty<</if>>!" <<elseif $rng gte 11>> -"Thank you for sitting with me." + "Thank you for sitting with me." <<else>> -"I wish the other teachers were more like Doren." + "I wish the other teachers were more like Doren." <</if>> <br><br> @@ -1556,23 +1626,24 @@ _skin_array.includes("right_cheek") and $skin.right_cheek.pen isnot "tattoo" and <br><br> <<if $NPCName[$NPCNameList.indexOf("Kylar")].state is "active">> - Kylar watches from across the canteen. - <<gksuspicion>><<npcincr Kylar rage 1>> - <br><br> + Kylar watches from across the canteen. + <<gksuspicion>><<npcincr Kylar rage 1>> + <br><br> <</if>> <<endevent>> <<link [[Next|Canteen]]>><</link>> <br> <<elseif $NPCName[$NPCNameList.indexOf("Kylar")].state is "active" and $NPCName[$NPCNameList.indexOf("Kylar")].love gte 60 and random(1, 100) gte 50>> -<<endevent>><<npc Kylar>><<person1>> -You chat with Robin while eating, until you are interrupted by someone forcing themselves between you. Kylar squeezes onto the seat, looks at you and smiles. "You d-didn't see me over there," <<he>> says. "It's okay. I don't mind moving." -<br><br> + <<endevent>><<npc Kylar>><<person1>> + You chat with Robin while eating, until you are interrupted by someone forcing themselves between you. + Kylar squeezes onto the seat, looks at you and smiles. "You d-didn't see me over there," <<he>> says. "It's okay. I don't mind moving." + <br><br> -<<link [[Tell Kylar to go away|Kylar Canteen Away]]>><<npcincr Kylar love -1>><<npcincr Kylar rage 5>><</link>><<llove>><<ggksuspicion>> -<br> -<<link [[Let Kylar stay|Kylar Canteen Stay]]>><<npcincr Kylar love 1>><<npcincr Kylar rage -1>><</link>><<glove>><<lksuspicion>> -<br> + <<link [[Tell Kylar to go away|Kylar Canteen Away]]>><<npcincr Kylar love -1>><<npcincr Kylar rage 5>><</link>><<llove>><<ggksuspicion>> + <br> + <<link [[Let Kylar stay|Kylar Canteen Stay]]>><<npcincr Kylar love 1>><<npcincr Kylar rage -1>><</link>><<glove>><<lksuspicion>> + <br> <<elseif $robinromance is 1 and $NPCName[$NPCNameList.indexOf("Robin")].trauma lte 10>> <<link [[Eat|Canteen Lunch Robin End]]>><</link>> @@ -1580,10 +1651,14 @@ You chat with Robin while eating, until you are interrupted by someone forcing t <<link [[Tease under the table|Canteen Lunch Robin Tease 1]]>><<npcincr Robin lust 1>><</link>><<promiscuous1>><<glust>> <br> <<elseif $sydneyromance is 1 and _sydney_location is "canteen" and random(1, 100) gte 50>> - You chat with Robin while eating. You notice Sydney stand up from the corner of the canteen, gathering <<nnpc_his "Sydney">> books and speedwalking to the library. <<nnpc_He "Sydney">> stops by your table to smooch you on the cheek, nearly dropping one of <<nnpc_his "Sydney">> books from leaning down. <<arousal 50>><<garousal>> + You chat with Robin while eating. + You notice Sydney stand up from the corner of the canteen, gathering <<nnpc_his "Sydney">> books and speedwalking to the library. + <<nnpc_He "Sydney">> stops by your table to smooch you on the cheek, nearly dropping one of <<nnpc_his "Sydney">> books from leaning down. + <<arousal 50>><<garousal>> <br><br> <<if $robinnote is 1 and $robinromance isnot 1>> - Robin stops in the middle of <<his>> sentence. "Sydney's a good fit for you. I'm happy for you." <<Hes>> smiling, but you catch a brief hint of sadness in <<his>> voice. + Robin stops in the middle of <<his>> sentence. + "Sydney's a good fit for you. I'm happy for you." <<Hes>> smiling, but you catch a brief hint of sadness in <<his>> voice. You chat with <<him>> while eating, and you try to stay off the topic of Sydney. <<elseif $robinromance is 1>> Robin stops in the middle of <<his>> sentence and stares at Sydney blankly, who's already rushing to the library again. @@ -1594,7 +1669,8 @@ You chat with Robin while eating, until you are interrupted by someone forcing t <</if>> You chat with <<him>> while eating, and you try to stay off the topic of Sydney. <<else>> - Robin stops in the middle of <<his>> sentence, and gives you a teasing nudge. "Someone's got a <<nnpc_girlfriend "Sydney">>! Sydney's a good fit for you. I'm happy for you." + Robin stops in the middle of <<his>> sentence, and gives you a teasing nudge. + "Someone's got a <<nnpc_girlfriend "Sydney">>! Sydney's a good fit for you. I'm happy for you." You have a pleasant chat about Sydney while eating. <</if>> "I'm going to wait in the classroom," <<he>> says when you're done. "I don't like being late." <<He>> hugs you. @@ -1617,9 +1693,9 @@ You chat with Robin while eating, until you are interrupted by someone forcing t <br><br> <<if $NPCName[$NPCNameList.indexOf("Kylar")].state is "active">> - Kylar watches from across the canteen. - <<gksuspicion>><<npcincr Kylar rage 1>> - <br><br> + Kylar watches from across the canteen. + <<gksuspicion>><<npcincr Kylar rage 1>> + <br><br> <</if>> <<endevent>> @@ -1669,9 +1745,9 @@ You chat with Robin while eating, until you are interrupted by someone forcing t <br><br> <<if $NPCName[$NPCNameList.indexOf("Kylar")].state is "active">> - Kylar watches from across the canteen. - <<gksuspicion>><<npcincr Kylar rage 1>> - <br><br> + Kylar watches from across the canteen. + <<gksuspicion>><<npcincr Kylar rage 1>> + <br><br> <</if>> <<endevent>> @@ -1682,7 +1758,8 @@ You chat with Robin while eating, until you are interrupted by someone forcing t :: Canteen Lunch Robin Tease 1 <<effects>> -You slip your arm under the table and brush your hand up and down Robin's thigh, occasionally giving it a light squeeze. Robin's eyes shut as <<he>> tries to hold in any embarrassing sounds. Even so, the canteen is busy, and someone will notice sooner or later. <<promiscuity1>> +You slip your arm under the table and brush your hand up and down Robin's thigh, occasionally giving it a light squeeze. +Robin's eyes shut as <<he>> tries to hold in any embarrassing sounds. Even so, the canteen is busy, and someone will notice sooner or later. <<promiscuity1>> <br><br> A soft moan escapes Robin's lips, prompting <<him>> to place a hand over <<his>> mouth. You bring your hand back up onto the table and give <<him>> a smug smile. <br><br> @@ -1704,13 +1781,15 @@ A soft moan escapes Robin's lips, prompting <<him>> to place a hand over <<his>> :: Canteen Lunch Robin End Embarrassed <<effects>> -You return your focus to your food. Robin's cheeks remain flushed. "I'm going to wait in the classroom," <<he>> says after finishing <<his>> food. "I-" <<He>> interrupts <<himself>>, and hugs you a bit closer than usual. <<He>> leaves without another word. +You return your focus to your food. Robin's cheeks remain flushed. +"I'm going to wait in the classroom," <<he>> says after finishing <<his>> food. +"I-" <<He>> interrupts <<himself>>, and hugs you a bit closer than usual. <<He>> leaves without another word. <br><br> - <<if $NPCName[$NPCNameList.indexOf("Kylar")].state is "active">> +<<if $NPCName[$NPCNameList.indexOf("Kylar")].state is "active">> Kylar watches from across the canteen. <<ggksuspicion>><<npcincr Kylar rage 3>> <br><br> - <</if>> +<</if>> <<endevent>> <<link [[Next|Canteen]]>><</link>> <br> @@ -1732,21 +1811,25 @@ Your hand moves closer to <<his>> <<if $NPCList[0].penis isnot "none">>penis<<el <<if $NPCName[$NPCNameList.indexOf("Robin")].lust gte 20>> <<if $NPCName[$NPCNameList.indexOf("Robin")].lust gte 60>> - Robin forgets to check if anyone is watching, and pulls you into a kiss before running <<his>> hands all over you. <<His>> breathing is erratic, but <<he>> manages to whisper "Please," into your ear. + Robin forgets to check if anyone is watching, and pulls you into a kiss before running <<his>> hands all over you. + <<His>> breathing is erratic, but <<he>> manages to whisper "Please," into your ear. <<else>> - Robin looks around the canteen, making sure that no one's watching. <<He>> gives you a tiny nod, biting <<his>> lip in anticipation and clenching <<his>> hands into fists with suspense. + Robin looks around the canteen, making sure that no one's watching. + <<He>> gives you a tiny nod, biting <<his>> lip in anticipation and clenching <<his>> hands into fists with suspense. <</if>> - <br><br> - Ever so slowly, you press your hand onto Robin's groin, eliciting a cute, suppressed gasp from <<him>>. - <<if $NPCList[0].penis isnot "none">> - You touch <<his>> shaft through <<his>> clothes, and stroke. - <<else>> - You press and rub <<his>> vagina through <<his>> clothes. - <</if>> - <<He>> covers <<his>> mouth again. You pick up the pace, rubbing and massaging <<his>> nether region faster and faster. Robin covers the rest of <<his>> face to conceal <<his>> growing blush. + <br><br> + Ever so slowly, you press your hand onto Robin's groin, eliciting a cute, suppressed gasp from <<him>>. + <<if $NPCList[0].penis isnot "none">> + You touch <<his>> shaft through <<his>> clothes, and stroke. + <<else>> + You press and rub <<his>> vagina through <<his>> clothes. + <</if>> + <<He>> covers <<his>> mouth again. You pick up the pace, rubbing and massaging <<his>> nether region faster and faster. + Robin covers the rest of <<his>> face to conceal <<his>> growing blush. <br><br> <<generatey2>><<person2>> - Just as you're about to go all in, a student carrying a textbook sits across from Robin. <<He>> seems oblivious to both of you, and opens <<his>> book to read. Robin freezes and stares at you. + Just as you're about to go all in, a student carrying a textbook sits across from Robin. + <<He>> seems oblivious to both of you, and opens <<his>> book to read. Robin freezes and stares at you. <br><br> <<person1>> <<if $promiscuity gte 35>> @@ -1757,10 +1840,11 @@ Your hand moves closer to <<his>> <<if $NPCList[0].penis isnot "none">>penis<<el <br> <<else>> - "W-wait!" Robin says. "We can't do that here!" <<Hes>> a bit louder than <<he>> hoped, and you both get a few odd looks from nearby students. <<He>> looks at the floor in embarrassment. "I'm sorry," <<he>> whispers. "I just don't feel like doing that. Maybe another day." + "W-wait!" Robin says. "We can't do that here!" + <<Hes>> a bit louder than <<he>> hoped, and you both get a few odd looks from nearby students. + <<He>> looks at the floor in embarrassment. "I'm sorry," <<he>> whispers. "I just don't feel like doing that. Maybe another day." <br><br> - <<link [[Eat lunch|Canteen Lunch Robin End Embarrassed]]>><</link>> <</if>> <br> @@ -1772,13 +1856,15 @@ Your hand moves closer to <<his>> <<if $NPCList[0].penis isnot "none">>penis<<el You bring your hand back up, not wanting to risk getting caught in the act. Robin breathes out, then laughs. "That was close." <br><br> -You continue eating. Robin's cheeks are flushed for the remainder of lunch. "I'm going to wait in the classroom," <<he>> says when finished. "I-I," <<He>> interrupts <<himself>>, then hugs you, a bit closer than normal. <<He>> leaves without another word. +You continue eating. Robin's cheeks are flushed for the remainder of lunch. +"I'm going to wait in the classroom," <<he>> says when finished. +"I-I," <<He>> interrupts <<himself>>, then hugs you, a bit closer than normal. <<He>> leaves without another word. <br><br> - <<if $NPCName[$NPCNameList.indexOf("Kylar")].state is "active">> +<<if $NPCName[$NPCNameList.indexOf("Kylar")].state is "active">> Kylar watches from across the canteen. <<ggksuspicion>><<npcincr Kylar rage 3>> <br><br> - <</if>> +<</if>> <<endevent>> <<link [[Next|Canteen]]>><</link>> <br> @@ -1790,13 +1876,16 @@ You continue eating. Robin's cheeks are flushed for the remainder of lunch. "I'm You look Robin in the eyes and, keeping your voice to a tiny whisper, ask if <<he>> wants to keep going. <<He>> inhales in suspense, and nods. <br><br> -You pick up the pace once more, rubbing <<him>> with newfound dedication. Robin grips the table with one hand, and slams the other over <<his>> mouth. You can hear <<his>> moans despite <<his>> effort to conceal them. <<His>> blush deepens, and a bead of sweat trails down <<his>> face. +You pick up the pace once more, rubbing <<him>> with newfound dedication. +Robin grips the table with one hand, and slams the other over <<his>> mouth. You can hear <<his>> moans despite <<his>> effort to conceal them. +<<His>> blush deepens, and a bead of sweat trails down <<his>> face. <br><br> <<person2>> The student looks at Robin, and concern spreads across <<his>> face. "Are you alright?" <<he>> asks. "Do you need the nurse?" <br><br> <<person1>> -Robin shakes <<his>> head, <<his>> hand still clamped over <<his>> mouth. The student doesn't look convinced, so Robin moves <<his>> hand away. "I'll be-" <<he>> attempts, but a gasp erupts instead. <<He>> struggles on. "I-I'll b-be fine. Th-Thank you f-for asking." +Robin shakes <<his>> head, <<his>> hand still clamped over <<his>> mouth. The student doesn't look convinced, so Robin moves <<his>> hand away. +"I'll be-" <<he>> attempts, but a gasp erupts instead. <<He>> struggles on. "I-I'll b-be fine. Th-Thank you f-for asking." <br><br> Robin covers <<his>> mouth again, <<his>> grip on the table tightening. The student shrugs, and returns to <<person2>><<his>> book. <br><br> @@ -1810,13 +1899,16 @@ Robin covers <<his>> mouth again, <<his>> grip on the table tightening. The stud :: Canteen Lunch Robin Tease 4 <<effects>> -You keep rubbing Robin, knowing <<he>> won't be able to keep it back much longer. Robin interrupts though, standing and grasping your hand. <<Hes>> trembling. The student opposite gives <<him>> another confused look. Robin tugs your arm, and you rise from your seat. +You keep rubbing Robin, knowing <<he>> won't be able to keep it back much longer. +Robin interrupts though, standing and grasping your hand. <<Hes>> trembling. The student opposite gives <<him>> another confused look. +Robin tugs your arm, and you rise from your seat. <br><br> "N-not here," <<he>> whispers. <br><br> -<<He>> leads you down the hallway, and into the toilets. It's empty. Robin leads you into one of the stalls and locks the door. <<He>> turns and kisses you, almost pushing you over. <<He>> tugs off <<his>> shirt. +<<He>> leads you down the hallway, and into the toilets. It's empty. Robin leads you into one of the stalls and locks the door. +<<He>> turns and kisses you, almost pushing you over. <<He>> tugs off <<his>> shirt. <br><br> <<link [[Next|Canteen Robin Sex]]>><<set $sexstart to 1>><</link>> @@ -1825,14 +1917,15 @@ You keep rubbing Robin, knowing <<he>> won't be able to keep it back much longer :: Canteen Robin Sex <<if $sexstart is 1>> -<<set $sexstart to 0>> -<<consensual>> -<<set $consensual to 1>> -<<neutral 1>> -<<maninit>> -<<set $enemytrust += 500>><<npcexpose>><<set $speechdisable to 1>> -<<set $enemyarousalmax to 600>> + <<set $sexstart to 0>> + <<consensual>> + <<set $consensual to 1>> + <<neutral 1>> + <<maninit>> + <<set $enemytrust += 500>><<npcexpose>><<set $speechdisable to 1>> + <<set $enemyarousalmax to 600>> <</if>> + <<set $enemyanger to 0>> <<effects>> <<effectsman>><<man>> @@ -1848,6 +1941,7 @@ You keep rubbing Robin, knowing <<he>> won't be able to keep it back much longer <<else>> <span id="next"><<link [[Next|Canteen Robin Sex]]>><</link>></span><<nexttext>> <</if>> + :: Canteen Robin Sex Finish <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> <<if $enemyarousal gte $enemyarousalmax>> @@ -1867,7 +1961,7 @@ You keep rubbing Robin, knowing <<he>> won't be able to keep it back much longer "It feels so good to have you inside me." <<elseif $vaginafucked is 1>> "It feels so good inside you." - <</if>> +<</if>> Robin leans on to you, panting, beads of sweat dripping down <<his>> naked body. "I can't believe we did this here." <<if $orgasmcurrent is 0 and not $worn.genitals.type.includes("chastity")>><<set _mouthful to 0>> <br> @@ -1881,22 +1975,25 @@ Robin leans on to you, panting, beads of sweat dripping down <<his>> naked body. disappointed. "But you didn't finish yet," Robin says. <<His>> hands wander over your <<genitals>>, and a tenacious look crosses <<his>> face. <br><br> <<arousal 2500>> <<if $arousal gte $arousalmax>> - <<orgasm>>Robin looks content with <<his>> work and <<he>> kisses your cheek. + <<orgasm>>Robin looks content with <<his>> work and <<he>> kisses your cheek. <<else>> - After a few minutes, <<he>> gives up with a sigh. "I'm sorry." Robin says, frowning. - <br><br> - "You're fine, Robin," you tell <<him>>. "You were wonderful." Robin perks up a little at the words. - <br><br> + After a few minutes, <<he>> gives up with a sigh. "I'm sorry." Robin says, frowning. + <br><br> + "You're fine, Robin," you tell <<him>>. "You were wonderful." Robin perks up a little at the words. + <br><br> <</if>> <<else>> <<if $player.penisExist>> <<set $penisuse to "othermouth">><<set $penisstate to 0>> <</if>> - playful. "But you didn't cum yet," Robin smiles. "Sit down on the seat." You do as <<he>> says. <<He>> gets down on <<his>> knees, and pushes <<himself>> between your legs. + playful. "But you didn't cum yet," Robin smiles. "Sit down on the seat." You do as <<he>> says. + <<He>> gets down on <<his>> knees, and pushes <<himself>> between your legs. <br><br> + <<if $player.gender is "h">> - <<He>> kisses the tip of your <<penis>>, and runs <<his>> tongue along your length. Meanwhile, <<he>> plunges a finger into your quim, and begins pumping in and out. <<He>> gazes up at you. + <<He>> kisses the tip of your <<penis>>, and runs <<his>> tongue along your length. + Meanwhile, <<he>> plunges a finger into your quim, and begins pumping in and out. <<He>> gazes up at you. <<elseif $player.penisExist>> <<He>> kisses the tip of your <<penis>>, and runs <<his>> tongue along your length, flicking and licking as <<he>> does. <<else>> @@ -1904,28 +2001,43 @@ Robin leans on to you, panting, beads of sweat dripping down <<his>> naked body. <</if>> <<His>> eyes gaze up at you, begging you to climax. <br> + <<arousal 4000>> <<if $arousal gte $arousalmax>> <<orgasm>> <<else>> <br> <<if $player.gender is "h">> - Robin pulls back, and reaches for you with <<his>> free hand. <<He>> rubs your slick cock up and down, while still sliding <<his>> finger in and out of your pussy. "I'm not giving up," <<he>> says, picking up the pace. - <br><<set $arousal to 10000>> + Robin pulls back, and reaches for you with <<his>> free hand. + <<He>> rubs your slick cock up and down, while still sliding <<his>> finger in and out of your pussy. + "I'm not giving up," <<he>> says, picking up the pace. + <br> + + <<set $arousal to 10000>> <<if $arousal gte $arousalmax>> <<orgasm>> <</if>> <<elseif $player.penisExist>> - Robin pulls back, and reaches for you with <<his>> free hand. <<He>> rubs your slick cock up and down. "I'm not giving up," <<he>> says, picking up the pace. - <br><<set $arousal to 10000>> + Robin pulls back, and reaches for you with <<his>> free hand. + <<He>> rubs your slick cock up and down. "I'm not giving up," <<he>> says, picking up the pace. + <br> + + <<set $arousal to 10000>> <<if $arousal gte $arousalmax>> <<orgasm>> <</if>> <<else>> - Robin pulls back, and reaches for you. <<He>> rubs your clit, <<his>> eyes focused. "I'm not giving up," <<he>> says, picking up the pace. <<He>> leans forward, and you feel the warmth of <<his>> tongue press against your labia once more. <<He>> moves it around, in an odd but sure pattern. <<Hes>> spelling <<his>> name with <<his>> tongue, each letter slower and firmer than the previous. + Robin pulls back, and reaches for you. <<He>> rubs your clit, <<his>> eyes focused. + "I'm not giving up," <<he>> says, picking up the pace. + <<He>> leans forward, and you feel the warmth of <<his>> tongue press against your labia once more. + <<He>> moves it around, in an odd but sure pattern. + <<Hes>> spelling <<his>> name with <<his>> tongue, each letter slower and firmer than the previous. <br><br> + <<He>> completes the "N", drags <<his>> tongue up to your clit, and finishes with a flick. - <br><<set $arousal to 10000>> + <br> + + <<set $arousal to 10000>> <<if $arousal gte $arousalmax>> <<orgasm>> <</if>> @@ -1934,12 +2046,15 @@ Robin leans on to you, panting, beads of sweat dripping down <<his>> naked body. Robin pulls away, a loving smile lighting up <<his>> face. <</if>> <br><br> - You both get dressed and exit the stall. Robin walks to the sink and washes <<his>> hands clean, before looking at the clock on the wall. "I better get to class," <<he>> says. <<He>> kisses your cheek as <<he>> passes. + You both get dressed and exit the stall. Robin walks to the sink and washes <<his>> hands clean, before looking at the clock on the wall. + "I better get to class," <<he>> says. <<He>> kisses your cheek as <<he>> passes. <<else>> <br><br> - You hold each other for a minute, basking in each other's warmth. "I'd better get to class," Robin says, an apologetic look on <<his>> face. You get dressed and leave the stall. Robin washes <<his>> hands, and kisses your cheek on the way out. + You hold each other for a minute, basking in each other's warmth. "I'd better get to class," Robin says, an apologetic look on <<his>> face. + You get dressed and leave the stall. Robin washes <<his>> hands, and kisses your cheek on the way out. <</if>> <br><br> + <<clotheson>> <<endcombat>> @@ -1949,19 +2064,18 @@ Robin leans on to you, panting, beads of sweat dripping down <<his>> naked body. - :: Canteen Lunch Fight <<if $fightstart is 1>> -<<set $fightstart to 0>> + <<set $fightstart to 0>> -<<neutral 1>> + <<neutral 1>> -<<maninit>> -<<set $enemytrust -= 100>> -<<set $enemyhealthmax -= 100>> -<<set $enemyhealth -= 100>> -<<set $enemyanger += 150>> -<<npcidlegenitals>> + <<maninit>> + <<set $enemytrust -= 100>> + <<set $enemyhealthmax -= 100>> + <<set $enemyhealth -= 100>> + <<set $enemyanger += 150>> + <<npcidlegenitals>> <</if>> @@ -1988,52 +2102,58 @@ Robin leans on to you, panting, beads of sweat dripping down <<his>> naked body. <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> <<if $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> + <<ejaculation>> -<<His>> friends laugh, "Did this little shit just make you cum?" -<br><br> + <<His>> friends laugh, "Did this little shit just make you cum?" + <br><br> -"N-no," <<he>> says, <<his>> face turning red. The other delinquents find it so amusing they forget about Robin. -<br><br> + "N-no," <<he>> says, <<his>> face turning red. The other delinquents find it so amusing they forget about Robin. + <br><br> -<<endevent>><<npc Robin>><<person1>> + <<endevent>><<npc Robin>><<person1>> -Robin's arms wrap around you from behind. "You saved me," <<he>> says. "My hero." You feel your face flush too. You sit and chat with Robin while you eat. "I'm going to wait in the classroom." <<He>> says when you finish. "I don't like being late." -<<ltrauma>><<lstress>><<trauma -2>><<stress -4>><<pass 20>> -<br><br> + Robin's arms wrap around you from behind. "You saved me," <<he>> says. "My hero." You feel your face flush too. + You sit and chat with Robin while you eat. "I'm going to wait in the classroom." <<He>> says when you finish. "I don't like being late." + <<ltrauma>><<lstress>><<trauma -2>><<stress -4>><<pass 20>> + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> <<elseif $enemyhealth lte 0>> -"Ow, that hurt," <<he>> says. "I think I need the nurse." <<His>> friends follow and tease <<him>> as <<he>> leaves the canteen. <<tearful>> you stand tall and triumphant. -<<ltrauma>><<lstress>><<gcool>><<trauma -6>><<stress -12>><<status 1>> -<br><br> + "Ow, that hurt," <<he>> says. "I think I need the nurse." <<His>> friends follow and tease <<him>> as <<he>> leaves the canteen. + <<tearful>> you stand tall and triumphant. + <<ltrauma>><<lstress>><<gcool>><<trauma -6>><<stress -12>><<status 1>> + <br><br> -<<endevent>><<npc Robin>><<person1>> + <<endevent>><<npc Robin>><<person1>> -Robin's arms wrap around you from behind. "You saved me," <<he>> says. "My hero." You feel your face flush. You sit and chat with Robin while you eat. "I'm going to wait in the classroom." <<He>> says when you finish. "I don't like being late." -<<ltrauma>><<lstress>><<trauma -2>><<stress -4>><<pass 20>> -<br><br> + Robin's arms wrap around you from behind. "You saved me," <<he>> says. "My hero." You feel your face flush. + You sit and chat with Robin while you eat. "I'm going to wait in the classroom." <<He>> says when you finish. "I don't like being late." + <<ltrauma>><<lstress>><<trauma -2>><<stress -4>><<pass 20>> + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> <<else>> -You fall to the ground, too hurt to continue fighting. "That's right," the <<person1>><<person>> says. "Get on the ground like the bitch you are." <<He>> and <<his>> friends laugh their way from the canteen. -<<lcool>><<status -10>> -<br><br> + You fall to the ground, too hurt to continue fighting. + "That's right," the <<person1>><<person>> says. "Get on the ground like the bitch you are." <<He>> and <<his>> friends laugh their way from the canteen. + <<lcool>><<status -10>> + <br><br> -<<endevent>><<npc Robin>><<person1>> + <<endevent>><<npc Robin>><<person1>> -Robin's arms wrap around you from behind. "You saved me," <<he>> says. "My hero." You feel your face flush. You sit and chat with Robin while you eat. "I'm going to wait in the classroom." <<He>> says when you finish. "I don't like being late." -<<ltrauma>><<lstress>><<trauma -2>><<stress -4>><<pass 20>> -<br><br> + Robin's arms wrap around you from behind. + "You saved me," <<he>> says. "My hero." You feel your face flush. You sit and chat with Robin while you eat. + "I'm going to wait in the classroom." <<He>> says when you finish. "I don't like being late." + <<ltrauma>><<lstress>><<trauma -2>><<stress -4>><<pass 20>> + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> <</if>> <br><br> @@ -2118,14 +2238,14 @@ Robin's arms wrap around you from behind. "You saved me," <<he>> says. "My hero. :: Robin Room Bed Sex <<if $sexstart is 1>> -<<set $sexstart to 0>> -<<consensual>> -<<set $consensual to 1>> -<<neutral 1>> + <<set $sexstart to 0>> + <<consensual>> + <<set $consensual to 1>> + <<neutral 1>> -<<maninit>> -<<set $enemytrust += 500>><<npcexpose>><<set $speechdisable to 1>> -<<set $enemyarousalmax to 600>> + <<maninit>> + <<set $enemytrust += 500>><<npcexpose>><<set $speechdisable to 1>> + <<set $enemyarousalmax to 600>> <</if>> @@ -2151,32 +2271,33 @@ Robin's arms wrap around you from behind. "You saved me," <<he>> says. "My hero. <<set $outside to 0>><<set $location to "home">><<schooleffects>><<effects>> <<if $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> + <<ejaculation>> -Robin clings to you and smiles. -<br><br> + Robin clings to you and smiles. + <br><br> <<elseif $enemyhealth lte 0>> -"Ow!" Robin says. <<Hes>> still smiling. -<br><br> + "Ow!" Robin says. <<Hes>> still smiling. + <br><br> <<elseif $finish is 1>> -Robin clings to you and smiles. -<br><br> + Robin clings to you and smiles. + <br><br> <</if>> <<He>> gazes into your eyes. "I love you." <<He>> kisses you again. - <<if $penisfucked is 1>> +<<if $penisfucked is 1>> "It feels so good to have you inside me." - <<elseif $vaginafucked is 1>> +<<elseif $vaginafucked is 1>> "It feels so good inside you." - <</if>> +<</if>> -<<if $orgasmcurrent is 0 and not $worn.genitals.type.includes("chastity")>><<set _mouthful to 0>> +<<if $orgasmcurrent is 0 and not $worn.genitals.type.includes("chastity")>> + <<set _mouthful to 0>> <br> Robin looks <<if $NPCName[$NPCNameList.indexOf("Robin")].dom lte 11>> @@ -2192,14 +2313,15 @@ Robin clings to you and smiles. playful. "But you didn't cum yet," <<he>> whispers. <<His>> hands wander over your <<genitals>>. <<arousal 2500>> <<if $arousal gte $arousalmax>> - <<orgasm>>Robin looks pleased. + <<orgasm>>Robin looks pleased. <<else>> - After a few minutes <<he>> stops. "Sorry, I-I don't really know what I'm doing." - <br> - "It was good," you tell <<him>>. "Really good." - <br> + After a few minutes <<he>> stops. "Sorry, I-I don't really know what I'm doing." + <br> + "It was good," you tell <<him>>. "Really good." + <br> <</if>> - <<else>><<set _mouthful to 1>> + <<else>> + <<set _mouthful to 1>> <<if $player.penisExist>> <<set $penisuse to "othermouth">><<set $penisstate to "othermouth">><<takeNPCVirginity "Robin" "oral">> <</if>> @@ -2208,14 +2330,17 @@ Robin clings to you and smiles. Robin disappears under the cover. A moment later you feel <<his>> tongue licking your <<genitals>>. <br> <<arousal 4000>> - <<if $arousal gte $arousalmax>><<orgasm>> + <<if $arousal gte $arousalmax>> + <<orgasm>> <<else>> <br> After a while of this, Robin crawls back up. "I'm not giving up," <<he>> breathes. <<He>> nips your ear. "That isn't happening." <br> Robin disappears back under the cover and goes at it with renewed determination. <<if $player.penisExist>><<takeNPCVirginity "Robin" "oral">><</if>> <<set $arousal to 10000>> - <<if $arousal gte $arousalmax>><<orgasm>><</if>> + <<if $arousal gte $arousalmax>> + <<orgasm>> + <</if>> <</if>> <</if>> <<He>> kisses you again. "I love you." @@ -2243,24 +2368,25 @@ You lie with Robin, feeling <<him>> breathe beside you. After a time, you leave <</if>> <<if $robinroomentered is 1>> <<if $trauma gte ($traumamax / 7) * 3 or $stress gte ($stressmax / 7) * 5>> - You desperately cling to Robin with your entire body and almost wind up pulling <<him>> down to the bed. Robin seems to be somewhat startled by this. + You desperately cling to Robin with your entire body and almost wind up pulling <<him>> down to the bed. Robin seems to be somewhat startled by this. <<elseif $trauma gte ($traumamax / 7) * 2 or $stress gte ($stressmax / 7) * 3>> - You cling to Robin's shoulders and bury your head in <<his>> back. Robin doesn't seem to know what to make of this. + You cling to Robin's shoulders and bury your head in <<his>> back. Robin doesn't seem to know what to make of this. <<elseif $trauma gte ($traumamax / 7) * 1 or $stress gte ($stressmax / 7) * 1>> - You wrap your arms around Robin from behind and rest your head against <<his>> shoulder. Robin doesn't seem to know what to make of this. + You wrap your arms around Robin from behind and rest your head against <<his>> shoulder. Robin doesn't seem to know what to make of this. <<else>> - You happily take Robin in your arms. <<He>> doesn't seem to know what to make of this. + You happily take Robin in your arms. <<He>> doesn't seem to know what to make of this. <</if>> <<else>> <<if $trauma gte ($traumamax / 7) * 3 or $stress gte ($stressmax / 7) * 5>> - You lose control of yourself and throw yourself into Robin's chest, tackling <<him>> to the bed and clinging tightly to <<his>> body. Robin seems stunned by this. - <<set $robinstunned to 1>> + You lose control of yourself and throw yourself into Robin's chest, tackling <<him>> to the bed and clinging tightly to <<his>> body. + Robin seems stunned by this. + <<set $robinstunned to 1>> <<elseif $trauma gte ($traumamax / 7) * 2 or $stress gte ($stressmax / 7) * 3>> - You cling tight to Robin's chest, nearly tackling <<him>> to the bed. Robin seems to be somewhat startled by this. + You cling tight to Robin's chest, nearly tackling <<him>> to the bed. Robin seems to be somewhat startled by this. <<elseif $trauma gte ($traumamax / 7) * 1 or $stress gte ($stressmax / 7) * 1>> - You wrap your arms around Robin's shoulders and bury your head in <<his>> neck. Robin doesn't seem to know what to make of this. + You wrap your arms around Robin's shoulders and bury your head in <<his>> neck. Robin doesn't seem to know what to make of this. <<else>> - You happily saunter over to Robin and take <<him>> in your arms. <<He>> doesn't seem to know what to make of this. + You happily saunter over to Robin and take <<him>> in your arms. <<He>> doesn't seem to know what to make of this. <</if>> <</if>> <br><br> @@ -2271,100 +2397,132 @@ You lie with Robin, feeling <<him>> breathe beside you. After a time, you leave <<set $outside to 0>><<set $location to "home">><<effects>> <<if $NPCName[$NPCNameList.indexOf("Robin")].love gte 80 and $robinhugbreak gte 1>> -You cling tight to Robin and nearly tackle <<him>> to the bed as you whimper and cry loudly. -<br><br> + You cling tight to Robin and nearly tackle <<him>> to the bed as you whimper and cry loudly. + <br><br> -"Wh-what's wrong!?" Robin yells, horrified at your behaviour. "Oh no, something happened again, didn't it?" <<He>> hugs you back, doing <<his>> best to give comfort as you unload everything that happened to you. -<br><br> + "Wh-what's wrong!?" Robin yells, horrified at your behaviour. + "Oh no, something happened again, didn't it?" <<He>> hugs you back, doing <<his>> best to give comfort as you unload everything that happened to you. + <br><br> -"This is really bad!" Robin declares with a serious face. "We need to tell somebody!" Robin has a far-off expression as <<he>> tries to soothe you. -<br><br><br><br> -<<robinhug>> + "This is really bad!" Robin declares with a serious face. "We need to tell somebody!" + Robin has a far-off expression as <<he>> tries to soothe you. + <br><br><br><br> + <<robinhug>> -<<elseif $NPCName[$NPCNameList.indexOf("Robin")].love gte 80>><<set $robinhugbreak to 1>> -You cling tight to Robin and nearly tackle <<him>> to the bed as you whimper and cry loudly. -<br><br> -"Wh-what's wrong!?" Robin yells, horrified at your behaviour. <<He>> wraps <<his>> arms around you, looking like <<he>> is on the verge of a panic attack as <<he>> tries to figure out how to respond to your distress. -<br><br> -"Th-that's awful!" Robin responds with a horrified face. "This... we've got to tell somebody!" <<he>> says, stroking your back as <<he>> gives more soothing promises about how to deal with the problem. -<br><br> -<<robinhug>> +<<elseif $NPCName[$NPCNameList.indexOf("Robin")].love gte 80>> + <<set $robinhugbreak to 1>> + You cling tight to Robin and nearly tackle <<him>> to the bed as you whimper and cry loudly. + <br><br> + + "Wh-what's wrong!?" Robin yells, horrified at your behaviour. + <<He>> wraps <<his>> arms around you, looking like <<he>> is on the verge of a panic attack as <<he>> tries to figure out how to respond to your distress. + <br><br> + + "Th-that's awful!" Robin responds with a horrified face. "This... we've got to tell somebody!" + <<he>> says, stroking your back as <<he>> gives more soothing promises about how to deal with the problem. + <br><br> + <<robinhug>> <<elseif $NPCName[$NPCNameList.indexOf("Robin")].love gte 40 and $robinhugbreak gte 1>> -You cling tight to Robin and nearly tackle <<him>> to the bed as you whimper and cry loudly. -<br><br> -"Wh-what's wrong!?" Robin yells, horrified at your behaviour. "Not again! What happened!?" <<He>> hugs you back, doing <<his>> best to comfort you as you unload everything that happened to you. -<br><br> -"This is really bad!" Robin declares, looking serious. "We really do need to tell somebody!" Robin has a far-off expression as <<he>> tries to soothe you. -<br><br> -<<robinhug>> + You cling tight to Robin and nearly tackle <<him>> to the bed as you whimper and cry loudly. + <br><br> -<<elseif $NPCName[$NPCNameList.indexOf("Robin")].love gte 40 or $robinbaileyhelp gte 1>> -<<set $robinhugbreak to 1>> -You cling tight to Robin and nearly tackle <<him>> to the bed as you whimper and cry loudly. -<br><br> -"Wh-what's wrong!?" Robin yells, horrified at your behaviour. <<He>> wraps <<his>> arms around you and looks uneasily about the room, but <<he>> allows you to continue. <<He>> tries to soothe you as you manage to talk past your tears and unload everything that has happened to you. -<br><br> -"Th-that's awful!" Robin responds with a horrified face. "This... we've got to tell somebody!" <<He>> tries to struggle out of your grip, but you cling tight to <<him>>. Eventually, <<he>> relents and stays until you finish crying. -<br><br> -<<robinhug>> + "Wh-what's wrong!?" Robin yells, horrified at your behaviour. "Not again! What happened!?" + <<He>> hugs you back, doing <<his>> best to comfort you as you unload everything that happened to you. + <br><br> + + "This is really bad!" Robin declares, looking serious. "We really do need to tell somebody!" + Robin has a far-off expression as <<he>> tries to soothe you. + <br><br> + <<robinhug>> + +<<elseif $NPCName[$NPCNameList.indexOf("Robin")].love gte 40 or $robinbaileyhelp gte 1>> + <<set $robinhugbreak to 1>> + You cling tight to Robin and nearly tackle <<him>> to the bed as you whimper and cry loudly. + <br><br> + + "Wh-what's wrong!?" Robin yells, horrified at your behaviour. + <<He>> wraps <<his>> arms around you and looks uneasily about the room, but <<he>> allows you to continue. + <<He>> tries to soothe you as you manage to talk past your tears and unload everything that has happened to you. + <br><br> + + "Th-that's awful!" Robin responds with a horrified face. "This... we've got to tell somebody!" + <<He>> tries to struggle out of your grip, but you cling tight to <<him>>. Eventually, <<he>> relents and stays until you finish crying. + <br><br> + <<robinhug>> <<else>> -<<set $robinhugbreak to 1>> -You cling tight to Robin and nearly tackle <<him>> to the bed as you whimper and cry. -<br><br> -"Wh-what's wrong!?" Robin yells, horrified at your behaviour. You are ashamed to show this kind of face to <<him>>, but you have been pushed too far. There is no putting you back together at this point. -<br><br> -Robin struggles out of your grip and stands up. "W-wait here! I'll go get someone to help!" With that, <<he>> runs from the room, leaving you feeling abandoned. You trusted <<him>> to show your vulnerable side, and now <<hes>> probably about to bring Bailey in here to see you in this state. -<br><br> -<<link [[Stay|Robin Hug Break 2]]>><<set $phase to 1>><<trauma 6>><<stress 6>><<npcincr Robin love 1>><</link>><<gtrauma>><<gstress>><<glove>> -<br> -<<link [[Go to your room (0:05)|Robin Hug Break 2]]>><<pass 5>><<set $phase to 2>><<npcincr Robin love -1>><</link>><<llove>> -<br> -<<link [[Run away|Robin Hug Break 2]]>><<set $phase to 0>><<npcincr Robin love -1>><</link>><<llove>> -<br> + <<set $robinhugbreak to 1>> + You cling tight to Robin and nearly tackle <<him>> to the bed as you whimper and cry. + <br><br> + + "Wh-what's wrong!?" Robin yells, horrified at your behaviour. + You are ashamed to show this kind of face to <<him>>, but you have been pushed too far. There is no putting you back together at this point. + <br><br> + + Robin struggles out of your grip and stands up. "W-wait here! I'll go get someone to help!" + With that, <<he>> runs from the room, leaving you feeling abandoned. + You trusted <<him>> to show your vulnerable side, and now <<hes>> probably about to bring Bailey in here to see you in this state. + <br><br> + + <<link [[Stay|Robin Hug Break 2]]>><<set $phase to 1>><<trauma 6>><<stress 6>><<npcincr Robin love 1>><</link>><<gtrauma>><<gstress>><<glove>> + <br> + <<link [[Go to your room (0:05)|Robin Hug Break 2]]>><<pass 5>><<set $phase to 2>><<npcincr Robin love -1>><</link>><<llove>> + <br> + <<link [[Run away|Robin Hug Break 2]]>><<set $phase to 0>><<npcincr Robin love -1>><</link>><<llove>> + <br> <</if>> :: Robin Hug Break 2 <<set $outside to 0>><<set $location to "home">><<effects>> <<if $phase is 0>> -You can't be in here when Robin comes back with Bailey. You manage to gather yourself, pick yourself up and dash full-long right out of the building. -<br><br> -<<endevent>> -<<link [[Next|Domus Street]]>><</link>> -<br> + You can't be in here when Robin comes back with Bailey. You manage to gather yourself, pick yourself up and dash full-long right out of the building. + <br><br> + <<endevent>> + <<link [[Next|Domus Street]]>><</link>> + <br> -<<elseif $phase is 1>><<set $robinbaileyhelp to 1>> -You curl up into a fetal position and place your hands over your face as you continue to sob. A few minutes later you hear someone come stomping in, and you are pulled up to a sitting position by your hair. -<br><br> -<<endevent>><<npc Bailey>><<person1>> -"What the hell is your problem?" Bailey growls at you. <<He>> looks you over with a harsh gaze and then slaps you across the face. "Shut up. You got this waif worried enough to bother me. I'm not wasting my time with you." -<br><br> -"Stop bothering me with useless crap," Bailey says to Robin as <<he>> barges from the room. -<br><br> -<<endevent>><<npc Robin>><<person1>> -Robin rushes over to you and holds your arm. <<He>> stares out the door in disbelief as you gather yourself. You are disgusted by the whole scenario and run back to your room. -<br><br> -<<endevent>> -<<link [[Next|Bedroom]]>><</link>> -<br> +<<elseif $phase is 1>> + <<set $robinbaileyhelp to 1>> + You curl up into a fetal position and place your hands over your face as you continue to sob. + A few minutes later you hear someone come stomping in, and you are pulled up to a sitting position by your hair. + <br><br> + + <<npc Bailey>><<person2>> + "What the hell is your problem?" Bailey growls at you. <<He>> looks you over with a harsh gaze and then slaps you across the face. + "Shut up. You got this waif worried enough to bother me. I'm not wasting my time with you." + <br><br> + + "Stop bothering me with useless crap," Bailey says to Robin as <<he>> barges from the room. + <br><br> + + <<person1>> + Robin rushes over to you and holds your arm. <<He>> stares out the door in disbelief as you gather yourself. + You are disgusted by the whole scenario and run back to your room. + <br><br> + + <<endevent>> + <<link [[Next|Bedroom]]>><</link>> + <br> <<else>> -You can't be in here when Robin comes back with Bailey. You gather yourself and make it back to your own room. By the time you get there your frantic tears have calmed to light crying. -<br><br> -Around five minutes later you hear the sound of someone knocking on your door. It's Robin. <<He>> asks if you are in there, but does not wait for an answer and opens the door on <<his>> own. -<br><br> -"There you are!" <<he>> says, running in. "Bailey yelled at me when you weren't in my room. What happened?" -<br><br> -<<link [[Complain (0:05)|Robin Hug Break 3]]>><<set $phase to 0>><<pass 5>><<stress -12>><</link>><<lstress>> -<br> -<<link [[Blame (0:05)|Robin Hug Break 3]]>><<set $phase to 1>><<pass 5>><<npcincr Robin love -1>><<npcincr Robin dom -1>><<trauma -6>><<stress -12>><</link>><<ltrauma>><<llstress>><<llove>><<ldom>> -<br> -<<link [[Persecute (0:05)|Robin Hug Break 3]]>><<set $phase to 2>><<pass 5>><<npcincr Robin love -1>><<npcincr Robin dom -1>><<stress -12>><<trauma -12>><</link>><<lltrauma>><<llstress>><<llove>><<ldom>> -<br> -<<link [[Dismiss|Robin Hug Break 3]]>><<set $phase to 3>><</link>> -<br> + You can't be in here when Robin comes back with Bailey. You gather yourself and make it back to your own room. + By the time you get there your frantic tears have calmed to light crying. + <br><br> + Around five minutes later you hear the sound of someone knocking on your door. It's Robin. + <<He>> asks if you are in there, but does not wait for an answer and opens the door on <<his>> own. + <br><br> + "There you are!" <<he>> says, running in. "Bailey yelled at me when you weren't in my room. What happened?" + <br><br> + <<link [[Complain (0:05)|Robin Hug Break 3]]>><<set $phase to 0>><<pass 5>><<stress -12>><</link>><<lstress>> + <br> + <<link [[Blame (0:05)|Robin Hug Break 3]]>><<set $phase to 1>><<pass 5>><<npcincr Robin love -1>><<npcincr Robin dom -1>><<trauma -6>><<stress -12>><</link>><<ltrauma>><<llstress>><<llove>><<ldom>> + <br> + <<link [[Persecute (0:05)|Robin Hug Break 3]]>><<set $phase to 2>><<pass 5>><<npcincr Robin love -1>><<npcincr Robin dom -1>><<stress -12>><<trauma -12>><</link>><<lltrauma>><<llstress>><<llove>><<ldom>> + <br> + <<link [[Dismiss|Robin Hug Break 3]]>><<set $phase to 3>><</link>> + <br> <</if>> @@ -2372,46 +2530,64 @@ Around five minutes later you hear the sound of someone knocking on your door. I <<set $outside to 0>><<set $location to "home">><<effects>> <<if $phase is 0>> -You give Robin some complaints about the things that have been happening to you, but you don't trust <<him>> enough to give the full details about what's really been going on so you are vague about the more significant stuff. <<He>> doesn't really seem to know how to respond, and winds up ducking out of your room before you even manage to get all the way through your list of issues. -<br><br> -<<endevent>> -<<link [[Next|Bedroom]]>><</link>> -<br> + You give Robin some complaints about the things that have been happening to you, + but you don't trust <<him>> enough to give the full details about what's really been going on so you are vague about the more significant stuff. + <<He>> doesn't really seem to know how to respond, and winds up ducking out of your room before you even manage to get all the way through your list of issues. + <br><br> + + <<endevent>> + <<link [[Next|Bedroom]]>><</link>> + <br> <<elseif $phase is 1>><<set $robinbaileyhelp to 1>> -You bite back at <<him>> and tell <<him>> it's <<his>> fault for going to Bailey in the first place, and dismiss <<his>> concerns. You eventually send <<him>> out of your room, still embarrassed about such an episode. -<br><br> -<<endevent>> -<<link [[Next|Bedroom]]>><</link>> -<br> + You bite back at <<him>> and tell <<him>> it's <<his>> fault for going to Bailey in the first place, and dismiss <<his>> concerns. + You eventually send <<him>> out of your room, still embarrassed about such an episode. + <br><br> + + <<endevent>> + <<link [[Next|Bedroom]]>><</link>> + <br> <<elseif $phase is 2>><<set $robinbaileyhelp to 1>> -You lay into Robin for leaving in the middle of your breakdown and getting Bailey. You yell at <<him>> and chew <<him>> out, redirecting all of the unrealised frustrations from your previous breakdown into anger at Robin for doing something so stupid. <<He>> leaves your room in tears. -<br><br> -<<endevent>> -<<link [[Next|Bedroom]]>><</link>> -<br> + You lay into Robin for leaving in the middle of your breakdown and getting Bailey. + You yell at <<him>> and chew <<him>> out, + redirecting all of the unrealised frustrations from your previous breakdown into anger at Robin for doing something so stupid. + <<He>> leaves your room in tears. + <br><br> + + <<endevent>> + <<link [[Next|Bedroom]]>><</link>> + <br> <<else>> -You shrug off Robin and refuse to speak to <<him>>. Eventually, <<he>> takes the hint and leaves. -<br><br> -<<endevent>> -<<link [[Next|Bedroom]]>><</link>> -<br> + You shrug off Robin and refuse to speak to <<him>>. Eventually, <<he>> takes the hint and leaves. + <br><br> + + <<endevent>> + <<link [[Next|Bedroom]]>><</link>> + <br> <</if>> :: Robin Hug Cry <<set $outside to 0>><<set $location to "home">><<effects>> -<<if $NPCName[$NPCNameList.indexOf("Robin")].love gte 80 and $robincrycount gte 5>> - <<if $robincrycount is undefined>><<set $robincrycount to 1>><<else>><<set $robincrycount += 1>><</if>> -Robin seems to already realise something is wrong and wraps <<his>> arms around you, <<he>> doesn't ask what's going on, but just quietly soothes you with gentle words as <<he>> rubs <<his>> hands on your back. As <<he>> tries to soothe you, you regain the ability to talk past your tears and begin unloading all of the troubles that have happened to you recently. -<<elseif $NPCName[$NPCNameList.indexOf("Robin")].love gte 60 and $robincrycount gte 1>> - <<if $robincrycount is undefined>><<set $robincrycount to 1>><<else>><<set $robincrycount += 1>><</if>> -Robin seems stunned for a moment, but soon adapts to the situation and wraps <<his>> arms around you. -<<elseif $NPCName[$NPCNameList.indexOf("Robin")].love gte 40>> -Robin seems stunned for a moment when <<he>> notices you crying. After a little while <<he>> gently but uneasily hugs you back and lets you stay like that until you finish crying. -<<elseif $NPCName[$NPCNameList.indexOf("Robin")].love gte 20>> -"Umm…" Robin responds as <<he>> sees you cry on <<his>> shoulder. <<He>> seems uncertain about how to respond, but <<he>> strokes your hair. +<<set _robinlove to $NPCName[$NPCNameList.indexOf("Robin")].love>> +<<if $robincrycount is undefined>> + <<set $robincrycount to 0>> +<</if>> + +<<if _robinlove gte 80 and $robincrycount gte 5>> + <<set $robincrycount += 1>> + Robin seems to already realise something is wrong and wraps <<his>> arms around you, + <<he>> doesn't ask what's going on, but just quietly soothes you with gentle words as <<he>> rubs <<his>> hands on your back. + As <<he>> tries to soothe you, you regain the ability to talk past your tears and begin unloading all of the troubles that have happened to you recently. +<<elseif _robinlove gte 60 and $robincrycount gte 1>> + <<set $robincrycount += 1>> + Robin seems stunned for a moment, but soon adapts to the situation and wraps <<his>> arms around you. +<<elseif _robinlove gte 40>> + Robin seems stunned for a moment when <<he>> notices you crying. + After a little while <<he>> gently but uneasily hugs you back and lets you stay like that until you finish crying. +<<elseif _robinlove gte 20>> + "Umm…" Robin responds as <<he>> sees you cry on <<his>> shoulder. <<He>> seems uncertain about how to respond, but <<he>> strokes your hair. <<else>> -You cry silently into Robin's shoulder. <<He>> seems uncomfortable with this, but doesn't stop you. + You cry silently into Robin's shoulder. <<He>> seems uncomfortable with this, but doesn't stop you. <</if>> <br><br> @@ -2421,14 +2597,15 @@ You cry silently into Robin's shoulder. <<He>> seems uncomfortable with this, bu <<set $outside to 0>><<set $location to "home">><<effects>> <<if $trauma gte ($traumamax / 7) * 3>> -You complain about some of your recent worries. Robin listens to what you have to say but you hold back on some of the more significant happenings. Despite that, just talking about the little things is enough to make life feel a little easier to deal with. -<br><br> -<<robinhug>> + You complain about some of your recent worries. Robin listens to what you have to say but you hold back on some of the more significant happenings. + Despite that, just talking about the little things is enough to make life feel a little easier to deal with. + <br><br> + <<robinhug>> <<else>> -You complain about some of your recent worries. Robin listens to what you have to say and the experience makes it all a little easier to deal with. -<br><br> -<<robinhug>> + You complain about some of your recent worries. Robin listens to what you have to say and the experience makes it all a little easier to deal with. + <br><br> + <<robinhug>> <</if>> @@ -2442,7 +2619,8 @@ You snuggle a bit with Robin and <<he>> seems to be happy enough to wrap <<his>> :: Robin Complain <<set $outside to 0>><<set $location to "home">><<effects>> -You are feeling irritated about your day, so you begin unloading your emotional stress onto Robin, venting and complaining about the little things that bug you. You leave the bigger things off the table though, you don't really want Robin knowing about that stuff. Robin listens politely. +You are feeling irritated about your day, so you begin unloading your emotional stress onto Robin, venting and complaining about the little things that bug you. +You leave the bigger things off the table though, you don't really want Robin knowing about that stuff. Robin listens politely. <br><br> <<robinoptions>> @@ -2450,24 +2628,28 @@ You are feeling irritated about your day, so you begin unloading your emotional <<set $outside to 0>><<set $location to "home">><<effects>> <<if $robinpolicebody is 1>> -You are feeling irritated at Robin, so you tell <<him>> what you think about having to do what you did with those police. You don't give any details, but you make it clear you are sore about it and don't want to have to do that again. <<He>> hangs <<his>> head and nods. -<br><br> -<<robinoptions>> + You are feeling irritated at Robin, so you tell <<him>> what you think about having to do what you did with those police. + You don't give any details, but you make it clear you are sore about it and don't want to have to do that again. <<He>> hangs <<his>> head and nods. + <br><br> + <<robinoptions>> <<elseif $robinpolicepay is 1>> -You are feeling irritated at Robin, so you tell <<him>> what you think about having to pay for <<him>> not having a permit. <<He>> hangs <<his>> head and nods. -<br><br> -<<robinoptions>> + You are feeling irritated at Robin, so you tell <<him>> what you think about having to pay for <<him>> not having a permit. + <<He>> hangs <<his>> head and nods. + <br><br> + <<robinoptions>> <<elseif $rng gte 51>> -You are feeling irritated at Robin, so you tell <<him>> what you think about <<his>> taste in video games. It's kinda petty, but it makes you feel better. <<Hes>> annoyed, but doesn't argue back. -<br><br> -<<robinoptions>> + You are feeling irritated at Robin, so you tell <<him>> what you think about <<his>> taste in video games. + It's kinda petty, but it makes you feel better. <<Hes>> annoyed, but doesn't argue back. + <br><br> + <<robinoptions>> <<else>> -You are feeling irritated at Robin, so you tell <<him>> what you think about <<him>> being so naive about things. You kinda make fun of <<him>> a little. <<Hes>> annoyed, but doesn't argue back. -<br><br> -<<robinoptions>> + You are feeling irritated at Robin, so you tell <<him>> what you think about <<him>> being so naive about things. + You kinda make fun of <<him>> a little. <<Hes>> annoyed, but doesn't argue back. + <br><br> + <<robinoptions>> <</if>> @@ -2475,14 +2657,19 @@ You are feeling irritated at Robin, so you tell <<him>> what you think about <<h <<set $outside to 0>><<set $location to "home">><<effects>> <<if $robinpolicebody is 1>> -You said you were fine with it earlier, but ever since you paid off those cops with your body you have been winding tighter and tighter. You begin unloading on Robin and chewing <<him>> out about not having a permit, and when you are done with that you begin finding every little fault of <<his>> you can possibly dig at <<him>> about. <<He>> doesn't complain, but is in tears by the end of it. -<br><br> -<<robinoptions>> + You said you were fine with it earlier, but ever since you paid off those cops with your body you have been winding tighter and tighter. + You begin unloading on Robin and chewing <<him>> out about not having a permit, + and when you are done with that you begin finding every little fault of <<his>> you can possibly dig at <<him>> about. + <<He>> doesn't complain, but is in tears by the end of it. + <br><br> + <<robinoptions>> <<else>> -You've been through a lot. You know none of this is Robin's fault exactly, but you go after <<him>> anyway and chew <<him>> out about every little thing you can think of. <<He>> tears up, but doesn't complain. -<br><br> -<<robinoptions>> + You've been through a lot. + You know none of this is Robin's fault exactly, but you go after <<him>> anyway and chew <<him>> out about every little thing you can think of. + <<He>> tears up, but doesn't complain. + <br><br> + <<robinoptions>> <</if>> @@ -2491,32 +2678,33 @@ You've been through a lot. You know none of this is Robin's fault exactly, but y <<if $robinpaid isnot 1>> <<if $robinmoney lte 200>> - "W-well," <<he>> looks away. "Sorry, but I need it." <<He>> looks ashamed. - <br><br> + "W-well," <<he>> looks away. "Sorry, but I need it." <<He>> looks ashamed. + <br><br> <<if $submissive gte 500>> - <<link [[Demand the money|Robin Money Demand]]>><<set $submissive -= 1>><<set $robindebt += 1>><<npcincr Robin love -1>><<npcincr Robin dom -1>><</link>><<llove>><<ldom>> - <br> + <<link [[Demand the money|Robin Money Demand]]>><<set $submissive -= 1>><<set $robindebt += 1>><<npcincr Robin love -1>><<npcincr Robin dom -1>><</link>><<llove>><<ldom>> + <br> <</if>> - <<robinoptions>> + <<robinoptions>> <<else>> - "Sure," <<he>> says, reaching into <<his>> drawer, pulling out the money then counting it out for you. You make <<moneyGain 100>>. - <<set $robinmoney -= 100>> - <br><br> + "Sure," <<he>> says, reaching into <<his>> drawer, pulling out the money then counting it out for you. You make <<moneyGain 100>>. + <<set $robinmoney -= 100>> + <br><br> - <<robinoptions>> + <<robinoptions>> <</if>> <<else>> <<if $robinmoney lte 0>> - "I... I'm sorry, is Bailey really asking for a lot? I'm sorry, I've given you everything I earned already." - <br><br> + "I... I'm sorry, is Bailey really asking for a lot? I'm sorry, I've given you everything I earned already." + <br><br> - <<robinoptions>> + <<robinoptions>> <<else>> - "Y-yeah, okay," <<he>> says. <<He>> gets out the money and hands it to you. <<He>> looks a little torn. "I-I guess Bailey's demands are a little harsh, huh? I-I'm sorry you have to pay for me too." You make £<<print $robinmoney>>. - <br><br> - <<set $money += ($robinmoney * 100)>><<set $robinmoney to 0>> - <<robinoptions>> + "Y-yeah, okay," <<he>> says. <<He>> gets out the money and hands it to you. <<He>> looks a little torn. + "I-I guess Bailey's demands are a little harsh, huh? I-I'm sorry you have to pay for me too." You make £<<print $robinmoney>>. + <br><br> + <<set $money += ($robinmoney * 100)>><<set $robinmoney to 0>> + <<robinoptions>> <</if>> <</if>> @@ -2525,9 +2713,9 @@ You've been through a lot. You know none of this is Robin's fault exactly, but y You demand Robin give you the money, <<if $submissive lte 850>> -playing all sorts of emotionally manipulative games with <<him>>. + playing all sorts of emotionally manipulative games with <<him>>. <<else>> -and you even threaten <<him>>. + and you even threaten <<him>>. <</if>> Finally, <<he>> relents and gives you the money. You make £<<print $robinmoney>>. <<He>> looks worried. @@ -2539,25 +2727,30 @@ Finally, <<he>> relents and gives you the money. You make £<<print $robinmoney> :: Robin Cat <<set $outside to 0>><<set $location to "home">><<effects>> -<<if $robincat isnot 1>><<set $robincat to 1>> +<<if $robincat isnot 1>> + <<set $robincat to 1>> -You rest your head on Robin's shoulder and rub. <<He>> looks at you and smiles. <<if $transformationParts.cat.ears isnot "hidden">>"Where did you get this anyway?" <<he>> asks, reaching for your cat ears.<</if>> <<His>> touch sends a shiver of pleasure across your scalp and down your spine. You purr. -<br><br> + You rest your head on Robin's shoulder and rub. <<He>> looks at you and smiles. + <<if $transformationParts.cat.ears isnot "hidden">>"Where did you get this anyway?" <<he>> asks, reaching for your cat ears.<</if>> + <<His>> touch sends a shiver of pleasure across your scalp and down your spine. You purr. + <br><br> -Robin laughs. "Good kitty!" <<He>> keeps stroking, and wraps <<his>> other arm around your waist. Your eyes close. There's nothing in the world but Robin's touch. -<br><br> + Robin laughs. "Good kitty!" <<He>> keeps stroking, and wraps <<his>> other arm around your waist. Your eyes close. There's nothing in the world but Robin's touch. + <br><br> -<<robinoptions>> + <<robinoptions>> <<else>> -You rest your head on Robin's shoulder and rub. <<He>> looks at you and smiles. "Who's a good kitty," <<he>> says, reaching up to stroke your ears. <<His>> touch sends a shiver of pleasure across your scalp and down your spine. You purr. -<br><br> + You rest your head on Robin's shoulder and rub. <<He>> looks at you and smiles. + "Who's a good kitty," <<he>> says, reaching up to stroke your ears. + <<His>> touch sends a shiver of pleasure across your scalp and down your spine. You purr. + <br><br> -You rest against <<him>> for a while as <<he>> holds you tight and pets you. -<br><br> + You rest against <<him>> for a while as <<he>> holds you tight and pets you. + <br><br> -<<robinoptions>> + <<robinoptions>> <</if>> @@ -2737,7 +2930,9 @@ Every time Robin hits your sweet spot, you feel the need to kick, but you hold b :: Robin Kiyoura Start <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> -<<npc Whitney>><<person1>>You sit opposite Robin, chatting while you eat. You're just about finished with your meal when you're approached by Whitney and <<his>> crew, "'Sup loser. I need to borrow your <<girlfriend>> for help with my oral assignment," <<he>> says to Robin with a smirk on <<his>> face and a hand on your shoulder. +<<npc Whitney>><<person1>>You sit opposite Robin, chatting while you eat. +You're just about finished with your meal when you're approached by Whitney and <<his>> crew, +"'Sup loser. I need to borrow your <<girlfriend>> for help with my oral assignment," <<he>> says to Robin with a smirk on <<his>> face and a hand on your shoulder. <br><br> Robin looks down, then at you, waiting for your response. <br><br> @@ -2748,19 +2943,20 @@ Robin looks down, then at you, waiting for your response. <br> <<if $promiscuity gte 55>> -<<link [[Go willingly|Robin Kiyoura canteen oral]]>><<set $submissive += 1>><<npcincr Whitney dom 1>><<set $sexstart to 1>><<set $molestationstart to 0>><<npcincr Whitney love 1>><</link>><<promiscuous4>><<glove>><<gdom>> -<br> + <<link [[Go willingly|Robin Kiyoura canteen oral]]>><<set $submissive += 1>><<npcincr Whitney dom 1>><<set $sexstart to 1>><<set $molestationstart to 0>><<npcincr Whitney love 1>><</link>><<promiscuous4>><<glove>><<gdom>> + <br> <</if>> <<endevent>> :: Robin Kiyoura canteen fight <<if $fightstart is 1>> -<<set $fightstart to 0>> -<<npc Whitney>><<person1>><<maninit>> You tell Whitney you're not going with <<him>>. "Fine," Whitney says, gesturing at Robin. They push Robin away, leaving you and the bully. "Time to teach you a lesson." -<br><br> -<<set $enemytrust -= 100>> -<<set $enemyanger += 200>> -<<npcidlegenitals>> + <<set $fightstart to 0>> + <<npc Whitney>><<person1>><<maninit>> You tell Whitney you're not going with <<him>>. + "Fine," Whitney says, gesturing at Robin. They push Robin away, leaving you and the bully. "Time to teach you a lesson." + <br><br> + <<set $enemytrust -= 100>> + <<set $enemyanger += 200>> + <<npcidlegenitals>> <</if>> @@ -2787,35 +2983,37 @@ Robin looks down, then at you, waiting for your response. <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> <<if $enemyhealth lte 0>> -You push Whitney back, and <<he>> stumbles. "Little shit," <<he>> sneers, trying to save face. <<His>> friends back away from Robin and follow Whitney out of the canteen. -<br><br> + You push Whitney back, and <<he>> stumbles. "Little shit," <<he>> sneers, trying to save face. + <<His>> friends back away from Robin and follow Whitney out of the canteen. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<link [[Next|Robin Kiyoura after fight]]>><</link>> + <<link [[Next|Robin Kiyoura after fight]]>><</link>> <<elseif $enemyarousal gte $enemyarousalmax>> -<<ejaculation>> + <<ejaculation>> -"You... stupid..." <<he>> pants, leaning on you. <<His>> friends are so bemused by <<his>> state that they don't notice Robin slip away. -<<llust>><<npcincr Whitney lust -20>> -<br><br> + "You... stupid..." <<he>> pants, leaning on you. <<His>> friends are so bemused by <<his>> state that they don't notice Robin slip away. + <<llust>><<npcincr Whitney lust -20>> + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<link [[Next|Robin Kiyoura after fight]]>><</link>> + <<link [[Next|Robin Kiyoura after fight]]>><</link>> <<else>> -You fall to the ground, too battered to fight. Whitney kicks you for good measure. "Next time," <<he>> says. "Show more respect." <<His>> friends back away from Robin and follow <<him>> out of the canteen. -<br><br> + You fall to the ground, too battered to fight. Whitney kicks you for good measure. "Next time," <<he>> says. "Show more respect." + <<His>> friends back away from Robin and follow <<him>> out of the canteen. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<link [[Next|Robin Kiyoura after fight]]>><</link>> + <<link [[Next|Robin Kiyoura after fight]]>><</link>> <</if>> :: Robin Kiyoura after fight @@ -2827,14 +3025,16 @@ You fall to the ground, too battered to fight. Whitney kicks you for good measur <<link [[Hug Robin|Robin Kiyoura cuddle]]>><<npcincr Robin love 1>><<trauma -1>><<stress -1>><</link>><<glove>><<ltrauma>><<lstress>> <br> <<if $trauma gte $traumamax / 5>> -<<link [[Accuse Robin of weakness|Robin Kiyoura weak]]>><<npcincr Robin love -6>><<trauma -3>><<stress -3>><</link>><<lllove>><<ltrauma>><<lstress>> -<br> + <<link [[Accuse Robin of weakness|Robin Kiyoura weak]]>><<npcincr Robin love -6>><<trauma -3>><<stress -3>><</link>><<lllove>><<ltrauma>><<lstress>> + <br> <</if>> :: Robin Kiyoura cuddle <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> <<endevent>> -<<npc Robin>><<person1>>You check Robin for injury before falling into <<his>> arms. <<He>> doesn't speak for a few minutes, until you pull away. "I need to get ready for my next lesson," <<he>> says. <<He>> still looks concerned, and waves at you as <<he>> leaves the canteen. +<<npc Robin>><<person1>>You check Robin for injury before falling into <<his>> arms. +<<He>> doesn't speak for a few minutes, until you pull away. "I need to get ready for my next lesson," <<he>> says. +<<He>> still looks concerned, and waves at you as <<he>> leaves the canteen. <br><br> <<pass 3>> <<link [[Next|Canteen]]>><<endevent>><</link>> @@ -2843,11 +3043,11 @@ You fall to the ground, too battered to fight. Whitney kicks you for good measur <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> <<if $submissive gte 1150>> -"I was so scared," you say. "And you didn't help." + "I was so scared," you say. "And you didn't help." <<elseif $submissive lte 850>> -"You're such a weakling," you say. "I wouldn't let that happen to you." + "You're such a weakling," you say. "I wouldn't let that happen to you." <<else>> -"That was your fault," you say. "You should have protected me." + "That was your fault," you say. "You should have protected me." <</if>> <br><br> <<endevent>> @@ -2860,32 +3060,43 @@ You fall to the ground, too battered to fight. Whitney kicks you for good measur :: Robin Kiyoura canteen oral <<if $molestationstart is 1>> -<<set $molestationstart to 0>> -<<controlloss>> -<<violence 1>> -<<neutral 1>> -<<molested>> + <<set $molestationstart to 0>> + <<controlloss>> + <<violence 1>> + <<neutral 1>> + <<molested>> -<<npc Whitney>><<person1>><<maninit>> -Whitney grabs your wrist and drags you to a secluded area behind the canteen, <<he>> <<if $pronoun is "m">>unzips <<his>> fly,<<else>>lifts <<his>> skirt,<</if>> revealing <<his>> <<if $NPCList[0].penis isnot "none">>penis<<else>>pussy<</if>>. "Open wide," <<he>> says. <<His>> friends cheer <<him>> on. -<br><br> + <<npc Whitney>><<person1>><<maninit>> + Whitney grabs your wrist and drags you to a secluded area behind the canteen, <<he>> + <<if $pronoun is "m">> + unzips <<his>> fly, + <<else>> + lifts <<his>> skirt, + <</if>> + <<if $NPCList[0].penis isnot "none">> + pulling out <<his>> <<npcPenis>>. "Open wide," <<he>> says. + <<else>> + revealing <<his>> pussy. "Get to work," <<he>> says. + <</if>> + <<His>> friends cheer <<him>> on. + <br><br> -<<npcoral>><<set $NPCList[0].lefthand to "hair">><<set $enemyanger to 70>> + <<npcoral>><<set $NPCList[0].lefthand to "hair">><<set $enemyanger to 70>> <</if>> <<if $sexstart is 1>> -<<set $sexstart to 0>> -<<consensual>> -<<set $consensual to 1>> -<<neutral 1>> + <<set $sexstart to 0>> + <<consensual>> + <<set $consensual to 1>> + <<neutral 1>> -<<npc Whitney>><<person1>><<maninit>> -<<set $enemytrust += 100>> -You follow Whitney out of the canteen, <<he>> leads you to a secluded area behind the canteen and <<if $pronoun is "m">>unzips <<his>> fly,<<else>>lifts <<his>> skirt,<</if>> revealing <<his>> <<if $NPCList[0].penis isnot "none">>penis<<else>>pussy<</if>>. "Time to inspect your vocal chords," <<he>> says with a smirk. <<His>> friends laugh at the joke. -<<promiscuity4>> + <<npc Whitney>><<person1>><<maninit>> + <<set $enemytrust += 100>> + You follow Whitney out of the canteen, <<he>> leads you to a secluded area behind the canteen and <<if $pronoun is "m">>unzips <<his>> fly,<<else>>lifts <<his>> skirt,<</if>> revealing <<his>> <<if $NPCList[0].penis isnot "none">>penis<<else>>pussy<</if>>. "Time to inspect your vocal chords," <<he>> says with a smirk. <<His>> friends laugh at the joke. + <<promiscuity4>> -<<npcoral>> + <<npcoral>> <</if>> @@ -2914,29 +3125,29 @@ You follow Whitney out of the canteen, <<he>> leads you to a secluded area behin <<effects>> <<if $enemyarousal gte $enemyarousalmax>> -<<ejaculation>><<npcincr Whitney lust -30>> + <<ejaculation>><<npcincr Whitney lust -30>> -<<if $NPCList[0].penis isnot "none">> -<<He>> holds you down until <<he>> finishes cumming. "Good slut." -<<else>> -<<He>> holds you down until <<he>> finishes cumming. "Good slut." -<</if>> -<br><br> + <<if $NPCList[0].penis isnot "none">> + <<He>> holds you down until <<he>> finishes cumming. "Good slut." + <<else>> + <<He>> holds you down until <<he>> finishes cumming. "Good slut." + <</if>> + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<link [[Next|Robin Kiyoura Back to Robin]]>><<set $phase to 0>><</link>> + <<link [[Next|Robin Kiyoura Back to Robin]]>><<set $phase to 0>><</link>> <<else>> -<<if $finish isnot 1>>You shove Whitney away from you. <</if>><<tearful>> you run away. -<br><br> + <<if $finish isnot 1>>You shove Whitney away from you. <</if>><<tearful>> you run away. + <br><br> -<<clotheson>> -<<endcombat>> + <<clotheson>> + <<endcombat>> -<<link [[Next|Robin Kiyoura Back to Robin]]>><<set $phase to 1>><</link>> + <<link [[Next|Robin Kiyoura Back to Robin]]>><<set $phase to 1>><</link>> <</if>> @@ -2944,33 +3155,36 @@ You follow Whitney out of the canteen, <<he>> leads you to a secluded area behin <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> <<if $phase is 0>> -<<npc Whitney>><<person1>>Whitney walks with you back to the canteen, where Robin waits. "Here's your <<girlfriend>> back, <<pshe>> helped me with a huge load of work", <<he>> chuckles as <<he>> walks away. -<br><br> -<<endevent>> -<<npc Robin>><<person1>>Robin looks worried, "Are you okay? Did <<nnpc_he "Whitney">> hurt you?" <<he>> asks. -<br><br> + <<npc Whitney>><<person1>> + Whitney walks with you back to the canteen, where Robin waits. + "Here's your <<girlfriend>> back, <<pshe>> helped me with a huge load of work", <<he>> chuckles as <<he>> walks away. + <br><br> + + <<npc Robin>> + Robin looks worried, "Are you okay? Did <<he>> hurt you?" <<person2>><<he>> asks. + <br><br> -<<link [[Keep it a secret|Robin Kiyoura Secret]]>><</link>> -<br> + <<link [[Keep it a secret|Robin Kiyoura Secret]]>><</link>> + <br> -<<link [[Tell Robin what happened, but say you didn't want to|Robin Kiyoura Didn't want to]]>><<npcincr Robin dom 1>><<pain -10>><</link>><<gdom>><<lpain>> -<br> + <<link [[Tell Robin what happened, but say you didn't want to|Robin Kiyoura Didn't want to]]>><<npcincr Robin dom 1>><<pain -10>><</link>><<gdom>><<lpain>> + <br> -<<link [[Tell Robin what happened, and say you enjoyed it|Robin Kiyoura Enjoyed it]]>><<npcincr Robin love -5>><<npcincr Robin dom -1>><<npcincr Robin lust 1>><</link>><<lllove>><<ldom>><<glust>> -<br> -<<endevent>> + <<link [[Tell Robin what happened, and say you enjoyed it|Robin Kiyoura Enjoyed it]]>><<npcincr Robin love -5>><<npcincr Robin dom -1>><<npcincr Robin lust 1>><</link>><<lllove>><<ldom>><<glust>> + <br> + <<endevent>> <<else>> -<<npc Robin>><<person1>>You return to Robin in the canteen. <<He>> looks worried. "Are you okay? Did <<nnpc_he "Whitney">> hurt you?" <<he>> asks. -<br><br> + <<npc Robin>><<person1>>You return to Robin in the canteen. <<He>> looks worried. "Are you okay? Did <<nnpc_he "Whitney">> hurt you?" <<he>> asks. + <br><br> -<<link [[Keep it a secret|Robin Kiyoura Secret]]>><</link>> -<br> + <<link [[Keep it a secret|Robin Kiyoura Secret]]>><</link>> + <br> -<<link [[Tell Robin what happened, but say you didn't want to|Robin Kiyoura Didn't want to]]>><<npcincr Robin dom 1>><<pain -10>><</link>><<gdom>><<lpain>> -<br> -<<endevent>> + <<link [[Tell Robin what happened, but say you didn't want to|Robin Kiyoura Didn't want to]]>><<npcincr Robin dom 1>><<pain -10>><</link>><<gdom>><<lpain>> + <br> + <<endevent>> <</if>> @@ -2980,27 +3194,33 @@ You follow Whitney out of the canteen, <<he>> leads you to a secluded area behin <<npc Robin>><<person1>>You tell Robin nothing happened, <<he>> hugs you nonetheless. "I'm going to wait in the classroom," <<he>> says. "Try not to run into <<nnpc_him "Whitney">> again." <br><br> + <<endevent>> <<link [[Next|Canteen]]>><</link>> <br> :: Robin Kiyoura Didn't want to <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>> + <<if $RobinKiyoura isnot 1>><<set $RobinKiyoura to 1>><</if>> -<<npc Robin>><<person1>>You tell Robin what happened. You say you had no choice. You were forced to. <<His>> face grows pale as you speak, and <<he>> grasps you in a hug. "It's n-not fair," <<he>> says. You feel <<his>> tears land on your shoulder. + +<<npc Robin>><<person1>>You tell Robin what happened. You say you had no choice. You were forced to. +<<His>> face grows pale as you speak, and <<he>> grasps you in a hug. "It's n-not fair," <<he>> says. You feel <<his>> tears land on your shoulder. <br><br> + <<pass 3>> <<He>> holds you for a few minutes, until you tell <<him>> <<he>> won't have time to prepare for <<his>> lesson. "I don't care," <<he>> says. <br><br> - <<if $submissive gte 1150>> +<<if $submissive gte 1150>> "I'll be okay now," you say. "You've made me feel safe." - <<elseif $submissive lte 850>> +<<elseif $submissive lte 850>> "I can look after myself," you say. - <<else>> +<<else>> "I'm okay," you say. "You can't cling to me forever." - <</if>> - <br><br> +<</if>> +<br><br> + <<He>> resists at first, but you further assure <<him>> that you'll be okay. <<He>> gives your hand one last squeeze before leaving. <br><br> @@ -3014,36 +3234,35 @@ You follow Whitney out of the canteen, <<he>> leads you to a secluded area behin <<if $robinromance is 1>> -<<npc Robin>><<person1>>You tell Robin exactly what happened, where it happened, and how much you enjoyed it. <<His>> fists clench and tears well in <<his>> eyes. <<He>> picks up <<his>> bag and leaves without a word. -<br><br> - -<<endevent>> -<<link [[Next|Canteen]]>><</link>> -<br> + <<npc Robin>><<person1>>You tell Robin exactly what happened, where it happened, and how much you enjoyed it. + <<His>> fists clench and tears well in <<his>> eyes. <<He>> picks up <<his>> bag and leaves without a word. + <br><br> <<else>> -<<npc Robin>><<person1>>You tell Robin exactly what happened, where it happened, and how much you enjoyed it. <<He>> struggles to make eye contact or come up with a proper response. -<br><br> + <<npc Robin>><<person1>>You tell Robin exactly what happened, where it happened, and how much you enjoyed it. + <<He>> struggles to make eye contact or come up with a proper response. + <br><br> + + "I-I should," <<he>> gulps. "I'm going to wait in the classroom." + <br><br> + +<</if>> -"I-I should," <<he>> gulps. "I'm going to wait in the classroom." -<br><br> <<endevent>> <<link [[Next|Canteen]]>><</link>> <br> -<</if>> - :: Robin Bailey Forgive <<effects>> You wrap your arms around <<his>> shoulders. <<if $submissive gte 1150>> -"I-it's not your fault," you say. "It's mine. Please don't be ashamed." + "I-it's not your fault," you say. "It's mine. Please don't be ashamed." <<elseif $submissive lte 850>> -"It's fine," you say. "You didn't know." + "It's fine," you say. "You didn't know." <<else>> -"It's okay," you say. "It wasn't your fault." + "It's okay," you say. "It wasn't your fault." <</if>> <br><br> @@ -3193,29 +3412,31 @@ You cuddle Robin, but <<his>> hands continue to wander and grope. <<He>> pulls y :: Robin Give Milkshake <<effects>> - <<pass 20>> - You hand Robin a milkshake and sit next to <<him>> on the bed. "Oh, thank you," <<he>> says as <<he>> takes the creamy drink out of your hands. You spend the next 20 minutes sipping milkshake and chatting. - <<npcincr Robin love 1>><<glove>> - <br><br> - <<robinoptions>> +<<pass 20>> +You hand Robin a milkshake and sit next to <<him>> on the bed. "Oh, thank you," <<he>> says as <<he>> takes the creamy drink out of your hands. You spend the next 20 minutes sipping milkshake and chatting. +<<npcincr Robin love 1>><<glove>> +<br><br> + +<<robinoptions>> :: Robin Share Milkshake <<effects>> - <<pass 20>> - You sit on the bed and produce a milkshake. You offer it to Robin. "Is that for me?" <<he>> asks as <<he>> takes the creamy drink out of your hands. - <br><br> - "I thought we could share it," you say, scooting up next to <<him>>. You spend the next 20 minutes sipping milkshake and chatting. - <<npcincr Robin love 2>><<gglove>> - <br><br> - <<robinoptions>> +<<pass 20>> +You sit on the bed and produce a milkshake. You offer it to Robin. "Is that for me?" <<he>> asks as <<he>> takes the creamy drink out of your hands. +<br><br> +"I thought we could share it," you say, scooting up next to <<him>>. You spend the next 20 minutes sipping milkshake and chatting. +<<npcincr Robin love 2>><<gglove>> +<br><br> + +<<robinoptions>> :: Robin Cow Happy <<effects>><<set $livestock_robin to 10>> - You tell Robin you're happy the way you are. <<He>> doesn't seem convinced. You smile a little. <br> - Robin gives you a curt nod. "Okay, if you say so." <<He>> smiles at you. "If you're happy like this, I'm happy too." - <br><br> - <<robinoptions>> +You tell Robin you're happy the way you are. <<He>> doesn't seem convinced. You smile a little. <br> +Robin gives you a curt nod. "Okay, if you say so." <<He>> smiles at you. "If you're happy like this, I'm happy too." +<br><br> +<<robinoptions>> :: Robin Cow Help @@ -3223,6 +3444,7 @@ You cuddle Robin, but <<his>> hands continue to wander and grope. <<He>> pulls y You give Robin a simple nod. <br> "I promise," <<He>> says with a determined look, "I will help you. We will make you better." <<trauma -4>><<stress -4>> <br><br> + <<robinoptions>> :: Robin Trauma Visit @@ -3238,13 +3460,15 @@ You give Robin a simple nod. <br> <<set $robindestination to "Domus Street">> <</if>> -You walk <<if $phase is 0>>to your room<<else>>towards the main hall<</if>>, but you end up stopping outside Robin's room. There's no light coming from underneath the door, and you don't hear so much as a peep inside. +You walk <<if $phase is 0>>to your room<<else>>towards the main hall<</if>>, but you end up stopping outside Robin's room. +There's no light coming from underneath the door, and you don't hear so much as a peep inside. <br><br> Robin doesn't usually go to bed this early. You feel a deep sense of dread.<<stress 2>><<gstress>> <br><br> -Overcome with worry, you quietly turn the knob of the door and crack it open slowly. You peer inside, and you spot what appears to be a lump in the bed covers. You can hear Robin sobbing softly underneath. +Overcome with worry, you quietly turn the knob of the door and crack it open slowly. You peer inside, and you spot what appears to be a lump in the bed covers. +You can hear Robin sobbing softly underneath. <br><br> Robin hasn’t left <<his>> room in a while, nor has <<he>> come to talk to you. <<He>> may need someone to talk to. @@ -3266,17 +3490,20 @@ You slowly shut the door, leaving Robin all by <<himself>> in <<his>> room. :: Robin Trauma Visit 2 <<set $outside to 0>><<set $location to "home">><<home_effects>><<effects>> -You push open Robin’s door. It creaks open, the lights from the hallway purge the darkness coming from <<his>> room. You hear a frightened gasp upon entering the room, and Robin pulls the covers tight over <<himself>>. +You push open Robin’s door. It creaks open, the lights from the hallway purge the darkness coming from <<his>> room. +You hear a frightened gasp upon entering the room, and Robin pulls the covers tight over <<himself>>. <br> The room fills with an eerie silence as you call out Robin's name. <br> -For a few seconds, nothing happens, and the room continues to linger in uneasiness. Until you see Robin’s head emerge from beneath the covers. <<He>> stares at you for a split second, <<his>> eyes wincing from the bright light. <<He>> ducks under <<his>> bed covers once more after spotting you. +For a few seconds, nothing happens, and the room continues to linger in uneasiness. Until you see Robin’s head emerge from beneath the covers. +<<He>> stares at you for a split second, <<his>> eyes wincing from the bright light. <<He>> ducks under <<his>> bed covers once more after spotting you. <br><br> You close the door behind you, returning the room to a state of near pitch black darkness. You manage to navigate yourself over to Robin’s bedside and kneel beside it. <br><br> -You call out Robin's name once again, this time more quietly. The light flickers on as you reach over to touch it, enveloping the room in a warm, orange glow. You remain by <<his>> bedside, still and calm until <<he>> reveals <<himself>>. +You call out Robin's name once again, this time more quietly. The light flickers on as you reach over to touch it, enveloping the room in a warm, orange glow. +You remain by <<his>> bedside, still and calm until <<he>> reveals <<himself>>. <br><br> <<His>> eyes are swollen, marked red from tears. Tear trails run down <<his>> face. You can feel the anguish emanating off of <<him>>. You ask how <<hes>> feeling. @@ -3288,7 +3515,8 @@ You call out Robin's name once again, this time more quietly. The light flickers <</if>> <br><br> -The two of you spend the next few hours talking about whatever comes to mind, such as the latest video games to be released and school. Robin sometimes struggles to talk about <<himself>> and <<his>> condition, but <<he>> always seems to perk back up whenever you mention wanting to take <<him>> out window shopping. +The two of you spend the next few hours talking about whatever comes to mind, such as the latest video games to be released and school. +Robin sometimes struggles to talk about <<himself>> and <<his>> condition, but <<he>> always seems to perk back up whenever you mention wanting to take <<him>> out window shopping. <br><br> <<link [[Next|Robin Trauma Visit 3]]>><<pass 3 hours>><</link>> @@ -3411,7 +3639,9 @@ You nod and take a deep breath before beginning. <br><br> <<if $submissive gte 1150>> - You lower your head and begin describing the time you spent locked inside of a cell. You tell Robin about how the slightest disobedience would have dire consequences. Soon, you begin describing the violations you endured before your voice trails off. + You lower your head and begin describing the time you spent locked inside of a cell. + You tell Robin about how the slightest disobedience would have dire consequences. + Soon, you begin describing the violations you endured before your voice trails off. <br><br> With teary eyes, you grab Robin’s hands and beg <<him>> to forgive you. @@ -3426,19 +3656,25 @@ You nod and take a deep breath before beginning. <br> "Stop it," <<he>> whispers in reassurance. "I’m just happy you’re home." <<He>> pulls you into a hug, pressing your face into <<his>> chest. <<elseif $submissive lte 850>> - You tell Robin what <<he>> wanted to know. You detail about an underground location where you were held. Rampant assaults and nonstop acts of depravity lined every prisoner’s life. Despite all this, you refused to let it break you. At last, when you spotted an opportunity to get out, you did so. + You tell Robin what <<he>> wanted to know. You detail about an underground location where you were held. + Rampant assaults and nonstop acts of depravity lined every prisoner’s life. Despite all this, you refused to let it break you. + At last, when you spotted an opportunity to get out, you did so. <br><br> Robin seems astonished by your bravery while seemingly saddened that such a place exists. "I’m sorry you went through all that," <<he>> says, sounding downtrodden. <br> <<He>> quickly perks up and smiles at you. "I hope I can be as brave as you one day." <<He>> pulls you into a hug, nuzzling against your shoulder. <<else>> - You describe your time spent in a dark cell in some unknown location. Per Robin’s request, you go into detail about the horrors that you were forced to endure. Rarely were you afforded a moment where you weren’t violated. You can tell Robin remains shook by this, but <<he>> listens to what you say. While you did escape, you tell <<him>> about others who weren’t so fortunate. + You describe your time spent in a dark cell in some unknown location. + Per Robin’s request, you go into detail about the horrors that you were forced to endure. + Rarely were you afforded a moment where you weren’t violated. You can tell Robin remains shook by this, but <<he>> listens to what you say. + While you did escape, you tell <<him>> about others who weren’t so fortunate. <br><br> Robin looks at you in disbelief once you finish. "That’s horrible! You and those poor people..." <br> - <<He>> pulls you into <<his>> chest and wraps <<his>> arms around you, stroking your hair. "I won't let that happen to you again," <<he>> whispers, <<his>> voice quivering. "Promise." + <<He>> pulls you into <<his>> chest and wraps <<his>> arms around you, stroking your hair. + "I won't let that happen to you again," <<he>> whispers, <<his>> voice quivering. "Promise." <</if>> <<lstress>><<ltrauma>><<ggdom>> <br><br> @@ -3637,19 +3873,20 @@ You notice a look of disgust on Robin's face. Furrowing <<his>> eyebrows, <<he>> <<set $outside to 0>><<set $location to "brothel">><<effects>> <<if $phase is 0>> -Robin smiles. "Thank you." -<<if $exposed gte 1>> - <<towelup>> - <<He>> takes your hand and leads you out of the building to a nearby bus stop, though not before insisting that you stop by the dressing room first. -<<else>> - Once more, <<he>> takes your hand, leading you out of the building and to a nearby bus stop. -<</if>> + Robin smiles. "Thank you." + <<if $exposed gte 1>> + <<towelup>> + <<He>> takes your hand and leads you out of the building to a nearby bus stop, though not before insisting that you stop by the dressing room first. + <<else>> + Once more, <<he>> takes your hand, leading you out of the building and to a nearby bus stop. + <</if>> You chat with Robin while you wait. It's obvious that <<hes>> trying to ignore what you were just doing a short while ago. <br><br> <<if $daystate is "night">> <<generate2>><<generate3>> - A bus soon pulls up, and you take a seat with Robin near the back. You glance at <<him>>. <<He>> looks tired. You feel a sting of guilt for keeping <<him>> out so late.<<stress 2>><<gstress>> + A bus soon pulls up, and you take a seat with Robin near the back. You glance at <<him>>. + <<He>> looks tired. You feel a sting of guilt for keeping <<him>> out so late.<<stress 2>><<gstress>> <br><br> The ride is uneventful, until the <<person2>><<person>> sat in front of you turns around in <<his>> seat, grinning. @@ -3659,18 +3896,21 @@ Robin smiles. "Thank you." Robin stirs and frowns. "Leave <<phim>> alone, or I'll call for help." <br><br> - The <<personsimple>> smiles, amused, and glances over at the <<person3>><<person>> beside <<person2>><<him>>, who shrugs. The <<person>> looks back, feigning defeat. + The <<personsimple>> smiles, amused, and glances over at the <<person3>><<person>> beside <<person2>><<him>>, who shrugs. + The <<person>> looks back, feigning defeat. <br> "Alright, you win. Don't need two squirmers tonight, anyway." <br> <<endevent>> <<npc Robin>><<person1>> - Robin's expression remains tense, and <<he>> reaches for something in <<his>> pocket. Ultimately, <<he>> decides against using it, whatever it was. Try as you might, you can't tell what it is. + Robin's expression remains tense, and <<he>> reaches for something in <<his>> pocket. + Ultimately, <<he>> decides against using it, whatever it was. Try as you might, you can't tell what it is. <br><br> The rest of the ride passes without incident. <<else>> - The ride home is uneventful. Robin rests <<his>> head on your shoulder, <<his>> hand still intertwined with your own.<<stress -2>><<trauma -2>><<lstress>><<ltrauma>> + The ride home is uneventful. Robin rests <<his>> head on your shoulder, <<his>> hand still intertwined with your own. + <<stress -2>><<trauma -2>><<lstress>><<ltrauma>> <</if>> <br><br> @@ -3686,7 +3926,8 @@ Robin smiles. "Thank you." <</if>> <br><br> - Robin looks at you in disbelief. "I don't want to see you violate yourself, even if it's for our own good." <<He>> grabs your shoulders. <<His>> hands are shaking. "Just, please come home!" + Robin looks at you in disbelief. "I don't want to see you violate yourself, even if it's for our own good." + <<He>> grabs your shoulders. <<His>> hands are shaking. "Just, please come home!" <br><br> You're not sure if you want to be here at all, but you realise you have to be firm if you want to keep this going. @@ -3697,13 +3938,15 @@ Robin smiles. "Thank you." <<link [[Insist on staying|Robin Brothel 3]]>><<set $phase to 2>><<npcincr Robin love -10>><<npcincr Robin dom -20>><</link>><<lllove>><<llldom>> <br> <<elseif $phase is 2>> - You don't budge, despite Robin's despair at the thought of you working here. <<He>> falls silent and nods in defeat. Tears roll down <<his>> cheeks, and <<he>> looks at you to reconsider. You don't. + You don't budge, despite Robin's despair at the thought of you working here. <<He>> falls silent and nods in defeat. + Tears roll down <<his>> cheeks, and <<he>> looks at you to reconsider. You don't. <br><br> "Okay. I'll leave you alone. Just..." Robin stammers over <<his>> own words. "Be careful." <br><br> - Robin glances at you through teary eyes one more time before leaving the room, the door shutting quietly behind <<him>>.<<stress 6>><<trauma 6>><<gstress>><<gtrauma>> + Robin glances at you through teary eyes one more time before leaving the room, the door shutting quietly behind <<him>>. + <<stress 6>><<trauma 6>><<gstress>><<gtrauma>> <br><br> <<link [[Next|Brothel]]>><<endevent>><</link>> @@ -3717,15 +3960,18 @@ You arrive at the orphanage and step off the bus. Robin walks you to your room. <br><br> <<if $robinBrothelVisit gte 1>> - <<He>> smiles at you. "I'm glad you're home. I'm sure we'll think of something." <<He>> holds you in <<his>> arms for a moment, stroking the back of your head gently. + <<He>> smiles at you. "I'm glad you're home. I'm sure we'll think of something." + <<He>> holds you in <<his>> arms for a moment, stroking the back of your head gently. <br> "You don't need to go through this alone," <<he>> whispers. "We'll get through it. Bailey won't stop us." <br> <<He>> squeezes you tight before pulling away. <<Hes>> still smiling. <<else>> - Once you're inside, <<he>> speaks. "I'm sorry. I don't want to tell you your business, but I care about you, and..." <<He>> sighs, looking dejected. "I hope you're not mad." + Once you're inside, <<he>> speaks. "I'm sorry. I don't want to tell you your business, but I care about you, and..." + <<He>> sighs, looking dejected. "I hope you're not mad." <br> - You put a hand on Robin's shoulder and gently reassure <<him>>. It seems to lift <<his>> spirts a little. "We'll think of something," <<he>> says, smiling weakly. + You put a hand on Robin's shoulder and gently reassure <<him>>. It seems to lift <<his>> spirts a little. + "We'll think of something," <<he>> says, smiling weakly. <</if>> <br><br> @@ -3769,7 +4015,8 @@ You arrive at the orphanage and step off the bus. Robin walks you to your room. "Of course," <<he>> says. "Whatever you want." <br><br> - Robin flicks the light off, and you hear clothes rustling as <<he>> undresses. You do the same and hop into your bed, scooting to the side and making room for Robin. <<He>> cuddles up beside you, nuzzling into your neck. + Robin flicks the light off, and you hear clothes rustling as <<he>> undresses. + You do the same and hop into your bed, scooting to the side and making room for Robin. <<He>> cuddles up beside you, nuzzling into your neck. <br> "Goodnight," <<he>> murmurs. <<His>> arms wrap around you, and <<he>> holds you tight. "I promise, I'll do everything I can for you..." <br><br> diff --git a/game/overworld-town/special-robin/widgets.twee b/game/overworld-town/special-robin/widgets.twee index f7a27cb41dc0dacbce47b5f40e5e5f2545084d8c..853dd81caec9c6b0daa671dca27efdf4c8209924 100644 --- a/game/overworld-town/special-robin/widgets.twee +++ b/game/overworld-town/special-robin/widgets.twee @@ -94,7 +94,7 @@ <<set $robinthank to 1>> You open your mouth to speak, but Robin interrupts you. "Thank you," <<he>> says. "For everything." <<He>> rests <<his>> head on your shoulder. <br><br> - <<else>> + <</if>> <<else>> <<if $robinconsoleintro isnot 1>> @@ -135,8 +135,9 @@ <</widget>> <<widget "robinoptions">> + <<set _robintrauma to $NPCName[$NPCNameList.indexOf("Robin")].trauma>> <<if $schoolday is 1 and $hour is 8>> - <<if $NPCName[$NPCNameList.indexOf("Robin")].trauma gte 80>> + <<if _robintrauma gte 80>> Robin looks at the clock on the wall. "It's school soon," <<he>> says. "I don't want to go." <br><br> You hug <<him>>. "Everything will be fine," you say. @@ -208,7 +209,7 @@ <br> <<else>> - <<if $NPCName[$NPCNameList.indexOf("Robin")].trauma lt 80>> + <<if _robintrauma lt 80>> <<if $NPCName[$NPCNameList.indexOf("Robin")].love gte 5 and $NPCName[$NPCNameList.indexOf("Robin")].lovestage is undefined>> <<set $NPCName[$NPCNameList.indexOf("Robin")].lovestage to 0>> "Thanks for spending time with me," <<he>> says. "It's less fun alone." @@ -220,9 +221,9 @@ <<elseif $NPCName[$NPCNameList.indexOf("Robin")].love gte 20 and $NPCName[$NPCNameList.indexOf("Robin")].lovestage is 1>> <<set $NPCName[$NPCNameList.indexOf("Robin")].lovestage to 2>> <<if $robinconsole is 1>> - "Let me know if there's a game you'd like to play," <<he>> says. "You always let me choose." + "Let me know if there's a game you'd like to play," <<he>> says. "You always let me choose." <<else>> - "I like spending time with you." <<he>> says. "I'd choose your company over my console every day." + "I like spending time with you." <<he>> says. "I'd choose your company over my console every day." <</if>> <br><br> <<elseif $NPCName[$NPCNameList.indexOf("Robin")].love gte 40 and $NPCName[$NPCNameList.indexOf("Robin")].lovestage is 2>> @@ -243,7 +244,7 @@ <<link [[Tell Robin about your imprisonment (0:30)|Robin Dungeon Talk]]>><<set $robinroomentered to 1>><<pass 30>><<stress -12>><<trauma -12>><<npcincr Robin dom 5>><</link>> <br> <</if>> - <<if $NPCName[$NPCNameList.indexOf("Robin")].trauma lt 80 and $NPCName[$NPCNameList.indexOf("Robin")].trauma gte 10>> + <<if _robintrauma lt 80 and _robintrauma gte 10>> <<link [[Talk (0:30)|Robin Trauma Talk]]>><<set $robinroomentered to 1>><<pass 30>><<stress 3>><<npcincr Robin trauma -1>><<npcincr Robin love 1>><<npcincr Robin dom -1>><</link>><<glove>><<ldom>><<gstress>> <br> <</if>> @@ -253,7 +254,7 @@ <</if>> <<if $schoolday is 1 and ($hour is 8 or $hour is 7)>> - <<if $NPCName[$NPCNameList.indexOf("Robin")].trauma gte 80>> + <<if _robintrauma gte 80>> <<link [[Walk to school (0:40)|Robin Walk School]]>><<run setRobinLocationOverride("school", 7)>><<pass 40>><</link>> <br> <<else>> @@ -262,7 +263,7 @@ <</if>> <</if>> - <<if $NPCName[$NPCNameList.indexOf("Robin")].trauma lt 80 and ($robinwalk lt 1 or ($halloween_robin is 1 and $halloween_robin_costume is "ghost") or ($NPCName[$NPCNameList.indexOf("Robin")].love lt 20 and $money gte 1500)) and $passage isnot "Robin Walk">> + <<if _robintrauma lt 80 and ($robinwalk lt 1 or ($halloween_robin is 1 and $halloween_robin_costume is "ghost") or ($NPCName[$NPCNameList.indexOf("Robin")].love lt 20 and $money gte 1500)) and $passage isnot "Robin Walk">> <<link [[Go somewhere together|Robin Walk]]>><<set $robinroomentered to 1>><<set $robinhugging to 0>><</link>> <br> <</if>> @@ -271,39 +272,32 @@ <br> <<link [[Play with Robin (0:30)|Robin Play]]>><<set $robinroomentered to 1>><<set $robinhugging to 0>><<trauma -3>><<pass 30>><<npcincr Robin love 1>><</link>><<glove>><<ltrauma>> <br> - <<elseif $money gte 40000 and $NPCName[$NPCNameList.indexOf("Robin")].trauma lt 80 and $robindebtknown is 1>> + <<elseif $money gte 40000 and _robintrauma lt 80 and $robindebtknown is 1>> <<link [[Buy Robin a new console (£400 0:30)|Robin Console]]>><<set $robinhugging to 0>><<pass 30>><<npcincr Robin love 10>><<npcincr Robin dom -1>><<set $robinconsole to 1>><<set $money -= 40000>><</link>><<glove>><<ldom>> <br> <</if>> - <<if $NPCName[$NPCNameList.indexOf("Robin")].trauma lt 80 and $trauma gte 1000 and $robinhugging isnot 1>> + <<if _robintrauma lt 80 and $trauma gte 1000 and $robinhugging isnot 1>> <<link [[Hug (0:05)|Robin Hug]]>><<pass 5>><<trauma -1>><<stress -1>><<npcincr Robin love 1>><</link>><<ltrauma>><<lstress>><<glove>> <br> <</if>> - <<if $NPCName[$NPCNameList.indexOf("Robin")].trauma lt 20 and $cat gte 6>> + <<if _robintrauma lt 20 and $cat gte 6>> <<link [[Request headpats (0:20)|Robin Cat]]>><<pass 20>><<trauma -2>><<stress -2>><<npcincr Robin love 1>><<npcincr Robin dom 1>><</link>><<cat>><<gdom>><<glove>><<ltrauma>><<lstress>> <br> <</if>> - <<if $NPCName[$NPCNameList.indexOf("Robin")].trauma lt 80 and $livestock_robin gte 1 and $cow gte 6>> + <<if _robintrauma lt 80 and $livestock_robin gte 1 and $cow gte 6>> <<link [[Moo for attention (0:20)|Robin Cow]]>><<transform cow 1>><<pass 20>><<trauma -2>><<stress -2>><<npcincr Robin love 1>><<npcincr Robin dom 1>><</link>><<cow>><<gdom>><<glove>><<ltrauma>><<lstress>> <br> <</if>> - <<if $NPCName[$NPCNameList.indexOf("Robin")].trauma lt 80 and $harpy gte 6>> - <<link [[Sing with Robin (0:20)|Robin Harpy]]>><<pass 20>><<trauma -2>><<stress -2>><<npcincr Robin love 1>> - <<if $halloween is 1>> - <<npcincr Robin dom -2>> - <<else>> - <<npcincr Robin dom 1>> - <</if>> - <</link>><<harpy>> + <<if _robintrauma lt 80 and $harpy gte 6>> <<if $halloween is 1>> - <<ldom>> + <<link [[Sing with Robin (0:20)|Robin Harpy]]>><<pass 20>><<trauma -2>><<stress -2>><<npcincr Robin love 1>><<npcincr Robin dom -2>><</link>><<harpy>><<ldom>><<glove>><<ltrauma>><<lstress>> + <br> <<else>> - <<gdom>> + <<link [[Sing with Robin (0:20)|Robin Harpy]]>><<pass 20>><<trauma -2>><<stress -2>><<npcincr Robin love 1>><<npcincr Robin dom 1>><</link>><<harpy>><<gdom>><<glove>><<ltrauma>><<lstress>> + <br> <</if>> - <<glove>><<ltrauma>><<lstress>> - <br> <</if>> - <<if $NPCName[$NPCNameList.indexOf("Robin")].trauma lt 20 and $wolfgirl gte 6>> + <<if _robintrauma lt 20 and $wolfgirl gte 6>> <<link [[Present belly (0:20)|Robin Wolf]]>><<pass 20>><<trauma -2>><<stress -2>><<npcincr Robin love 1>><<npcincr Robin dom 1>><</link>><<wolfgirl>><<gdom>><<glove>><<ltrauma>><<lstress>> <br> <</if>> @@ -324,8 +318,8 @@ <<widget "robinpay">> <<if $robinpaid isnot 1>> - <i>Robin is safe for now, but Bailey will keep collecting the toll. Maybe you should confront Bailey about it.</i> - <br><br> + <i>Robin is safe for now, but Bailey will keep collecting the toll. Maybe you should confront Bailey about it.</i> + <br><br> <</if>> <</widget>> diff --git a/game/overworld-town/special-sydney/main.twee b/game/overworld-town/special-sydney/main.twee index 740fea1a217922c1e142eae42bfb9f90334ef9c5..2ea7118b1243327556ec855b29a4826a8b7ae3c3 100644 --- a/game/overworld-town/special-sydney/main.twee +++ b/game/overworld-town/special-sydney/main.twee @@ -344,7 +344,7 @@ <<He>> reaches for your face, but draws <<his>> hand back. "I'll let you off with a warning. Please don't wear those. Why are you wearing them anyway?" <<else>> <span class="blue"><<He>> plucks the $worn.face.name off your face.</span> "I'll send these to your locker in the locker rooms," <<he>> says, placing them in a cabinet. "You can pick them up later. Why were you wearing them anyway?" - <<facesend $worn.face.index wardrobe $worn.face.colour $worn.face.accessory_colour>> + <<facesend `clothesIndex('face',$worn.face)` wardrobe $worn.face.colour $worn.face.accessory_colour>> <<set $worn.face to clone(setup.clothes.face[0])>> <</if>> <<elseif _sydneyStatus.includes("corrupt")>> @@ -997,7 +997,7 @@ You nod. Sydney crouches down and puts <<his>> arms out. "I think I'm strong eno You vault Sydney, and <<he>> gradually stands. You're surprised by how easy <<he>> keeps <<his>> balance. You're able to reach the book like this. <br><br> <<if _sydneyStatus.includes("corrupt") and $sydneyromance is 1>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1 and setup.clothes.under_lower[$worn.under_lower.index].exposed_base is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].exposed_base is 1>> <span class="lewd">You feel something touch your <<genitals>>.</span> "Oopsie. Someone forgot proper underwear," Sydney whispers. <<npcincr Sydney purity -2>><<lspurity>> <br><br> You're helpless to get down like this. Sydney continues to fondle you from below. <<arousal 2500>><<ggarousal>> @@ -1008,7 +1008,7 @@ You vault Sydney, and <<he>> gradually stands. You're surprised by how easy <<he <</if>> <br><br> Sydney takes <<his>> seat. <<He>> doesn't even ask you for the book you just retrieved for <<him>>. - <<elseif setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> "Nice $worn.under_lower.name." You remember that you're wearing a skirt, and Sydney has an unrestricted view. <<npcincr Sydney lust 1>><<npcincr Sydney purity -2>><<gslust>><<lspurity>> <br><br> You feel <<him>> grope your <<bottom>>, before letting you down. "Thanks for that." <<He>> takes <<his>> seat without even taking the book from your hands. @@ -1016,13 +1016,13 @@ You vault Sydney, and <<he>> gradually stands. You're surprised by how easy <<he You feel Sydney grope your <<bottom>>, before letting you down. "Thanks for that." <<He>> takes <<his>> seat without even taking the book from your hands. <</if>> <<else>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1 and setup.clothes.under_lower[$worn.under_lower.index].exposed_base is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and setup.clothes.under_lower[clothesIndex('under_lower', $worn.under_lower)].exposed_base is 1>> <span class="lewd">You hear a gasp, and Sydney trembles under you.</span> "S-sorry, I didn't mean to look!" Sydney whispers. You just remembered what you're wearing. Sydney might have got a faceful of your <<genitals>>. <<npcincr Sydney lust 3>><<npcincr Sydney purity -5>><<ggslust>><<llspurity>> <br><br> You're helpless to get down like this. Sydney lets you down, making sure to avoid your entire lower half when possible. <<His>> face is the brightest red you've ever seen. <<arousal 1000>><<garousal>> <br><br> <<He>> takes <<his>> seat, refusing to make eye contact. "Th-thanks for getting the book down for me." - <<elseif setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> You hear a gasp. "S-sorry, I didn't mean to look!" Sydney whispers. You suddenly remember that you're wearing a skirt. <<He>> likely just got an easy view of your underwear. <<npcincr Sydney lust 1>><<npcincr Sydney purity -2>><<gslust>><<lspurity>> <br><br> Sydney very carefully lets you down. <<His>> face is bright red. <<arousal 500>><<garousal>> @@ -1383,7 +1383,7 @@ You part, your face red and sore. Sydney hands you a bottle of water from under <<sadism $args[0]>> <</if>> <<if $sydneySeen.includes("punch")>> - Your clench your fist harder. Sydney seems to notice. "You want to hit me again, don't you?" <<if $sydney.glasses isnot "contacts">><<He>> removes <<his>> <<sydneyGlasses>> and sets them aside.<</if>> + You clench your fist harder. Sydney seems to notice. "You want to hit me again, don't you?" <<if $sydney.glasses isnot "contacts">><<He>> removes <<his>> <<sydneyGlasses>> and sets them aside.<</if>> <br><br> <<He>> leans forward, and braces <<himself>>. <<if _sydneyStatus.includes("corrupt")>> @@ -1755,7 +1755,7 @@ Leighton takes Sydney by the arm again. You spring into action. <<if _sydneyStatus.includes("corrupt")>> <<He>> sighs, straddling <<himself>> onto the desk. <<He>> gives <<his>> rear a wiggle. "Well? Hurry up, you're holding up business." Leighton stares, bemused. <<else>> - <<He>> hurridly complies as Leighton tightens <<nnpc_his "Leighton">> grip on you. "J-just please make it quick," <<he>> stammers. + <<He>> hurriedly complies as Leighton tightens <<nnpc_his "Leighton">> grip on you. "J-just please make it quick," <<he>> stammers. <</if>> <br><br> "You misunderstand, Sydney. I won't be the one punishing you." Leighton drags you into position behind Sydney, and <<if $pronoun is "m">>pulls down <<his>> trousers<<else>>lifts <<his>> skirt<</if>>. @@ -3339,7 +3339,9 @@ You get on your knees and crawl under the counter. You grin back and part <<his>> knees, <<if $pronoun is "m">>pulling down <<his>> trousers<<else>>lifting <<his>> skirt<</if>>. <<sydneyExpose>> <<if _sydneyChastity is 1>>You can see through <<his>> chastity device that <<hes>><<else>><<Hes>><</if>> already <<if $NPCName[$NPCNameList.indexOf("Sydney")].gender is "m">>erect<<else>>dripping wet<</if>>. - <<promiscuity4>><<npcincr Sydney purity -2>><<lspurity>> + <<npcincr Sydney purity -2>><<lspurity>> + <br> + <<promiscuity4>> <<if ["early","late"].includes($schoolstate)>> <!-- I'm not sure how necessary this is, since Sydney can't be in the library if $schoolstate is early or late. I'm hesitant to remove it, though. Worst case scenario, some lines can be salvaged for a different scene.--> diff --git a/game/overworld-town/special-sydney/temple.twee b/game/overworld-town/special-sydney/temple.twee index 3ae87eee2801f6f189d9ce5353a70a38ef7d51d7..9869e1bb4c614422f39eeecda71f2c5de10bd8dd 100644 --- a/game/overworld-town/special-sydney/temple.twee +++ b/game/overworld-town/special-sydney/temple.twee @@ -415,7 +415,7 @@ The two of you walk back to the main area of the temple. It takes some time, but Realisation dawns as you lean back. Your <<penis>> is beautiful. Why should you care what other people say about it? You've gained the <span class="green">Acceptance: Tiny Penis</span> trait. <br><br> <</if>> - Sydney keeps <<his>> head bowed, unaware of your <<if _acceptMessage>>relevation<<else>>thoughts<</if>>. + Sydney keeps <<his>> head bowed, unaware of your <<if _acceptMessage>>revelation<<else>>thoughts<</if>>. <<case 5>> Your thoughts turn to your <<penis>>, and the mocking way people regard it. The torment returns. You pray for a bigger penis. <br><br> @@ -426,7 +426,7 @@ The two of you walk back to the main area of the temple. It takes some time, but Realisation dawns as you lean back. Your <<penis>> is beautiful. Why should you care what other people say about it? You've gained the <span class="green">Acceptance: Small Penis</span> trait. <br><br> <</if>> - Sydney keeps <<his>> head bowed, unaware of your <<if _acceptMessage>>relevation<<else>>thoughts<</if>>. + Sydney keeps <<his>> head bowed, unaware of your <<if _acceptMessage>>revelation<<else>>thoughts<</if>>. <<case 6>> Your thoughts turn to your <<penis>>, and the mocking way people regard it. The torment returns. You pray for a smaller penis. <br><br> @@ -437,7 +437,7 @@ The two of you walk back to the main area of the temple. It takes some time, but Realisation dawns as you lean back. Your <<penis>> is beautiful. Why should you care what other people say about it? You've gained the <span class="green">Acceptance: Big Penis</span> trait. <br><br> <</if>> - Sydney keeps <<his>> head bowed, unaware of your <<if _acceptMessage>>relevation<<else>>thoughts<</if>>. + Sydney keeps <<his>> head bowed, unaware of your <<if _acceptMessage>>revelation<<else>>thoughts<</if>>. <<case 7>> Your thoughts turn to your flat chest, and the mocking way people regard it. The torment returns. You pray for bigger breasts. <br><br> @@ -448,7 +448,7 @@ The two of you walk back to the main area of the temple. It takes some time, but Realisation dawns as you lean back. Your chest is beautiful. Why should you care what other people say about it? You've gained the <span class="green">Acceptance: Tiny Breasts</span> trait. <br><br> <</if>> - Sydney keeps <<his>> head bowed, unaware of your <<if _acceptMessage>>relevation<<else>>thoughts<</if>>. + Sydney keeps <<his>> head bowed, unaware of your <<if _acceptMessage>>revelation<<else>>thoughts<</if>>. <<case 8>> Your thoughts turn to your <<breasts>>, and the mocking way people regard them. The torment returns. You try to remain detached. <br><br> @@ -459,7 +459,7 @@ The two of you walk back to the main area of the temple. It takes some time, but Realisation dawns as you lean back. Your <<breasts>> are beautiful. Why should you care what other people say about them? You've gained the <span class="green">Acceptance: Small Breasts</span> trait. <br><br> <</if>> - Sydney keeps <<his>> head bowed, unaware of your <<if _acceptMessage>>relevation<<else>>thoughts<</if>>. + Sydney keeps <<his>> head bowed, unaware of your <<if _acceptMessage>>revelation<<else>>thoughts<</if>>. <<case 9>> Your thoughts turn to your <<breasts>>, and the mocking way people regard them. The torment returns. You pray for smaller breasts. <br><br> @@ -470,7 +470,7 @@ The two of you walk back to the main area of the temple. It takes some time, but Realisation dawns as you lean back. Your <<breasts>> are beautiful. Why should you care what other people say about them? You've gained the <span class="green">Acceptance: Big Breasts</span> trait. <br><br> <</if>> - Sydney keeps <<his>> head bowed, unaware of your <<if _acceptMessage>>relevation<<else>>thoughts<</if>>. + Sydney keeps <<his>> head bowed, unaware of your <<if _acceptMessage>>revelation<<else>>thoughts<</if>>. <</switch>> <<npcincr Sydney purity 1>><<gspurity>> <br><br> diff --git a/game/overworld-town/special-sydney/walk.twee b/game/overworld-town/special-sydney/walk.twee index 56cb7e39a321816d592fdc949f5073d1a55fe784..fdb825cd58c0cf9a29f1da8d57515976bec80db2 100644 --- a/game/overworld-town/special-sydney/walk.twee +++ b/game/overworld-town/special-sydney/walk.twee @@ -1418,7 +1418,7 @@ You shake your head, and Sydney frowns. "Suit yourself, I guess." <<He>> turns o <</if>> :: Sydney Beach Start -<<location "beach">><<effects>> +<<location "promenade">><<effects>> <<set $dateCount.Total++>><<set $dateCount.Sydney++>> You arrive at the beach with Sydney. <<if $weather is "rain" or $weather is "snow">> @@ -2054,9 +2054,9 @@ The teenagers are happy to have two more players, particularly the <<person2>><< Sydney seems to be taken aback at being called a <<sydneyBeachGender>>, but shakes it off. <</if>> <<else>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 0 and $worn.lower.set isnot $worn.upper.set>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0 and $worn.lower.set isnot $worn.upper.set>> Before you can react, the <<person2>><<person>> has pulled them all the way to your knees, - <<elseif setup.clothes.lower[$worn.lower.index].skirt is 0 and $worn.lower.set is $worn.upper.set>> + <<elseif setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 0 and $worn.lower.set is $worn.upper.set>> Before you can react, the <<person2>><<person>> has pulled it aside, <<else>> Before you can react, the <<person2>><<person>> has lifted it, diff --git a/game/overworld-underground/loc-sewers/widgets.twee b/game/overworld-underground/loc-sewers/widgets.twee index fba56cacecc9e75338bde89a553a096d8a9aba47..e505dc35eaf1c00870513fa5a4fd409077b0a97c 100644 --- a/game/overworld-underground/loc-sewers/widgets.twee +++ b/game/overworld-underground/loc-sewers/widgets.twee @@ -549,7 +549,7 @@ You slip on something slimy, and land on your <<bottom>>. <br><br> <<if !$worn.lower.type.includes("naked")>> - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<if !$parasite.bottom.name>> You try to stand up, but your butt is stuck firm. Your $worn.lower.name flared as you fell, leaving your bare skin exposed to the sticky substance. You keep tugging, until you manage to pull yourself to your feet. <br><br> diff --git a/game/overworld-underground/loc-underground/events.twee b/game/overworld-underground/loc-underground/events.twee index 5de3c19707078f67d6b8401f7a95eeaada01fe57..f21f7f14743ce767ff428ffcb03903134301bb91 100644 --- a/game/overworld-underground/loc-underground/events.twee +++ b/game/overworld-underground/loc-underground/events.twee @@ -774,8 +774,6 @@ You run as fast you can. You hear the <<victimgirls>> scream as they are caught, "Looks like <<bhe 0>> likes you," you hear the <<person>> say as <<he>> catches up. <<He>> is not alone, much of the crowd follows behind <<him>>. "And it's only fair <<bhe 0>> gets to do as <<bhe 0>> likes with <<bhis 0>> quarry." The crowd forms a circle around you. <br><br> - <<clearsinglenpc 1>> - <<link [[Next|Underground Hunt Dog]]>><<set $molestationstart to 1>><</link>> <br> <<else>> @@ -1221,8 +1219,7 @@ They leave the room, taking their machine with them. You're once more plunged in <<violence 1>> <<neutral 1>> <<molested>> - <<set $enemyno to 1>><<set $enemynomax to 1>><<maninit>><<npcexpose>> - <<set $enemytype to "plant">> + <<maninit "plant">><<npcexpose>> <<set $enemyarousalmax to 800>> <<set _randomtentacles to random(6, 10)>> <<makeAbomination _randomtentacles 6 "vine" "vine" true>> diff --git a/game/special-dance/actions.twee b/game/special-dance/actions.twee index 62224615f4ab3ab3967aa1516bf20431c11ad78e..b35fe6878096cbd77d7dce28353c5e1b7c3af683 100644 --- a/game/special-dance/actions.twee +++ b/game/special-dance/actions.twee @@ -450,7 +450,7 @@ <</widget>> <<widget "dancestrip">> - <<if $worn.under_lower.name isnot "naked" and ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.type.includes("naked")))>> + <<if $worn.under_lower.name isnot "naked" and ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.type.includes("naked")))>> You spin, your skirt flaring up. Lacking in decency, a member of your audience seizes the opportunity and lunges for your $worn.under_lower.name. <<set $danceevent to "skirtstrip">><<molested>> <<elseif $worn.over_lower.name isnot "naked">> diff --git a/game/special-dance/effects.twee b/game/special-dance/effects.twee index 2c89952d080d25f982421329d444a2a2f6fa550c..292ee2fd09fc60a1462a78845b27c33e683ef4b8 100644 --- a/game/special-dance/effects.twee +++ b/game/special-dance/effects.twee @@ -13,7 +13,7 @@ <<if $danceaction is "vipallow">> <<set $danceaction to 0>><<set $audiencearousal += 5>><<set $audienceexcitement += 5>> The <<person>> pulls you to a sitting position and wraps an arm around your waist. - <<if $worn.under_lower.type.includes("naked") and ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.type.includes("naked")))>> + <<if $worn.under_lower.type.includes("naked") and ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.type.includes("naked")))>> <<His>> hand crawls beneath your skirt, where it finds your exposed <<genitals>>. <<if $worn.genitals.type.includes("chastity")>> <<He>> grasps it, and tugs, to no avail. The pressure on your <<genitals 1>> makes you squirm. "You're such a tease," <<he>> says. "All these people slavering over you, but they haven't a chance." <<He>> steps aside to give the rest of the audience a better look, but doesn't stop fondling you. <<He>> leans close and whispers. "Maybe I should lift this cute skirt of yours. Then everyone will see." @@ -31,17 +31,17 @@ <<ggarousal>><<arousal 1200>> <br><br> <<elseif !$worn.upper.type.includes("naked")>> - <<His>> hand crawls over your chest, and <<if $player.perceived_breastsize gte 2>>cups your <<breasts>>.<<else>>rests above your <<breasts>>.<</if>> <<He>> brushes <<his>> fingers against your buds, enough to make your squirm even through your $worn.upper.name. <<He>> steps aside to give the rest of the audience a better look, but doesn't stop fondling you. "Maybe I should <<pullup>> this top of yours." <<He>> whispers. "Let everyone see." + <<His>> hand crawls over your chest, and <<if $player.perceived_breastsize gte 2>>cups your <<breasts>>.<<else>>rests above your <<breasts>>.<</if>> <<He>> brushes <<his>> fingers against your buds, enough to make you squirm even through your $worn.upper.name. <<He>> steps aside to give the rest of the audience a better look, but doesn't stop fondling you. "Maybe I should <<pullup>> this top of yours." <<He>> whispers. "Let everyone see." <<garousal>><<arousal 600>> <br><br> <<else>> - <<His>> hand crawls over your bare chest, and <<if $breastsize gte 2>>cups your <<breasts>>.<<else>>rests above your <<breasts>>.<</if>> <<He>> brushes <<his>> fingers against your buds, enough to make your squirm. <<He>> steps aside to give the rest of the audience a better look, but doesn't stop fondling you. + <<His>> hand crawls over your bare chest, and <<if $breastsize gte 2>>cups your <<breasts>>.<<else>>rests above your <<breasts>>.<</if>> <<He>> brushes <<his>> fingers against your buds, enough to make you squirm. <<He>> steps aside to give the rest of the audience a better look, but doesn't stop fondling you. <<garousal>><<arousal 600>> <br><br> <</if>> <<if $arousal gte $arousalmax>> <<orgasm>> - <<if $worn.under_lower.type.includes("naked") and ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.type.includes("naked"))) and $player.penisExist>> + <<if $worn.under_lower.type.includes("naked") and ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.type.includes("naked"))) and $player.penisExist>> <<if $femaleclimax is 1>> Your lack of cum causes several to laugh at you. <<person2>>The <<person>> grins as <<he>> releases you. <<tearful>> you clamber to your feet. <<set $audiencearousal += 15>><<set $audienceexcitement += 15>><<set $audiencemod += 4>><<set $dancespeech to "nocum">> @@ -83,7 +83,7 @@ <</if>> reaches up and seizes you by the thighs. <<He>> leans in and kisses your <<bottom>> as <<if !$worn.over_lower.type.includes("naked") and !$worn.lower.type.includes("naked")>> - <<if ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.type.includes("naked")))>> + <<if ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.type.includes("naked")))>> <<if $worn.genitals.type.includes("chastity") and $worn.under_lower.type.includes("naked")>> <<he>> reaches beneath your skirt and pushes the note beneath your chastity belt. <<elseif $worn.under_lower.type.includes("naked")>> @@ -105,7 +105,7 @@ <</if>> <<else>> <<if !$worn.over_lower.type.includes("naked") and !$worn.lower.type.includes("naked")>> - <<if ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.type.includes("naked")))>> + <<if ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.type.includes("naked")))>> <<if $worn.genitals.type.includes("chastity") and $worn.under_lower.type.includes("naked")>> <<He>> reaches beneath your skirt and pushes the note beneath your chastity belt. <<elseif $worn.under_lower.type.includes("naked")>> @@ -1053,7 +1053,7 @@ <</if>> <</if>> <<else>> - <<if ((setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and setup.clothes.lower[$worn.lower.index].skirt is 1) or (setup.clothes.over_lower[$worn.over_lower.index].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[$worn.lower.index].skirt is 1 and $worn.over_lower.type.includes("naked")))>> + <<if ((setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1) or (setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 and $worn.lower.type.includes("naked")) or (setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 and $worn.over_lower.type.includes("naked")))>> <<set $rng to random(1, 100)>> <<if $rng gte 76>> "Give us a peek beneath your skirt." diff --git a/game/special-masturbation/actions.twee b/game/special-masturbation/actions.twee index 9525f4ceb6bbb53f04cdd1d56cc28fae5d48e8c5..072ad63d1fadd3c442714a4b45ad861350b73dbf 100644 --- a/game/special-masturbation/actions.twee +++ b/game/special-masturbation/actions.twee @@ -127,7 +127,7 @@ | <label><<radiobutton "$leftaction" "mlower" autocheck>> Displace your $worn.lower.name</label> <</if>> <<if $worn.under_lower.exposed lte 0>> - <<if $worn.lower.state isnot setup.clothes.lower[$worn.lower.index].state_base or setup.clothes.lower[$worn.lower.index].skirt is 1 or $worn.lower.type.includes("naked")>> + <<if $worn.lower.state isnot setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base or setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 or $worn.lower.type.includes("naked")>> | <label><<radiobutton "$leftaction" "munder" autocheck>> Pull down your $worn.under_lower.name</label> <</if>> <</if>> @@ -259,7 +259,7 @@ | <label><<radiobutton "$rightaction" "mlower" autocheck>> Displace your $worn.lower.name</label> <</if>> <<if $worn.under_lower.exposed lte 0>> - <<if $worn.lower.state isnot setup.clothes.lower[$worn.lower.index].state_base or setup.clothes.lower[$worn.lower.index].skirt is 1 or $worn.lower.type.includes("naked")>> + <<if $worn.lower.state isnot setup.clothes.lower[clothesIndex('lower', $worn.lower)].state_base or setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 or $worn.lower.type.includes("naked")>> | <label><<radiobutton "$rightaction" "munder" autocheck>> Pull down your $worn.under_lower.name</label> <</if>> <</if>> diff --git a/game/special-masturbation/effects.twee b/game/special-masturbation/effects.twee index 95ec427ee61b1735548aec38b21ed9e873a37cfb..59d8cf7564a8d0912cbff52ece65f20552e9f20a 100644 --- a/game/special-masturbation/effects.twee +++ b/game/special-masturbation/effects.twee @@ -112,7 +112,7 @@ <<set $rightaction to 0>><<set $rightactiondefault to "mrest">> <</if>> <<set $worn.over_lower.anus_exposed to 1>><<set $worn.over_lower.vagina_exposed to 1>><<set $worn.over_lower.exposed to 2>> - <<if setup.clothes.over_lower[$worn.over_lower.index].skirt is 1>> + <<if setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1>> <<set $worn.over_lower.skirt_down to 0>> You lift up your $worn.over_lower.name, <span class="lewd">exposing your <<exposedlower>>.</span> <<else>> @@ -130,7 +130,7 @@ <</if>> <<set $worn.lower.anus_exposed to 1>><<set $worn.lower.vagina_exposed to 1>><<set $worn.lower.exposed to 2>> /* needs work; what if layer above is not exposed? */ - <<if setup.clothes.lower[$worn.lower.index].skirt is 1>> + <<if setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>> <<set $worn.lower.skirt_down to 0>> You lift up your $worn.lower.name, <span class="lewd">exposing your <<undies>>.</span> <<else>> @@ -184,7 +184,7 @@ /* the text output currently does not care which hand is used or if both hands are used */ <<if $worn.upper.exposed gte 2 and $worn.under_upper.exposed gte 1>> - <<arousal 100*_handsOnBreasts>> + <<arousal `100 * _handsOnBreasts`>> <<if $breastsize lte 2>> <<if $arousal gte ($arousalmax / 5) * 4>> You tease your sensitive nipples as much as you can stand, each brush of your fingers sending jolts of excitement through you. diff --git a/game/special-templates/main.twee b/game/special-templates/main.twee index f3b757614b529191b0e09d8758983b9589f4fe13..440870efeb98342043a8164aee45fd45c994f1b6 100644 --- a/game/special-templates/main.twee +++ b/game/special-templates/main.twee @@ -1,9 +1,8 @@ :: Test -<<location "home">><<effects>> +<<location castle>><<effects>> <<endcombat>> - :: Robin <<set $NPCName[$NPCNameList.indexOf("Robin")].love to 50>> <<if $NPCName[$NPCNameList.indexOf("Robin")].love gte 50>> diff --git a/img/clothes/feet/cowboy/full.png b/img/clothes/feet/cowboy/full.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f140ea7400304a1bfbf6cd34e086cc98785748 Binary files /dev/null and b/img/clothes/feet/cowboy/full.png differ diff --git a/img/clothes/head/cowonesie/back.png b/img/clothes/head/cowonesie/back.png new file mode 100644 index 0000000000000000000000000000000000000000..2af2b58fa0ea9c03541a7db59730e11ad4c9941f Binary files /dev/null and b/img/clothes/head/cowonesie/back.png differ diff --git a/img/clothes/head/cowonesie/frayed.png b/img/clothes/head/cowonesie/frayed.png new file mode 100644 index 0000000000000000000000000000000000000000..a825f54b7e5aa5be59f5c7f727ec9bed64bb2f98 Binary files /dev/null and b/img/clothes/head/cowonesie/frayed.png differ diff --git a/img/clothes/head/cowonesie/full.png b/img/clothes/head/cowonesie/full.png new file mode 100644 index 0000000000000000000000000000000000000000..b025604f47fe53f43aac7682fe3b227c0f28515e Binary files /dev/null and b/img/clothes/head/cowonesie/full.png differ diff --git a/img/clothes/head/cowonesie/full_down.png b/img/clothes/head/cowonesie/full_down.png new file mode 100644 index 0000000000000000000000000000000000000000..7ca2e207f5a70db2461d2ae8b7c5664e251f3c08 Binary files /dev/null and b/img/clothes/head/cowonesie/full_down.png differ diff --git a/img/clothes/head/cowonesie/mask.png b/img/clothes/head/cowonesie/mask.png new file mode 100644 index 0000000000000000000000000000000000000000..b647acb3cf216668ca95233fae07ae0f595c7b2b Binary files /dev/null and b/img/clothes/head/cowonesie/mask.png differ diff --git a/img/clothes/head/cowonesie/tattered.png b/img/clothes/head/cowonesie/tattered.png new file mode 100644 index 0000000000000000000000000000000000000000..e2e9cd91c8149d44c07a7ec6bf5fff7b8a70ed52 Binary files /dev/null and b/img/clothes/head/cowonesie/tattered.png differ diff --git a/img/clothes/head/cowonesie/torn.png b/img/clothes/head/cowonesie/torn.png new file mode 100644 index 0000000000000000000000000000000000000000..31f97a57f24e2a3310ccb0a9cf00d489ed53dfea Binary files /dev/null and b/img/clothes/head/cowonesie/torn.png differ diff --git a/img/clothes/lower/cowchaps/frayed.png b/img/clothes/lower/cowchaps/frayed.png new file mode 100644 index 0000000000000000000000000000000000000000..259a32f12c4e8d4aea9d00f9e2b9ee1563b7809f Binary files /dev/null and b/img/clothes/lower/cowchaps/frayed.png differ diff --git a/img/clothes/lower/cowchaps/full.png b/img/clothes/lower/cowchaps/full.png new file mode 100644 index 0000000000000000000000000000000000000000..17db67755e341f4fefc63dff1267cd56c4462b22 Binary files /dev/null and b/img/clothes/lower/cowchaps/full.png differ diff --git a/img/clothes/lower/cowchaps/tattered.png b/img/clothes/lower/cowchaps/tattered.png new file mode 100644 index 0000000000000000000000000000000000000000..716619b3eb9db7fe5e1decd2cc4e495d0fc59ed5 Binary files /dev/null and b/img/clothes/lower/cowchaps/tattered.png differ diff --git a/img/clothes/lower/cowchaps/torn.png b/img/clothes/lower/cowchaps/torn.png new file mode 100644 index 0000000000000000000000000000000000000000..161517ec37512c693fd467b203409117b9f5608a Binary files /dev/null and b/img/clothes/lower/cowchaps/torn.png differ diff --git a/img/clothes/lower/cowonesie/frayed.png b/img/clothes/lower/cowonesie/frayed.png new file mode 100644 index 0000000000000000000000000000000000000000..ba83fd6a12407add49f459d8e37aab107c828416 Binary files /dev/null and b/img/clothes/lower/cowonesie/frayed.png differ diff --git a/img/clothes/lower/cowonesie/full.png b/img/clothes/lower/cowonesie/full.png new file mode 100644 index 0000000000000000000000000000000000000000..8b729be301327bcd9a80afbf3d1d939f3f001120 Binary files /dev/null and b/img/clothes/lower/cowonesie/full.png differ diff --git a/img/clothes/lower/cowonesie/tattered.png b/img/clothes/lower/cowonesie/tattered.png new file mode 100644 index 0000000000000000000000000000000000000000..d427a7e223ba07b8e8d4ffbc2ff58e3dd23e3693 Binary files /dev/null and b/img/clothes/lower/cowonesie/tattered.png differ diff --git a/img/clothes/lower/cowonesie/torn.png b/img/clothes/lower/cowonesie/torn.png new file mode 100644 index 0000000000000000000000000000000000000000..7458d926604953f4ef2e6f53d2bca54a652b590d Binary files /dev/null and b/img/clothes/lower/cowonesie/torn.png differ diff --git a/img/clothes/upper/cowchaps/frayed.png b/img/clothes/upper/cowchaps/frayed.png new file mode 100644 index 0000000000000000000000000000000000000000..259a32f12c4e8d4aea9d00f9e2b9ee1563b7809f Binary files /dev/null and b/img/clothes/upper/cowchaps/frayed.png differ diff --git a/img/clothes/upper/cowchaps/full.png b/img/clothes/upper/cowchaps/full.png new file mode 100644 index 0000000000000000000000000000000000000000..17db67755e341f4fefc63dff1267cd56c4462b22 Binary files /dev/null and b/img/clothes/upper/cowchaps/full.png differ diff --git a/img/clothes/upper/cowchaps/tattered.png b/img/clothes/upper/cowchaps/tattered.png new file mode 100644 index 0000000000000000000000000000000000000000..716619b3eb9db7fe5e1decd2cc4e495d0fc59ed5 Binary files /dev/null and b/img/clothes/upper/cowchaps/tattered.png differ diff --git a/img/clothes/upper/cowchaps/torn.png b/img/clothes/upper/cowchaps/torn.png new file mode 100644 index 0000000000000000000000000000000000000000..161517ec37512c693fd467b203409117b9f5608a Binary files /dev/null and b/img/clothes/upper/cowchaps/torn.png differ diff --git a/img/clothes/upper/cowonesie/frayed.png b/img/clothes/upper/cowonesie/frayed.png new file mode 100644 index 0000000000000000000000000000000000000000..e6894ec5f5ae8c6ab4f0b9383895a79fd3a65ac6 Binary files /dev/null and b/img/clothes/upper/cowonesie/frayed.png differ diff --git a/img/clothes/upper/cowonesie/full.png b/img/clothes/upper/cowonesie/full.png new file mode 100644 index 0000000000000000000000000000000000000000..71311e954183c8aa263013ff87f7bd5e74bab237 Binary files /dev/null and b/img/clothes/upper/cowonesie/full.png differ diff --git a/img/clothes/upper/cowonesie/left.png b/img/clothes/upper/cowonesie/left.png new file mode 100644 index 0000000000000000000000000000000000000000..1847a957e7299a2cb8a563574276e7a2fecd8c3e Binary files /dev/null and b/img/clothes/upper/cowonesie/left.png differ diff --git a/img/clothes/upper/cowonesie/left_cover.png b/img/clothes/upper/cowonesie/left_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..b641f987eafc0b134049e9ac8b618e4cf9556fda Binary files /dev/null and b/img/clothes/upper/cowonesie/left_cover.png differ diff --git a/img/clothes/upper/cowonesie/right.png b/img/clothes/upper/cowonesie/right.png new file mode 100644 index 0000000000000000000000000000000000000000..0e044d09b755898204be61d3d004fbb3caaf1c5c Binary files /dev/null and b/img/clothes/upper/cowonesie/right.png differ diff --git a/img/clothes/upper/cowonesie/right_cover.png b/img/clothes/upper/cowonesie/right_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..23fe42edd75516c832ecf81aebfdf061466588b8 Binary files /dev/null and b/img/clothes/upper/cowonesie/right_cover.png differ diff --git a/img/clothes/upper/cowonesie/tattered.png b/img/clothes/upper/cowonesie/tattered.png new file mode 100644 index 0000000000000000000000000000000000000000..12536c7128827422b398575b6592ce8bb2c3af1a Binary files /dev/null and b/img/clothes/upper/cowonesie/tattered.png differ diff --git a/img/clothes/upper/cowonesie/torn.png b/img/clothes/upper/cowonesie/torn.png new file mode 100644 index 0000000000000000000000000000000000000000..d1b0b216b947838b30da36a803b6e4b9bcaf3746 Binary files /dev/null and b/img/clothes/upper/cowonesie/torn.png differ diff --git a/img/hair/back/curl/feet.png b/img/hair/back/curl/feet.png new file mode 100644 index 0000000000000000000000000000000000000000..03607a34c41adbef73fe66ec6c3765905a81dcae Binary files /dev/null and b/img/hair/back/curl/feet.png differ diff --git a/img/hair/back/curl/thighs.png b/img/hair/back/curl/thighs.png new file mode 100644 index 0000000000000000000000000000000000000000..1759c4304ed4eadb0c7f7d6f517ec91c4a5684d6 Binary files /dev/null and b/img/hair/back/curl/thighs.png differ diff --git a/img/hair/back/default/feet.png b/img/hair/back/default/feet.png new file mode 100644 index 0000000000000000000000000000000000000000..d73f71270885706fee613d3dc708bf4fb7bc2f80 Binary files /dev/null and b/img/hair/back/default/feet.png differ diff --git a/img/hair/back/default/thighs.png b/img/hair/back/default/thighs.png new file mode 100644 index 0000000000000000000000000000000000000000..92efecec84da623faebbd742dc8404041e59204c Binary files /dev/null and b/img/hair/back/default/thighs.png differ diff --git a/img/hair/back/defined curl/feet.png b/img/hair/back/defined curl/feet.png new file mode 100644 index 0000000000000000000000000000000000000000..af0fd7868bdc1ac90718a7b2bf790ecdf78b6a89 Binary files /dev/null and b/img/hair/back/defined curl/feet.png differ diff --git a/img/hair/back/defined curl/thighs.png b/img/hair/back/defined curl/thighs.png new file mode 100644 index 0000000000000000000000000000000000000000..484c92afd4867b1a3fec84707f9908182c7f6743 Binary files /dev/null and b/img/hair/back/defined curl/thighs.png differ diff --git a/img/hair/back/loose/feet.png b/img/hair/back/loose/feet.png new file mode 100644 index 0000000000000000000000000000000000000000..f6b93dc5b90e91e53cc6dacc788dee6a7de1bcfc Binary files /dev/null and b/img/hair/back/loose/feet.png differ diff --git a/img/hair/back/loose/thighs.png b/img/hair/back/loose/thighs.png new file mode 100644 index 0000000000000000000000000000000000000000..72d46f4da5626d5bd7231d0c50699738e4328375 Binary files /dev/null and b/img/hair/back/loose/thighs.png differ diff --git a/img/hair/back/neat/feet.png b/img/hair/back/neat/feet.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef59ae3d0a3539874e21989a28a487966021b48 Binary files /dev/null and b/img/hair/back/neat/feet.png differ diff --git a/img/hair/back/neat/thighs.png b/img/hair/back/neat/thighs.png new file mode 100644 index 0000000000000000000000000000000000000000..23cbc78651786c0afcdd1dc883dd6b8dd7a96c2d Binary files /dev/null and b/img/hair/back/neat/thighs.png differ diff --git a/img/hair/back/straight/feet.png b/img/hair/back/straight/feet.png new file mode 100644 index 0000000000000000000000000000000000000000..c05e2596195aa833a2ec6f548273af2d4e2323a2 Binary files /dev/null and b/img/hair/back/straight/feet.png differ diff --git a/img/hair/fringe/hime/chest.png b/img/hair/fringe/hime/chest.png index 16d062412d364fcf905d69ab85b6eefd1fbda0dd..826f8ff6715663ac07be88c98c7cf5ac9f32f97d 100644 Binary files a/img/hair/fringe/hime/chest.png and b/img/hair/fringe/hime/chest.png differ diff --git a/img/hair/fringe/hime/feet.png b/img/hair/fringe/hime/feet.png index 3b4e953f011503d8da24d5ce188391f0ef3bc0c5..5e845ca150674bc8f687eef098539e7de6a1ef25 100644 Binary files a/img/hair/fringe/hime/feet.png and b/img/hair/fringe/hime/feet.png differ diff --git a/img/hair/fringe/hime/navel.png b/img/hair/fringe/hime/navel.png index dfbb6431b0b721912440b430c0dd6da5c4bc374d..a6d40f636992f9a8c8ad7472729f67a3cf18a83b 100644 Binary files a/img/hair/fringe/hime/navel.png and b/img/hair/fringe/hime/navel.png differ diff --git a/img/hair/fringe/hime/short.png b/img/hair/fringe/hime/short.png index c95a60e6d6e84754b8a31e92687224e9891e20b5..96d32b99cb4b06465a06f28668caa3ddb5e05cab 100644 Binary files a/img/hair/fringe/hime/short.png and b/img/hair/fringe/hime/short.png differ diff --git a/img/hair/fringe/hime/shoulder.png b/img/hair/fringe/hime/shoulder.png index d4615debcdf006c26ea361a061ff704d1b03b2bb..1136c62839668c538dd8f4f9ddfecb977725bfbc 100644 Binary files a/img/hair/fringe/hime/shoulder.png and b/img/hair/fringe/hime/shoulder.png differ diff --git a/img/hair/fringe/hime/thighs.png b/img/hair/fringe/hime/thighs.png index 649d20a25d8bcfdaa3f01b642d854a10ac91aeb1..6bef18f67fa65e5f0edfc13c0ef89feb1a63eca9 100644 Binary files a/img/hair/fringe/hime/thighs.png and b/img/hair/fringe/hime/thighs.png differ diff --git a/img/hair/fringe/old_hime/chest.png b/img/hair/fringe/old_hime/chest.png new file mode 100644 index 0000000000000000000000000000000000000000..16d062412d364fcf905d69ab85b6eefd1fbda0dd Binary files /dev/null and b/img/hair/fringe/old_hime/chest.png differ diff --git a/img/hair/fringe/hime/feet.pdn b/img/hair/fringe/old_hime/feet.pdn similarity index 100% rename from img/hair/fringe/hime/feet.pdn rename to img/hair/fringe/old_hime/feet.pdn diff --git a/img/hair/fringe/old_hime/feet.png b/img/hair/fringe/old_hime/feet.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4e953f011503d8da24d5ce188391f0ef3bc0c5 Binary files /dev/null and b/img/hair/fringe/old_hime/feet.png differ diff --git a/img/hair/fringe/old_hime/navel.png b/img/hair/fringe/old_hime/navel.png new file mode 100644 index 0000000000000000000000000000000000000000..dfbb6431b0b721912440b430c0dd6da5c4bc374d Binary files /dev/null and b/img/hair/fringe/old_hime/navel.png differ diff --git a/img/hair/fringe/old_hime/short.png b/img/hair/fringe/old_hime/short.png new file mode 100644 index 0000000000000000000000000000000000000000..c95a60e6d6e84754b8a31e92687224e9891e20b5 Binary files /dev/null and b/img/hair/fringe/old_hime/short.png differ diff --git a/img/hair/fringe/old_hime/shoulder.png b/img/hair/fringe/old_hime/shoulder.png new file mode 100644 index 0000000000000000000000000000000000000000..d4615debcdf006c26ea361a061ff704d1b03b2bb Binary files /dev/null and b/img/hair/fringe/old_hime/shoulder.png differ diff --git a/img/hair/fringe/old_hime/thighs.png b/img/hair/fringe/old_hime/thighs.png new file mode 100644 index 0000000000000000000000000000000000000000..649d20a25d8bcfdaa3f01b642d854a10ac91aeb1 Binary files /dev/null and b/img/hair/fringe/old_hime/thighs.png differ diff --git a/img/hair/sides/curl/feet.png b/img/hair/sides/curl/feet.png index 05532ea596913918c17eb37d2668d424f1266ccd..5a4281f91aa931139c1ecc76520ebc224652fa11 100644 Binary files a/img/hair/sides/curl/feet.png and b/img/hair/sides/curl/feet.png differ diff --git a/img/hair/sides/curl/navel.png b/img/hair/sides/curl/navel.png index 77ea301a2e0fc1b5f67162d8c7a10391cb046cff..75c2b0c6facf0d2ea4cee5a1e78895e1ab2bc1ae 100644 Binary files a/img/hair/sides/curl/navel.png and b/img/hair/sides/curl/navel.png differ diff --git a/img/hair/sides/curl/thighs.png b/img/hair/sides/curl/thighs.png index ef4571168311353d57be7fe6258a487ec2d2b59a..43bd22df010af61d0a5361d6d2b7b732e25fdffe 100644 Binary files a/img/hair/sides/curl/thighs.png and b/img/hair/sides/curl/thighs.png differ diff --git a/img/hair/sides/defined curl/feet.png b/img/hair/sides/defined curl/feet.png index 5101400c16fbd222c5ccc2c94e733e77f017e0ab..a25dad3b94a489032007159a27368045a1e2183c 100644 Binary files a/img/hair/sides/defined curl/feet.png and b/img/hair/sides/defined curl/feet.png differ diff --git a/img/hair/sides/defined curl/thighs.png b/img/hair/sides/defined curl/thighs.png index 23a356ff686c05922b53aa8d42d72b48fa64f78b..5af60c6e04a4f6c0923c8f4ec3c20bda15ab3f66 100644 Binary files a/img/hair/sides/defined curl/thighs.png and b/img/hair/sides/defined curl/thighs.png differ diff --git a/img/hair/sides/neat/feet.png b/img/hair/sides/neat/feet.png index 14a8190089f5aa9bb3fe9cbf4ce6be2d26e3761a..4b32162bfbac8bbdc67f7ce9529e1dffe1a073ad 100644 Binary files a/img/hair/sides/neat/feet.png and b/img/hair/sides/neat/feet.png differ diff --git a/img/hair/sides/neat/thighs.png b/img/hair/sides/neat/thighs.png index 73c274afb57f9841d43b15749d988eabe9611bd6..69b5b953f0cc82e0756ecf3e9de96b8291928833 100644 Binary files a/img/hair/sides/neat/thighs.png and b/img/hair/sides/neat/thighs.png differ diff --git a/img/hair/sides/straight/navel.png b/img/hair/sides/straight/navel.png index 4dedb51810b7ac5337d7a998803d16e78907c39a..507395dd38b305be801deecc66aa311dcd6f9b3c 100644 Binary files a/img/hair/sides/straight/navel.png and b/img/hair/sides/straight/navel.png differ diff --git a/img/hair/sides/straight/thighs.png b/img/hair/sides/straight/thighs.png index b9cc2ec289d740541958e98f9010c1a78c1658b2..15e20b3a0a7f003bd48599aba1e4269117a38691 100644 Binary files a/img/hair/sides/straight/thighs.png and b/img/hair/sides/straight/thighs.png differ diff --git a/img/misc/icon/clothes/Cow onesie.png b/img/misc/icon/clothes/Cow onesie.png new file mode 100644 index 0000000000000000000000000000000000000000..9f7f35b698505c937f71db7057d8287e8ad6b428 Binary files /dev/null and b/img/misc/icon/clothes/Cow onesie.png differ diff --git a/img/misc/icon/clothes/Cow print chaps.png b/img/misc/icon/clothes/Cow print chaps.png new file mode 100644 index 0000000000000000000000000000000000000000..c68843613cc3108ab8dc850babee5b67ea8d88d8 Binary files /dev/null and b/img/misc/icon/clothes/Cow print chaps.png differ diff --git a/img/misc/icon/clothes/Cowboy boots.png b/img/misc/icon/clothes/Cowboy boots.png new file mode 100644 index 0000000000000000000000000000000000000000..956fa47db58578bc31b389f1c3193fb464b7c2f9 Binary files /dev/null and b/img/misc/icon/clothes/Cowboy boots.png differ diff --git a/img/misc/icon/clothes/Moon pyjamas bottoms.png b/img/misc/icon/clothes/Moon pyjama bottoms.png similarity index 100% rename from img/misc/icon/clothes/Moon pyjamas bottoms.png rename to img/misc/icon/clothes/Moon pyjama bottoms.png diff --git a/img/misc/icon/clothes/Moon pyjamas bottoms_acc.png b/img/misc/icon/clothes/Moon pyjama bottoms_acc.png similarity index 100% rename from img/misc/icon/clothes/Moon pyjamas bottoms_acc.png rename to img/misc/icon/clothes/Moon pyjama bottoms_acc.png diff --git a/img/misc/icon/clothes/Utility shirt.png b/img/misc/icon/clothes/Utility shirt.png index 2221f8b696f0e58135ee6e855d0804aff10318d6..f072846155f6981b91bd5564dca889c2a60abeaa 100644 Binary files a/img/misc/icon/clothes/Utility shirt.png and b/img/misc/icon/clothes/Utility shirt.png differ diff --git a/img/misc/icon/clothes/Utility shirt_acc.png b/img/misc/icon/clothes/Utility shirt_acc.png index e83acfb78af06f2acfd17efcc3275c4823a38964..22d31b7cb2282b5185efb9622b0993f8a7d3b83a 100644 Binary files a/img/misc/icon/clothes/Utility shirt_acc.png and b/img/misc/icon/clothes/Utility shirt_acc.png differ diff --git a/img/misc/icon/clothes/Utility vest.png b/img/misc/icon/clothes/Utility vest.png index 5a69f525447fda6b3a6e6ab4a2c550a613355219..5e2e10ff471be11b7fad918de552a8ee9330c7c7 100644 Binary files a/img/misc/icon/clothes/Utility vest.png and b/img/misc/icon/clothes/Utility vest.png differ diff --git a/img/misc/icon/food_milkshake.png b/img/misc/icon/food_milkshake.png new file mode 100644 index 0000000000000000000000000000000000000000..08dc8cf19bf71a91791fd21d5673148f9ddabbc3 Binary files /dev/null and b/img/misc/icon/food_milkshake.png differ diff --git a/img/misc/icon/landfill.png b/img/misc/icon/landfill.png new file mode 100644 index 0000000000000000000000000000000000000000..f94afd8062257a312adedc82c39950faf6d84705 Binary files /dev/null and b/img/misc/icon/landfill.png differ diff --git a/img/misc/icon/olive.png b/img/misc/icon/olive.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb1be0c6e934e661d4ffa35513e16b427a1379a Binary files /dev/null and b/img/misc/icon/olive.png differ diff --git a/img/misc/icon/scarlet.png b/img/misc/icon/scarlet.png new file mode 100644 index 0000000000000000000000000000000000000000..2283285b16a113fd0926dabd99ead75d365368d9 Binary files /dev/null and b/img/misc/icon/scarlet.png differ diff --git a/img/misc/normal/promenade_beach_dawn.gif b/img/misc/normal/promenade_beach_dawn.gif new file mode 100644 index 0000000000000000000000000000000000000000..01dc6759b7f18f5b4850d26e9318ffc5b6d05475 Binary files /dev/null and b/img/misc/normal/promenade_beach_dawn.gif differ diff --git a/img/misc/normal/promenade_beach_day.gif b/img/misc/normal/promenade_beach_day.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a89763e9305c698046b78d011d7c0a30d8e8797 Binary files /dev/null and b/img/misc/normal/promenade_beach_day.gif differ diff --git a/img/misc/normal/promenade_beach_dusk.gif b/img/misc/normal/promenade_beach_dusk.gif new file mode 100644 index 0000000000000000000000000000000000000000..95e2a129232c33d2ce4e610b0ff4e195e83c780b Binary files /dev/null and b/img/misc/normal/promenade_beach_dusk.gif differ diff --git a/img/misc/normal/promenade_beach_night.gif b/img/misc/normal/promenade_beach_night.gif new file mode 100644 index 0000000000000000000000000000000000000000..7099bb3503e564e4809cd6aff31cac3304ca737d Binary files /dev/null and b/img/misc/normal/promenade_beach_night.gif differ diff --git a/img/misc/normal/tower_blood.gif b/img/misc/normal/tower_blood.gif new file mode 100644 index 0000000000000000000000000000000000000000..4e13fd7b1f9be67fe6616e5e98a63ad2c3816920 Binary files /dev/null and b/img/misc/normal/tower_blood.gif differ diff --git a/img/misc/normal/tower_dawn.gif b/img/misc/normal/tower_dawn.gif new file mode 100644 index 0000000000000000000000000000000000000000..554ad44010b0f644abbbdb8c3df826bb92a46bc9 Binary files /dev/null and b/img/misc/normal/tower_dawn.gif differ diff --git a/img/misc/normal/tower_day.gif b/img/misc/normal/tower_day.gif new file mode 100644 index 0000000000000000000000000000000000000000..35f3795d0e4e65f39d0a02303dc59856f0521825 Binary files /dev/null and b/img/misc/normal/tower_day.gif differ diff --git a/img/misc/normal/tower_dusk.gif b/img/misc/normal/tower_dusk.gif new file mode 100644 index 0000000000000000000000000000000000000000..1bae28932a5762eaa16df18180ffc9934da7f43e Binary files /dev/null and b/img/misc/normal/tower_dusk.gif differ diff --git a/img/misc/normal/tower_night.gif b/img/misc/normal/tower_night.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa7cb9efd44aa93ffdf635348b64216f302f3a19 Binary files /dev/null and b/img/misc/normal/tower_night.gif differ diff --git a/img/misc/winter/promenade_beach_dawn.gif b/img/misc/winter/promenade_beach_dawn.gif new file mode 100644 index 0000000000000000000000000000000000000000..01dc6759b7f18f5b4850d26e9318ffc5b6d05475 Binary files /dev/null and b/img/misc/winter/promenade_beach_dawn.gif differ diff --git a/img/misc/winter/promenade_beach_day.gif b/img/misc/winter/promenade_beach_day.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a89763e9305c698046b78d011d7c0a30d8e8797 Binary files /dev/null and b/img/misc/winter/promenade_beach_day.gif differ diff --git a/img/misc/winter/promenade_beach_dusk.gif b/img/misc/winter/promenade_beach_dusk.gif new file mode 100644 index 0000000000000000000000000000000000000000..95e2a129232c33d2ce4e610b0ff4e195e83c780b Binary files /dev/null and b/img/misc/winter/promenade_beach_dusk.gif differ diff --git a/img/misc/winter/promenade_beach_night.gif b/img/misc/winter/promenade_beach_night.gif new file mode 100644 index 0000000000000000000000000000000000000000..7099bb3503e564e4809cd6aff31cac3304ca737d Binary files /dev/null and b/img/misc/winter/promenade_beach_night.gif differ diff --git a/img/misc/winter/tower_blood.gif b/img/misc/winter/tower_blood.gif new file mode 100644 index 0000000000000000000000000000000000000000..779981361c40773ea58e915637ca35507298e7d3 Binary files /dev/null and b/img/misc/winter/tower_blood.gif differ diff --git a/img/misc/winter/tower_dawn.gif b/img/misc/winter/tower_dawn.gif new file mode 100644 index 0000000000000000000000000000000000000000..33663de954f9a05bf925a2838f51386a6733acbe Binary files /dev/null and b/img/misc/winter/tower_dawn.gif differ diff --git a/img/misc/winter/tower_day.gif b/img/misc/winter/tower_day.gif new file mode 100644 index 0000000000000000000000000000000000000000..826f9b1649a5823fa0ed39b911ac69f43ade782e Binary files /dev/null and b/img/misc/winter/tower_day.gif differ diff --git a/img/misc/winter/tower_dusk.gif b/img/misc/winter/tower_dusk.gif new file mode 100644 index 0000000000000000000000000000000000000000..7fda8829d4f815bf79a436d7ebba7b028457048e Binary files /dev/null and b/img/misc/winter/tower_dusk.gif differ diff --git a/img/misc/winter/tower_night.gif b/img/misc/winter/tower_night.gif new file mode 100644 index 0000000000000000000000000000000000000000..bc89962d1a03ebf7a400865a05c2348f624adc37 Binary files /dev/null and b/img/misc/winter/tower_night.gif differ diff --git a/img/sex/black/anuspenetratedoubleblack.png b/img/sex/black/anuspenetratedoubleblack.png index 9d11ad0c491bb2cf1a8ef4563531f459833ab174..02bd47eead7d04193bb29da81a5d49c8019d35f2 100644 Binary files a/img/sex/black/anuspenetratedoubleblack.png and b/img/sex/black/anuspenetratedoubleblack.png differ diff --git a/img/sex/close/doggy/anuspenetratedoubleclose.png b/img/sex/close/doggy/anuspenetratedoubleclose.png index a947e32e48464c3543a2c57a2231eae848ea44be..e564309e4787856ce31f44a3191da69c7a123833 100644 Binary files a/img/sex/close/doggy/anuspenetratedoubleclose.png and b/img/sex/close/doggy/anuspenetratedoubleclose.png differ diff --git a/img/sex/close/doggy/vaginapenetratedouble.png b/img/sex/close/doggy/vaginapenetratedouble.png index 728f746f2187be792a998bb5002a2fe844aec67b..96c716af8aaa57222bc8726e8c0179d70bdc0c77 100644 Binary files a/img/sex/close/doggy/vaginapenetratedouble.png and b/img/sex/close/doggy/vaginapenetratedouble.png differ diff --git a/img/sex/close/missionary/anuspenetratedoubleclose.png b/img/sex/close/missionary/anuspenetratedoubleclose.png index a947e32e48464c3543a2c57a2231eae848ea44be..e564309e4787856ce31f44a3191da69c7a123833 100644 Binary files a/img/sex/close/missionary/anuspenetratedoubleclose.png and b/img/sex/close/missionary/anuspenetratedoubleclose.png differ diff --git a/img/sex/close/missionary/vaginapenetratedouble.png b/img/sex/close/missionary/vaginapenetratedouble.png index 728f746f2187be792a998bb5002a2fe844aec67b..96c716af8aaa57222bc8726e8c0179d70bdc0c77 100644 Binary files a/img/sex/close/missionary/vaginapenetratedouble.png and b/img/sex/close/missionary/vaginapenetratedouble.png differ diff --git a/img/sex/doggy/active/bootyjorts/ankles.png b/img/sex/doggy/active/bootyjorts/ankles.png new file mode 100644 index 0000000000000000000000000000000000000000..66c0218b706a7d62302536754613b5276bfb6a01 Binary files /dev/null and b/img/sex/doggy/active/bootyjorts/ankles.png differ diff --git a/img/sex/doggy/active/bootyjorts/footjob_ankles.png b/img/sex/doggy/active/bootyjorts/footjob_ankles.png new file mode 100644 index 0000000000000000000000000000000000000000..d925731d6c40948f59d205fd838e86a8a0c3d82b Binary files /dev/null and b/img/sex/doggy/active/bootyjorts/footjob_ankles.png differ diff --git a/img/sex/doggy/active/bootyjorts/knees.png b/img/sex/doggy/active/bootyjorts/knees.png new file mode 100644 index 0000000000000000000000000000000000000000..699e88be017b7c01712370c9f7cd24b665f9f9eb Binary files /dev/null and b/img/sex/doggy/active/bootyjorts/knees.png differ diff --git a/img/sex/doggy/active/bootyjorts/thighs.png b/img/sex/doggy/active/bootyjorts/thighs.png new file mode 100644 index 0000000000000000000000000000000000000000..5f5e43c30d75681e31c262c79fccd7f2fcd36c9a Binary files /dev/null and b/img/sex/doggy/active/bootyjorts/thighs.png differ diff --git a/img/sex/doggy/active/bootyjorts/waist.png b/img/sex/doggy/active/bootyjorts/waist.png new file mode 100644 index 0000000000000000000000000000000000000000..f5684303aa2cfc4c5d0e2fd35c5dd40f94b37ece Binary files /dev/null and b/img/sex/doggy/active/bootyjorts/waist.png differ diff --git a/img/sex/doggy/active/denimshorts/ankles.png b/img/sex/doggy/active/denimshorts/ankles.png new file mode 100644 index 0000000000000000000000000000000000000000..6062ff7c11b5158458dbcecd1f8c2e5456788a0a Binary files /dev/null and b/img/sex/doggy/active/denimshorts/ankles.png differ diff --git a/img/sex/doggy/active/denimshorts/footjob_ankles.png b/img/sex/doggy/active/denimshorts/footjob_ankles.png new file mode 100644 index 0000000000000000000000000000000000000000..e641113bc8dddd85c96507ef242fd5fee864603c Binary files /dev/null and b/img/sex/doggy/active/denimshorts/footjob_ankles.png differ diff --git a/img/sex/doggy/active/denimshorts/knees.png b/img/sex/doggy/active/denimshorts/knees.png new file mode 100644 index 0000000000000000000000000000000000000000..aa35885ffc9c207a6b148713295d50c001f87eaf Binary files /dev/null and b/img/sex/doggy/active/denimshorts/knees.png differ diff --git a/img/sex/doggy/active/denimshorts/thighs.png b/img/sex/doggy/active/denimshorts/thighs.png new file mode 100644 index 0000000000000000000000000000000000000000..942e49f04a7c3a6aa138c9b66a553082e7ce8744 Binary files /dev/null and b/img/sex/doggy/active/denimshorts/thighs.png differ diff --git a/img/sex/doggy/active/denimshorts/waist.png b/img/sex/doggy/active/denimshorts/waist.png new file mode 100644 index 0000000000000000000000000000000000000000..dc5931e82b8c2587dd640649dd0b98c0e2e87467 Binary files /dev/null and b/img/sex/doggy/active/denimshorts/waist.png differ diff --git a/img/sex/doggy/active/hair/hime/doggyactivechest.png b/img/sex/doggy/active/hair/hime/doggyactivechest.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae99cc9b5ea1aa04ba70cccbe29962fc6d01933 Binary files /dev/null and b/img/sex/doggy/active/hair/hime/doggyactivechest.png differ diff --git a/img/sex/doggy/active/hair/hime/doggyactivefeet.png b/img/sex/doggy/active/hair/hime/doggyactivefeet.png new file mode 100644 index 0000000000000000000000000000000000000000..1fad5db75ed2397e320a659029be96514a76e23c Binary files /dev/null and b/img/sex/doggy/active/hair/hime/doggyactivefeet.png differ diff --git a/img/sex/doggy/active/hair/hime/doggyactivenavel.png b/img/sex/doggy/active/hair/hime/doggyactivenavel.png new file mode 100644 index 0000000000000000000000000000000000000000..f04426ba852f2d7f1c4587d967397b375966fab8 Binary files /dev/null and b/img/sex/doggy/active/hair/hime/doggyactivenavel.png differ diff --git a/img/sex/doggy/active/hair/hime/doggyactiveshort.png b/img/sex/doggy/active/hair/hime/doggyactiveshort.png new file mode 100644 index 0000000000000000000000000000000000000000..54c5891e75ec612e3d837d0033cf223960cdd04a Binary files /dev/null and b/img/sex/doggy/active/hair/hime/doggyactiveshort.png differ diff --git a/img/sex/doggy/active/hair/hime/doggyactiveshoulder.png b/img/sex/doggy/active/hair/hime/doggyactiveshoulder.png new file mode 100644 index 0000000000000000000000000000000000000000..f8ba14707c37d58daf1b891a2e40aebc85ce625c Binary files /dev/null and b/img/sex/doggy/active/hair/hime/doggyactiveshoulder.png differ diff --git a/img/sex/doggy/active/hair/hime/doggyactivethighs.png b/img/sex/doggy/active/hair/hime/doggyactivethighs.png new file mode 100644 index 0000000000000000000000000000000000000000..34bce55bfea27e54e5727f292a60d41bf7d4f7d9 Binary files /dev/null and b/img/sex/doggy/active/hair/hime/doggyactivethighs.png differ diff --git a/img/sex/doggy/active/hair/hime/doggyidlechest.png b/img/sex/doggy/active/hair/hime/doggyidlechest.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4bbca67b8395d7e4deaa232810dfa65560b47b Binary files /dev/null and b/img/sex/doggy/active/hair/hime/doggyidlechest.png differ diff --git a/img/sex/doggy/active/hair/hime/doggyidlefeet.png b/img/sex/doggy/active/hair/hime/doggyidlefeet.png new file mode 100644 index 0000000000000000000000000000000000000000..71b12d07a9c53f7887bb1fe430695f8db42950b8 Binary files /dev/null and b/img/sex/doggy/active/hair/hime/doggyidlefeet.png differ diff --git a/img/sex/doggy/active/hair/hime/doggyidlenavel.png b/img/sex/doggy/active/hair/hime/doggyidlenavel.png new file mode 100644 index 0000000000000000000000000000000000000000..5e49492e201a7efc6d427bac3754b6f1f1a61985 Binary files /dev/null and b/img/sex/doggy/active/hair/hime/doggyidlenavel.png differ diff --git a/img/sex/doggy/active/hair/hime/doggyidleshort.png b/img/sex/doggy/active/hair/hime/doggyidleshort.png new file mode 100644 index 0000000000000000000000000000000000000000..4b3973f45f93b59946cd91aee9a48057ce04d36f Binary files /dev/null and b/img/sex/doggy/active/hair/hime/doggyidleshort.png differ diff --git a/img/sex/doggy/active/hair/hime/doggyidleshoulder.png b/img/sex/doggy/active/hair/hime/doggyidleshoulder.png new file mode 100644 index 0000000000000000000000000000000000000000..f20a81b9bf0cdd33986afee42f190b43109a2deb Binary files /dev/null and b/img/sex/doggy/active/hair/hime/doggyidleshoulder.png differ diff --git a/img/sex/doggy/active/hair/hime/doggyidlethighs.png b/img/sex/doggy/active/hair/hime/doggyidlethighs.png new file mode 100644 index 0000000000000000000000000000000000000000..9b88e52c74fdd3b0bc2e6f6a28ef2011faf2466d Binary files /dev/null and b/img/sex/doggy/active/hair/hime/doggyidlethighs.png differ diff --git a/img/sex/doggy/active/turtleneck/chest.png b/img/sex/doggy/active/long turtleneck/chest.png similarity index 100% rename from img/sex/doggy/active/turtleneck/chest.png rename to img/sex/doggy/active/long turtleneck/chest.png diff --git a/img/sex/doggy/active/long turtleneck/midriff.png b/img/sex/doggy/active/long turtleneck/midriff.png new file mode 100644 index 0000000000000000000000000000000000000000..70f90568f62a73bbbf42b2fa6cc18470ce3bf00e Binary files /dev/null and b/img/sex/doggy/active/long turtleneck/midriff.png differ diff --git a/img/sex/doggy/active/long turtleneck/neck.png b/img/sex/doggy/active/long turtleneck/neck.png new file mode 100644 index 0000000000000000000000000000000000000000..49965bf05e7d6dc98a663bf7a3ff48f1bf941ff4 Binary files /dev/null and b/img/sex/doggy/active/long turtleneck/neck.png differ diff --git a/img/sex/doggy/active/turtleneck/waist.png b/img/sex/doggy/active/long turtleneck/waist.png similarity index 100% rename from img/sex/doggy/active/turtleneck/waist.png rename to img/sex/doggy/active/long turtleneck/waist.png diff --git a/img/sex/doggy/active/turtleneck/both_sleeves_bound.png b/img/sex/doggy/active/turtleneck/both_sleeves_bound.png new file mode 100644 index 0000000000000000000000000000000000000000..596803c3fb8417235952e369323d4a884076ac82 Binary files /dev/null and b/img/sex/doggy/active/turtleneck/both_sleeves_bound.png differ diff --git a/img/sex/doggy/active/turtleneck/chest_0.png b/img/sex/doggy/active/turtleneck/chest_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb002a59c5b14df4e243e0e2714f9e412fef4c0 Binary files /dev/null and b/img/sex/doggy/active/turtleneck/chest_0.png differ diff --git a/img/sex/doggy/active/turtleneck/chest_1.png b/img/sex/doggy/active/turtleneck/chest_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7f0948705d67bb54a6cc856ad5749a147d9b70a5 Binary files /dev/null and b/img/sex/doggy/active/turtleneck/chest_1.png differ diff --git a/img/sex/doggy/active/turtleneck/chest_2.png b/img/sex/doggy/active/turtleneck/chest_2.png new file mode 100644 index 0000000000000000000000000000000000000000..117b8016cd01368bf1a62f8d2d85eed36cecbc5a Binary files /dev/null and b/img/sex/doggy/active/turtleneck/chest_2.png differ diff --git a/img/sex/doggy/active/turtleneck/chest_3.png b/img/sex/doggy/active/turtleneck/chest_3.png new file mode 100644 index 0000000000000000000000000000000000000000..34e912875b6e62e97fd391ace29504ac7870b350 Binary files /dev/null and b/img/sex/doggy/active/turtleneck/chest_3.png differ diff --git a/img/sex/doggy/active/turtleneck/chest_4.png b/img/sex/doggy/active/turtleneck/chest_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0c054db0714b676e3ac5f1761f78006667f3ec07 Binary files /dev/null and b/img/sex/doggy/active/turtleneck/chest_4.png differ diff --git a/img/sex/doggy/active/turtleneck/left_sleeve.png b/img/sex/doggy/active/turtleneck/left_sleeve.png new file mode 100644 index 0000000000000000000000000000000000000000..0d51b533c024d6ba8132136b5c40aa55707d4251 Binary files /dev/null and b/img/sex/doggy/active/turtleneck/left_sleeve.png differ diff --git a/img/sex/doggy/active/turtleneck/left_sleeve_bound.png b/img/sex/doggy/active/turtleneck/left_sleeve_bound.png new file mode 100644 index 0000000000000000000000000000000000000000..596803c3fb8417235952e369323d4a884076ac82 Binary files /dev/null and b/img/sex/doggy/active/turtleneck/left_sleeve_bound.png differ diff --git a/img/sex/doggy/active/turtleneck/left_sleeve_handjob.png b/img/sex/doggy/active/turtleneck/left_sleeve_handjob.png new file mode 100644 index 0000000000000000000000000000000000000000..202df17d9af650f153186a12b6e44e035dae7f42 Binary files /dev/null and b/img/sex/doggy/active/turtleneck/left_sleeve_handjob.png differ diff --git a/img/sex/doggy/active/turtleneck/left_sleeve_handjob_beast.png b/img/sex/doggy/active/turtleneck/left_sleeve_handjob_beast.png new file mode 100644 index 0000000000000000000000000000000000000000..bdcc1c23b269065cb00db9dfde881908cdd391d3 Binary files /dev/null and b/img/sex/doggy/active/turtleneck/left_sleeve_handjob_beast.png differ diff --git a/img/sex/doggy/active/turtleneck/midriff.png b/img/sex/doggy/active/turtleneck/midriff.png index 70f90568f62a73bbbf42b2fa6cc18470ce3bf00e..81eb6ebc8d04ed03305a9a0bcaac4f92d75c84a0 100644 Binary files a/img/sex/doggy/active/turtleneck/midriff.png and b/img/sex/doggy/active/turtleneck/midriff.png differ diff --git a/img/sex/doggy/active/turtleneck/neck.png b/img/sex/doggy/active/turtleneck/neck.png index 49965bf05e7d6dc98a663bf7a3ff48f1bf941ff4..bdd911abb0250d7901ce2ed34f75c6b0597f0c30 100644 Binary files a/img/sex/doggy/active/turtleneck/neck.png and b/img/sex/doggy/active/turtleneck/neck.png differ diff --git a/img/sex/doggy/active/turtleneck/red_sleeve_handjob.png b/img/sex/doggy/active/turtleneck/red_sleeve_handjob.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbc1f01440f8f42d8a7816b98f480dd239c2523 Binary files /dev/null and b/img/sex/doggy/active/turtleneck/red_sleeve_handjob.png differ diff --git a/img/sex/doggy/active/turtleneck/right_sleeve.png b/img/sex/doggy/active/turtleneck/right_sleeve.png new file mode 100644 index 0000000000000000000000000000000000000000..776d5bd790ac526e71950efddb2440c5436bc895 Binary files /dev/null and b/img/sex/doggy/active/turtleneck/right_sleeve.png differ diff --git a/img/sex/doggy/active/turtleneck/right_sleeve_handjob_beast.png b/img/sex/doggy/active/turtleneck/right_sleeve_handjob_beast.png new file mode 100644 index 0000000000000000000000000000000000000000..af13d11e7761157feb7be0b7ec7881a11f9266e4 Binary files /dev/null and b/img/sex/doggy/active/turtleneck/right_sleeve_handjob_beast.png differ diff --git a/img/sex/missionary/active/bootyjorts/ankles_down.png b/img/sex/missionary/active/bootyjorts/ankles_down.png new file mode 100644 index 0000000000000000000000000000000000000000..735f8dc84a1581582b1997773108414bda70ce85 Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/ankles_down.png differ diff --git a/img/sex/missionary/active/bootyjorts/ankles_feetjob.png b/img/sex/missionary/active/bootyjorts/ankles_feetjob.png new file mode 100644 index 0000000000000000000000000000000000000000..cd9d318b95058ba78c51edf3980cafd10359271d Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/ankles_feetjob.png differ diff --git a/img/sex/missionary/active/bootyjorts/ankles_right.png b/img/sex/missionary/active/bootyjorts/ankles_right.png new file mode 100644 index 0000000000000000000000000000000000000000..a6838601fc864dc6d396b9111293a4292d8bb2ef Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/ankles_right.png differ diff --git a/img/sex/missionary/active/bootyjorts/ankles_up.png b/img/sex/missionary/active/bootyjorts/ankles_up.png new file mode 100644 index 0000000000000000000000000000000000000000..cd9d318b95058ba78c51edf3980cafd10359271d Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/ankles_up.png differ diff --git a/img/sex/missionary/active/bootyjorts/knees_down.png b/img/sex/missionary/active/bootyjorts/knees_down.png new file mode 100644 index 0000000000000000000000000000000000000000..a0080beed8c4d52be1d461a733a8ef8e055add17 Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/knees_down.png differ diff --git a/img/sex/missionary/active/bootyjorts/knees_feetjob.png b/img/sex/missionary/active/bootyjorts/knees_feetjob.png new file mode 100644 index 0000000000000000000000000000000000000000..67283db5f3bbf0e19d79dbd050fd3b51c3dc71b8 Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/knees_feetjob.png differ diff --git a/img/sex/missionary/active/bootyjorts/knees_up.png b/img/sex/missionary/active/bootyjorts/knees_up.png new file mode 100644 index 0000000000000000000000000000000000000000..67283db5f3bbf0e19d79dbd050fd3b51c3dc71b8 Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/knees_up.png differ diff --git a/img/sex/missionary/active/bootyjorts/thighs_down.png b/img/sex/missionary/active/bootyjorts/thighs_down.png new file mode 100644 index 0000000000000000000000000000000000000000..2140bacb459507cc714ecf2e56c78653af2cec98 Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/thighs_down.png differ diff --git a/img/sex/missionary/active/bootyjorts/thighs_feetjob.png b/img/sex/missionary/active/bootyjorts/thighs_feetjob.png new file mode 100644 index 0000000000000000000000000000000000000000..457bec4934663a5ce886ac24fe352cd8482bb61f Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/thighs_feetjob.png differ diff --git a/img/sex/missionary/active/bootyjorts/thighs_left.png b/img/sex/missionary/active/bootyjorts/thighs_left.png new file mode 100644 index 0000000000000000000000000000000000000000..2140bacb459507cc714ecf2e56c78653af2cec98 Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/thighs_left.png differ diff --git a/img/sex/missionary/active/bootyjorts/thighs_right.png b/img/sex/missionary/active/bootyjorts/thighs_right.png new file mode 100644 index 0000000000000000000000000000000000000000..2140bacb459507cc714ecf2e56c78653af2cec98 Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/thighs_right.png differ diff --git a/img/sex/missionary/active/bootyjorts/thighs_up.png b/img/sex/missionary/active/bootyjorts/thighs_up.png new file mode 100644 index 0000000000000000000000000000000000000000..457bec4934663a5ce886ac24fe352cd8482bb61f Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/thighs_up.png differ diff --git a/img/sex/missionary/active/bootyjorts/waist_down.png b/img/sex/missionary/active/bootyjorts/waist_down.png new file mode 100644 index 0000000000000000000000000000000000000000..33b49884f228bbe395d55a5d7f29296e854f27b5 Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/waist_down.png differ diff --git a/img/sex/missionary/active/bootyjorts/waist_feetjob.png b/img/sex/missionary/active/bootyjorts/waist_feetjob.png new file mode 100644 index 0000000000000000000000000000000000000000..d32fbdd4d9f3b6d2f871d59b08c98c41817879f2 Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/waist_feetjob.png differ diff --git a/img/sex/missionary/active/bootyjorts/waist_left.png b/img/sex/missionary/active/bootyjorts/waist_left.png new file mode 100644 index 0000000000000000000000000000000000000000..33b49884f228bbe395d55a5d7f29296e854f27b5 Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/waist_left.png differ diff --git a/img/sex/missionary/active/bootyjorts/waist_right.png b/img/sex/missionary/active/bootyjorts/waist_right.png new file mode 100644 index 0000000000000000000000000000000000000000..33b49884f228bbe395d55a5d7f29296e854f27b5 Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/waist_right.png differ diff --git a/img/sex/missionary/active/bootyjorts/waist_up.png b/img/sex/missionary/active/bootyjorts/waist_up.png new file mode 100644 index 0000000000000000000000000000000000000000..d32fbdd4d9f3b6d2f871d59b08c98c41817879f2 Binary files /dev/null and b/img/sex/missionary/active/bootyjorts/waist_up.png differ diff --git a/img/sex/missionary/active/denimshorts/ankles_down.png b/img/sex/missionary/active/denimshorts/ankles_down.png new file mode 100644 index 0000000000000000000000000000000000000000..9906e281d4eef109905ca89e5dd5cdf7d5f73d24 Binary files /dev/null and b/img/sex/missionary/active/denimshorts/ankles_down.png differ diff --git a/img/sex/missionary/active/denimshorts/ankles_right.png b/img/sex/missionary/active/denimshorts/ankles_right.png new file mode 100644 index 0000000000000000000000000000000000000000..f3f1816b776e23b12e0f96e9fe1fad7359500827 Binary files /dev/null and b/img/sex/missionary/active/denimshorts/ankles_right.png differ diff --git a/img/sex/missionary/active/denimshorts/ankles_up.png b/img/sex/missionary/active/denimshorts/ankles_up.png new file mode 100644 index 0000000000000000000000000000000000000000..17aeb9cb18f49555f8139eee1e82305ef085cbdb Binary files /dev/null and b/img/sex/missionary/active/denimshorts/ankles_up.png differ diff --git a/img/sex/missionary/active/denimshorts/knees_down.png b/img/sex/missionary/active/denimshorts/knees_down.png new file mode 100644 index 0000000000000000000000000000000000000000..f2868cdae0bf0261006f7a2538e9dacc2caa45f7 Binary files /dev/null and b/img/sex/missionary/active/denimshorts/knees_down.png differ diff --git a/img/sex/missionary/active/denimshorts/knees_feetjob.png b/img/sex/missionary/active/denimshorts/knees_feetjob.png new file mode 100644 index 0000000000000000000000000000000000000000..dc314f9cb5cbf623af48d7f55c74b5a4d2aa7610 Binary files /dev/null and b/img/sex/missionary/active/denimshorts/knees_feetjob.png differ diff --git a/img/sex/missionary/active/denimshorts/knees_up.png b/img/sex/missionary/active/denimshorts/knees_up.png new file mode 100644 index 0000000000000000000000000000000000000000..dc314f9cb5cbf623af48d7f55c74b5a4d2aa7610 Binary files /dev/null and b/img/sex/missionary/active/denimshorts/knees_up.png differ diff --git a/img/sex/missionary/active/denimshorts/thighs_down.png b/img/sex/missionary/active/denimshorts/thighs_down.png new file mode 100644 index 0000000000000000000000000000000000000000..6bbd2fa20d4c4561dedb6a8e42d7d8b07b7b36b0 Binary files /dev/null and b/img/sex/missionary/active/denimshorts/thighs_down.png differ diff --git a/img/sex/missionary/active/denimshorts/thighs_feetjob.png b/img/sex/missionary/active/denimshorts/thighs_feetjob.png new file mode 100644 index 0000000000000000000000000000000000000000..bfc141df08464578d841e30e0be1de8a5f16680b Binary files /dev/null and b/img/sex/missionary/active/denimshorts/thighs_feetjob.png differ diff --git a/img/sex/missionary/active/denimshorts/thighs_left.png b/img/sex/missionary/active/denimshorts/thighs_left.png new file mode 100644 index 0000000000000000000000000000000000000000..6bbd2fa20d4c4561dedb6a8e42d7d8b07b7b36b0 Binary files /dev/null and b/img/sex/missionary/active/denimshorts/thighs_left.png differ diff --git a/img/sex/missionary/active/denimshorts/thighs_right.png b/img/sex/missionary/active/denimshorts/thighs_right.png new file mode 100644 index 0000000000000000000000000000000000000000..6bbd2fa20d4c4561dedb6a8e42d7d8b07b7b36b0 Binary files /dev/null and b/img/sex/missionary/active/denimshorts/thighs_right.png differ diff --git a/img/sex/missionary/active/denimshorts/thighs_up.png b/img/sex/missionary/active/denimshorts/thighs_up.png new file mode 100644 index 0000000000000000000000000000000000000000..bfc141df08464578d841e30e0be1de8a5f16680b Binary files /dev/null and b/img/sex/missionary/active/denimshorts/thighs_up.png differ diff --git a/img/sex/missionary/active/denimshorts/waist_down.png b/img/sex/missionary/active/denimshorts/waist_down.png new file mode 100644 index 0000000000000000000000000000000000000000..2cab38955a1dbcdd1b9ece4e5130eccc94f41620 Binary files /dev/null and b/img/sex/missionary/active/denimshorts/waist_down.png differ diff --git a/img/sex/missionary/active/denimshorts/waist_feetjob.png b/img/sex/missionary/active/denimshorts/waist_feetjob.png new file mode 100644 index 0000000000000000000000000000000000000000..d8dfa773d19b666d2e6105c15a7e7b75ef8235a6 Binary files /dev/null and b/img/sex/missionary/active/denimshorts/waist_feetjob.png differ diff --git a/img/sex/missionary/active/denimshorts/waist_left.png b/img/sex/missionary/active/denimshorts/waist_left.png new file mode 100644 index 0000000000000000000000000000000000000000..2cab38955a1dbcdd1b9ece4e5130eccc94f41620 Binary files /dev/null and b/img/sex/missionary/active/denimshorts/waist_left.png differ diff --git a/img/sex/missionary/active/denimshorts/waist_right.png b/img/sex/missionary/active/denimshorts/waist_right.png new file mode 100644 index 0000000000000000000000000000000000000000..2cab38955a1dbcdd1b9ece4e5130eccc94f41620 Binary files /dev/null and b/img/sex/missionary/active/denimshorts/waist_right.png differ diff --git a/img/sex/missionary/active/denimshorts/waist_up.png b/img/sex/missionary/active/denimshorts/waist_up.png new file mode 100644 index 0000000000000000000000000000000000000000..d8dfa773d19b666d2e6105c15a7e7b75ef8235a6 Binary files /dev/null and b/img/sex/missionary/active/denimshorts/waist_up.png differ diff --git a/img/sex/missionary/active/hair/hime/activechest.png b/img/sex/missionary/active/hair/hime/activechest.png new file mode 100644 index 0000000000000000000000000000000000000000..f5e7b112030429fb5338c2ad71622a37aaaa2460 Binary files /dev/null and b/img/sex/missionary/active/hair/hime/activechest.png differ diff --git a/img/sex/missionary/active/hair/hime/activefeet.png b/img/sex/missionary/active/hair/hime/activefeet.png new file mode 100644 index 0000000000000000000000000000000000000000..e47d04b2784d98d41a0c979408913e7047f32aa8 Binary files /dev/null and b/img/sex/missionary/active/hair/hime/activefeet.png differ diff --git a/img/sex/missionary/active/hair/hime/activenavel.png b/img/sex/missionary/active/hair/hime/activenavel.png new file mode 100644 index 0000000000000000000000000000000000000000..8e57d77cc835f14cb166ee37ea6053b9198cbe7b Binary files /dev/null and b/img/sex/missionary/active/hair/hime/activenavel.png differ diff --git a/img/sex/missionary/active/hair/hime/activeshort.png b/img/sex/missionary/active/hair/hime/activeshort.png new file mode 100644 index 0000000000000000000000000000000000000000..ac842b6e982f3bbdc14bdd1aa4df20ad27587932 Binary files /dev/null and b/img/sex/missionary/active/hair/hime/activeshort.png differ diff --git a/img/sex/missionary/active/hair/hime/activeshoulder.png b/img/sex/missionary/active/hair/hime/activeshoulder.png new file mode 100644 index 0000000000000000000000000000000000000000..1e1529df04e2c97aa54fec463c54b6a00729a8af Binary files /dev/null and b/img/sex/missionary/active/hair/hime/activeshoulder.png differ diff --git a/img/sex/missionary/active/hair/hime/activethighs.png b/img/sex/missionary/active/hair/hime/activethighs.png new file mode 100644 index 0000000000000000000000000000000000000000..a9410ad9888daa5a13d8845f038845cfb756f8aa Binary files /dev/null and b/img/sex/missionary/active/hair/hime/activethighs.png differ diff --git a/img/sex/missionary/active/long turtleneck/chest.png b/img/sex/missionary/active/long turtleneck/chest.png new file mode 100644 index 0000000000000000000000000000000000000000..671634b71b3e9c5bbb6ff7d8f2ffa78bad0ab39b Binary files /dev/null and b/img/sex/missionary/active/long turtleneck/chest.png differ diff --git a/img/sex/missionary/active/long turtleneck/midriff.png b/img/sex/missionary/active/long turtleneck/midriff.png new file mode 100644 index 0000000000000000000000000000000000000000..e907e70676847fa0cb7bdc6dded2411fa61f6de8 Binary files /dev/null and b/img/sex/missionary/active/long turtleneck/midriff.png differ diff --git a/img/sex/missionary/active/long turtleneck/neck.png b/img/sex/missionary/active/long turtleneck/neck.png new file mode 100644 index 0000000000000000000000000000000000000000..39b86c48839edd91ad5e296c53d0a806d4b1e26f Binary files /dev/null and b/img/sex/missionary/active/long turtleneck/neck.png differ diff --git a/img/sex/missionary/active/turtleneck/waist.png b/img/sex/missionary/active/long turtleneck/waist.png similarity index 100% rename from img/sex/missionary/active/turtleneck/waist.png rename to img/sex/missionary/active/long turtleneck/waist.png diff --git a/img/sex/missionary/active/shorts/ankles_up - Copy.png b/img/sex/missionary/active/shorts/ankles_up.png similarity index 100% rename from img/sex/missionary/active/shorts/ankles_up - Copy.png rename to img/sex/missionary/active/shorts/ankles_up.png diff --git a/img/sex/missionary/active/sleeves/right_sleeve_bound.png b/img/sex/missionary/active/sleeves/right_sleeve_bound.png index 4ac74bb6c6dde673f9b87dcb7aa4d6910f85158c..122dea82971a0417f552072ceb317af71b0526bc 100644 Binary files a/img/sex/missionary/active/sleeves/right_sleeve_bound.png and b/img/sex/missionary/active/sleeves/right_sleeve_bound.png differ diff --git a/img/sex/missionary/active/sweatersleeves/right_sleeve_bound.png b/img/sex/missionary/active/sweatersleeves/right_sleeve_bound.png index 3414eba1b0e5c322c2d4e70bd36f5557309c6d62..219d601f1cfa2176304cf1e631a7a792a06ac78b 100644 Binary files a/img/sex/missionary/active/sweatersleeves/right_sleeve_bound.png and b/img/sex/missionary/active/sweatersleeves/right_sleeve_bound.png differ diff --git a/img/sex/missionary/active/turtleneck/both_sleeves_bound.png b/img/sex/missionary/active/turtleneck/both_sleeves_bound.png new file mode 100644 index 0000000000000000000000000000000000000000..adae025b6c2da72113f104a524a4f9f397fe9f63 Binary files /dev/null and b/img/sex/missionary/active/turtleneck/both_sleeves_bound.png differ diff --git a/img/sex/missionary/active/turtleneck/chest.png b/img/sex/missionary/active/turtleneck/chest.png index 671634b71b3e9c5bbb6ff7d8f2ffa78bad0ab39b..439c0949dad81209ce1bd38fd0c364e49355ce29 100644 Binary files a/img/sex/missionary/active/turtleneck/chest.png and b/img/sex/missionary/active/turtleneck/chest.png differ diff --git a/img/sex/missionary/active/turtleneck/left_sleeve_handjob.png b/img/sex/missionary/active/turtleneck/left_sleeve_handjob.png new file mode 100644 index 0000000000000000000000000000000000000000..d65aeed6174b0dd7cf93c54e5795f59c552c3355 Binary files /dev/null and b/img/sex/missionary/active/turtleneck/left_sleeve_handjob.png differ diff --git a/img/sex/missionary/active/turtleneck/midriff.png b/img/sex/missionary/active/turtleneck/midriff.png index e907e70676847fa0cb7bdc6dded2411fa61f6de8..2159c8d1c27d58be263f38ba5be9e0845d7b3c44 100644 Binary files a/img/sex/missionary/active/turtleneck/midriff.png and b/img/sex/missionary/active/turtleneck/midriff.png differ diff --git a/img/sex/missionary/active/turtleneck/neck.png b/img/sex/missionary/active/turtleneck/neck.png index 39b86c48839edd91ad5e296c53d0a806d4b1e26f..786a9fefadeefff885feb0bb1c7952168fb39c39 100644 Binary files a/img/sex/missionary/active/turtleneck/neck.png and b/img/sex/missionary/active/turtleneck/neck.png differ diff --git a/img/sex/missionary/active/turtleneck/right_sleeve.png b/img/sex/missionary/active/turtleneck/right_sleeve.png new file mode 100644 index 0000000000000000000000000000000000000000..70bd066bf6f3ca0d0044c4d5803bf3697e9a1b1b Binary files /dev/null and b/img/sex/missionary/active/turtleneck/right_sleeve.png differ diff --git a/img/sex/missionary/active/turtleneck/right_sleeve_bound.png b/img/sex/missionary/active/turtleneck/right_sleeve_bound.png new file mode 100644 index 0000000000000000000000000000000000000000..adae025b6c2da72113f104a524a4f9f397fe9f63 Binary files /dev/null and b/img/sex/missionary/active/turtleneck/right_sleeve_bound.png differ diff --git a/img/sex/missionary/active/turtleneck/right_sleeve_handjob.png b/img/sex/missionary/active/turtleneck/right_sleeve_handjob.png new file mode 100644 index 0000000000000000000000000000000000000000..31d1db18075937542ff0156c81470ef7ab21679d Binary files /dev/null and b/img/sex/missionary/active/turtleneck/right_sleeve_handjob.png differ diff --git a/img/sex/missionary/active/turtleneck/right_sleeve_stroke.png b/img/sex/missionary/active/turtleneck/right_sleeve_stroke.png new file mode 100644 index 0000000000000000000000000000000000000000..dd73c3ab3c2aaf5765f71ea44e0cc5e5c0ef160a Binary files /dev/null and b/img/sex/missionary/active/turtleneck/right_sleeve_stroke.png differ diff --git a/img/sex/xraydoublecum1.png b/img/sex/xraydoublecum1.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2d5fc142c5d5529ec492d7f04bbc9dacd6bcb8 Binary files /dev/null and b/img/sex/xraydoublecum1.png differ diff --git a/img/sex/xraydoublecum2.png b/img/sex/xraydoublecum2.png new file mode 100644 index 0000000000000000000000000000000000000000..dfdf508d18a7bb9abf9e7e95dbd06169c8edd8bf Binary files /dev/null and b/img/sex/xraydoublecum2.png differ diff --git a/img/sex/xraydoublecum3.png b/img/sex/xraydoublecum3.png new file mode 100644 index 0000000000000000000000000000000000000000..0b1312782330cd2189c0123b36017f7889ce151c Binary files /dev/null and b/img/sex/xraydoublecum3.png differ diff --git a/img/sex/xraydoublecum4.png b/img/sex/xraydoublecum4.png new file mode 100644 index 0000000000000000000000000000000000000000..09a599673bc2063820a7cddf37ce9f7d9df31fb3 Binary files /dev/null and b/img/sex/xraydoublecum4.png differ diff --git a/img/sex/xraydoublecum5.png b/img/sex/xraydoublecum5.png new file mode 100644 index 0000000000000000000000000000000000000000..6469aaab26b64b05117abbb2292867b65c0cd86d Binary files /dev/null and b/img/sex/xraydoublecum5.png differ diff --git a/version b/version index 0196dfac57dc8d059ffa23d6e81e6b446fbfda52..65b48aa071b6de912f88f2196539ed2d712507ae 100644 --- a/version +++ b/version @@ -1 +1 @@ -0.3.5.4 \ No newline at end of file +0.3.6.1 \ No newline at end of file