JavaScript must be enabled to play.
Browser lacks capabilities required to play.
Upgrade or switch to another browser.
Loading…
<<if $stringTimeNow <= 6 || $stringTimeNow >= 19>><<setBG 1 setup.ImagePath 'locations/house/livingroom_nighttime.png'>><</if>> <<if $stringTimeNow > 6 && $stringTimeNow < 19>><<setBG 1 setup.ImagePath 'locations/house/livingroom.png'>><</if>> <<if window.getWifeLocation(v.datenow) === "livingroom">> <<generateNPCWife 45 25 80 25 base>> <span class="custom-button" style="top: 31%;left: 85%;"> <<button "Talk with @wife">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "DefaultWifeTalk">> <</button>> </span> <</if>> <<if $TVShow < 0 && $daysSinceGameStart > 0>><<goto "TVShow Intro">><</if>> <<if $TVShow == 1 && $TVShow != $doNotRepeatControl && $stringTimeNow > 16>><<set $doNotRepeatControl to $TVShow>><<goto "TVShow Introduce Producer Mark">><</if>> <<if $TVShow >= 2 && $TVShow != $doNotRepeatControl && $stringTimeNow > 16>><<set $doNotRepeatControl to $TVShow>><<goto "Mark Interview">><</if>> <span class="custom-button" style="top: 73%;left: 88%;"> <<if v.wifeFucking.length === 0>> <<button "Bed Room">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "bedroom">> <</button>> <</if>> <<if v.wifeFucking.length > 0>> <<button "<span style='color:red;'>❤</span> Bed Room">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "bedroomPeeking">> <</button>> <</if>> </span> <span class="custom-button" style="top: 83%;left: 15%;"> <<button "Bath Room">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "bathroom">> <</button>> </span> <span class="custom-button" style="top: 83%;left: 50%;"> <<button "Kitchen">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "kitchen">> <</button>> </span> <<if ($datenow.getHours() <= 12) && ($datenow.getHours() >= 9)>> <span class="custom-button" style="top: 33%;left: 50%;"> <<button "Go to Work">> <<run $datenow.setMinutes($datenow.getMinutes() + 15)>> <<goto "workplace transition">> <</button>> </span> <</if>>
<<set $datenow = new Date('May 1, 2055 011:00:00')>> /*==================Miscellaneous Declaring==================*/ <<script>> var passageCode = Story.get('InitVariables').processText(); new Wikifier(null, passageCode); <</script>> /*====================================================*/ /*====================Inventory Declaring===================*/ <<script>> var passageCode = Story.get('JSON Combat').processText(); new Wikifier(null, passageCode); <</script>> /*====================================================*/ /*====================NPCs Declaring======================*/ <<script>> var passageCode = Story.get('InitNPCsVariables').processText(); new Wikifier(null, passageCode); <</script>> /*====================================================*/ /*===============Dinamic Chat Variables Declaring===============*/ <<script>> var passageCode = Story.get('InitDynamicChatVariables').processText(); new Wikifier(null, passageCode); var passageCode = Story.get("NPC's Hello talk").processText(); new Wikifier(null, passageCode); <</script>> /*====================================================*/ /*=====================Initiate Videos======================*/ <<script>> var passageCode = Story.get('InitVideoPathsNCategories').processText(); new Wikifier(null, passageCode); <</script>> /*====================================================*/ /*=================Inventory Combat Variables=================*/ <<script>> var passageCode = Story.get('InitInventoryVariables').processText(); new Wikifier(null, passageCode); <</script>> /*====================================================*/ /*=================Initiate JSON Wife Schedule=================*/ <<script>> var passageCode = Story.get('JSON Wife Schedule').processText(); new Wikifier(null, passageCode); <</script>> /*====================================================*/ /*==================Initiate Cards Declaring===================*/ <<script>> var passageCode = Story.get('InitCards').processText(); new Wikifier(null, passageCode); <</script>> /*====================================================*/ /*=============Initiate Work Messages Json Declaring==============*/ <<script>> var passageCode = Story.get('JSON Work Messages').processText(); new Wikifier(null, passageCode); <</script>> /*====================================================*/ /*=============Initiate Work Whispers Json Declaring==============*/ <<script>> var passageCode = Story.get('JSONs Whispers').processText(); new Wikifier(null, passageCode); <</script>> /*====================================================*/ /*===========Initiate Work Spawnable Objects Json Declaring==========*/ <<script>> var passageCode = Story.get('JSONs Spawnable Objects').processText(); new Wikifier(null, passageCode); <</script>> /*====================================================*/ /*=============Initiate Comic Style Images Presentations============*/ <<script>> var passageCode = Story.get('JSON Comic Images').processText(); new Wikifier(null, passageCode); <</script>> /*====================================================*/ /*==============Initiate JSON for TV Show Interview===============*/ <<script>> var passageCode = Story.get('JSON TVShow Interview').processText(); new Wikifier(null, passageCode); <</script>> /*====================================================*/ /*=======================MODDING======================*/ <<set $firstTimeModLoad to 0>> /*====================================================*/ /*<<goto "MODS">>*/ //=========================== Load Scripts ===============================
/*------------- Time Manager*/ <<set $stringMinutesNow = $datenow.getMinutes()>> <<set $stringTimeNow = $datenow.getHours()>> <<set $stringDayNow = $datenow.getDate()>> <<set $stringTimeMilisecNow = $datenow.getTime()>> <<set $currentpassagename to passage()>> <<set $daysSinceGameStart = Math.floor( ($datenow.getTime() - $timeOfGameStart.getTime()) / (1000 * 60 * 60 * 24) )>> /*=====================WifeSexTimer======================*/ <<if v.wifeFucking.length > 0>> /* If array length changed (push/pop/etc.), reset the timer */ <<if v._wifeFuckingLastLength != v.wifeFucking.length>> <<set v._wifeFuckingEndTime = $datenow.getTime() + (random(30,40) * 60000)>> <<set v._wifeFuckingTimerSet = true>> <<set v._wifeFuckingLastLength = v.wifeFucking.length>> <</if>> /* If time is up, clear array and call event */ <<if $datenow.getTime() >= v._wifeFuckingEndTime>> <<run var now = $datenow; // current time // Map each entry with a random minute offset and store actual Date var mappedArray = v.wifeFucking.map(e => { if (typeof e !== "string") return e; // Randomly subtract 0-5 minutes var offset = Math.floor(Math.random() * 6); var eventDate = new Date(now.getTime() - offset * 60000); var readable; if (e.includes("@v")) readable = e.replace("@v", " - Vaginal"); else if (e.includes("@a")) readable = e.replace("@a", " - Anal"); else if (e.includes("@o")) readable = e.replace("@o", " - Oral"); else readable = e; return { readable, date: eventDate }; }); // Sort chronologically, earliest first mappedArray.sort((a, b) => a.date - b.date); // Format final strings var finalArray = mappedArray.map(e => { var day = String(e.date.getDate()).padStart(2, "0"); var month = String(e.date.getMonth() + 1).padStart(2, "0"); var hours = String(e.date.getHours()).padStart(2, "0"); var minutes = String(e.date.getMinutes()).padStart(2, "0"); return `${e.readable} (${day}/${month} - ${hours}:${minutes})`; }); // Ensure history array exists if (!v.wifeBullsHistory) v.wifeBullsHistory = []; // Push into history v.wifeBullsHistory.push(...finalArray); >> /* Custom event here */ /*Blablablafunction() TO SET WIFE DIRTINESS AND CUM LAYERS CONTROL BELOW HERE*/ <<run UpdateCumLayers()>> /*==================================*/ <<set v.wifeFucking = []>> <<set v._wifeFuckingTimerSet = false>> <<set v._wifeFuckingLastLength = 0>> <</if>> <</if>> /*=====================WifeCreampiesTimer======================*/ <<script>> var passageCode = Story.get('WifeTimersProcessTexts').processText(); new Wikifier(null, passageCode); <</script>> /*========================Money=========================*/ <<set $money to $backpack.count('money')>> /*=====================Starting Scenarios=====================*/ <<if $startingScenario == "The Unlucky">><<script>> var passageCode = Story.get('The Unlucky').processText(); new Wikifier(null, passageCode); <</script>><</if>>
<style> .container { display: flex; align-items: center; justify-content: space-between; width: 100%; max-width: 90%; /* Adjust as needed */ margin: 0 auto; box-sizing: border-box; } .container img { max-width: 60%; /* Ensure the image takes full width of its container */ height: auto; right: 15%; padding: 20px; display: block; /* Ensures the image does not have extra space below */ } .text-container { flex: auto; /* Allow the text container to grow as needed */ max-width: 31%; /* Adjust max-width for text container */ padding: 20px; right: 10%; position: relative; text-align: center; /* Center-align text */ } .button-container { margin-left: 20px; /* Adjust as needed */ } </style> <h1>Choose your class</h1> <div class="container"> [img[setup.ImagePath + 'start classes/unlucky.png']] <div class="text-container">It seemed like luck was never on your side. After escaping a war-torn country, you ended up in an immigrant house full of men, with your partner being the only woman. The future was uncertain but something tells you that it will be unlucky.</div> <div class="button-container"><<button "The Unlucky" "mybedroom">><<set $startingScenario to "The Unlucky">><</button>></div> </div> <div class="container"> [img[setup.ImagePath + 'start classes/cuckold.png']] <div class="text-container">Your partner is a cuckoldress and you have the privilege of being her cuckold. The two of you have a "vertical relationship" and you enjoy surrendering to her games, even if it means sacrificing your pride and a bit of your sanity.</div> <div class="button-container"><<button "The Cuckold">><</button>></div> </div> <div class="container"> [img[setup.ImagePath + 'start classes/unaware.png']] <div class="text-container">Whispers and rumors floated around, accusing your partner of disloyalty. But these words were nothing more than the green-eyed monster rearing its ugly head, for those who spoke such lies were simply envious of the love you shared. The depth of your relationship is a rare treasure, one that others could only dream of possessing.</div> <div class="button-container"><<button "The Unaware">><</button>></div> </div>
<<if $stringTimeNow <= 6 || $stringTimeNow >= 19>><<setBG 1 setup.ImagePath 'locations/house/bedroom_nighttime.png'>><</if>> <<if $stringTimeNow > 6 && $stringTimeNow < 19>><<setBG 1 setup.ImagePath 'locations/house/bedroom.png'>><</if>> <span class="custom-button" style="top: 49%;left: 47%;"> <<button "Living Room">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>> </span> <<if (($datenow.getHours() < 8) && ($datenow.getHours() >= 0))>> *//* <span class="custom-button" style="top: 73%;left: 78%;"> <<button "Sleep">> <<run $datenow.setHours(9)>> <<run Save.slots.save(0)>> <<if $TVShow < 0>><<goto "bedroom">> <<else>><<goto "redirect TVShow">> <</if>> <</button>> </span> <<elseif ($datenow.getHours() >= 18)>> <span class="custom-button" style="top: 73%;left: 78%;"> <<button "Sleep">> <<run $datenow.setDate($datenow.getDate() + 1)>> <<run $datenow.setHours(9)>> <<run Save.slots.save(0)>> <<if $TVShow < 0>><<goto "bedroom">> <<else>><<goto "redirect TVShow">> <</if>> <</button>> </span> <</if>>
<<if $stringTimeNow <= 6 || $stringTimeNow >= 19>><<setBG 1 setup.ImagePath 'locations/house/bathroom_nighttime.png'>><</if>> <<if $stringTimeNow > 6 && $stringTimeNow < 19>><<setBG 1 setup.ImagePath 'locations/house/bathroom.png'>><</if>> <<if window.getWifeLocation(v.datenow) === "bathroom">> <<generateNPCWife -15 25 80 25 base>> <span class="custom-button" style="top: 31%;left: 25%;"> <<button "Talk with @wife">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "DefaultWifeTalk">> <</button>> </span> <</if>> <span class="custom-button" style="top: 69%;left: 82%;"> <<button "Living Room">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>> </span>
<<if $wifeWork == -2>><<goto "WifeWorkIntro">><</if>> <<setBG 1 setup.ImagePath 'locations/house/kitchen.png'>> <<if window.getWifeLocation(v.datenow) === "kitchen">> <<generateNPCWife 45 25 80 25 base>> <span class="custom-button" style="top: 29%;left: 85%;"> <<button "Talk with @wife">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "DefaultWifeTalk">> <</button>> </span> <</if>> <span class="custom-button" style="top: 29%;left: 5%;"> <<button "Living Room">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>> </span>
//<<script>> //createMessage("greeting"); //createMessage("lonely"); //createMessage("day1random1"); //<</script>> <<set $startingScenario to "The Unlucky">> /*====================================================*/ /*====================================================*/ <<if $wifeLewdness == 0>> <<script>> var scriptCode = Story.get('OfficeDay1').text; // get raw passage source eval(scriptCode); // run it <</script>> <</if>> <<if $wifeLewdness == 1>> <<script>> var scriptCode = Story.get('OfficeDay1Wife').text; // get raw passage source v.whispersEnabled = true; eval(scriptCode); // run it <</script>> <<generateNPCWife 45 15 80 25 down>> /*<<set _video to setup.VideoPath + 'wife/black_vaginal2.mp4'>> <<run video(_video)>> <<run videosize(10)>>//10% <<run videolocation(85, 20)>> <<run playVideo()>>*/ <</if>> /*====================================================*/ /*====================================================*/ <<script>> const clue = deskClues[Math.floor(Math.random() * deskClues.length)]; const el = spawnDeskClue(clue); // Save the clue id globally if you need to remove it later window.lastClueId = clue.id || clue.file; <</script>> /*<span id="workButtonContainer"> <span class="custom-button" id="workButton" style="top: 70%;left: 50%;"> <<button 'Skip Day Test on: $startingScenario' >> <<run deleteVideo()>> <<set $wifeLewdnessAdvance = true>> <<run $datenow.setMinutes($datenow.getMinutes() + 1440)>> <<goto "workplace">> <<script>>$('#blurArea').remove();<</script>> <</button>> </span> </span>*/ <span id="workButtonContainer"> <span class="custom-button" id="workButton" style="top: 50%;left: 50%;"> <<button "Work">> <<set $currectActivity to "work">> <<run setup.openConsole()>> <<script>> document.getElementById("workButtonContainer").classList.add("hidden"); document.getElementById("closeButtonContainer").classList.remove("hidden"); <</script>> <</button>> </span> </span> <span id="FinishWorkButtonContainer"> <span class="custom-button" id="FinishWork" style="top: 60%;left: 50%;"> <<button "FinishWork">> <<set $currectActivity to "">> <<set $money to ($money + 100)>> <<script>>clearInterval(window.testInterval); window.testInterval = null;<</script>> <<run $datenow.setHours(19, 0)>> <<goto "afterworkback transition">> <</button>> </span> </span> <span id="closeButtonContainer" class="hidden"> {{!-- "Close" button starts hidden --}} <span class="custom-button" id="close" style="top: 65%;left: 45%;"> <<button "Close">> <<set $currectActivity to "arousal">> <<run setup.closeConsole()>> <<script>> document.getElementById("workButtonContainer").classList.remove("hidden"); document.getElementById("closeButtonContainer").classList.add("hidden"); <</script>> <</button>> </span> </span> <<nobr>> /*=========================================*/ <<setBG 11 setup.ImagePath 'locations/workplace/desk.png'>> <<setBG 1 setup.ImagePath 'locations/workplace/bgdesk.png'>> <<setBG 10 setup.ImagePath 'locations/workplace/deskwife.png'>> /*=========================================*/ <<script>> if (!window.testInterval) { window.testInterval = setInterval(() => { if (v.datenow.getHours() < 19) { performWorkCycle(); window.updateTopTimeBox(); }else { clearInterval(window.autoWorkInterval); window.autoWorkInterval = null; } }, 1000); } <</script>> /*=========================================*/ /*=========================================*/ <div id="statHud"> <div class="stat-container"> <span class="stat-label">Productivity</span> <div class="stat-bar"> <div class="stat-fill fill-productivity" id="bar-productivity"></div> </div> </div> <div class="stat-container"> <span class="stat-label">Chastity</span> <div class="stat-bar"> <div class="stat-fill fill-chastity" id="bar-chastity"></div> </div> </div> <div class="stat-container"> <span class="stat-label">Affection</span> <div class="stat-bar"> <div class="stat-fill fill-affection" id="bar-affection"></div> </div> </div> <div class="stat-container"> <span class="stat-label">Arousal</span> <div class="stat-bar"> <div class="stat-fill fill-arousal" id="bar-arousal"></div> </div> </div> <div class="stat-container"> <span class="stat-label">Suspicion</span> <div class="stat-bar"> <div class="stat-fill fill-suspicion" id="bar-suspicion"></div> </div> </div> </div> <<run setTimeout(updateAllStatBars, 0)>> /*=========================================*/ /*=========================================*/ <<script>> let blurVisible = true; let mouseOverBlur = false; function onBlurClick() { v.currectActivity = ""; $('#blurArea').fadeOut(200); blurVisible = false; setup.closeConsole(); } $('#blurRect').remove(); const $blurRect = $('<div>') .attr('id', 'blurArea') .css({ position: 'absolute', top: '-10%', left: '0%', width: '100%', 'min-height': '70%', 'border-radius': '10%', 'backdrop-filter': 'blur(30px)', '-webkit-backdrop-filter': 'blur(30px)', 'pointer-events': 'auto', 'z-index': 10, }); $('body').append($blurRect); $blurRect.on('click', onBlurClick); $blurRect.on('mouseenter', function () { mouseOverBlur = true; }); $blurRect.on('mouseleave', function () { mouseOverBlur = false; }); $(document).on('mousemove', function () { if (!blurVisible && !mouseOverBlur) { $('#blurArea').fadeIn(200); blurVisible = true; } }); <</script>> <</nobr>>
<<setBG 1 setup.ImagePath 'locations/house/metroday.png'>><<run $datenow.setMinutes($datenow.getMinutes() + 10)>> <<timed 1s>> <<goto "workplace transition2">> <</timed>>
<<setBG 1 setup.ImagePath 'locations/house/workplace.png'>> <<set $timesWorked++>> <<set $timesWorked++>> <<run $datenow.setMinutes($datenow.getMinutes() + 5)>> <<timed 1s>> <<goto "workplace">> <</timed>>
<<setBG 1 setup.ImagePath 'locations/house/workplace.png'>> <<setBG 10 setup.ImagePath ''>> <<setBG 11 setup.ImagePath ''>> <<script>>$('#blurArea').remove();<</script>> <<script>>clearAllDeskClues();<</script>> <<script>>clearAllWhispers();<</script>> <<run window.clearAllMessageTimeouts()>> <<run setup.closeConsole()>> <<run window.deleteAllMessages()>> <<run $datenow.setMinutes($datenow.getMinutes() + 10)>> <<timed 1s>> <<goto "afterworkback transition2">> <</timed>>
<<setBG 1 setup.ImagePath 'locations/house/metronight.png'>> <<run $datenow.setMinutes($datenow.getMinutes() + 15)>> <<timed 1s>> <<goto "livingroom">> <</timed>>
<div id="menuA" class="shown"> <div id="smartphone"> <div id="app-grid"> <!-- App icons will be inserted here --> </div> </div> </div> <div id="menuB" class="hidden"> <span class="uiR-container-info"> <h4>Wife</h4> <<button "return">> <<set $displayedMenuOnRightBarTxt to "menuA">> <<run toggleMenus('menuA')>> <</button>> <br> <<if !$wifeStatsShow>> <<button "Display Wife Stats (Cheat)">> <<set $wifeStatsShow to true>> <<goto $return>> <</button>> <</if>> </span> <<if $wifeStatsShow>> <div class="avatar-overlayWife"><<generateNPCWife -40 23 150 400 base2>></div> <span class="uiR-container-info"> <<for _bull range $wifeBullsHistory>> <<= _bull>><br> <</for>> </span> <</if>> </div> <div id="menuC" class="hidden"> <span class="uiR-container-info"> <font color="yellow">Money: @@#money;<<= $money>>@@</font><br> <br> <<button "Changelog" "Changelog">><</button>><br> <<button "Configurations Menu">><<goto "Configurations">><</button>> <<button "Unstuck me" "livingroom">><</button>><br> <<button "Load Mods" "MODS">><</button>><br> daysSinceGameStart = $daysSinceGameStart - TV: $TVShow<br> <<button "TestNakedWife">><<set $hipSlot = "">><<set $legSlot = "">> <<set $chestSlot = "">><</button>> <<button "TestAddBullToFuckWifeVaginal">><<run v.wifeFucking.push("Bull@v")>><<goto $return>><</button>> <<button "TestAddBullToFuckWifeAnal">><<run v.wifeFucking.push("Bull@a")>><<goto $return>><</button>> <<button "TestAddBullToFuckWifeOral">><<run v.wifeFucking.push("Bull@o")>><<goto $return>><</button>> <<button "TestRandomPeek">><<goto "Test Peeking Random Video">><</button>> <<button "TestWifeTalk">><<goto "DefaultWifeTalk">><</button>> <<button "Advance 30min">><<run $datenow.setMinutes($datenow.getMinutes() + 30)>><<goto $return>><</button>> <br> Wife Fucking:<<=v.wifeFucking>><br> Bulls History:<<=v.wifeBullsHistory>><br> <<button "return">> <<set $displayedMenuOnRightBarTxt to "menuA">> <<run toggleMenus('menuA')>> <</button>> </span> </div>
<<setBG 1 setup.ImagePath 'locations/communal house/house.png'>> <<set _timeNowInString to $numberToWord[$stringTimeNow]>> <<timed 0.5s>><<for _npcM range $npcsMalesArray>> <<if _npcM[_timeNowInString] == "livingroom" || _npcM[_timeNowInString] == "kitchen" && _npcM.house == 'Communal House'>> <<run cycleImage(setup.ImagePath + 'characters/'+_npcM.name+'/b.png',90,40)>> <</if>> <</for>><</timed>> <span class="custom-button" style="top: 40%;left: 60%;"> <<button "Communal Bed Room">> <<run deleteAllNPCsInstances()>> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "communal bedroom">> <</button>> </span> <span class="custom-button" style="top: 33%;left: 45%;"> <<button "Communal Bath Room">> <<run deleteAllNPCsInstances()>> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "communal bathroom">> <</button>> </span> <span class="custom-button" style="top: 60%;left: 85%;"> <<button "20 min Nap">> <<run deleteAllNPCsInstances()>> <<run imgPop('conversation images/sleep.png', 'You took a 20 minutes nap ')>> <<run $datenow.setMinutes($datenow.getMinutes() + 20)>> <<goto "communal house">> <</button>> </span> <span class="custom-button" style="top: 40%;left: 05%;"> <<button "Eat Something">> <<run deleteAllNPCsInstances()>> <<run $datenow.setMinutes($datenow.getMinutes() + 30)>> <<goto "communal house">> <</button>> </span> <<for _npcM range $npcsMalesArray>> <<if _npcM.house == "Communal House">> <<capture _npcM>> <<if $stringTimeNow == 0 && _npcM.zero == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 1 && _npcM.one == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 2 && _npcM.two == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 3 && _npcM.three == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 4 && _npcM.four == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 5 && _npcM.five == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 6 && _npcM.six == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 7 && _npcM.seven == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 8 && _npcM.eight == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 9 && _npcM.nine == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 10 && _npcM.ten == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 11 && _npcM.eleven == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 12 && _npcM.twelve == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 13 && _npcM.thirteen == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 14 && _npcM.fourteen == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 15 && _npcM.fifteen == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 16 && _npcM.sixteen == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 17 && _npcM.seventeen == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 18 && _npcM.eighteen == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 19 && _npcM.nineteen == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 20 && _npcM.twenty == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 21 && _npcM.twentyone == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 22 && _npcM.twentytwo == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 23 && _npcM.twentythree == "livingroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 0 && _npcM.zero == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 1 && _npcM.one == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 2 && _npcM.two == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 3 && _npcM.three == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 4 && _npcM.four == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 5 && _npcM.five == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 6 && _npcM.six == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 7 && _npcM.seven == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 8 && _npcM.eight == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 9 && _npcM.nine == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 10 && _npcM.ten == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 11 && _npcM.eleven == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 12 && _npcM.twelve == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 13 && _npcM.thirteen == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 14 && _npcM.fourteen == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 15 && _npcM.fifteen == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 16 && _npcM.sixteen == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 17 && _npcM.seventeen == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 18 && _npcM.eighteen == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 19 && _npcM.nineteen == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 20 && _npcM.twenty == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 21 && _npcM.twentyone == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 22 && _npcM.twentytwo == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 23 && _npcM.twentythree == "kitchen">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <</capture>> <</if>> <</for>>
<<setBG 1 setup.ImagePath 'locations/communal house/beds.png'>> <<set _timeNowInString to $numberToWord[$stringTimeNow]>> <<timed 0.5s>><<for _npcM range $npcsMalesArray>> <<if _npcM[_timeNowInString] == "sleep" && _npcM.house == 'Communal House'>> <<run cycleImage(setup.ImagePath + 'characters/'+_npcM.name+'/b.png',90,40)>> <</if>> <</for>><</timed>> <span class="custom-button" style="top: 57%;left: 02%;"> <<button "Communal Living Room">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "communal house">> <</button>> </span> <span class="custom-button" style="top: 77%;left: 79%;"> <<button "My Bedroom">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "mybedroom">> <</button>> </span> <<for _npcM range $npcsMalesArray>> <<if _npcM.house == "Communal House">> <<capture _npcM>> <<if $stringTimeNow == 0 && _npcM.zero == "sleep">> <<button "_npcM.name is here">><<set $npcConversationWith.push(_npcM.name)>><</button>> <</if>> <<if $stringTimeNow == 1 && _npcM.one == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 2 && _npcM.two == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 3 && _npcM.three == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 4 && _npcM.four == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 5 && _npcM.five == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 6 && _npcM.six == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 7 && _npcM.seven == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 8 && _npcM.eight == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 9 && _npcM.nine == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 10 && _npcM.ten == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 11 && _npcM.eleven == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 12 && _npcM.twelve == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 13 && _npcM.thirteen == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 14 && _npcM.fourteen == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 15 && _npcM.fifteen == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 16 && _npcM.sixteen == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 17 && _npcM.seventeen == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 18 && _npcM.eighteen == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 19 && _npcM.nineteen == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 20 && _npcM.twenty == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 21 && _npcM.twentyone == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 22 && _npcM.twentytwo == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 23 && _npcM.twentythree == "sleep">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <</capture>> <</if>> <</for>>
<<setBG 1 setup.ImagePath 'locations/communal house/bathroom.png'>> <<set _timeNowInString to $numberToWord[$stringTimeNow]>> <<timed 0.5s>><<for _npcM range $npcsMalesArray>> <<if _npcM[_timeNowInString] == "bathroom" && _npcM.house == 'Communal House'>> <<run cycleImage(setup.ImagePath + 'characters/'+_npcM.name+'/b.png',90,40)>> <</if>> <</for>><</timed>> <span class="custom-button" style="top: 33%;left: 15%;"> <<button "Communal Living Room">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "communal house">> <</button>> </span> <<for _npcM range $npcsMalesArray>> <<if _npcM.house == "Communal House">> <<capture _npcM>> <<if $stringTimeNow == 0 && _npcM.zero == "bathroom">> <<button "_npcM.name is here">><<set $npcConversationWith.push(_npcM.name)>><</button>> <</if>> <<if $stringTimeNow == 1 && _npcM.one == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 2 && _npcM.two == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 3 && _npcM.three == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 4 && _npcM.four == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 5 && _npcM.five == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 6 && _npcM.six == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 7 && _npcM.seven == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 8 && _npcM.eight == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 9 && _npcM.nine == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 10 && _npcM.ten == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 11 && _npcM.eleven == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 12 && _npcM.twelve == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 13 && _npcM.thirteen == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 14 && _npcM.fourteen == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 15 && _npcM.fifteen == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 16 && _npcM.sixteen == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 17 && _npcM.seventeen == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 18 && _npcM.eighteen == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 19 && _npcM.nineteen == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 20 && _npcM.twenty == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 21 && _npcM.twentyone == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 22 && _npcM.twentytwo == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <<if $stringTimeNow == 23 && _npcM.twentythree == "bathroom">> <<button "_npcM.name is here" "Npc Conversation">><<set $npcConversationWith.push(_npcM)>><</button>> <</if>> <</capture>> <</if>> <</for>>
<<set $lastMap to []>>
<style> .container { display: flex; justify-content: flex-end; width: 100%; //max-width: 50%; /* Adjust as needed */ margin: 0 auto; margin-left: 0%; //box-sizing: border-box; } .text-container { } .text-container2 { float: left; margin-left: 4%; } .text-container3 { float: left; margin-left: 4%; font-size: x-small; } .container img { max-width: 30%; /* Ensure the image takes full width of its container */ height: auto; position: relative; right: -65%; padding: 5px; display: block; /* Ensures the image does not have extra space below */ } </style> <h3>List of npcs</h3> <<button "<<Return" $return>>\ <</button>><br> <h2>Males</h2> <<for _npcM range $npcsMalesArray>> <span class="uiR-container-info"><div class="container"><div class="text-container"> <b>Name: <<print _npcM.name>></b><br> Sex: <<print _npcM.sex>><br> Age: <<print _npcM.age>><br> Height: <<print _npcM.height>>cm<br> Weight: <<print _npcM.weight>>kg<br> Skin Color: <<print _npcM.skinColor>><br> Hair Color: <<print _npcM.hairColor>><br> Eye Color: <<print _npcM.eyeColor>><br> Personality: <<print _npcM.personality>><br> Housing: <<print _npcM.house>><br> </div> <div class="text-container2"> Ralationship with your wife: <<print _npcM.relationshipWife>>%<br> Respect towards wife: <<print _npcM.respectToWife>>%<br> Respect towards player: <<print _npcM.respectToPlayer>>%<br> Fucked your wife orally: <<print _npcM.fuckedWifeOral>><br> Fucked your wife vaginally: <<print _npcM.fuckedWifeVag>><br> Fucked your wife anally: <<print _npcM.fuckedWifeAnal>><br> Ejaculated inside your wife: <<print _npcM.cameInsideWife>><br> Jerked to your wife: <<print _npcM.jerkedToWife>><br> <<set $showNPCRoutine to _npcM.name>><br> <<capture _currentNPCRoutine = $showNPCRoutine>> <<button "Show $showNPCRoutine Routine">> <<run Dialog.setup($showNPCRoutine + " NPC Routine");>> <<run Dialog.wiki(Story.get("NPC Routine").processText());>> <<run Dialog.open();>> <</button>> <</capture>> </div> <div class="text-container3"> [img[setup.ImagePath+'characters/' +_npcM.name + '/b.png']] </div></div></span><br><br> <</for>> <h2>Females</h2> <<for _npcF range $npcsFemalesArray>> <span class="uiR-container-info"> <b>Name: <<print _npcF.name>></b><br> Sex: <<print _npcF.sex>><br> Age: <<print _npcF.age>><br> Height: <<print _npcF.height>><br> Weight: <<print _npcF.weight>><br> Skin Color: <<print _npcF.skinColor>><br> Hair Color: <<print _npcF.hairColor>><br> Eye Color: <<print _npcF.eyeColor>><br> Personality: <<print _npcF.personality>><br> </span><br><br> <</for>>
<<setBG 1 setup.ImagePath 'locations/communal house/mybedroom.png'>> <span class="custom-button" style="top: 33%;left: 15%;"> <<button "Communal Living Room">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "communal bedroom">> <</button>> </span>
<style> .containernpcsroutine { text-align: center; /* Center-align text */ //max-width: 50%; /* Adjust as needed */ margin: 0 auto; margin-left: 0%; //box-sizing: border-box; } </style> <<set _npc to $npcsMalesArray.find(npc => npc.name === $showNPCRoutine)>> <span class="uiR-container-info"><div class="containernpcsroutine"> <<if _npc>> 0:00 - 1:00: <<print _npc.zero>><br> 1:00 - 2:00: <<print _npc.one>><br> 2:00 - 3:00: <<print _npc.two>><br> 3:00 - 4:00: <<print _npc.three>><br> 4:00 - 5:00: <<print _npc.four>><br> 5:00 - 6:00: <<print _npc.five>><br> 6:00 - 7:00: <<print _npc.six>><br> 7:00 - 8:00: <<print _npc.seven>><br> 8:00 - 9:00: <<print _npc.eight>><br> 9:00 - 10:00: <<print _npc.nine>><br> 10:00 - 11:00: <<print _npc.ten>><br> 11:00 - 12:00: <<print _npc.eleven>><br> 12:00 - 13:00: <<print _npc.twelve>><br> 13:00 - 14:00: <<print _npc.thirteen>><br> 14:00 - 15:00: <<print _npc.fourteen>><br> 15:00 - 16:00: <<print _npc.fifteen>><br> 16:00 - 17:00: <<print _npc.sixteen>><br> 17:00 - 18:00: <<print _npc.seventeen>><br> 18:00 - 19:00: <<print _npc.eighteen>><br> 19:00 - 20:00: <<print _npc.nineteen>><br> 20:00 - 21:00: <<print _npc.twenty>><br> 21:00 - 22:00: <<print _npc.twentyone>><br> 22:00 - 23:00: <<print _npc.twentytwo>><br> 23:00 - 0:00: <<print _npc.twentythree>><br> <</if>> </div></span>
<style> .containerNpcConversation { display: flex; width: 100%; //max-width: 50%; /* Adjust as needed */ margin: 0 auto; margin-left: 0%; //box-sizing: border-box; } .text-containerNpcConversation { position: absolute; width: 76%; max-width: 80%; max-height: 93%; left: 22%; top: 2%; overflow-wrap: break-word; word-wrap: break-word; //white-space: pre-wrap; overflow: auto; /* Add scrollbar if content overflows */ //margin: 0 auto; /* Center the container */ background: rgba(25, 25, 25, 1); border-radius: 15px; color: white; padding: 5px 5px; box-shadow: 0 4px 8px rgba(25, 25, 25, 0.9); /* White shadow */ } .text-containerNpcAnswer { position: relative; width: 100%; max-width: 99%; max-height: 83%; left: 0%; top: 10%; text-align: center; overflow-wrap: break-word; word-wrap: break-word; //white-space: pre-wrap; overflow: auto; /* Add scrollbar if content overflows */ //margin: 0 auto; /* Center the container */ background: rgba(25, 25, 25, 1); border-radius: 5px; padding: 5px 5px; box-shadow: 0 4px 8px rgba(25, 25, 25, 0.9); /* White shadow */ } .containerNpcConversation img { max-width: 30%; /* Ensure the image takes full width of its container */ height: auto; position: static; right: 0%; padding: 5px; display: block; /* Ensures the image does not have extra space below */ } </style> <<run deleteAllNPCsInstances()>> <<set _passageHandlerB4Talk to 'NPCs Events Handler b4talk'>> <<run includePassage(_passageHandlerB4Talk)>> <<set _passageBContent to Story.get($currentPassageConversationIs).text>> <<set _splitContent to _passageBContent.split('@.@.@')>> <<set _otherPassageContent1 to _splitContent[0].replace(/\n+/g, ' ').trim()>> <<set _otherPassageContent2 to _splitContent.length > 1 ? _splitContent[1].replace(/\n+/g, ' ').trim() : ''>> <span class="uiR-container-info"> <<for _npc range $npcConversationWith>> <b><<print _npc.name>></b> <div class="containerNpcConversation"> [img[setup.ImagePath + 'characters/'+_npc.name+'/b.png']] </div> <div class="text-containerNpcConversation"> <<print _otherPassageContent1>> </div> <</for>> </span><br> <span class="uiR-container-info"> <div class="text-containerNpcAnswer"> <<print _otherPassageContent2>> /*<<button "Test imagePop">>\ <<run imgPop('conversation images/talk.png', 'Your text content here')>> <</button>><br>*/ </div> </span>
<<if $npcConversationWith[0].firstmet == 0>> <<set $currentPassageConversationIs to ($npcConversationWith[0].name + " Intro")>> <<for _npcM range $npcsMalesArray>> <<if _npcM.name == $npcConversationWith[0].name>> <<set _npcM.firstmet to 1>> <</if>> <</for>> <<else>> <<set $currentPassageConversationIs to 'NPC talk manager'>> <</if>>
<<set $npcsFemalesArray to [ {name: "Elena", sex: "female", age: 18, height: 149, weight: 48, skinColor: "pale", hairColor: "brown", eyeColor: "green", personality: "outgoing"} ]>> <<set $npcsMalesArray to [ {name: "John", sex: "male", age: 48, height: 175, weight: 82, skinColor: "tan", hairColor: "brown", eyeColor: "brown", personality: "serious", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "bathroom", six: "kitchen", seven: "livingroom", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "work", fifteen: "bathroom", sixteen: "work", seventeen: "work", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Alex", sex: "male", age: 22, height: 178, weight: 80, skinColor: "fair", hairColor: "black", eyeColor: "brown", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "sleep", six: "sleep", seven: "sleep", eight: "bathroom", nine: "kitchen", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "work", fifteen: "bathroom", sixteen: "work", seventeen: "work", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Michael", sex: "male", age: 26, height: 182, weight: 85, skinColor: "dark", hairColor: "black", eyeColor: "black", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "bathroom", five: "kitchen", six: "work", seven: "work", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "bathroom", fourteen: "work", fifteen: "work", sixteen: "work", seventeen: "kitchen", eighteen: "livingroom", nineteen: "bathroom", twenty: "livingroom", twentyone: "livingroom", twentytwo: "sleep", twentythree: "sleep", firstmet: 0}, {name: "David", sex: "male", age: 24, height: 170, weight: 65, skinColor: "fair", hairColor: "black", eyeColor: "brown", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "sleep", six: "bathroom", seven: "kitchen", eight: "livingroom", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "work", fifteen: "bathroom", sixteen: "work", seventeen: "work", eighteen: "kitchen", nineteen: "livingroom", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Chris", sex: "male", age: 27, height: 171, weight: 63, skinColor: "tan", hairColor: "white", eyeColor: "hazel", personality: "serious", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "sleep", six: "bathroom", seven: "kitchen", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "bathroom", fifteen: "work", sixteen: "work", seventeen: "kitchen", eighteen: "livingroom", nineteen: "bathroom", twenty: "livingroom", twentyone: "livingroom", twentytwo: "sleep", twentythree: "sleep", firstmet: 0}, {name: "James", sex: "male", age: 28, height: 186, weight: 93, skinColor: "tan", hairColor: "brown", eyeColor: "brown", personality: "shy", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "bathroom", six: "kitchen", seven: "livingroom", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "work", fifteen: "bathroom", sixteen: "work", seventeen: "work", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Robert", sex: "male", age: 37, height: 185, weight: 83, skinColor: "dark", hairColor: "black", eyeColor: "black", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "sleep", six: "sleep", seven: "bathroom", eight: "kitchen", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "work", fifteen: "bathroom", sixteen: "work", seventeen: "work", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Daniel", sex: "male", age: 23, height: 172, weight: 68, skinColor: "fair", hairColor: "blonde", eyeColor: "brown", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "bathroom", six: "kitchen", seven: "work", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "work", fifteen: "bathroom", sixteen: "work", seventeen: "work", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "William", sex: "male", age: 73, height: 177, weight: 76, skinColor: "tan", hairColor: "white", eyeColor: "hazel", personality: "jerk", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 50, desireToWife: 80, respectToPlayer: 20, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "sleep", six: "bathroom", seven: "kitchen", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "bathroom", fifteen: "work", sixteen: "work", seventeen: "kitchen", eighteen: "livingroom", nineteen: "bathroom", twenty: "livingroom", twentyone: "livingroom", twentytwo: "sleep", twentythree: "sleep", firstmet: 0}, {name: "Joseph", sex: "male", age: 45, height: 176, weight: 80, skinColor: "fair", hairColor: "brown", eyeColor: "brown", personality: "serious", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "livingroom", six: "work", seven: "sleep", eight: "bathroom", nine: "kitchen", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "sleep", fifteen: "work", sixteen: "sleep", seventeen: "sleep", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Charles", sex: "male", age: 54, height: 182, weight: 95, skinColor: "dark", hairColor: "black", eyeColor: "black", personality: "jerk", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 50, desireToWife: 50, respectToPlayer: 20, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "bathroom", six: "work", seven: "work", eight: "work", nine: "sleep", ten: "livingroom", eleven: "work", twelve: "work", thirteen: "work", fourteen: "work", fifteen: "work", sixteen: "sleep", seventeen: "sleep", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Henry", sex: "male", age: 65, height: 165, weight: 90, skinColor: "fair", hairColor: "white", eyeColor: "blue", personality: "shy", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "kitchen", six: "work", seven: "work", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "sleep", fifteen: "livingroom", sixteen: "sleep", seventeen: "sleep", eighteen: "bathroom", nineteen: "kitchen", twenty: "work", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Thomas", sex: "male", age: 30, height: 185, weight: 70, skinColor: "dark", hairColor: "black", eyeColor: "black", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "bathroom", six: "kitchen", seven: "work", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "work", fifteen: "livingroom", sixteen: "sleep", seventeen: "kitchen", eighteen: "work", nineteen: "bathroom", twenty: "livingroom", twentyone: "livingroom", twentytwo: "sleep", twentythree: "sleep", firstmet: 0}, {name: "George", sex: "male", age: 58, height: 197, weight: 98, skinColor: "fair", hairColor: "white", eyeColor: "green", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "work", three: "work", four: "work", five: "kitchen", six: "work", seven: "work", eight: "sleep", nine: "sleep", ten: "bathroom", eleven: "livingroom", twelve: "work", thirteen: "work", fourteen: "work", fifteen: "work", sixteen: "work", seventeen: "work", eighteen: "sleep", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Andrew", sex: "male", age: 34, height: 188, weight: 80, skinColor: "dark", hairColor: "black", eyeColor: "brown", personality: "serious", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "work", six: "work", seven: "kitchen", eight: "bathroom", nine: "sleep", ten: "livingroom", eleven: "work", twelve: "work", thirteen: "work", fourteen: "work", fifteen: "work", sixteen: "sleep", seventeen: "bathroom", eighteen: "livingroom", nineteen: "kitchen", twenty: "work", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Frank", sex: "male", age: 46, height: 192, weight: 75, skinColor: "dark", hairColor: "black", eyeColor: "black", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "livingroom", six: "sleep", seven: "kitchen", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "bathroom", fourteen: "sleep", fifteen: "work", sixteen: "sleep", seventeen: "sleep", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Jack", sex: "male", age: 54, height: 170, weight: 65, skinColor: "fair", hairColor: "red", eyeColor: "blue", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "kitchen", six: "work", seven: "work", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "sleep", fifteen: "livingroom", sixteen: "sleep", seventeen: "bathroom", eighteen: "kitchen", nineteen: "bathroom", twenty: "work", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Albert", sex: "male", age: 44, height: 174, weight: 72, skinColor: "tan", hairColor: "black", eyeColor: "hazel", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "livingroom", six: "work", seven: "sleep", eight: "bathroom", nine: "kitchen", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "sleep", fifteen: "work", sixteen: "sleep", seventeen: "sleep", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Paul", sex: "male", age: 39, height: 186, weight: 88, skinColor: "fair", hairColor: "brown", eyeColor: "blue", personality: "jerk", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 50, desireToWife: 80, respectToPlayer: 20, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "bathroom", six: "work", seven: "work", eight: "work", nine: "sleep", ten: "livingroom", eleven: "work", twelve: "work", thirteen: "work", fourteen: "work", fifteen: "work", sixteen: "sleep", seventeen: "bathroom", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Edward", sex: "male", age: 61, height: 185, weight: 105, skinColor: "tan", hairColor: "white", eyeColor: "brown", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "bathroom", six: "work", seven: "work", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "sleep", fifteen: "livingroom", sixteen: "sleep", seventeen: "kitchen", eighteen: "bathroom", nineteen: "kitchen", twenty: "work", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Peter", sex: "male", age: 51, height: 172, weight: 68, skinColor: "fair", hairColor: "white", eyeColor: "brown", personality: "serious", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "livingroom", six: "sleep", seven: "kitchen", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "bathroom", fourteen: "sleep", fifteen: "work", sixteen: "sleep", seventeen: "sleep", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Mark", sex: "male", age: 28, height: 177, weight: 76, skinColor: "fair", hairColor: "blonde", eyeColor: "hazel", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "kitchen", six: "work", seven: "work", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "sleep", fifteen: "livingroom", sixteen: "sleep", seventeen: "bathroom", eighteen: "kitchen", nineteen: "bathroom", twenty: "work", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Steven", sex: "male", age: 78, height: 180, weight: 80, skinColor: "fair", hairColor: "white", eyeColor: "blue", personality: "serious", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "bathroom", six: "work", seven: "work", eight: "work", nine: "sleep", ten: "livingroom", eleven: "work", twelve: "work", thirteen: "work", fourteen: "work", fifteen: "work", sixteen: "sleep", seventeen: "bathroom", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Richard", sex: "male", age: 34, height: 182, weight: 85, skinColor: "dark", hairColor: "black", eyeColor: "black", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "bathroom", six: "work", seven: "work", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "sleep", fifteen: "livingroom", sixteen: "sleep", seventeen: "kitchen", eighteen: "bathroom", nineteen: "kitchen", twenty: "work", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Kenneth", sex: "male", age: 25, height: 165, weight: 60, skinColor: "tan", hairColor: "black", eyeColor: "brown", personality: "serious", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "livingroom", six: "sleep", seven: "kitchen", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "bathroom", fourteen: "sleep", fifteen: "work", sixteen: "sleep", seventeen: "sleep", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Joshua", sex: "male", age: 50, height: 175, weight: 75, skinColor: "dark", hairColor: "black", eyeColor: "black", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "kitchen", six: "work", seven: "work", eight: "work", nine: "work", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "sleep", fifteen: "livingroom", sixteen: "sleep", seventeen: "bathroom", eighteen: "kitchen", nineteen: "bathroom", twenty: "work", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Brian", sex: "male", age: 38, height: 180, weight: 70, skinColor: "tan", hairColor: "brown", eyeColor: "green", personality: "serious", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "bathroom", six: "work", seven: "work", eight: "work", nine: "sleep", ten: "livingroom", eleven: "work", twelve: "work", thirteen: "work", fourteen: "work", fifteen: "work", sixteen: "sleep", seventeen: "bathroom", eighteen: "livingroom", nineteen: "kitchen", twenty: "bathroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "sleep", firstmet: 0}, {name: "Kevin", sex: "male", age: 22, height: 178, weight: 66, skinColor: "tan", hairColor: "black", eyeColor: "brown", personality: "friendly", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 80, desireToWife: 50, respectToPlayer: 50, zero: "sleep", one: "sleep", two: "sleep", three: "sleep", four: "sleep", five: "livingroom", six: "work", seven: "sleep", eight: "bathroom", nine: "kitchen", ten: "work", eleven: "work", twelve: "work", thirteen: "work", fourteen: "sleep", fifteen: "work", sixteen: "sleep", seventeen: "kitchen", eighteen: "livingroom", nineteen: "bathroom", twenty: "livingroom", twentyone: "livingroom", twentytwo: "sleep", twentythree: "sleep", firstmet: 0}, {name: "Ronald", sex: "male", age: 26, height: 182, weight: 85, skinColor: "dark", hairColor: "black", eyeColor: "black", personality: "jerk", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 50, desireToWife: 80, respectToPlayer: 20, zero: "work", one: "work", two: "work", three: "work", four: "work", five: "work", six: "work", seven: "work", eight: "work", nine: "kitchen", ten: "sleep", eleven: "sleep", twelve: "sleep", thirteen: "sleep", fourteen: "sleep", fifteen: "sleep", sixteen: "sleep", seventeen: "bathroom", eighteen: "kitchen", nineteen: "livingroom", twenty: "livingroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "livingroom", firstmet: 0}, {name: "Jason", sex: "male", age: 44, height: 183, weight: 65, skinColor: "fair", hairColor: "brown", eyeColor: "blue", personality: "jerk", house: "Communal House", relationshipWife: 0, fuckedWifeVag: 0, fuckedWifeAnal: 0, fuckedWifeOral: 0, cameInsideWife: 0, jerkedToWife: 0, respectToWife: 50, desireToWife: 80, respectToPlayer: 20, zero: "work", one: "work", two: "work", three: "work", four: "work", five: "work", six: "work", seven: "work", eight: "work", nine: "kitchen", ten: "sleep", eleven: "sleep", twelve: "sleep", thirteen: "sleep", fourteen: "sleep", fifteen: "sleep", sixteen: "sleep", seventeen: "bathroom", eighteen: "kitchen", nineteen: "livingroom", twenty: "livingroom", twentyone: "livingroom", twentytwo: "livingroom", twentythree: "livingroom", firstmet: 0} ]>>
<<set $cumBottomSlot to "">> <<set $cumTopSlot to "">> <<set $neckSlot to "">> <<set $chestSlot to "Colorful T-Shirt">> <<set $hipSlot to "White Panty A">> <<set $legSlot to "Colorful Leggings A">> <<set $feetSlot to "Black Sneakers">> <<set $acessorySlot to "">> <<set $cumBottomClothSlot to "">> <<set $cumTopClothSlot to "">> <<set $rectumSlot to "a0mini">> <<set $uterusSlot to "v0mini">> <<newinv $backpack>> <<newinv $shopMarket>> <<item "money" "Money">> <<description>>\ The principal currency, used to buy and sell things.\ <</item>> <<item "key_1" "Crypt Key">> <<description>>\ An old, rusty key with a skull shape on it. Spoooooky.\ <<unique>> <</item>> <<consumable "Small Health Potion">> <<set $pCHP to Math.clamp($pCHP + 20, 0, 100)>> <<description>>\ <<include "Small HPotion">> /* Show passage*/ <</consumable>> <<item "Chastity Caged">> <<description>>\ <<nobr>> <<if $knows>> <font color="grey"><h5>A chastity device.</h5></font> <<else>> <font color="grey"><h5>A chastity device.</h5></font> <</if>> <</nobr>>\ <<unique>> <</item>> <<set $wifeFaceMap = { "fb": "face_blush", "fh": "face_happy", "fhb": "face_happy_blush", "fm": "face_mad", "fmb": "face_mad_blush", "fs": "face_sad", "fss": "face_sassy", "fsm": "face_smirk", "fsu": "face_surprised", "fsub": "face_surprised_blush", "fsuh": "face_surprised_happy", "fsuhb": "face_surprised_happy_blush", "fstb": "face_surprised_tongue_blush", "fsusy": "face_sussy", "fsust": "face_sussy_tongue", "fsustb": "face_sussy_tongue_blush", "ft": "face_tongue" }>> <<set $clothesFemale to [ {name: "Transparent White Tanktop", style: "shirts", cute: 1, sexy: 8, exposure: 8, quality: 6, color: "white", shopPrice: 350}, {name: "Transparent White T-Shirt", style: "shirts", cute: 1, sexy: 8, exposure: 8, quality: 6, color: "white", shopPrice: 400}, {name: "Cyan Blouse", style: "shirts", cute: 3, sexy: 8, exposure: 6, quality: 9, color: "cyan", shopPrice: 750}, {name: "Yellow T-Shirt", style: "shirts", cute: 7, sexy: 4, exposure: 4, quality: 6, color: "yellow", shopPrice: 400}, {name: "Colorful T-Shirt", style: "shirts", cute: 8, sexy: 3, exposure: 4, quality: 6, color: "colorful", shopPrice: 400}, {name: "Flowers T-Shirt", style: "shirts", cute: 7, sexy: 4, exposure: 4, quality: 6, color: "white", shopPrice: 400}, {name: "Transparent Croptop A", style: "croptops", cute: 1, sexy: 10, exposure: 8, quality: 7, color: "white", shopPrice: 600}, {name: "Croptop A", style: "croptops", cute: 1, sexy: 8, exposure: 6, quality: 7, color: "white", shopPrice: 500}, {name: "Croptop B", style: "croptops", cute: 1, sexy: 8, exposure: 6, quality: 7, color: "white", shopPrice: 500}, {name: "White Plain Croptop", style: "croptops", cute: 4, sexy: 8, exposure: 6, quality: 7, color: "white", shopPrice: 350}, {name: "White Leather Croptop A", style: "croptops", cute: 4, sexy: 9, exposure: 6, quality: 8, color: "white", shopPrice: 950}, {name: "White Leather Croptop B", style: "croptops", cute: 4, sexy: 8, exposure: 6, quality: 6, color: "white", shopPrice: 950}, {name: "White Leather Croptop C", style: "croptops", cute: 4, sexy: 8, exposure: 7, quality: 6, color: "white", shopPrice: 1000}, {name: "Black Latex Croptop", style: "croptops", cute: 1, sexy: 8, exposure: 7, quality: 8, color: "white", shopPrice: 1000}, {name: "White Dress A", style: "dresses", cute: 3, sexy: 8, exposure: 7, quality: 8, color: "white", shopPrice: 1400}, {name: "White Dress B", style: "dresses", cute: 3, sexy: 8, exposure: 7, quality: 8, color: "white", shopPrice: 1400}, {name: "White Dress C", style: "dresses", cute: 3, sexy: 8, exposure: 7, quality: 8, color: "white", shopPrice: 1400}, {name: "White Dress D", style: "dresses", cute: 3, sexy: 8, exposure: 7, quality: 8, color: "white", shopPrice: 1400}, {name: "White Dress E", style: "dresses", cute: 3, sexy: 8, exposure: 7, quality: 8, color: "white", shopPrice: 1400}, {name: "White Dress F", style: "dresses", cute: 3, sexy: 8, exposure: 7, quality: 8, color: "white", shopPrice: 1400}, {name: "LightYellow Dress", style: "dresses", cute: 3, sexy: 9, exposure: 6, quality: 9, color: "yellow", shopPrice: 1700}, {name: "LightPink Dress", style: "dresses", cute: 3, sexy: 9, exposure: 7, quality: 9, color: "pink", shopPrice: 1750}, {name: "LightBlue Dress", style: "dresses", cute: 3, sexy: 9, exposure: 8, quality: 9, color: "blue", shopPrice: 1800}, {name: "Colorful Dress", style: "dresses", cute: 3, sexy: 9, exposure: 7, quality: 9, color: "colorful", shopPrice: 1800}, {name: "LightGreen Dress", style: "dresses", cute: 3, sexy: 10, exposure: 9, quality: 8, color: "green", shopPrice: 2000}, {name: "Pink Dress", style: "dresses", cute: 3, sexy: 8, exposure: 8, quality: 10, color: "pink", shopPrice: 2000}, {name: "Transparent White Dress A", style: "dresses", cute: 1, sexy: 9, exposure: 9, quality: 7, color: "white", shopPrice: 1700}, {name: "Transparent One Piece A", style: "onepieces", cute: 1, sexy: 9, exposure: 9, quality: 7, color: "white", shopPrice: 1200}, {name: "Transparent One Piece B", style: "onepieces", cute: 1, sexy: 9, exposure: 9, quality: 7, color: "white", shopPrice: 1200}, {name: "Transparent One Piece C", style: "onepieces", cute: 1, sexy: 9, exposure: 9, quality: 7, color: "white", shopPrice: 1200}, {name: "Colorful Leggings A", style: "leggings", cute: 5, sexy: 7, exposure: 6, quality: 7, color: "colorful", shopPrice: 550}, {name: "Colorful Leggings B", style: "leggings", cute: 5, sexy: 7, exposure: 6, quality: 7, color: "colorful", shopPrice: 550}, {name: "White Leggings", style: "leggings", cute: 4, sexy: 8, exposure: 10, quality: 8, color: "white", shopPrice: 600}, {name: "Transparent Leggings A", style: "leggings", cute: 1, sexy: 9, exposure: 9, quality: 7, color: "white", shopPrice: 600}, {name: "Transparent Leggings B", style: "leggings", cute: 1, sexy: 10, exposure: 9, quality: 7, color: "white", shopPrice: 600}, {name: "Jeans Shorts", style: "shorts", cute: 6, sexy: 7, exposure: 7, quality: 7, color: "blue", shopPrice: 550}, {name: "Blue Shorts A", style: "shorts", cute: 6, sexy: 7, exposure: 7, quality: 7, color: "blue", shopPrice: 600}, {name: "Blue Shorts B", style: "shorts", cute: 6, sexy: 7, exposure: 7, quality: 7, color: "blue", shopPrice: 600}, {name: "Blue Shorts C", style: "shorts", cute: 6, sexy: 7, exposure: 7, quality: 7, color: "blue", shopPrice: 600}, {name: "Blue Shorts D", style: "shorts", cute: 6, sexy: 7, exposure: 7, quality: 7, color: "blue", shopPrice: 600}, {name: "White Skirt A", style: "skirts", cute: 3, sexy: 8, exposure: 8, quality: 7, color: "white", shopPrice: 400}, {name: "White Skirt B", style: "skirts", cute: 3, sexy: 8, exposure: 8, quality: 7, color: "white", shopPrice: 500}, {name: "White Skirt C", style: "skirts", cute: 3, sexy: 8, exposure: 8, quality: 7, color: "white", shopPrice: 500}, {name: "White Skirt D", style: "skirts", cute: 3, sexy: 8, exposure: 8, quality: 7, color: "white", shopPrice: 450}, {name: "Blue Skirt A", style: "skirts", cute: 2, sexy: 8, exposure: 8, quality: 7, color: "blue", shopPrice: 400}, {name: "Blue Skirt B", style: "skirts", cute: 2, sexy: 8, exposure: 8, quality: 7, color: "blue", shopPrice: 400}, {name: "Blue Skirt C", style: "skirts", cute: 2, sexy: 7, exposure: 8, quality: 7, color: "blue", shopPrice: 400}, {name: "Orange Skirt", style: "skirts", cute: 5, sexy: 7, exposure: 8, quality: 7, color: "orange", shopPrice: 350}, {name: "Black Leather Skirt", style: "skirts", cute: 2, sexy: 8, exposure: 10, quality: 9, color: "black", shopPrice: 850}, {name: "Black Leather Skirt With Straps", style: "skirts", cute: 1, sexy: 10, exposure: 10, quality: 9, color: "black", shopPrice: 1000}, {name: "Colorful Leather Skirt", style: "skirts", cute: 1, sexy: 8, exposure: 10, quality: 9, color: "colorful", shopPrice: 900}, {name: "White Micro Skirt", style: "microskirts", cute: 0, sexy: 10, exposure: 10, quality: 8, color: "white", shopPrice: 800}, {name: "White Panty A", style: "panties", cute: 10, sexy: 7, exposure: 7, quality: 8, color: "white", shopPrice: 200}, {name: "Black Sneakers", style: "sneakers", cute: 7, sexy: 7, exposure: 6, quality: 8, color: "black", shopPrice: 450}, {name: "Black Sneakers and White Socks", style: "sneakers", cute: 7, sexy: 7, exposure: 6, quality: 8, color: "black", shopPrice: 500}, {name: "Black Sneakers and Knees White Socks", style: "sneakers", cute: 7, sexy: 7, exposure: 6, quality: 8, color: "black", shopPrice: 500}, {name: "Black Sneakers and Over The Knees White Socks", style: "sneakers", cute: 7, sexy: 7, exposure: 6, quality: 8, color: "black", shopPrice: 500}, {name: "White Sneakers and Over The Knees Fishnet Socks", style: "sneakers", cute: 7, sexy: 7, exposure: 6, quality: 8, color: "white", shopPrice: 600}, {name: "Black Sneakers and Over The Knees Fishnet Socks", style: "sneakers", cute: 7, sexy: 7, exposure: 6, quality: 8, color: "black", shopPrice: 600}, {name: "Red Stilettos", style: "heels", cute: 3, sexy: 8, exposure: 8, quality: 9, color: "red", shopPrice: 900}, {name: "Beige Stilettos", style: "heels", cute: 3, sexy: 8, exposure: 8, quality: 9, color: "beige", shopPrice: 900}, {name: "Black Stilettos and Over The Knees Fishnet Socks", style: "heels", cute: 3, sexy: 9, exposure: 8, quality: 9, color: "black", shopPrice: 1200}, {name: "Black Heels", style: "heels", cute: 3, sexy: 8, exposure: 8, quality: 9, color: "black", shopPrice: 1000}, {name: "Red Heels", style: "heels", cute: 3, sexy: 8, exposure: 8, quality: 9, color: "red", shopPrice: 1000}, {name: "Choker", style: "chokers", cute: 1, sexy: 10, exposure: 10, quality: 8, color: "black", shopPrice: 350} ]>>
<nobr> <style> .full-screen-passage { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background-color: black; /* Or any background color you prefer */ z-index: 0; /* Ensure it is above other elements */ overflow: auto; /* Allow scrolling if content exceeds viewport */ padding: 0px; /* Optional padding */ } #game-container { text-align: center; margin-top: 10px; background: linear-gradient(135deg, #000000, #d9d9d9); border: 1px solid #ccc; border-radius: 8px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } #timer-display { font-size: 18px; margin-bottom: 0px; position: absolute; right: 5%; } #hand-container { margin-top: 0px; } #hand-list, #hand-list-enemy, #list-playedcards { list-style-type: none; padding: 0; display: flex; justify-content: center; /* Center the list */ flex-wrap: wrap; /* Allow cards to wrap to the next line */ } .small-cards{ margin: -28px; transform: scale(0.5); } .card-item { position: relative; //margin: 10px; width: 100px; height: 160px; background: linear-gradient(135deg, #f0f0f0, #d9d9d9); border: 1px solid #ccc; border-radius: 8px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); overflow: hidden; transition: transform 0.3s ease, box-shadow 0.3s ease; display: flex; flex-direction: column; justify-content: space-between; /* Center details vertically */ cursor: pointer; /* Make cards clickable */ } .card-item:hover { transform: translateY(-5px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2); } .card-name-box { background-color: black; color: white; text-align: center; padding: 5px; font-size: 14px; font-weight: bold; } .card-details { padding: 10px; text-align: left; font-size: 12px; color: black; } </style> <<set $enemyhand = []>> <<set $table = []>> <<set $hand = []>> <div class="full-screen-passage"> <div id="enemy-hand-container"> <b>Adversary Hand:</b> <ul id="hand-list-enemy"></ul> </div> <div id="game-container"> <div id="played-container"> <b>Played Cards:</b> <ul id="list-playedcards"></ul> </div> <div id="timer-display">Time: <span id="timer">0</span> seconds</div> </div> <div id="my-hand-container"> <b>Your Hand:</b> <ul id="hand-list"></ul> </div> </div> <script> //=====================Variables var timer = 0; var givenCards = 0; var givenCardsEnemy = 0; var moves = 0; var enemymoves = 0; v.discardPile = []; v.enemyDiscardPile = []; shuffle(v.deck); shuffle(v.enemydeck); //=====================Game Frames======================= function updateGame() { timer++; // Timer document.getElementById('timer').innerText = moves; // Update timer display // Drawing a card for player if (v.deck.length > 0) { if(givenCards < v.playerDeckStats.maxcards){ givenCards++; let card = v.deck.pop(); if (card) { v.hand.push(card); addCardToHandList(card, 'hand-list', true); // Make player cards clickable } } } // Drawing a card for enemy if (v.enemydeck.length > 0) { if(givenCardsEnemy < v.enemyDeckStats.maxcards){ givenCardsEnemy++; let cardEnemy = v.enemydeck.pop(); if (cardEnemy) { v.enemyhand.push(cardEnemy); addCardToHandList(cardEnemy, 'hand-list-enemy', false); // Enemy cards are not clickable } } } } var gameInterval = setInterval(updateGame, 1000); // Game update interval // Function to add a card to the specified hand list function addCardToHandList(card, handListId, isClickable) { const handList = document.getElementById(handListId); const li = document.createElement('li'); li.classList.add('card-item'); // Add a class for styling // Title displaying card name const nameBox = document.createElement('div'); nameBox.classList.add('card-name-box'); // Styling class for the black box nameBox.innerText = card.name; // Display the card's name if (card.atk > 0) { nameBox.style.backgroundColor = '#ff6347'; } else if (card.def > 0) { nameBox.style.backgroundColor = '#4682b4'; } else if (card.heal > 0) { nameBox.style.backgroundColor = '#32cd32'; } else { nameBox.style.backgroundColor = '#808080'; } li.appendChild(nameBox); // Append the name box to the list item // Card details (excluding name) const details = document.createElement('div'); details.classList.add('card-details'); // Styling class for card details for (let key in card) { if (card.hasOwnProperty(key) && card[key] !== 0 && typeof card[key] !== 'string') { details.innerHTML += `${key}: ${card[key]}<br>`; } } li.appendChild(details); // Append the details to the list item // Set cursor style based on whether the card is clickable if (isClickable) { li.style.cursor = 'pointer'; // Make player cards clickable li.addEventListener('click', function() { playCard(card, li); }); } else { li.style.cursor = 'default'; // Make enemy cards not clickable li.classList.add('small-cards'); // Make enemy cards small } handList.appendChild(li); // Append the list item to the hand-list } //================================Function to play a card function playCard(card, cardElement, clickHandler) { // Remove card from player's hand if(moves < v.playerDeckStats.will){ moves++; v.hand = v.hand.filter(c => c !== card); // Add card to table v.table.push(card); // Move card element to the played cards list const playedList = document.getElementById('list-playedcards'); playedList.appendChild(cardElement); // Disable click on the played card cardElement.removeEventListener('click', clickHandler); cardElement.style.cursor = 'default'; // Add the played card to the discard pile v.discardPile.push(card); // For player const cardIndex = v.deck.indexOf(card); if (cardIndex > -1) { v.deck.splice(cardIndex, 1); // Remove the card from the deck } } } //=====================Shuffle Decks====================== function shuffle(array) { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } } </script> </nobr>
<<set $playerDeckStats to {end:100, will:3, maxcards:5, def: 0, will: 3, reg: 0, thorn: 0, shield: 0, dot: 0}>> <<set $enemyDeckStats to {end:100, will:3, maxcards:5, def: 0, will: 3, reg: 0, thorn: 0, shield: 0, dot: 0}>> <<set $deck to [ {name: "Resilience", atk: 0, def: 4, will: 0, reg: 0, thorn: 0, heal: 0, shield: 0, dot: 0}, {name: "Resilience", atk: 0, def: 4, will: 0, reg: 0, thorn: 0, heal: 0, shield: 0, dot: 0}, {name: "Resilience", atk: 0, def: 4, will: 0, reg: 0, thorn: 0, heal: 0, shield: 0, dot: 0}, {name: "Voice", atk: 4, def: 0, will: 0, reg: 0, thorn: 0, heal: 0, shield: 0, dot: 0}, {name: "Voice", atk: 4, def: 0, will: 0, reg: 0, thorn: 0, heal: 0, shield: 0, dot: 0}, {name: "Voice", atk: 4, def: 0, will: 0, reg: 0, thorn: 0, heal: 0, shield: 0, dot: 0}, {name: "Breathing", atk: 0, def: 0, will: 0, reg: 0, thorn: 0, heal: 3, shield: 0, dot: 0}, {name: "Breathing", atk: 0, def: 0, will: 0, reg: 0, thorn: 0, heal: 3, shield: 0, dot: 0} ]>> <<set $enemydeck = [ {name: "Resilience", atk: 0, def: 4, will: 0, reg: 0, thorn: 0, heal: 0, shield: 0, dot: 0}, {name: "Resilience", atk: 0, def: 4, will: 0, reg: 0, thorn: 0, heal: 0, shield: 0, dot: 0}, {name: "Resilience", atk: 0, def: 4, will: 0, reg: 0, thorn: 0, heal: 0, shield: 0, dot: 0}, {name: "Voice", atk: 4, def: 0, will: 0, reg: 0, thorn: 0, heal: 0, shield: 0, dot: 0}, {name: "Voice", atk: 4, def: 0, will: 0, reg: 0, thorn: 0, heal: 0, shield: 0, dot: 0}, {name: "Voice", atk: 4, def: 0, will: 0, reg: 0, thorn: 0, heal: 0, shield: 0, dot: 0}, {name: "Breathing", atk: 0, def: 0, will: 0, reg: 0, thorn: 0, heal: 3, shield: 0, dot: 0}, {name: "Breathing", atk: 0, def: 0, will: 0, reg: 0, thorn: 0, heal: 3, shield: 0, dot: 0} ]>>
<<set _btnPressed to false>> <<if $npcConversations.some(npc => npc.name === $npcConversationWith[0].name)>> <<if $npcConversationWith[0].personality == "friendly">> <<set _randomIndex to $npcConversations.find(npc => npc.name === $npcConversationWith[0].name).friendlyHello.random()>> _randomIndex <<elseif $npcConversationWith[0].personality == "serious">> <<set _randomIndex to $npcConversations.find(npc => npc.name === $npcConversationWith[0].name).seriousHello.random()>> _randomIndex <<elseif $npcConversationWith[0].personality == "shy">> <<set _randomIndex to $npcConversations.find(npc => npc.name === $npcConversationWith[0].name).shyHello.random()>> _randomIndex <<elseif $npcConversationWith[0].personality == "jerk">> <<set _randomIndex to $npcConversations.find(npc => npc.name === $npcConversationWith[0].name).jerkHello.random()>> _randomIndex <<run imgPop('conversation images/disrespect.png', $npcConversationWith[0].name + " respect -")>> <<for _npcM range $npcsMalesArray>> <<if _npcM.name == $npcConversationWith[0].name>> <<set _npcM.respectToPlayer-->> <<run $datenow.setMinutes($datenow.getMinutes() + 20)>> <</if>> <</for>> <</if>> <<else>> <<if $npcConversationWith[0].personality == "friendly">> <<set _randomIndex to $npcConversations.find(npc => npc.name === "Default").friendlyHello.random()>> _randomIndex <<elseif $npcConversationWith[0].personality == "serious">> <<set _randomIndex to $npcConversations.find(npc => npc.name === "Default").seriousHello.random()>> _randomIndex <<elseif $npcConversationWith[0].personality == "shy">> <<set _randomIndex to $npcConversations.find(npc => npc.name === "Default").shyHello.random()>> _randomIndex <<elseif $npcConversationWith[0].personality == "jerk">> <<set _randomIndex to $npcConversations.find(npc => npc.name === "Default").jerkHello.random()>> _randomIndex <<run imgPop('conversation images/disrespect.png', $npcConversationWith[0].name + " respect -")>> <<for _npcM range $npcsMalesArray>> <<if _npcM.name == $npcConversationWith[0].name>> <<set _npcM.respectToPlayer-->> <<run $datenow.setMinutes($datenow.getMinutes() + 20)>> <</if>> <</for>> <</if>> <</if>> @.@.@ <<button "Casual Talk">> <<if !_btnPressed>> <<run imgPop('conversation images/talk.png', 'You talk with ' + $npcConversationWith[0].name)>> <<run $datenow.setMinutes($datenow.getMinutes() + 30)>> <<set _btnPressed to true>> <<timed 2.5s>> <<if $npcConversationWith[0].personality == "jerk">> <<run imgPop('conversation images/disrespect.png', $npcConversationWith[0].name + " respect -")>> <<else>> <<run imgPop('conversation images/handshake.png', $npcConversationWith[0].name + " respect +")>> <</if>> <<for _npcM range $npcsMalesArray>> <<if _npcM.name == $npcConversationWith[0].name>> <<set _npcM.respectToPlayer++>> <</if>> <</for>> <<set $npcConversationWith to []>> <<goto $return>> <</timed>> <</if>> <</button>><br> <span id="sexOptions"><<button "Sexual options +">> <<replace "#sexOptions" t8n>><<button "Talk about Elena's...">><<replace "#sexOptions" t8n>>Talk about Elena's...<br> <<button "...Mouth">><<if !_btnPressed>><</if>><</button>><br> <<button "...Pussy">><<if !_btnPressed>><</if>><</button>><br> <<button "...Ass">><<if !_btnPressed>><</if>><</button>> <</replace>><</button>><</replace>> <</button>></span><br> <<button "Nothing" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
I'm $npcConversationWith[0].name. I'm usually the one who keeps things organized around here. Nice to meet you. @.@.@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Hi Jimmy, I'm $npcConversationWith[0].name. Welcome to the community house, it's great to have you and Elena here. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Hi Jimmy, welcome to the community house. I'm $npcConversationWith[0].name, it's nice to meet you. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
So, how are you finding life in the community so far? I'm $npcConversationWith[0].name by the way. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Hey there, I'm $npcConversationWith[0].name. Nice to meet another new face around here. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
$npcConversationWith[0].name, now fuck off fag. @@@ <<button "(Scary...)" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Hey Jimmy, I'm $npcConversationWith[0].name. It's good to have you and Elena here with us. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
You must be Jimmy. I'm $npcConversationWith[0].name. Can't wait to get to know you and the girl. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Hi Jimmy, I'm $npcConversationWith[0].name. It's great to finally meet you and welcome you to our little community. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Jimmy, I'm resident chef, $npcConversationWith[0].name. I make the best omelettes in the morning. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
You must be Jimmy. I'm $npcConversationWith[0].name, I heard you and Elena were joining us at the community house. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Hi Jimmy, I'm $npcConversationWith[0].name. Let me know if you need help settling in or have any questions about how things work around here. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
I'm $npcConversationWith[0].name. I'm part of the welcoming committee. It's a pleasure to meet you. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Welcome to the community house, Jimmy. I'm $npcConversationWith[0].name, the house handyman. Let me know if you need any help settling in. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Welcome to the community, Jimmy. I'm $npcConversationWith[0].name. I think our interests might align, I'd love to chat more later. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
I'm $npcConversationWith[0].name, lovely bitch you brought to us, we will make sure to treat her well. Now, be gone. @@@ <<button "(What a weird man...)" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Hi Jimmy, I'm $npcConversationWith[0].name. I've been living here for a year now, so feel free to ask me anything about the community. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Welcome to the community, Jimmy. I'm $npcConversationWith[0].name. Let's make sure you and Elena feel at home here. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
I'm $npcConversationWith[0].name, nice to meet you Jimmy. You and Elena will fit right in here. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Hi Jimmy, I'm $npcConversationWith[0].name. I live in the room next to yours. If you need anything, don't hesitate to ask. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Hey there, new guy. I'm $npcConversationWith[0].name. Looks like we're the two youngest guys here at the moment. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Welcome, I'm $npcConversationWith[0].name. If you need any recommendations for things to do or places to eat around here, I'm your guy. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Welcome, I'm $npcConversationWith[0].name. I'm sure you and Elena will make a great addition to our community. Especially Elena... @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Hey little boy, I'm $npcConversationWith[0].name. I met Elena earlier I will make sure she gets a special treatment from me, don't worry, you won't be getting the same, don't get jealous little boy. Now, make sure to not talk to me unless I talk to you, now leave. @@@ <<button "Leave..." $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Welcome to the community, Jimmy. I'm $npcConversationWith[0].name. I bet Elena is loving being the only woman around here. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Welcome to the community, Jimmy. I'm $npcConversationWith[0].name. It's always nice to have new faces here. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
I'm $npcConversationWith[0].name. I'm usually the one who keeps things organized around here. Nice to meet you. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
What do you want white boy? $npcConversationWith[0].name is the name. Now fuck off. @@@ <<button "Leave" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Welcome to the community house, Jimmy. I'm $npcConversationWith[0].name, one of the founding members of this place. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
Nice to meet you Jimmy, I'm $npcConversationWith[0].name. I hope you and Elena are settling in well. @@@ <<button "To thank" $return>>\ <<set $npcConversationWith to []>> <</button>><br>
I don't CARE who you are, DO NOT talk to me. @@@ <<button "Okay..." $return>>\ <<set $npcConversationWith to []>> <</button>><br>
<<set $npcConversations to [ {name: "Default", friendlyHello: ["We're all here for each other, Jimmy.","You and Elena make a great team, Jimmy. Keep taking care of each other.","Elena is a ray of sunshine in this house full of guys.","Jimmy and Elena. We're all happy to have you both here.","Glad you and Elena are part of our community. We're like a big family here.","Hey Jimmy, have you tried that new café Elena was talking about? We should go together sometime.","You're a lucky guy, Jimmy. Elena is one of a kind.","Elena's got a great sense of humor, doesn't she Jimmy?","Elena's always looking out for everyone in the house. She's a gem. ","Any plans for the weekend, Jimmy? Think Elena would want to join our group outing? ","Hey, Jimmy and Elena, the dynamic duo of our community.","Is there something specific you wanted to talk about, Jimmy? ","Need any advice on how to keep your girl happy, Jimmy? Happy wife, happy life. ","Jimmy, you're lucky to have Elena as your roommate. She's a great friend to have. ","Don't worry Jimmy, we all know Elena has eyes only for you. ","Elena's a cool chick, huh? Glad to have her around. ","We're glad to have Elena in our community, she brings a lot of positivity. ","Hey man, don't sweat it. We're all like family here.","Hey Jimmy, let's grab a beer and catch up. ","You and Elena seem like a great match. ","Don't worry Jimmy, Elena is just one of the guys. No need to be jealous. ","Love living with Elena, she's always got a smile on her face. ","Elena's a catch, isn't she? But don't worry, we all respect each other here. ","Good to run into you, Jimmy. ","What's on your mind, Jimmy? ","Isn't it a beautiful day today? ","What can I do for you today, Jimmy? ","You know Elena, she's a great addition to our community. ","Nice to see you, Jimmy. ","Hi Jimmy, how's it going? ","How's it going, Jimmy? ","Hey man, what's up? ","Hey Jimmy, need something? "], seriousHello: ["I know it can be tough mentally and emotionally living with so many other people, but remember, we're all in this together. We'll figure it out.","Hey Jimmy, how are you and Elena doing? I know it can be tough living with your significant other in such close quarters. Maybe we can all go out for a group activity and give you some alone time.","I've noticed you tend to keep to yourself a lot, Jimmy. Consider joining in on some of the group activities and building stronger bonds with the others.","I understand that being the only female in the house can be intimidating, but Elena is a great addition to our community. Let's all respect and value her presence.","I understand it can be hard seeing Elena interact with other guys, but please remember that she chose to live here with you. Trust in your relationship and don't let any insecurities affect it.","If you ever need someone to talk to, I'm here. Living in this community, we all need to support and look out for each other.","Hey Jimmy, have you tried talking to some of the other guys about your feelings? Sometimes it helps to get things off your chest.","Hey Jimmy, as someone who has been living here for a while, let me assure you that there's nothing to be jealous about. We all respect boundaries and value each other's friendships.","Hey Jimmy, I noticed you seem to have a lot of tension lately. If there's anything you need to talk about, just let me know.","I remember when I first moved in here, it took some time to adjust to living with so many people. But eventually, I found my place and formed great friendships. It'll get easier for you, just give it some time.","Just a heads up, we have a communal dinner tonight. Hope to see you there!","I know it might be tough at times living with 30 other guys, but try not to let any jealousy or insecurity get in the way. We're all just trying to live together peacefully.","Living in a community house like this can be a challenging but rewarding experience. How are you finding it so far, Jimmy?","Hey man, just a friendly reminder to keep common areas clean for everyone's benefit. Thanks.","Hey Jimmy, do you have any plans to explore the surrounding area with Elena? I hear there's a beautiful lake nearby.","I really appreciate living with such a diverse group of people, but sometimes we all need a little space and privacy. Have you found a way to make that work for you?","Hey Jimmy, have you tried joining in on some of the group activities and bonding with the other residents? It might help with any jealousy or tension you might be feeling.","You seem a bit uncomfortable, is everything okay? ","I don't think I've seen you around much, Jimmy. How are you adjusting to living here, with so many people? ","Hey Jimmy, I know it can be tough living with so many other guys, but we all have to respect each other's boundaries. Let's try to make this a harmonious living space.","I love living in this community house, but it can get pretty chaotic with so many people. How do you deal with it?","I don't mean to be rude, but I'm not really in the mood for small talk right now. Maybe we can chat later? ","I'm happy to chat, but I do have some work I need to focus on. Can we talk later?","Is there something you wanted to talk about specifically? ","Is there something you wanted to talk about, Jimmy? ","Hey Jimmy, I hope everything is okay. Is there something you wanted to talk about? ","I noticed you seem a little tense, everything okay? ","You seem a bit tense, everything alright? ","Sorry, I was in the middle of something important.","Do you have a specific reason for starting this conversation with me? ","Do you have a specific reason for starting this conversation with me? ","Can I help you with something? ","Haven't seen you around here much, what's up? ","How's it going, man? ","Hey Jimmy, need something? "], jerkHello: ["Do you ever shut up, Jimmy?","Maybe if you spent less time with Elena, you'd actually make some friends here.","Do the rest of us a favor and stay out of our conversations.","Why can't you just leave us alone, Jimmy? You're embarrassing yourself.","Leave me alone, Jimmy. Can't you see I'm trying to enjoy my night?","Sorry, Jimmy, I don't speak to third wheels.","You must be desperate for attention if you have to talk to me.","Why don't you go find someone else to talk to for a change?","Oh look, Jimmy's trying to be nice. How cute.","Not sure why you're even here, Jimmy. You're clearly not one of us.","I bet Elena is just using you for a place to stay in this house.","Do yourself a favor and stop trying so hard, it's pathetic.","Why don't you join a book club or something instead of bothering us?","Why don't you go find another girlfriend, one that's more on your level.","Not interested in whatever you have to say, Jimmy. You're just trying to score points with someone else.","I can smell your insecurity from a mile away, Jimmy.","Oh great, now the lovebirds have to make everything about themselves.","Why don't you go back to your room and leave the rest of us alone?","Get a life, Jimmy. Elena doesn't need you following her around like a lovesick puppy.","Why don't you go back to your room and let us men talk?","What do you want now, Jimmy? Trying to impress your pretty girlfriend?","Wow, Elena, you must really enjoy showing off in front of all the guys here.","Don't bother me with your small talk.","What's the deal with you and Elena? Can't you find anyone else to talk to?","Why are you constantly hovering around Elena? Don't you have anything better to do?","Oh great, now I have to watch what I say around you because your girlfriend is here."], shyHello: ["Oh, um, hi Jimmy. Sorry, I wasn't expecting anyone to talk to me.","Hey, Jimmy. It means a lot that you came over to talk to me.","I appreciate you talking to me, Jimmy. I'm not used to being included in conversations.","Hey Jimmy, I'm not used to people initiating conversations with me. It's a pleasant surprise.","Wow, thanks for talking to me, Jimmy. I usually feel invisible in the house.","Hi, Jimmy. I'm not used to talking to someone like you.","Thanks for saying hello, Jimmy. I'm usually awkward at starting conversations.","Oh, hi Jimmy. Sorry, I didn't mean to seem uninterested. I just get nervous around people I don't know.","Hi there, Jimmy. Nice to meet you, I'm not one for small talk.","I'm sorry if I seem shy, Jimmy. I just have a hard time opening up to people.","Hey, Jimmy. I appreciate you making an effort to get to know me.","Thanks for talking to me, Jimmy. I usually keep to myself in the house.","Thanks for talking to me, Jimmy. I don't really know how to start conversations.","Hi Jimmy, I appreciate you starting a conversation with me. I tend to be shy around new people.","Oh, um...hi Jimmy. Sorry, I'm not very good at talking to people.","Um, hi Jimmy. I'm glad you started talking to me."]}, {name: "Test", friendlyHello:["a","b"], seriousHello:["c","d"], jerkHello:["e","f"], shyHello:["g","h"]} ]>>
<<setBG 1 setup.ImagePath ''>> <<set $modFiles to []>> <<set $loadedScripts to []>> <<set $doneLoadingThisScript to false>> <<run loadModScripts([setup.ModsFolder + "modsreferences.js"])>> <span class="uiR-container-info" style="z-index: 999990;"> <div id="timer-display"> <span id="timer">Loading...</span> </div> </span> <<script>> var timer = 0; var index = 0; var referenceLoaded = false; function loadModsReferences() { if (v.modFiles && v.modFiles.length > 0) { let uniqueArray = [...new Set(v.modFiles)]; // Destroys repeated values v.modFiles = uniqueArray; // Update the mod files array document.getElementById('timer').innerHTML = "<h3>Loading mods...</h3>" + v.modFiles; referenceLoaded = true; v.doneLoadingThisScript = false; v.loadedScript = []; clearInterval(Interval); } timer++; } function loadMods() { if (referenceLoaded) { if (index < v.modFiles.length) { if (!v.doneLoadingThisScript) { v.loadedScripts.push(v.modFiles[index]); loadModScripts([setup.ModsFolder + v.modFiles[index] + ".js"]); // alert(setup.ModsFolder + v.modFiles[index] + ".js - " + v.loadedScripts.length + " of " + v.modFiles.length); let uniqueArray2 = [...new Set(v.loadedScripts)]; v.loadedScripts = uniqueArray2; document.getElementById('timer').innerHTML = "<h3>Loading mods...</h3>" + v.loadedScripts.length + " Scripts Loaded of " + v.modFiles.length; if (v.loadedScripts.length == v.modFiles.length) { document.getElementById('timer').innerHTML = "<h3>Mods Loaded</h3>" + v.loadedScripts.length + " Scripts Loaded of " + v.modFiles.length + "<br><font color=\"lightgreen\">Loaded successfully</font>"; } v.doneLoadingThisScript = false; index++; } if (v.loadedScripts.length == v.modFiles.length) { if (v.firstTimeModLoad == 0) { if (v.macroToLoad != "") { new Wikifier(null, v.macroToLoad); } v.firstTimeModLoad = 1; } clearInterval(Interval2); } else {} } timer++; } } var delay = 0; function firstTimeLoadingDelay() { if (v.firstTimeModLoad == 1) { if (delay == 1) { v.firstTimeModLoad = 2; goto(v.return); } delay++; } } var Interval3 = setInterval(firstTimeLoadingDelay, 1001); var Interval2 = setInterval(loadMods, 100); var Interval = setInterval(loadModsReferences, 100); <</script>> <div id="ok-button-placeholder"></div> <<timed 2s>> <<if $firstTimeModLoad == 1>> <<append "#ok-button-placeholder">> <<button "OK" $return>> <<set $npcConversationWith to []>> <</button>> <</append>> <</if>> <</timed>>
<<script>> document.body.style.overflow = "auto"; <</script>> <h1>BB Females Clothings</h1> <style> .shop-grid { display: grid; grid-template-columns: repeat(3, 1fr); /* Fixed 2 columns */ gap: 10px; padding: 10px; width: 100%; /* Ensure the grid takes full width of its container */ box-sizing: border-box; /* Include padding in width calculation */ } .shop-item { border: 1px solid #ccc; padding: 10px; text-align: center; background-color: black; transition: transform 0.3s, box-shadow 0.3s; color: white; width: 100%; /* Ensure item takes full width of grid column */ box-sizing: border-box; /* Include padding and border in width */ } .shop-item:hover { transform: scale(1.05); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); } .shop-item img { max-width: 20%; height: auto; } .shop-item button { margin-top: 10px; padding: 5px 10px; background-color: #007bff; color: white; border: none; cursor: pointer; } .shop-item button:hover { background-color: #0056b3; } .shop-wrapper { width: 100%; overflow: hidden; /* Ensures no horizontal scroll */ } </style> <div class="shop-grid"> <!-- Items will be dynamically added here --> </div> <script> const clothesFemale = v.clothesFemale; function buyItem(itemName, itemPrice) { alert("You bought " + itemName + " for $" + itemPrice); } const shopGrid = document.querySelector('.shop-grid'); clothesFemale.forEach(item => { const shopItem = document.createElement('div'); shopItem.classList.add('shop-item'); var imgPath = ""; if (document.location.href.toLowerCase().includes("/temp/") || document.location.href.toLowerCase().includes("/private/") || hasOwnProperty.call(window, "storyFormat")) { imgPath = 'C:/Users/LkS7vXQ21z/OneDrive/Documentos/Twine/Stories/data/images/characters/wife/fullbody/' + item.name + '.png'; } else { imgPath = 'data/images/characters/wife/fullbody/' + item.name + '.png'; } shopItem.innerHTML = ` <img src="${imgPath}" alt="${item.name}"> <h3>${item.name}</h3> <p>${item.style} | Cute: ${item.cute} | Sexy: ${item.sexy} | Exposure: ${item.exposure} | Quality: ${item.quality} | Color: ${item.color} | Price: $${item.shopPrice}</p> <button onclick="buyItem('${item.name}', ${item.shopPrice})">Buy</button> `; shopGrid.appendChild(shopItem); }); </script>
<<if $wifeLewdnessAdvance and $stringDayNow != $lastClothesChangeDay>> <<set $wifeLewdnessAdvance = false>> <<set $wifeLewdnessPending = true>> <<set $lastClothesChangeDay = $stringDayNow>> <</if>> <<if $wifeLewdnessPending>> <<set $wifeLewdness++>> <<set $wifeLewdnessPending = false>> <<switch $wifeLewdness>> <<case 0>> <<set $chestSlot = "Yellow T-Shirt">> <<case 1>> <<set $chestSlot = "Yellow T-Shirt">> <<case 2>> <<set $legSlot = "White Leggings">> <<set $acessorySlot = "">> <<case 3>> <<set $legSlot = "Blue Skirt C">> <<set $acessorySlot = "">> <<case 4>> <<set $chestSlot = "White Dress B">> <<set $legSlot = "">> <<set $feetSlot = "Black Sneakers">> <<case 5>> <<set $chestSlot = "White Leather Croptop B">> <<set $legSlot = "Jeans Shorts">> <<set $feetSlot = "Black Sneakers and White Socks">> <<case 6>> <<set $chestSlot = "Fishnet CropTop">> <<set $legSlot = "Blue Skirt A">> <<set $feetSlot = "Black Sneakers and Knees White Socks">> <<case 7>> <<set $neckSlot = "Choker">> <<set $chestSlot = "White Leather Croptop C">> <<set $legSlot = "White Skirt D">> <<set $feetSlot = "White Sneakers and Over The Knees Fishnet Socks">> <<case 8>> <<set $chestSlot = "White Plain Croptop">> <<set $legSlot = "White Micro Skirt">> <<set $feetSlot = "White Sneakers and Over The Knees Fishnet Socks">> <<set $acessorySlot = "">> <<case 9>> <<set $chestSlot = "LightBlue Dress">> <<set $hipSlot = "">> <<set $legSlot = "">> <<set $feetSlot = "Black Heels">> <<case 10>> <<set $chestSlot = "LightGreen Dress">> <<set $feetSlot = "Black Stilettos and Over The Knees Fishnet Socks">> <</switch>> <</if>>
/*==================== System Declaring ===================*/ <<set $soundEnabled to false>> /*================== Miscellaneous Declaring ===================*/ <<set $npcConversationWith to []>> <<set $startingScenario to "">> <<set $currentPassageConversationIs to "">> <<set $macroToLoad to "">><<set $displayedMenuOnRightBarTxt to "">> <<set $displayDialogue to "">> <<set $workTimer to 100>> <<set $timesWorked to 0>> <<set $timeOfGameStart = new Date($datenow)>> <<set $masterVolume to 100>> /*==============Event Starters and Progress====================*/ <<set $TVShow to -1>><<set $doNotRepeatControl to $TVShow>> <<set $wifeWork to -2>> /*================== Player Variables Declaring ===================*/ /*================== Wife Variables Declaring ===================*/ <<set $wifeLewdness to 0>> <<set $wifeLewdnessAdvance = false>> <<set $wifeLewdnessPending = false>> <<set $lastClothesChangeDay = $stringDayNow>> <<set $wifeStatsShow = false>> <<set $wifeCurrentCumVagina to 0>><<set $wifeCurrentCumVaginaTimer to $datenow>> <<set $wifeCurrentCumAssHole to 0>><<set $wifeCurrentCumAssHoleTimer to $datenow>> <<set $wifeCurrentCumMouth to 0>><<set $wifeCurrentCumMouthTimer to $datenow>> <<set v.wifeFucking to []>> <<set v.wifeBullsHistory to []>> <<set $wifeFreedom to 0>><<set $husbandControl to 0>> <<set $husbandInsecurity to 0>><<set $publicOpinion to 0>> <<set $wifePrivacy to 0>><<set $husbandAnxiety to 0>> <<set $productionDisapproval to 0>> /*=================== Job Variables Declaring ===================*/ <<set $productivity to 20>> <<set $chastity to 0>> <<set $affection to 50>> <<set $arousal to 0>> <<set $suspicion to 0>> <<set $currectActivity to "work">> /*======================Job variables that can be bought later*/ <<set $productivityAdditive to 0.5>> <<set $arousalAdditive to 1.0>> <<set $suspicionAdditive to 1>>
<style> #platformer-game { position: relative; width: 800px; height: 400px; background-color: #87CEEB; } canvas { display: block; background: #87CEEB; border: 1px solid #000; } </style> <<nobr>> <div id="platformer-game"> <canvas id="gameCanvas" width="800" height="400"></canvas> </div> <</nobr>> <<script>> $(document).ready(function() { const canvas = document.getElementById("gameCanvas"); const ctx = canvas.getContext("2d"); let player = { x: 50, y: canvas.height - 50, width: 30, height: 30, speed: 5, dx: 0, dy: 0, gravity: 0.5, jump: 10, grounded: false }; let keys = { right: false, left: false, up: false }; function drawPlayer() { ctx.fillStyle = "#ff0000"; ctx.fillRect(player.x, player.y, player.width, player.height); } function updatePlayer() { if (keys.right) { player.dx = player.speed; } else if (keys.left) { player.dx = -player.speed; } else { player.dx = 0; } if (keys.up && player.grounded) { player.dy = -player.jump; player.grounded = false; } player.dy += player.gravity; player.x += player.dx; player.y += player.dy; if (player.y + player.height > canvas.height) { player.y = canvas.height - player.height; player.dy = 0; player.grounded = true; } } function clearCanvas() { ctx.clearRect(0, 0, canvas.width, canvas.height); } function gameLoop() { clearCanvas(); drawPlayer(); updatePlayer(); requestAnimationFrame(gameLoop); } function keyDown(e) { if (e.key === "ArrowRight" || e.key === "d") { keys.right = true; } else if (e.key === "ArrowLeft" || e.key === "a") { keys.left = true; } else if (e.key === "ArrowUp" || e.key === "w") { keys.up = true; } } function keyUp(e) { if (e.key === "ArrowRight" || e.key === "d") { keys.right = false; } else if (e.key === "ArrowLeft" || e.key === "a") { keys.left = false; } else if (e.key === "ArrowUp" || e.key === "w") { keys.up = false; } } document.addEventListener("keydown", keyDown); document.addEventListener("keyup", keyUp); gameLoop(); }); <</script>>
<<button "Test Animation - d - Paul">><<run createShakingImage("d", "Paul");>><</button>><<button "Idle Animation - d">><<run idleShakingImage("d");>><</button>> <<button "Test Animation - m - Paul">><<run createShakingImage("m", "Paul");>><</button>><<button "Idle Animation - m">><<run idleShakingImage("m");>><</button>> <<button "Test Animation - bj - Paul">><<run createShakingImage("bj", "Paul");>><</button>><<button "Idle Animation - bj">><<run idleShakingImage("bj");>><</button>> <<button "Stop Animation">><<run stopShakingImage();>><</button>>
<<set _btnPressed to false>> <<if $npcConversations.some(npc => npc.name === $npcConversationWith[0].name)>> <<set _setVariables to $npcConversations.find(npc => npc.name === $npcConversationWith[0].name).setVariablesCode>> _setVariables /*Loads code*/ $displayDialogue <<else>>/*Default conversation if not found custom conversation*/ <<set _setVariables to ($npcConversations.find(npc => npc.name === ("DefaultNPC")) || {}).setVariablesCode>> _setVariables /*Loads code*/ $displayDialogue <</if>> @.@.@ <<if $npcConversations.some(npc => npc.name === $npcConversationWith[0].name)>> <<set $interfaceCodeToDisplay to $npcConversations.find(npc => npc.name === $npcConversationWith[0].name).belowTxtCode>> $interfaceCodeToDisplay <<else>>/*Default conversation if not found custom conversation*/ <<set $interfaceCodeToDisplay to ($npcConversations.find(npc => npc.name === "DefaultNPC") || {}).belowTxtCode>> $interfaceCodeToDisplay <</if>>
This is a @test message! Here's a @friendlyHello greeting.
<<set _video to setup.VideoPath + 'wife/black_vaginal2.mp4'>> <<run video(_video)>> <<run videolocation(10, 20)>> <<run playVideo()>> <<button "Skip Passage">> <<script>> v.timerExpired = false; deleteVideo(); goto("House"); <</script>> <</button>> <replace "#buttonArea"> <<if $showFirstButton>> <button id="b1" type="button">Button 1</button> <<else>> <button id="b2" type="button">Button 2</button> <</if>> </replace> <<button "Toggle Buttons">> <<set $showFirstButton to !$showFirstButton>> <<replace "#buttonArea">><</replace>> <</button>>
<<script>> const clue = deskClues[Math.floor(Math.random() * deskClues.length)]; spawnDeskClue(clue); <</script>> <<pressContinue>> <<comic "scene1" "Test Messages Macro">>
/*================= Defines messages 'JSONs' =================*/ /* ===================================================*/ <<script>> setup.messages = { //=======================Control ones //======================================= "greeting": { text: "What would you like to do?", choices: [ { label: "Say Hello", action: "sayHello" }, { label: "Say Goodbye", action: "sayGoodbye" } ] }, //======================================= "lonely": { text: "Just a regular message with no buttons." }, //=======================Custom ones goes below //======================================= "lookingForEmployee0": { text: "<h4>Group Chat - Boss:</h4> <br>Again, we still need an employee, if anyone has a recommendation please send me a CV from that person.", choices: [ { label: "Create a CV for wife", action: "createCV"}, { label: "Close notification", action: "closeDefault" } ] }, //======================================= "lookingForEmployee1": { text: "<h4>Group Chat - Russel:</h4> <br>I uploaded the new project files on the network", choices: [ { label: "Close notification", action: "closeDefault" } ] }, //======================================= "lookingForEmployee2": { text: "<h4>Group Chat - Jonathan:</h4> <br> Someone have a .Doc file from last week?", choices: [ { label: "Close notification", action: "closeDefault" } ] }, //======================================= "lookingForEmployee3": { text: "<h4>Group Chat - Jonathan:</h4> <br> Hey, just a reminder about our need for a new female colleague to balance out our team dynamics. Any progress on that front?", choices: [ { label: "Close notification", action: "closeDefault" } ] }, //======================================= "lookingForEmployee4": { text: "<h4>Group Chat - Jonathan:</h4> <br> Did anyone follow up with the candidate we interviewed last month for the open female position? She don't look so bad.", choices: [ { label: "Close notification", action: "closeDefault" } ] }, //======================================= "day1random1": { text: "<h4>Group Chat - Jonathan:</h4> <br>Holy shit, have y'all seen the new girl?", choices: [ { label: "Close notification", action: "closeDefault" } ] }, //======================================= "day1random2": { text: "<h4>Group Chat - Frank:</h4> <br>The blondie? Yea dude, she is such a hottie...", choices: [ { label: "Close notification", action: "closeDefault" } ] }, //======================================= "day1random3": { text: "<h4>Group Chat - Leroy:</h4> <br>Did you see how tiny she is? Five-foot-nothing and built like that? I bet she could fit between my legs here in this desk and no one would notice.", choices: [ { label: "Close notification", action: "closeDefault" } ] }, //======================================= "day1random4": { text: "<h4>Group Chat - Russel:</h4> <br>Fucking hell Leroy, can you stop being horny for a second?", choices: [ { label: "Close notification", action: "closeDefault" } ] }, //======================================= "day1random5": { text: "<h4>Group Chat - Jonathan:</h4> <br>Nah bro I agree with Leroy on that, she does look like a good cocksucker lol", choices: [ { label: "Close notification", action: "closeDefault" } ] }, //======================================= "day1random6": { text: "<h4>Group Chat - Frank:</h4> <br>She's way too hot to be smart. Five bucks says she got hired for the view she provides. Not that I'm complaining.", choices: [ { label: "Close notification", action: "closeDefault" } ] }, //======================================= "day1random7": { text: "<h4>Group Chat - Jim:</h4> <br>She looks like a doll. I wonder if she's as fragile as she looks or if she can handle some... intensity in the conference room.", choices: [ { label: "Close notification", action: "closeDefault" } ] }, //======================================= "day1random8": { text: "<h4>Group Chat - Jonathan:</h4> <br>Guys, check your emails. I sent everyone her LinkeedIn profile. Tell me that profile pic isn't why she got hired.", choices: [ { label: "Close notification", action: "closeDefault" } ] }, //======================================= "day1random9": { text: "<h4>Group Chat - Leroy:</h4> <br>I'm timing how long before she gets 'private meetings' in the office, Jonathan knows what I'm talking about.", choices: [ { label: "Close notification", action: "closeDefault" } ] }, //======================================= "day1random10": { text: "<h4>Group Chat - Jonathan:</h4> <br>Bet she will be ready to play with in a couple of days hehe", choices: [ { label: "Close notification", action: "closeDefault" } ] } }; /* ============== Defines the functions to be called ===============*/ /* ===================================================*/ //=======================Control ones setup.sayHello = function () { Dialog.setup("Response"); //Title of the window Dialog.wiki("Hello there!"); //Message of the window Dialog.open(); setup.closeDefault(); }; setup.sayGoodbye = function () { Dialog.setup("Response"); Dialog.wiki("Goodbye!"); Dialog.open(); setup.closeDefault(); }; setup.closeDefault = function () { v.currectActivity = ""; setup.closeConsole(); document.getElementById("workButtonContainer").classList.remove("hidden"); document.getElementById("closeButtonContainer").classList.add("hidden"); }; //=======================Custom ones goes below setup.createCV = function () { Dialog.setup("Create a CV"); //Title of the window Dialog.wiki("Name: Lolla"); //Message of the window Dialog.open(); setup.closeDefault(); }; setup.wifeLewdnessAdvance = function () { //increase a lewdness point to wife v.wifeLewdnessAdvance = true; setup.closeDefault(); }; <</script>>
<<set _toggle to false>> <<script>> (function () { if (window._delayedMessagesShown) return; // Prevent multiple runs window._delayedMessagesShown = true; const messages = ["day1random1", "day1random2", "day1random3", "day1random4", "day1random5", "day1random6", "day1random7", "day1random8", "day1random9", "day1random10"]; let totalDelay = 0; messages.forEach((key) => { // Random delay between 5s (5000ms) and 10s (10000ms) const delay = Math.floor(Math.random() * 10000) + 10000; totalDelay += delay; setTimeout(() => { if (typeof createMessage === "function") { createMessage(key); } }, totalDelay); }); })(); <</script>> <span id="workButtonContainer"> <span class="custom-button" id="workButton" style="top: 50%;left: 50%;"> <<button "Work">> <<set $currectActivity to "work">> <<run setup.openConsole()>> <<script>> document.getElementById("workButtonContainer").classList.add("hidden"); document.getElementById("closeButtonContainer").classList.remove("hidden"); <</script>> <</button>> </span> </span> <span id="closeButtonContainer" class="hidden"> {{!-- "Close" button starts hidden --}} <span class="custom-button" id="close" style="top: 65%;left: 45%;"> <<button "Close">> <<set $currectActivity to "arousal">> <<run setup.closeConsole()>> <<script>> document.getElementById("workButtonContainer").classList.remove("hidden"); document.getElementById("closeButtonContainer").classList.add("hidden"); <</script>> <</button>> </span> </span> <<nobr>> /*=========================================*/ <<setBG 11 setup.ImagePath 'locations/workplace/desk.png'>> <<setBG 1 setup.ImagePath 'locations/workplace/bgdesk.png'>> <<if $timesWorked >= 1>><<setBG 10 setup.ImagePath 'locations/workplace/deskwife.png'>> <<generateNPCWife 35 3 250 400 down>><</if>> /*=========================================*/ <<script>> if (!window.testInterval) { window.testInterval = setInterval(() => { if (v.datenow.getHours() < 19) { performWorkCycle(); window.updateTopTimeBox(); }else { clearInterval(window.autoWorkInterval); window.autoWorkInterval = null; } }, 1000); } <</script>> /*=========================================*/ /*=========================================*/ <div id="statHud"> <div class="stat-container"> <span class="stat-label">Productivity</span> <div class="stat-bar"> <div class="stat-fill fill-productivity" id="bar-productivity"></div> </div> </div> <div class="stat-container"> <span class="stat-label">Chastity</span> <div class="stat-bar"> <div class="stat-fill fill-chastity" id="bar-chastity"></div> </div> </div> <div class="stat-container"> <span class="stat-label">Affection</span> <div class="stat-bar"> <div class="stat-fill fill-affection" id="bar-affection"></div> </div> </div> <div class="stat-container"> <span class="stat-label">Arousal</span> <div class="stat-bar"> <div class="stat-fill fill-arousal" id="bar-arousal"></div> </div> </div> <div class="stat-container"> <span class="stat-label">Suspicion</span> <div class="stat-bar"> <div class="stat-fill fill-suspicion" id="bar-suspicion"></div> </div> </div> </div> <<run setTimeout(updateAllStatBars, 0)>> /*=========================================*/ /*=========================================*/ <<script>> let blurVisible = true; let mouseOverBlur = false; function onBlurClick() { v.currectActivity = ""; $('#blurArea').fadeOut(200); blurVisible = false; setup.closeConsole(); } $('#blurRect').remove(); const $blurRect = $('<div>') .attr('id', 'blurArea') .css({ position: 'absolute', top: '-10%', left: '0%', width: '100%', 'min-height': '70%', 'border-radius': '10%', 'backdrop-filter': 'blur(30px)', '-webkit-backdrop-filter': 'blur(30px)', 'pointer-events': 'auto', 'z-index': 10, }); $('body').append($blurRect); $blurRect.on('click', onBlurClick); $blurRect.on('mouseenter', function () { mouseOverBlur = true; }); $blurRect.on('mouseleave', function () { mouseOverBlur = false; }); $(document).on('mousemove', function () { if (!blurVisible && !mouseOverBlur) { $('#blurArea').fadeIn(200); blurVisible = true; } }); <</script>> <</nobr>>
<<script>> v.whispers = [ { text: "shhh... he's right there.", speaker: "wife" }, { text: "mmh, not now—someone might see.", speaker: "wife" }, { text: "...he won’t notice.", speaker: "male" }, { text: "HR said what about his wife?", speaker: "male" }, { text: "...locked up again today?", speaker: "male" }, { text: "he doesn’t even look anymore.", speaker: "wife" }, { text: "you know he’s watching, right?", speaker: "wife" }, { text: "don’t stop... just keep talking.", speaker: "wife" }, { text: "you’re really wearing that to work?", speaker: "male" }, { text: "was that for me, or for him?", speaker: "male" }, { text: "your perfume’s going to drive him insane.", speaker: "male" }, { text: "you’re being cruel, you know.", speaker: "wife" }, { text: "he hasn’t said a word all morning.", speaker: "wife" }, { text: "I can feel his eyes on me.", speaker: "wife" }, { text: "what if I leave the button open?", speaker: "wife" }, { text: "that skirt’s... short, isn’t it?", speaker: "male" }, { text: "just pretend nothing’s happening.", speaker: "wife" }, { text: "how much longer is he working?", speaker: "male" }, { text: "he never asks questions. strange.", speaker: "male" }, { text: "you’re blushing again.", speaker: "male" }, { text: "you said he'd be fine with it.", speaker: "wife" }, { text: "I like when you tease him like that.", speaker: "male" }, { text: "he’s pretending not to notice.", speaker: "wife" }, { text: "your hands are cold.", speaker: "wife" }, { text: "he doesn’t know what you’re like at work.", speaker: "male" }, { text: "you’re bolder than last week.", speaker: "male" }, { text: "wait until he sees the photos.", speaker: "wife" }, { text: "do you think he’d stop us?", speaker: "wife" }, { text: "stop laughing, he’s typing again.", speaker: "male" }, { text: "just act normal.", speaker: "wife" }, { text: "is that the cage again?", speaker: "male" }, { text: "I bet he’s getting frustrated.", speaker: "wife" }, { text: "he’ll thank you later.", speaker: "wife" }, { text: "I wasn’t expecting that in the office.", speaker: "male" }, { text: "you left the message open on your phone.", speaker: "male" }, { text: "does he know you’re texting me?", speaker: "male" } ]; <</script>>
<<script>> window.deskClues = [ { file: "note.png", x: 88, y: 85, size: 8, dialog: "A second mug. This one’s clearly not yours." } ]; <</script>>
<<script>> setup.comicQueue = []; setup.comicActive = false; v.comicImages = { "scene1": [ { file: "characters/wife/cg/0.png", text: { 1: "Good morning, handsome!@lp @fhb", 2: "Good morning love!@lb @fsusb", 3: "You look amazing in that white camisole.@lb@fhb", 4: "Thank you. I felt sexy wearing this little thing so i had to buy it.@lp@fh", 5: " I made coffee this morning, hope that gets you going.@lp@fb", 6: "And...@player... I need to ask you about something...@lp" } }, { file: "characters/wife/cg/1.png", text: { 1: "...I've been thinking lately... @lp", 2: "That... Uhh... @lp", 3: "Ok... I've been thinking about starting a part-time job to contribute financially and feel more independent.@lp", 4: "I know you don't see me as a burden, but I want to be a part of our financial decisions, too.@lp", 5: "And you know we are not doing so good with only your income.@lp", 6: "@wife, you know you don't need to, I told you already, there is no need to.@lb" } }, { file: "characters/wife/cg/2.png", text: { 1: "I know, but I don't have anything to do here at home after I'm done with the chores.@lp", 2: "I'm getting bored to death here, and I kind of want to do something else... I want to feel like I'm being helpful.@lp", 3: "You are being helpful @wife, you already do all the chores here by yourself.@lb", 4: "I know, but there is not much to do and I do it all so quickly, I feel I can do more...@lp", 5: "Ok, listen, how about you find a hobbie first? Then we can talk more about it, what do you think?@lb", 6: "...Hmm... All right, but I still want to work.@lp" } } ], "scene_pre_therapy_argument": [ { "file": "", "text": { "1": "Did you hear the neighbors last night?@lp@fsusb", "2": "You mean… yeah. Kind of hard *not* to hear them.@lb", "3": "They were so loud I actually woke up for a moment.@lp@fsub", "4": "Same here. I thought someone was being murdered at first.@lb", "5": "Heh… yeah.@lp@fb", "6": "But… also… they sounded like they were having fun.@lp@fsusb" } }, { "file": "", "text": { "1": "Fun we don’t really have anymore.@lp@fs", "2": "I mean… it’s not like that.@lb", "3": "Isn’t it?@lp@fs", "4": "We barely touch each other like we used to.", "5": "You know it’s true, @player.@lp@fs", "6": "We’ve both been tired… stressed… things just changed.@lb" } }, { "file": "", "text": { "1": "But they changed *too much*.@lp@fs", "2": "We used to have this spark… something natural, exciting…@lp@fb", "3": "Now it’s like we’re roommates who sleep in the same bed.@lp@fs", "4": "I don’t want us to end up distant.@lp@fs", "5": "Hey, come on… we’re not distant.@lb", "6": "Aren’t we?@lp@fsusb" } }, { "file": "", "text": { "1": "We don’t flirt anymore, we don’t tease each other, we don’t… feel that heat between us.@lp@fs", "2": "I miss wanting you out of nowhere.@lp@fs", "3": "I miss *us*, @player.@lp@fb", "4": "…I miss that too.@lb", "5": "She took a breath, her expression softening a little.@lp@fsub", "6": "Then… what if we did something about it?@lp@fb" } }, { "file": "", "text": { "1": "I’ve been thinking… maybe we should talk to a psychologist.@lp@fsusb", "2": "Someone specialized in couples… you know… intimacy issues.@lp@fsub", "3": "It’s not a bad thing. It’s just… help.@lp@fb", "4": "We could try to fix this together.@lp@fh", "5": "So… what do you think? Should we go?@lp@fhb", "6": "" } } ], "TVShowIntro": [ { "file": "", "text": { "1": "I heard voices coming from the living room — low, serious male voices, completely unfamiliar.", "2": "When I stepped inside, I found a group of well-dressed businessmen standing in the middle of the room.", "3": "They turned toward me as if expecting my arrival.", "4": "@wife quickly appeared beside me, holding her hands together with a nervous smile.@lp@fb", "5": "Oh— @player! They’re from a TV show. I… let them in.@lp", "6": "A TV show…? Since when do we get visits from TV shows?@lb" } }, { "file": "", "text": { "1": "One of the businessmen stepped forward with a bright, rehearsed smile.", "2": "Good afternoon. Sorry for intruding, but we promise this is worth your time.@s", "3": "We’re producers of a very unique upcoming TV program.@s", "4": "You two were selected through social media analytics — your profile matched perfectly with what we’re looking for.@s", "5": "Selected? For what exactly?@lb", "6": "We’ll get to that in just a moment.@s" } }, { "file": "", "text": { "1": "Another producer placed a sleek tablet on the table, showing a flashy logo and segments of people interacting in staged environments.@s", "2": "Our program focuses on couples and how they react to a series of controlled social experiments.@s", "3": "We study behavior, choices, emotional reactions… that sort of thing.@s", "4": "It’s an observational format. Quite… enlightening for the audience.@s", "5": "And the potential rewards for the participants are very appealing.@s", "6": "Rewards? What kind of rewards?@lb" } }, { "file": "", "text": { "1": "Well, that depends on how well the couple performs during the experiments.@s", "2": "The more engagement, the more authenticity, the more… ‘impactful’ the interactions are, the higher the compensation.@s", "3": "We encourage participants to be open, adventurous, and willing to push boundaries a bit.@s", "4": "@wife shifted slightly, listening closely with a curious blush.", "5": "We believe you two would be excellent candidates for this format.@s", "6": "Your routine will be filmed, of course, all within agreed limits written on the papers.@s" } }, { "file": "", "text": { "1": "One of the men handed me a thick stack of documents.", "2": "These are standard participation agreements, nothing unusual.@s", "3": "They include consent for filming, experiment participation, and compensation terms.@s", "4": "@wife looked at me with a small, hopeful smile.", "5": "If you agree, just sign on the last page. We’ll send you a digital copy later.@s", "6": "I hesitated for a moment… then put the pen to paper and signed." } } ], "TVShowIntro2": [ { "file": "", "text": { "1": "It didn’t take long for the production crew to get to work.", "2": "Groups of technicians entered each room carrying small cameras, microphones, and boxes of equipment.", "3": "I watched them scatter through the house, opening doors, checking corners, measuring angles.", "4": "They placed tiny cameras on bookshelves, in the kitchen, in the hallway… everywhere.", "5": "Even the bedroom door was pushed open as they stepped inside.", "6": "Are they really putting cameras in every room?@lb" } }, { "file": "", "text": { "1": "A producer overheard me and approached with another polished smile.@s", "2": "Yes, it’s standard procedure. We need full coverage to properly observe your daily routine.@s", "3": "Don’t worry — only relevant footage is ever used. Everything else remains securely archived.@s", "4": "He pointed casually toward the bathroom as another technician entered it.@s", "5": "Even… there?@lb", "6": "All within the terms you signed. We respect boundaries, but we do need visibility.@s" } }, { "file": "", "text": { "1": "The crew continued installing equipment for nearly an hour.", "2": "Cables were taped neatly along the walls, small blinking lights appeared in corners I hadn’t even noticed before.", "3": "Eventually the producers gathered their cases and approached us.", "4": "Everything is set. Filming begins tomorrow morning.@s", "5": "We’re excited to have you two on board. You’ll do wonderfully.@s", "6": "Have a good evening, and good luck.@s" } }, { "file": "", "text": { "1": "After they left, the door closed and the house suddenly felt… different.", "2": "Every room had that faint sense of being watched.", "3": "I glanced toward @wife, who was looking around with wide, curious eyes.", "4": "This is… a lot. I didn’t expect them to literally put cameras *everywhere*.@lb", "5": "I know… it’s a little strange.@lp", "6": "But think about the money we might earn from this.@lp" } }, { "file": "", "text": { "1": "She stepped closer, brushing a strand of hair behind her ear.", "2": "If the show becomes popular, the rewards could be really big.@lp", "3": "We could finally fix our finances, maybe even save for something nice.@lp", "4": "Yeah… maybe. I’m just not sure how to feel about all this yet.@lb", "5": "It’ll be okay. Let’s stay positive, all right?@lp", "6": "She smiled gently, hopeful in a way that made it hard not to follow along." } } ], "TVShow0": [ { "file": "", "text": { "1": "THE NEW COUPLE OF THIS SEASON!!!.", "2": "@player and his lovely wife @wife!!", "3": "This season will be full of surprises!!", "4": "STAY TUNED!!", "5": "EVERY DAY STARTING FROM TOMORROW!!", "6": "CUCK WAKENING!! YOUR FAVOURITE 18+ TV SHOW!!!" } } ], "ProducerMarkIntroduction": [ { "file": "", "text": { "1": "When I walked into the living room, I stopped in my tracks.", "2": "A man I had never seen before was sitting on the couch, right beside @wife.", "3": "They were seated close, talking softly as if they had known each other for a while.", "4": "Might be my imagination, but a small wave of jealousy hit me, but I pushed it down.", "5": "@wife looked up with a gentle smile.", "6": "Oh, @player! This is Mark, one of the producers and presenter from the show.@lp" } }, { "file": "", "text": { "1": "Mark stood up and extended a hand with a friendly, professional smile.", "2": "Good to finally meet you. I’m Mark , I’ll be handling your daily interviews and insights for the show.@s", "3": "Every day, I’ll stop by to ask each of you a series of questions.@s", "4": "These segments help the audience connect with you and understand your perspective.@s", "5": "We always start with the wife, and then move to the husband.@s", "6": "It keeps the flow consistent for the episodes.@s" } }, { "file": "", "text": { "1": "He adjusted the papers on his lap and continued speaking with a calm, steady tone.@s", "2": "As stated in your contract, your questions and tasks may differ from one another.@s", "3": "You are not allowed to share your answers or details of your tasks with each other.@s", "4": "Everything must remain confidential to preserve the show’s integrity.@s", "5": "Remember, the cameras are always rolling, and breaching the contract is not permitted.@s", "6": "@wife nodded softly beside him." } }, { "file": "", "text": { "1": "Mark smiled again. She already answered her questions for today before you arrived.@s", "2": "Now it’s your turn, @player.@s", "3": "@wife stood up immediately.", "4": "I’ll be in the kitchen, okay?@lp", "5": "She walked away, gently closing the kitchen door behind her.", "6": "Mark gestured to the spot beside him on the couch.@s" } }, { "file": "", "text": { "1": "I exhaled slowly and sat down on the sofa.", "2": "The cushions were still warm where she had been sitting.", "3": "Mark flipped a page on his clipboard and got into position.", "4": "All right, let’s begin.@r", "5": "I sat up straight, preparing myself for whatever he was about to ask.", } } ], "MainGameIntro": [ { "file": "cgs/random/introworkplacestory.png", "text": { "1": "My name is @player, and I guess my life is… fine. Not amazing, not terrible. Just fine.", "2": "I work as a computer engineer in a big company — one of those places where the bosses joke openly about things they really shouldn’t.", "3": "A misogynistic corporate jungle full of loud voices, louder egos, and people who earn double or triple what I do for the same job.", "4": "Honestly? I don’t make much. Not compared to my colleagues. Some of them are practically swimming in money.", "5": "Meanwhile, I scrape by, paycheck to paycheck, wondering where exactly I went wrong in the career lottery.", "6": "Still… life isn’t all bad. Because I married the girl of my dreams." } }, { "file": "characters/wife/cg/intro1.png", "text": { "1": "@wife — a beautiful, delicate blonde who could light up a whole room just by entering it.", "2": "She’s soft-spoken, gentle, sweet… ", "3": "The kind of woman I used to fantasize about marrying when I was younger.", "4": "And somehow, I actually did.", "5": "She’s the best part of my life, easily.", "6": "But even perfect things can fade if you don't take care of them." } }, { "file": "cgs/random/silhouette1.png", "text": { "1": "Somewhere along the way, our passion slowed down.", "2": "Then it stopped.", "3": "We slipped into a routine — wake up, work, chores, dinner, sleep, repeat.", "4": "We became… comfortable. Too comfortable.", "5": "Like best friends sharing a home, rather than husband and wife.", "6": "We don’t really have sex anymore. We barely even flirt." } }, { "file": "cgs/random/silhouette2.png", "text": { "1": "I still love her. More than anything.", "2": "But sometimes I wonder if she still looks at me the same way she used to.", "3": "Sometimes I wonder if we lost something we’ll never get back.", "4": "No matter what, I know one thing:", "5": "I need to get ready for work now.", "6": "..." } } ] }; <</script>>
<<setBG 1 setup.ImagePath 'characters/wife/cg/1.png'>> <span class="custom-button" style="top: 50%;left: 60%;"> <<button "1">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>> </span> <span class="custom-button" style="top: 56%;left: 60%;"> <<button "1">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>> </span> <span class="custom-button" id="btn-container" style="top: 62%;left: 60%;"> <<button "-Sexual Options-">> <<replace "#btn-container" t8n>> <<button "Ask to see her holes">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>><br> <<button "Ask to fuck">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>> <</replace>> <</button>> </span> <<set _choice = either( '<<fadetext "lightpink" "Hi dear! I\'m just cleaning the kitchen do you need something?" "30%" "60%">>', '<<fadetext "lightpink" "Hey love! Do you need any help or just want to chat?" "30%" "60%">>', '<<fadetext "lightpink" "Yes love?" "30%" "60%">>' )>> <<= _choice>> /*<<comic "scene1" "WifeTalkKitchen">>*/
(function () { if (window._delayedMessagesShown) return; window._delayedMessagesShown = true; const messages = ["day1random1", "day1random2", "day1random3", "day1random4", "day1random5", "day1random6", "day1random7", "day1random8", "day1random9", "day1random10"]; let currentDelay = 0; messages.forEach((key) => { const delay = Math.floor(Math.random() * 10000) + 14000; // 10000–14000 ms currentDelay += delay; setTimeout(() => { if (typeof createMessage === "function") { createMessage(key); } }, currentDelay); }); })(); /*====================================================*/ /*====================================================*/ v.whisperTimeouts = []; window.spawnRandomWhispers = function() { if (!v.whispersEnabled) return; const entry = v.whispers[Math.floor(Math.random() * v.whispers.length)]; if (typeof spawnWhisper === "function") spawnWhisper(entry); const nextDelay = Math.floor(Math.random() * 4000) + 4000; const t = setTimeout(() => { if (v.whispersEnabled) spawnRandomWhispers(); }, nextDelay); v.whisperTimeouts.push(t); } window.spawnRandomWhispers();
(function () { if (window._delayedMessagesShown) return; window._delayedMessagesShown = true; window._messageTimeouts = window._messageTimeouts || []; // store timeouts here const messages = [ "lookingForEmployee0", "lookingForEmployee1", "lookingForEmployee2", "lookingForEmployee3", "lookingForEmployee4" ]; for (let i = messages.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [messages[i], messages[j]] = [messages[j], messages[i]]; } let currentDelay = 0; messages.forEach((key) => { const delay = Math.floor(Math.random() * 18000) + 5000; currentDelay += delay; const t = setTimeout(() => { if (typeof createMessage === "function") { createMessage(key); } }, currentDelay); window._messageTimeouts.push(t); }); })();
(function () { if (window._delayedMessagesShown) return; window._delayedMessagesShown = true; const messages = ["greeting", "lonely", "day1random1"]; // Shuffle the messages for (let i = messages.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [messages[i], messages[j]] = [messages[j], messages[i]]; } let currentDelay = 0; messages.forEach((key) => { const delay = Math.floor(Math.random() * 5000) + 5000; // 5000–10000 ms currentDelay += delay; setTimeout(() => { if (typeof createMessage === "function") { createMessage(key); } }, currentDelay); }); })(); /*====================================================*/ /*====================================================*/ function spawnRandomWhispers() { // pick a random whisper const entry = v.whispers[Math.floor(Math.random() * v.whispers.length)]; // spawn it if the function exists if (typeof spawnWhisper === "function") { spawnWhisper(entry); } // schedule next whisper after a random delay 4000–8000ms const nextDelay = Math.floor(Math.random() * 4000) + 4000; setTimeout(spawnRandomWhispers, nextDelay); } // start the loop spawnRandomWhispers();
<<setBG 1 setup.ImagePath ''>> <<set $chestSlot = "Yellow T-Shirt">> <<set $hipSlot = "">> <<set $legSlot = "Colorful Leggings A">> <<set $feetSlot = "Black Sneakers">> <<generateNPCWife -70 -30 200 500 base2>><style> .wife-avatar-wrapper:hover .hover-layer { display: block !important; } </style> <span class="custom-button" style="top: 80%;left: 55%;"> <<button "Nothing" $return>> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <</button>> </span> <span class="custom-button" style="top: 50%;left: 60%;"> <<button "1">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>> </span> <span class="custom-button" style="top: 56%;left: 60%;"> /*<<button "change face">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<set $codes = Object.keys($wifeFaceMap)>> <!-- get all the short codes as an array --> <<set $randomCode = $codes[Math.floor(Math.random() * $codes.length)]>> <!-- pick one randomly --> <<updateNPCWifeFace $wifeFaceMap[$randomCode]>> <!-- update using the full face name --> <</button>>*/ </span> <span class="custom-button" id="btn-container" style="top: 62%;left: 60%;"> <<button "-Sexual Options-">> <<replace "#btn-container" t8n>> <<button "Ask to see her holes">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>><br> <<button "Ask for sex">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>> <</replace>> <</button>> </span> <<set _choice = either( '<<fadetext "lightpink" "Hi dear! I\'m just cleaning the kitchen do you need something?" "30%" "60%">>', '<<fadetext "lightpink" "Hey love! Do you need any help or just want to chat?" "30%" "60%">>', '<<fadetext "lightpink" "Yes love?" "30%" "60%">>' )>> <<= _choice>> /*<<comic "scene1" "WifeTalkKitchen">>*/
<<setBG 1 setup.ImagePath ''>> <<keyhole 50 50 25>> <<set _video to window.getRandomVideo("whiteVaginal")>> <<run video(_video)>> <<run videolocation(40, 50)>> <<run videosize(40)>> <<run playVideo()>> <span class="custom-button" style="top: 9%;left: 5%; z-index: 99999;"> <<button "Stop Peeking">> <<script>> v.timerExpired = false; deleteVideo(); goto("livingroom"); window.deleteKeyhole(); <</script>> <</button>> </span>
<<set v.videos = { "bbcAnal": [ setup.VideoPath + "wife/black_anal1.mp4", setup.VideoPath + "wife/anal_gb2.mp4" ], "bbcVaginal": [ setup.VideoPath + "wife/black_vaginal1.mp4", setup.VideoPath + "wife/black_vaginal2.mp4", setup.VideoPath + "wife/black_vaginal3.mp4" ], "bbcOral": [ setup.VideoPath + "wife/black_deepbj2.mp4", setup.VideoPath + "wife/black_oral1.mp4", setup.VideoPath + "wife/black_oraldeep1.mp4" ], "bbcDp": [ setup.VideoPath + "wife/vag_dp1.mp4", setup.VideoPath + "wife/vag_dp2.mp4" ], "bbcGangbang": [ setup.VideoPath + "wife/anal_gb2.mp4", setup.VideoPath + "wife/gb1.mp4", setup.VideoPath + "wife/vag_dp1.mp4", setup.VideoPath + "wife/vag_dp2.mp4" ], "whiteAnal": [ setup.VideoPath + "wife/anal_gb1.mp4", setup.VideoPath + "wife/anal1.mp4", setup.VideoPath + "wife/anal2.mp4" ], "whiteVaginal": [ setup.VideoPath + "wife/vaginal1.mp4", setup.VideoPath + "wife/vaginal2.mp4", setup.VideoPath + "wife/vaginal3.mp4", setup.VideoPath + "wife/vaginalold1.mp4", setup.VideoPath + "wife/vaginalold2.mp4", setup.VideoPath + "wife/vaginalold3.mp4", setup.VideoPath + "wife/vaginaloldfat1.mp4", setup.VideoPath + "wife/vaginaloldfat2.mp4", setup.VideoPath + "wife/vaginaloldfat3.mp4" ], "whiteOral": [ setup.VideoPath + "wife/oral1.mp4", setup.VideoPath + "wife/oral2.mp4", setup.VideoPath + "wife/oraloldfat1.mp4" ], "whiteDp": [ setup.VideoPath + "wife/vag_dp1.mp4", setup.VideoPath + "wife/vag_dp2.mp4" ], "whiteGangbang": [ setup.VideoPath + "wife/gb1.mp4", setup.VideoPath + "wife/anal_gb1.mp4", setup.VideoPath + "wife/vag_dp1.mp4", setup.VideoPath + "wife/vag_dp2.mp4" ], "bbcAnalCreampie": [ setup.VideoPath + "wife/black_anal1.mp4", setup.VideoPath + "wife/anal_gb2.mp4" ], "bbcVaginalCreampie": [ setup.VideoPath + "office/meeting.mp4", setup.VideoPath + "office/boss.mp4" ], "bbcOralCreampie": [ setup.VideoPath + "wife/black_oralCreampie1.mp4" ], "bbcDpCreampie": [ setup.VideoPath + "fun/fun1.mp4", setup.VideoPath + "fun/fun2.mp4" ], "bbcGangbangCreampie": [ setup.VideoPath + "wife/creampie_anal_gb1.mp4" ], "whiteAnalCreampie": [ setup.VideoPath + "wife/creampie_anal1.mp4" ], "whiteVaginalCreampie": [ setup.VideoPath + "wife/creampie1.mp4", setup.VideoPath + "wife/creampie2.mp4" ], "whiteOralCreampie": [ setup.VideoPath + "wife/fun1.mp4", setup.VideoPath + "wife/fun2.mp4" ], "whiteDpCreampie": [ setup.VideoPath + "wife/fun1.mp4", setup.VideoPath + "wife/fun2.mp4" ], "whiteGangbangCreampie": [ setup.VideoPath + "wife/creampie_anal_gb1.mp4", setup.VideoPath + "wife/creampie_vag_gb1.mp4" ], "showCreampie": [ setup.VideoPath + "wife/show_creampie1.mp4" ], "chastityTease": [ setup.VideoPath + "wife/tease.mp4", setup.VideoPath + "wife/tease2.mp4" ] }>>
<<goto "Test Peeking Random Video">>
/*<<generateNPCWife -40 1 100 500 base2>><style> .wife-avatar-wrapper:hover .hover-layer { display: block !important; } </style>*/ <<script>> // Make sure bulls exist and picks if (window.bulls && window.bulls.length > 0) { // Pick Maxell only window.activeBulls = [ window.bulls.find(b => b.name === "Maxell") ]; // Or pick both //window.activeBulls = window.bulls.filter(b => ["Maxell","Brutus"].includes(b.name)); } window.initWifeLeanBar(); <</script>> <<set $subjectChosen = window.randomSubject()>> <div id="conversation-log" class="conversation-log"></div> <!-- Player Actions --> <div style="margin-top: 10px; text-align:center; position: relative; z-index: 99999;"> <<button "Argue">><<run runRound("Argue")>><</button>> <<button "Appeal Emotion">><<run runRound("Appeal Emotion")>><</button>> <<button "Dismiss Bull 0">><<run runRound("")>><</button>> </div> <!-- Show active bulls --> <b>Bulls in this combat:</b><br> <<= window.activeBulls.map(b => "- " + b.name).join("<br>")>> <!-- Show chosen subject --> Chosen subject: <<= $subjectChosen.subject>> From: <<= $subjectChosen.character.name>>
<<script>> /* === Player === */ window.player = { name: "Bob", control: 10, subjects: ["work", "future", "family", "day"] }; /* === Bulls === */ window.bulls = [ { id: 1, name: "Maxell", influence: 2, traits: ["charming", "persistent"], subjects: ["freedom", "work", "wife", "money"] }, { id: 2, name: "Brutus", influence: 4, traits: ["aggressive"], subjects: ["work", "sex", "wife", "money"] } ]; /* === Wife === */ window.wife = { name: "Lolla", lust: 0, lean: 0 // will be calculated each round }; /* === Combat Config === */ window.combatConfig = { round: 1, maxRounds: 5, threshold: 20, // difference needed for auto-win }; /* ====================================================== Dialogues ======================================================== */ /* =========================== Funny Bulls */ window.dialogues = { Bulls: { Work: { 1: "[B] tells about what happened at work some days ago.", 2: "[B] shares an office prank story where they convinced the new intern that Thursdays were designated 'Walk Backwards Day' in their building.", 3: "[B] asks [W] for advice on handling a workplace conflict with a colleague who keeps taking credit for his ideas.", 4: "[B] laments to [P] about the outdated computer system at work that crashed three times today, losing hours of his work each time.", 5: "[B] recounts how the boss caught him napping under the desk during lunch break, but instead of getting angry, asked for recommendations on the most comfortable floor spot.", 6: "[B] recounts to [P] how a difficult client at work stormed out of a meeting, only to return the next day with apology pastries for the entire office.", 7: "[B] recounts how his boss publicly praised his quarterly report, mentioning that [W] helped him organize the data in a way that made complex information accessible to everyone.", 8: "[B] describes the new office coffee machine that requires a 17-digit access code, three security questions, and a retinal scan just to brew a mediocre cup of coffee.", 9: "[B] excitedly tells [P] about winning the quarterly productivity award at work, which came with a trophy shaped like a miniature coffee machine.", 10: "[B] proudly tells [P] about finally landing the Henderson account after six months of pitches, only to discover his boss promised impossible delivery timelines." }, Future: { 1: "[B] describes a futuristic self-driving car he test drove last weekend, explaining how it predicted traffic patterns and rerouted itself without any input.", 2: "[B] mentions to [W] how the latest advancements in medical technology might extend human lifespan to 150 years, wondering how that would change their retirement plans.", 3: "[B] contemplates what their neighborhood might look like in 30 years, describing vertical gardens and community energy grids.", 4: "[B] sketches out for [W] what personal transport might look like in a century, describing solar-powered hover cars that automatically avoid collisions and find optimal routes based on air currents.", 5: "[B] enthusiastically describes to [P] the neural implant technology he read about that would allow humans to download languages and skills instantly, wondering what [P] would choose.", 6: "[B] explains to [W] how he's investing in lunar real estate, convinced that the Moon will become prime vacation property within their lifetime.", 7: "[B] theorizes with [P] about quantum computing making current encryption obsolete, worried about the family photos stored in cloud services becoming public.", 8: "[B] tells about the quantum pet collar he bought that translates animal thoughts, revealing his cat has been plotting world domination since two years ago.", 9: "[B] excitedly tells about subscribing to 'Dream Delivery,' a service that records his dreams and sends them as immersive VR experiences", 10: "[B] ponders about the future of remote work, telling that his company is planning to use holographic projections for meetings." }, Family: { 1: "[B] enthusiastically describes the family tree DNA service that revealed his ancestors were viking royalty, conveniently ignoring the part about being 43% identical to potatoes.", 2: "[B] explains to how he's teaching the family parrot to recite quantum physics equations, convinced the bird will revolutionize science once it understands string theory.", 3: "[B] confides in [P] that he's secretly replaced all family photos with AI-generated versions where everyone has perfect posture, explaining it's a 'preventative measure against future spinal issues and disappointing holiday cards'.", 4: "[B] confides to [P] that he's been secretly mapping their family's laughter patterns, convinced he can create an algorithm that predicts who will laugh at which jokes, only to discover everyone just pretends to laugh at his puns.", 5: "[B] explains his theory that his cousin who lives in the basement and collects bottlecaps is actually preparing for post-apocalyptic currency, noting he's started saving twist-ties just in case.", 6: "[B] confides in [P] about his grandmother who secretly replaced all family photos with pictures from magazines in 1987, and nobody has noticed yet except him.", 7: "[B] confides in [P] about his sister who claims she was raised by raccoons for the first three years of her life, and now insists on washing all food items in the birdbath before eating them.", 8: "[B] explains to [P] his intricate family tree conspiracy theory, claiming his great-aunt Mildred has been secretly replaced by a lookalike in 1992 because the real Mildred would never have switched from baking apple pies to cherry cobblers." }, Day: { 1: "[B] complains that his day started with three alarms failing, his coffee machine exploding, and a neighbor's dog chasing him down the street.", 2: "[B] describes how he spent the whole afternoon trying to fix a squeaky door, only to realize it was actually his shoes making the noise.", 3: "[B] jokes to [W] that today felt like a soap opera, complete with dramatic pauses and someone spilling juice for dramatic effect.", 4: "[B] explains to [P] how he accidentally joined a yoga class while looking for the restroom, and now he’s signed up for six weeks.", 5: "[B] tells [W] his highlight of the day was discovering a bakery that gives free samples the size of actual pastries." }, Freedom: { 1: "[B] rants about how true freedom means never having to wear matching socks again.", 2: "[B] tells [W] that freedom is being able to eat cold pizza for breakfast without judgment.", 3: "[B] argues with [P] that quitting his job to live in a treehouse would be the ultimate expression of freedom.", 4: "[B] boasts about canceling all his subscriptions to 'take back control of his life,' only to realize now he can’t watch TV, listen to music, or open documents.", 5: "[B] insists to [W] that freedom means finally deleting his mother-in-law from the family group chat." }, Wife: { 1: "[B] compliments [W], telling her she looks radiant today.", 2: "[B] casually recalls a memory with [W] from years ago that [P] wasn’t aware of.", 3: "[B] tells [W] he admires her strength and patience in dealing with stressful situations.", 4: "[B] jokes to [W] that if he ever wrote a book, she’d be the muse for every chapter.", 5: "[B] hints to [P] that [W] deserves more appreciation than she’s currently getting." }, Money: { 1: "[B] brags about making a small fortune in cryptocurrency, only to admit he lost the password to his digital wallet.", 2: "[B] tells [W] that money isn’t everything, but it definitely helps when buying surprise gifts.", 3: "[B] argues with [P] that investing in llamas is the next big financial opportunity.", 4: "[B] confesses he once tried to bribe a vending machine by sliding in Monopoly money.", 5: "[B] explains his get-rich-quick scheme involving artisanal bottled air from different cities." }, Sex: { 1: "[B] flirts openly with [W], suggesting they sneak away for some fun.", 2: "[B] jokes crudely about his past conquests to unsettle [P].", 3: "[B] tells [W] he dreams about her at night, even when he tries not to.", 4: "[B] boasts to [P] that women never forget him once they’ve been with him.", 5: "[B] laughs and asks [W] what she thinks about trying something ‘a little more adventurous’." }, Kinks: { 1: "[B] lowers his voice and tells [W] he’s always had a soft spot for roleplay, especially boss/secretary scenarios.", 2: "[B] laughs with [P] about how he once tried candle wax play and ended up setting off the smoke detector.", 3: "[B] confides to [W] that he has a thing for being teased mercilessly, claiming it drives him wild.", 4: "[B] casually mentions to [P] that he thinks couples who experiment together always last longer.", 5: "[B] whispers to [W] about his curiosity for handcuffs, joking he might have a pair lying around already." } }, Player: { Work: { 1: "[P] talks about his achievements at work, explaining how he solved a complex problem today.", 2: "[P] recounts to [W] a funny incident with a coworker that happened in the office.", 3: "[P] mentions to [W] that he stayed late to finish a project to impress his boss.", 4: "[P] complains about the endless meetings, wishing for more productive hours.", 5: "[P] explains how he successfully mediated a conflict between two colleagues.", 6: "[P] tells [W] about the praise he received from the team for his leadership.", 7: "[P] shares how he organized his tasks efficiently and feels proud of the progress.", 8: "[P] describes the challenges he faced today at work and how he overcame them." }, Future: { 1: "[P] dreams about the future they will build together, imagining trips and shared goals.", 2: "[P] tells [W] about an investment opportunity he thinks will secure their future.", 3: "[P] contemplates retirement plans, hoping for a comfortable life together.", 4: "[P] shares his hopes for a better career path that can benefit both of them.", 5: "[P] discusses upcoming opportunities and decisions that could change their lives.", 6: "[P] talks about his plans for personal growth and how it will affect their life together.", 7: "[P] imagines what their neighborhood or city will be like in 10 years.", 8: "[P] discusses long-term goals with [W], considering family, work, and happiness." }, Family: { 1: "[P] expresses his care for his family and their importance in his life.", 2: "[P] shares a fond memory with [W] about a family gathering.", 3: "[P] talks about helping a family member with a recent problem.", 4: "[P] explains how family traditions are meaningful to him.", 5: "[P] recounts a humorous incident that happened during a family dinner.", 6: "[P] reflects on the values his family taught him and shares with [W].", 7: "[P] discusses plans for a family vacation or reunion.", 8: "[P] expresses gratitude for the family support he received in difficult times." }, Day: { 1: "[P] tells [W] about the highlights of his day.", 2: "[P] complains about minor inconveniences but keeps a humorous tone.", 3: "[P] shares a funny or interesting incident that happened during the day.", 4: "[P] explains what he accomplished today and how he feels about it.", 5: "[P] mentions something unexpected that happened today.", 6: "[P] recounts a conversation or event that amused him.", 7: "[P] reflects on a quiet or peaceful moment during the day.", 8: "[P] tells [W] about plans for the evening or rest of the day." }, Freedom: { 1: "[P] talks about personal choices and independence in a humorous way.", 2: "[P] jokes about the freedom to make unconventional decisions.", 3: "[P] explains to [W] how he values autonomy in daily life.", 4: "[P] describes a situation where he exercised his freedom recently.", 5: "[P] discusses hobbies or interests that make him feel free.", 6: "[P] tells [W] how small liberties contribute to his happiness.", 7: "[P] jokes about minor rebellions against routines or rules.", 8: "[P] contemplates future opportunities for independence and choice." }, Wife: { 1: "[P] expresses admiration for [W] and her qualities.", 2: "[P] compliments [W] on something she did recently.", 3: "[P] tells [W] he appreciates her support and presence.", 4: "[P] mentions a memory or shared moment with [W].", 5: "[P] jokes lightly with [W] about her habits or quirks.", 6: "[P] reassures [W] about decisions they have to make together.", 7: "[P] expresses his love and respect for [W].", 8: "[P] shares a future plan that involves [W] in an important way." }, Money: { 1: "[P] talks about financial planning and security.", 2: "[P] shares a recent purchase or investment with [W].", 3: "[P] discusses budgeting and money management strategies.", 4: "[P] jokes about splurging on something trivial.", 5: "[P] expresses concern about saving or spending wisely.", 6: "[P] describes a small financial success or windfall.", 7: "[P] talks about financial goals for the near future.", 8: "[P] reassures [W] about handling money responsibly." }, Sex: { 1: "[P] expresses desire for intimacy with [W], keeping it respectful.", 2: "[P] flirts lightly and playfully with [W].", 3: "[P] compliments [W] in a sensual but gentle way.", 4: "[P] reminisces about past intimate moments with [W].", 5: "[P] hints at wanting a private moment with [W].", 6: "[P] teases [W] playfully about their chemistry.", 7: "[P] suggests a fun or romantic activity for later.", 8: "[P] shows appreciation for [W]'s presence in an intimate context." }, Kinks: { 1: "[P] mentions a playful curiosity about exploring new things with [W].", 2: "[P] jokes lightly about fantasies without pressure.", 3: "[P] expresses trust and openness in intimate contexts with [W].", 4: "[P] talks about roleplay or scenarios in a playful tone.", 5: "[P] shares a desire to experiment with boundaries in safe ways.", 6: "[P] flirts with [W] while discussing mutual interests.", 7: "[P] hints at adventurous intimate ideas.", 8: "[P] compliments [W] on making moments exciting and playful.]" } }, Wife: { Work: { 1: "[W] observes the effort [P] puts into work, nodding approvingly.", 2: "[W] comments on the challenges [P] faces during the day.", 3: "[W] jokes lightly about [P]'s work habits.", 4: "[W] expresses admiration for [P]'s accomplishments.", 5: "[W] teases [P] about staying too late at the office.", 6: "[W] reassures [P] that she trusts his decisions.", 7: "[W] mentions how [P]'s dedication affects her positively.", 8: "[W] reflects on how [P] manages stress and challenges at work." }, Future: { 1: "[W] dreams aloud about their future together with [P].", 2: "[W] expresses hopes for stability and happiness with [P].", 3: "[W] asks [P] about his plans and goals.", 4: "[W] teases [P] about planning too much for the future.", 5: "[W] shares visions of family trips or life improvements.", 6: "[W] reflects on how [P]'s decisions affect their shared future.", 7: "[W] expresses excitement about adventures to come.", 8: "[W] encourages [P] to pursue dreams and aspirations." }, Family: { 1: "[W] praises [P] for supporting his family.", 2: "[W] shares a story about her own family with [P].", 3: "[W] expresses concern for family well-being.", 4: "[W] jokes lightly about family quirks to [P].", 5: "[W] mentions traditions and memories they both share.", 6: "[W] reflects on how family influences their relationship.", 7: "[W] expresses gratitude for shared family moments.", 8: "[W] encourages [P] to balance family and personal life." }, Day: { 1: "[W] describes her day and asks about [P]'s.", 2: "[W] jokes about minor frustrations and mishaps today.", 3: "[W] shares a small victory or accomplishment from the day.", 4: "[W] comments on something amusing that happened.", 5: "[W] notices details that [P] may have missed today.", 6: "[W] reflects on a peaceful or enjoyable moment during the day.", 7: "[W] teases [P] gently about his reactions during the day.", 8: "[W] expresses relief or satisfaction with how the day went." }, Freedom: { 1: "[W] expresses her thoughts on personal freedom and choice.", 2: "[W] comments on small ways she enjoys independence.", 3: "[W] jokes about rules she doesn't follow strictly.", 4: "[W] reflects on moments where she felt empowered.", 5: "[W] shares how she values personal autonomy with [P].", 6: "[W] teases [P] about his minor restrictions or habits.", 7: "[W] expresses joy in making small independent decisions.", 8: "[W] encourages [P] to embrace freedom where possible." }, Wife: { 1: "[W] praises [P] for his patience and understanding.", 2: "[W] recalls a touching moment between them.", 3: "[W] expresses affection for [P].", 4: "[W] jokes lightly about shared experiences.", 5: "[W] reassures [P] about her feelings.", 6: "[W] mentions a future plan involving both of them.", 7: "[W] compliments [P] on his character.", 8: "[W] reflects on the depth of their bond." }, Money: { 1: "[W] comments on financial decisions made together.", 2: "[W] expresses appreciation for [P]'s efforts in budgeting.", 3: "[W] jokes about small spending habits.", 4: "[W] discusses savings and future financial plans.", 5: "[W] reassures [P] about money matters.", 6: "[W] shares thoughts on investments or purchases.", 7: "[W] expresses concern about unnecessary risks.", 8: "[W] encourages [P] to be responsible with finances." }, Sex: { 1: "[W] expresses affection towards [P] in a gentle way.", 2: "[W] flirts lightly, testing [P]'s reactions.", 3: "[W] hints at wanting intimacy soon.", 4: "[W] jokes playfully about romantic interactions.", 5: "[W] expresses excitement about private moments.", 6: "[W] teases [P] about his attentions.", 7: "[W] compliments [P] on their chemistry.", 8: "[W] reflects on past intimate moments fondly." }, Kinks: { 1: "[W] mentions curiosity about playful experiments.", 2: "[W] flirts lightly about fantasies.", 3: "[W] expresses trust in exploring new things with [P].", 4: "[W] jokes about hypothetical roleplay.", 5: "[W] expresses interest in mutual exploration.", 6: "[W] compliments [P] on being attentive.", 7: "[W] hints at adventurous ideas together.", 8: "[W] shares excitement about trying new experiences." } }, WifeHorny: { Work: { 1: "[W] teases [P] about working too hard and needing a reward later.", 2: "[W] flirts about how she wishes [P] could 'take a break' with her.", 3: "[W] hints that she’s distracted by thoughts of [P] while he works.", 4: "[W] jokes that deadlines could be more fun if [P] were involved differently.", 5: "[W] whispers that she might need a private moment with [P] soon.", 6: "[W] comments that she’s thinking of [P] in ways that could make work challenging.", 7: "[W] flirts that a cup of coffee could turn into something more intimate.", 8: "[W] expresses that she’s imagining [P] handling tasks with her close attention." }, Future: { 1: "[W] dreams about private adventures with [P] in the future.", 2: "[W] flirts while discussing plans together.", 3: "[W] hints at more personal experiences in the life they will share.", 4: "[W] jokes that future meetings could be a little more intimate.", 5: "[W] whispers about secrets she wants to share with [P] later.", 6: "[W] comments on how she imagines them together in adventurous ways.", 7: "[W] expresses excitement for romantic possibilities ahead.", 8: "[W] teases [P] about what the future could hold for just the two of them." }, Family: { 1: "[W] flirts with [P] while talking about family matters.", 2: "[W] teases [P] about keeping moments away from prying eyes.", 3: "[W] expresses affection for [P] and subtle desire.", 4: "[W] jokes about sneaking away during family events.", 5: "[W] whispers a playful comment only [P] would understand.", 6: "[W] hints that thinking of [P] makes her distracted even in family discussions.", 7: "[W] flirts about how private moments can be hidden in plain sight.", 8: "[W] expresses warmth and desire subtly while speaking about family." }, Day: { 1: "[W] flirts with [P] while recounting her day.", 2: "[W] jokes about being distracted by thoughts of [P].", 3: "[W] teases [P] about making the evening more interesting.", 4: "[W] hints at wanting a private moment after sharing daily events.", 5: "[W] whispers playful suggestions related to the day’s events.", 6: "[W] smiles at [P] in a way that hints at desire.", 7: "[W] flirts subtly, weaving intimacy into the daily stories.", 8: "[W] expresses excitement about ending the day with [P] privately." }, Freedom: { 1: "[W] jokes about how freedom could be more fun with [P].", 2: "[W] hints that she wants autonomy with intimate moments with [P].", 3: "[W] teases [P] about making rules for their private time.", 4: "[W] flirts about bending routines for pleasure.", 5: "[W] whispers that she wants spontaneity with [P].", 6: "[W] comments that personal choice feels better with [P] involved intimately.", 7: "[W] teases [P] about being distracted by her presence.", 8: "[W] expresses playful desire while valuing independence." }, Wife: { 1: "[W] flirts openly with [P], showing attraction.", 2: "[W] whispers compliments that suggest intimacy.", 3: "[W] jokes about shared private moments and desire.", 4: "[W] expresses excitement for being close to [P].", 5: "[W] hints at playful scenarios with [P].", 6: "[W] teases [P] about what she wants when alone together.", 7: "[W] compliments [P] in a suggestive way.", 8: "[W] smiles at [P] knowing he understands her hints." }, Money: { 1: "[W] flirts while discussing indulgences they could afford together.", 2: "[W] jokes about spending in ways that please both of them.", 3: "[W] teases [P] about using money for more intimate pleasures.", 4: "[W] whispers about rewards that could come from financial freedom.", 5: "[W] flirts subtly while planning purchases together.", 6: "[W] hints at playful outcomes tied to spending and desire.", 7: "[W] comments that money can make private moments more exciting.", 8: "[W] jokes about buying something that excites both her and [P]." }, Sex: { 1: "[W] expresses overt desire for [P], whispering temptingly.", 2: "[W] flirts and suggests they sneak away together.", 3: "[W] teases [P] about intimate plans for later.", 4: "[W] jokes suggestively, hinting at passion.", 5: "[W] whispers about private moments she wants with [P].", 6: "[W] flirts playfully, drawing attention to her intentions.", 7: "[W] expresses excitement about being close to [P].", 8: "[W] hints that she’s already thinking about intimate possibilities with [P]." }, Kinks: { 1: "[W] flirts with [P] about playful fantasies.", 2: "[W] teases [P] about private roleplay ideas.", 3: "[W] expresses curiosity in experimenting with [P].", 4: "[W] jokes about adventurous scenarios with [P].", 5: "[W] whispers playful intentions for private exploration.", 6: "[W] flirts subtly about her desires with [P].", 7: "[W] hints at fantasies she wants to try together.", 8: "[W] compliments [P] in ways that suggest adventurous intimacy." } } }; <</script>>
/*===================WifeCreampiesTimer====================*/ <<if $wifeCurrentCumVagina > 16>><<set $wifeCurrentCumVagina to 16>><</if>> <<if $wifeCurrentCumAssHole > 13>><<set $wifeCurrentCumAssHole to 13>><</if>> <<if $datenow - $wifeCurrentCumAssHoleTimer >= 18000000 && $wifeCurrentCumAssHole > 0>> // 5 hours to reduct one cum <<set $wifeCurrentCumAssHole-->><<set $wifeCurrentCumAssHoleTimer to $datenow>> <</if>> <<if $datenow - $wifeCurrentCumVaginaTimer >= 18000000 && $wifeCurrentCumVagina > 0>> // 5 hours to reduct one cum <<set $wifeCurrentCumVagina-->><<set $wifeCurrentCumVaginaTimer to $datenow>> <</if>> <<switch $wifeCurrentCumAssHole>> <<case 0>><<set $rectumSlot to "a0mini">> <<case 1>><<set $rectumSlot to "a1mini">> <<case 2>><<set $rectumSlot to "a2mini">> <<case 3>><<set $rectumSlot to "a3mini">> <<case 4>><<set $rectumSlot to "a4mini">> <<case 5>><<set $rectumSlot to "a5mini">> <<case 6>><<set $rectumSlot to "a6mini">> <<case 7>><<set $rectumSlot to "a7mini">> <<case 8>><<set $rectumSlot to "a8mini">> <<case 9>><<set $rectumSlot to "a9mini">> <<case 10>><<set $rectumSlot to "a10mini">> <<case 11>><<set $rectumSlot to "a11mini">> <<case 12>><<set $rectumSlot to "a12mini">> <<case 13>><<set $rectumSlot to "a13mini">> <</switch>> <<switch $wifeCurrentCumVagina>> <<case 0>><<set $uterusSlot to "v0mini">> <<case 1>><<set $uterusSlot to "v1mini">> <<case 2>><<set $uterusSlot to "v2mini">> <<case 3>><<set $uterusSlot to "v3mini">> <<case 4>><<set $uterusSlot to "v4mini">> <<case 5>><<set $uterusSlot to "v5mini">> <<case 6>><<set $uterusSlot to "v6mini">> <<case 7>><<set $uterusSlot to "v7mini">> <<case 8>><<set $uterusSlot to "v8mini">> <<case 9>><<set $uterusSlot to "v9mini">> <<case 10>><<set $uterusSlot to "v10mini">> <<case 11>><<set $uterusSlot to "v11mini">> <<case 12>><<set $uterusSlot to "v12mini">> <<case 13>><<set $uterusSlot to "v13mini">> <<case 14>><<set $uterusSlot to "v14mini">> <<case 15>><<set $uterusSlot to "v15mini">> <<case 16>><<set $uterusSlot to "v16mini">> <</switch>> <<switch $wifeCurrentCumMouth>> <<case 1>> <</switch>>
<<script>> window.createImage = function() { var div = document.createElement('div'); div.id = 'wife-xray-popup'; div.style.position = 'fixed'; div.style.top = '50%'; div.style.left = '50%'; div.style.transform = 'translate(-50%, -50%)'; div.style.backgroundColor = 'rgba(0, 0, 0, 0.8)'; div.style.color = '#fff'; div.style.padding = '20px'; div.style.borderRadius = '10px'; div.style.zIndex = '9999'; // Use flexbox to align images side by side div.style.display = 'flex'; div.style.gap = '10px'; // space between images div.style.justifyContent = 'center'; div.style.alignItems = 'center'; var img1 = document.createElement('img'); img1.src = setup.ImagePath + "/characters/wife/xray/a" + v.wifeCurrentCumAssHole + ".png"; img1.style.width = '200px'; // Adjust size div.appendChild(img1); var img2 = document.createElement('img'); img2.src = setup.ImagePath + "/characters/wife/xray/v" + v.wifeCurrentCumVagina + ".png"; img2.style.width = '200px'; // Adjust size div.appendChild(img2); // Optional close button var closeBtn = document.createElement('button'); closeBtn.textContent = 'Close'; closeBtn.style.marginLeft = '10px'; closeBtn.onclick = function() { div.remove(); }; div.appendChild(closeBtn); document.body.appendChild(div); // Append the container to body document.body.appendChild(div); } <</script>> <<run createImage()>>
<<generateNPCWife -70 -30 200 500 base2>><style> .wife-avatar-wrapper:hover .hover-layer { display: block !important; } </style> <span class="custom-button" style="top: 80%;left: 55%;"> <<button "Nothing" $return>> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <</button>> </span> <span class="custom-button" style="top: 50%;left: 60%;"> <<button "1">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>> </span> <span class="custom-button" style="top: 56%;left: 60%;"> <<button "1">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>> </span> <span class="custom-button" id="btn-container" style="top: 62%;left: 60%;"> <<button "-Sexual Options-">> <<replace "#btn-container" t8n>> <<button "Ask to see her holes">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>><br> <<button "Ask to fuck">> <<run $datenow.setMinutes($datenow.getMinutes() + 1)>> <<goto "livingroom">> <</button>> <</replace>> <</button>> </span> <<set _choice = either( '<<fadetext "lightpink" "Hi @player." "30%" "60%">>', '<<fadetext "lightpink" "Hi @player!" "30%" "60%">>', '<<fadetext "lightpink" "Hi @player.." "30%" "60%">>' )>> <<= _choice>> /*<<comic "scene1" "WifeTalkKitchen">>*/
<<setBG 1 setup.ImagePath 'locations/house/TVShow.png'>> <<if $TVShow > 10>><<set $TVShow to 11>><<goto "bedroom">> <!-- End of content --> <<else>> <<if $TVShow < 0>><<set $TVShow = 0>><</if>>//Flag to Start Events <<pressContinue>> <<set _sceneName = "TVShow" + $TVShow>> <!-- Check if comic scene exists --> <<if v.comicImages[_sceneName]>><<comic _sceneName "bedroom">> <<else>> <!-- Scene does NOT exist --> <<fadetext "red" "ERROR: The scene [_sceneName] does not exist in the JSON array." "30%" "50%">> <span class="custom-button" style="top: 50%;left: 60%;"> <<button "OK">> <<goto "bedroom">> <</button>> </span> <</if>> <</if>> <<set $TVShow++>>
<<setBG 1 setup.ImagePath 'cgs/tvshow/TVShowIntro.png'>> <<pressContinue>> <<comic "TVShowIntro" "TVShow Intro2">>
<<setBG 1 setup.ImagePath 'cgs/tvshow/TVShowIntro2.png'>> <<set $TVShow to 0>> <<pressContinue>> <<run $datenow.setMinutes($datenow.getMinutes() + 120)>> <<comic "TVShowIntro2" "livingroom">>
<<setBG 1 setup.ImagePath ''>> <<set $wifeWork to -1>> <<pressContinue>> <<comic "scene1" "kitchen">>
<<setBG 1 setup.ImagePath ''>> <style> /* === THEME CONTAINER === */ .changelog-root { max-width: 850px; margin: 0 auto; padding: 1rem 1.2rem; border-radius: 12px; background: #0b0e16; color: #d9e2ff; font-family: system-ui, sans-serif; box-shadow: 0 0 20px rgba(0,0,0,0.55); height: 85vh; /* force scroll inside */ overflow-y: auto; overflow-x: hidden; } /* scrollbar */ .changelog-root::-webkit-scrollbar { width: 6px; } .changelog-root::-webkit-scrollbar-track { background: #11141c; } .changelog-root::-webkit-scrollbar-thumb { background: #4af2c4; border-radius: 4px; } /* === HEADER === */ .changelog-title { font-size: 1.4rem; font-weight: 700; margin-bottom: 0.2rem; } .changelog-sub { font-size: 0.8rem; opacity: 0.65; margin-bottom: 0.8rem; } .changelog-version-pill { background: #13c39c; padding: 0.25rem 0.6rem; border-radius: 999px; font-size: 0.75rem; font-weight: 700; color: #021715; display: inline-block; margin-bottom: 0.8rem; } /* === ENTRY === */ .cl-entry { background: #131823; border: 1px solid #1e2331; border-radius: 10px; padding: 0.6rem 0.7rem; margin-bottom: 0.7rem; cursor: pointer; transition: background 0.15s, border-color 0.15s; } .cl-entry:hover { background: #19202f; border-color: #2f4d4c; } .cl-entry-header { display: flex; justify-content: space-between; align-items: center; } .cl-entry-version { font-weight: 700; } .cl-entry-date { font-size: 0.75rem; opacity: 0.65; } .cl-entry-chevron { font-size: 0.7rem; opacity: 0.7; transition: transform 0.2s; } /* === BODY === */ .cl-entry-body { margin-top: 0.4rem; font-size: 0.8rem; line-height: 1.3; max-height: 0; overflow: hidden; opacity: 0; transition: max-height 0.22s ease, opacity 0.22s ease; } .cl-entry.is-open .cl-entry-body { max-height: 300px; opacity: 1; overflow-y: auto; } .cl-entry.is-open .cl-entry-chevron { transform: rotate(90deg); } .cl-entry-body::-webkit-scrollbar { width: 5px; } .cl-entry-body::-webkit-scrollbar-track { background: #0f141d; } .cl-entry-body::-webkit-scrollbar-thumb { background: #4af2c4; border-radius: 4px; } /* bullet list */ .cl-entry-body ul { padding-left: 1.1rem; margin: 0.2rem 0; } .cl-entry-body li { margin-bottom: 0.25rem; } /* RETURN BUTTON */ .return-container { text-align: left; margin-bottom: 1rem; } .return-container button { background: #111826; border: 1px solid #4af2c4; color: #4af2c4; padding: 0.45rem 1rem; border-radius: 8px; font-size: 0.85rem; font-weight: 600; cursor: pointer; transition: all 0.2s ease; } .return-container button:hover { background: #16202f; border-color: #74ffd9; color: #74ffd9; box-shadow: 0 0 10px rgba(74,242,196,0.3); transform: translateY(-2px); } .return-container button:active { transform: translateY(0px); box-shadow: none; } /* badges */ .cl-badge { font-size: 0.6rem; padding: 0.1rem 0.35rem; border-radius: 999px; margin-right: 0.3rem; text-transform: uppercase; border: 1px solid; } .cl-badge.new { border-color: #15ffa6; color:#15ffa6; } .cl-badge.fix { border-color: #ffb24d; color:#ffb24d; } .cl-badge.qol { border-color: #6cb7ff; color:#6cb7ff; } .cl-badge.sys { border-color: #cccccc; color:#cccccc; } </style> <div class="return-container"> <<button "Return" "toReturn">> <<goto $return>> <</button>> </div> <div class="changelog-root"> <div class="changelog-title">Changelog</div> <div class="changelog-sub">Recent updates, fixes and changes.</div> <div class="changelog-version-pill">Current Version: v0.0.1</div> <!-- === ENTRY 3 === --> /* <div class="cl-entry"> <div class="cl-entry-header"> <span> <span class="cl-entry-version">v0.2.0</span> – <span class="cl-entry-date">25-nov-2025</span> </span> <span class="cl-entry-chevron">▶</span> </div> <div class="cl-entry-body"> <ul> <li><span class="cl-badge.new">New</span>Introduced first work-day message system.</li> <li><span class="cl-badge.qol">QoL</span>Tweaked money & productivity balancing.</li> <li><span class="cl-badge.sys">System</span>Flags for future TV Show storyline added.</li> </ul> </div> </div> </div>*/ /* <!-- === ENTRY 2 === --> <div class="cl-entry"> <div class="cl-entry-header"> <span> <span class="cl-entry-version">v0.0.0</span> – <span class="cl-entry-date">2025-11-05</span> </span> <span class="cl-entry-chevron">▶</span> </div> <div class="cl-entry-body"> <ul> <li><span class="cl-badge.fix">Fix</span>Soft-lock when skipping tutorial fixed.</li> <li><span class="cl-badge.qol">QoL</span>Improved clarity in certain choices.</li> </ul> </div> </div>*/ <!-- === ENTRY 1 === --> <div class="cl-entry is-open"> <div class="cl-entry-header"> <span> <span class="cl-entry-version">v0.0.1</span> – <span class="cl-entry-date">19-nov-2025</span> </span> <span class="cl-entry-chevron">▶</span> </div> <div class="cl-entry-body"> <ul> <!-- SYSTEMS --> <li><span class="cl-badge new">New</span>Added Intro of "TVShow" storyline and "WorkingWife" storyline (Not much for now, just for introducing the story on this prototype version).</li> <li><span class="cl-badge new">New</span>Added support for day 1 to 10 on TVShow Storyline.</li> <li><span class="cl-badge new">New</span>Implemented the global hour/minute time system that updates continuously in the background.</li> <li><span class="cl-badge new">New</span>Added the productivity system for the office gameplay, including blurred/unblurred (Focused) screen.</li> <li><span class="cl-badge new">New</span>Implemented delayed & randomized group message scheduling (boss, coworkers).</li> <li><span class="cl-badge new">New</span>Created the dynamic phone with some debug functionalities (opens by dragging mouse to right side of screen).</li> <li><span class="cl-badge new">New</span>Created Audio Control.</li> <li><span class="cl-badge new">New</span>Added 7 songs.</li> <li><span class="cl-badge new">New</span>Added the full Office Day 1 sequence with timed random phone messages.</li> <li><span class="cl-badge new">New</span>Added CG system support for future events.</li> <li><span class="cl-badge new">New</span>Added "Click to continue" helper.</li> <li><span class="cl-badge new">New</span>Added Inventory System (Framework) with functionalities already working and ready.</li> <li><span class="cl-badge new">New</span>Created layered wife avatar that supports all clothes and cum layers and faces.</li> <li><span class="cl-badge new">New</span>Added 17 faces for the wife.</li> <li><span class="cl-badge new">New</span>Created whispering system on work office.</li> <li><span class="cl-badge new">New</span>Created work "coding animation" on work office.</li> <li><span class="cl-badge new">New</span>Created Internal display of wife's rectum and vagina (x-ray).</li> <li><span class="cl-badge new">New</span>Added 31 stages of vagina and rectum to display.</li> <li><span class="cl-badge new">New</span>Added 69 (:3) wardrobe items for wife.</li> <li><span class="cl-badge new">New</span>Added 31 videos (to use on bedroom keyhole for now).</li> <li><span class="cl-badge new">New</span>Created framework to cum layers display on body, internal and timers to simulate absorption.</li> <li><span class="cl-badge new">New</span>Created videos and spy framework on bedroom (so you can see through keyhole with shadows so you can see less).</li> <li><span class="cl-badge new">New</span>Created wife location by daytime and weektime / routine framework.</li> <li><span class="cl-badge new">New</span>Created experimental real time fighting(more argumenting) with player and possible bulls to win the heart (not really heart) of wife - still experimental.</li> <li><span class="cl-badge new">New</span>Added modding capabilities (load mod).</li> <li><span class="cl-badge new">New</span>Created the base passages structures for the narrative flow (start, office, home, etc.).</li> <li><span class="cl-badge new">New</span>Added all core JavaScript variables & macros inside the project.</li> </ul> </div> </div> <<script>> /* expand/collapse logic */ $(document).on("click", ".cl-entry", function () { $(this).toggleClass("is-open"); }); /* enable scrolling ONLY here */ $('html, body').css('overflow', 'auto'); $(document).one(':passageend', function () { $('html, body').css('overflow', 'hidden'); /* restore your game's original behavior */ }); <</script>>
<<setBG 1 setup.ImagePath 'cgs/tvshow/TVShowMarkInterview.png'>> <<pressContinue>> <<run $datenow.setMinutes($datenow.getMinutes() + 60)>> <<comic "ProducerMarkIntroduction" "Mark Interview">>
<<setBG 1 setup.ImagePath 'cgs/tvshow/TVShowMarkInterview.png'>> <<set _dayIndex = $TVShow - 1>> <<set _entry = v.TVShowInterviewJSON[_dayIndex]>> <!-- BUTTON 1 --> <span class="custom-button" style="top: 50%;left: 60%;"> <<button _entry.Option1>> // Execute JSON script <<run Wikifier.wikifyEval(_entry.Consequence1)>> <<set $InterviewLastChoice to 1>> <<goto "Mark Interview End">> <</button>> </span> <!-- BUTTON 2 --> <span class="custom-button" style="top: 59%;left: 60%;"> <<button _entry.Option2>> // Execute JSON script <<run Wikifier.wikifyEval(_entry.Consequence1)>> <<set $InterviewLastChoice to 2>> <<goto "Mark Interview End">> <</button>> </span> <!-- SHOW PREMISE --> <<fadetext "salmon" _entry.Premise "30%" "60%">>
<<script>> v.TVShowInterviewJSON = [ { "Day": 1, "Premise": "The production informs you that the show will feature recurring visits from external staff members who will interact with your wife regularly. You must react to their presence.", "Option1": "Act confident and allow the staff full access to your home.", "Option2": "Express discomfort about strangers spending time around your wife.", "Consequence1": "<<script>>v.wifeFreedom += 1; v.husbandControl -= 1;<</script>>", "Consequence2": "<<script>>v.husbandInsecurity += 1; v.publicOpinion -= 1;<</script>>", "Response1": "Excellent attitude! Viewers appreciate confidence, it makes you both look strong as a couple.", "Response2": "Hmm… expressing discomfort might make you seem insecure on camera. Be careful with how the audience perceives you." }, { "Day": 2, "Premise": "The production proposes that your wife receives private interviews in another room for 'emotional insight'. You won't be allowed to see them.", "Option1": "Agree to let her attend private interviews alone.", "Option2": "Ask to accompany her, even if only off-camera.", "Consequence1": "<<script>>v.wifePrivacy += 1; v.husbandAnxiety += 1;<</script>>", "Consequence2": "<<script>>v.productionDisapproval += 1; v.husbandControl += 1;<</script>>", "Response1": "Good choice! The viewers will love your confidence! Keep that attitude and you and your wife might become the favorites of this season.", "Response2": "Sorry, but that's not allowed. People watch you two 24/7 on streaming websites. There's no such thing as 'off-camera', and accompanying her would violate the contract." }, { "Day": 3, "Premise": "Your wife returns from an off-camera interview looking flustered and evasive. The production asks if you trust her emotional process.", "Option1": "Say that you trust her completely, no matter what the interviews contain.", "Option2": "Admit that you're not comfortable with her withholding details.", "Consequence1": "<<script>>v.wifeFreedom += 1; v.husbandVulnerability += 1;<</script>>", "Consequence2": "<<script>>v.husbandInsecurity += 1; v.wifeDistance += 1;<</script>>", "Response1": "Beautiful answer. Vulnerability plays well with the audience, very authentic.", "Response2": "Honesty is good, but keep in mind the audience might see this as clingy or controlling." }, { "Day": 4, "Premise": "The production suggests giving your wife a 'social authority role' in the show, where she can make decisions affecting the day-to-day life of the house.", "Option1": "Approve her new authority role.", "Option2": "Ask that decisions be shared equally.", "Consequence1": "<<script>>v.wifePower += 1; v.husbandControl -= 1;<</script>>", "Consequence2": "<<script>>v.productionFrustration += 1; v.husbandControl += 1;<</script>>", "Response1": "Great! Empowering her makes for excellent content. The audience loves seeing her shine.", "Response2": "We'll note that, but remember, equal roles don't always make for engaging TV." }, { "Day": 5, "Premise": "The production proposes a 'privacy rule': your wife may leave the room for private discussions with staff anytime, but you're required to remain available for cameras.", "Option1": "Accept the rule and stay available at all times.", "Option2": "Ask for equal private time as well.", "Consequence1": "<<script>>v.wifeFreedom += 1; v.husbandExposure += 1;<</script>>", "Consequence2": "<<script>>v.productionDisapproval += 1; v.husbandAssertiveness += 1;<</script>>", "Response1": "Perfect. Your availability is crucial to the show. Thanks for being cooperative.", "Response2": "We're afraid that's not possible. Your wife’s privacy creates intrigue, the audience loves mystery." }, { "Day": 6, "Premise": "Your wife is invited to a social activity with staff members but you're asked to stay behind to record confessionals.", "Option1": "Let her go without questions.", "Option2": "Ask her what the activity involves before agreeing.", "Consequence1": "<<script>>v.wifeSocialCircle += 1; v.husbandIsolation += 1;<</script>>", "Consequence2": "<<script>>v.husbandSuspicion += 1; v.wifeDistance += 1;<</script>>", "Response1": "Great decision. The audience loves seeing her get along with the staff.", "Response2": "Asking too many questions might make you seem controlling on camera — just a heads-up." }, { "Day": 7, "Premise": "The production asks if you're comfortable with your wife being encouraged to be more 'expressive and open' with guests to keep the show engaging.", "Option1": "Approve the request and encourage her expressiveness.", "Option2": "Say you prefer her to remain reserved.", "Consequence1": "<<script>>v.wifeConfidence += 1; v.husbandJealousy += 1;<</script>>", "Consequence2": "<<script>>v.productionAnnoyance += 1; v.husbandControl += 1;<</script>>", "Response1": "Fantastic. The more expressive she is, the better the show performs.", "Response2": "Noted. But remember—the audience tends to prefer outgoing personalities." }, { "Day": 8, "Premise": "The production presents you with viewer polls suggesting the audience wants to see your wife interact more boldly with future visitors.", "Option1": "Accept the audience's wishes.", "Option2": "Express that you're uncomfortable with the direction.", "Consequence1": "<<script>>v.publicApproval += 1; v.husbandHelplessness += 1;<</script>>", "Consequence2": "<<script>>v.publicDisapproval += 1; v.husbandBoundaries += 1;<</script>>", "Response1": "Excellent, the viewers appreciate when their feedback is respected.", "Response2": "We understand your discomfort, but pushing boundaries is what makes this show successful." }, { "Day": 9, "Premise": "Staff members ask if they can start using the house freely, including shared spaces, even when you're trying to spend time alone with your wife.", "Option1": "Accept the shared-access rule.", "Option2": "Ask for limits on staff presence.", "Consequence1": "<<script>>v.houseInvasion += 1; v.husbandJealousy += 1;<</script>>", "Consequence2": "<<script>>v.productionPushback += 1; v.husbandControl += 1;<</script>>", "Response1": "Thank you for being flexible. This will make filming much smoother.", "Response2": "We’ll consider your request, but limited access might impact filming." }, { "Day": 10, "Premise": "The production gathers the couple for an announcement: a new man, Gustav, will be moving into your home and living with you 24 hours a day. They ask for your reaction.", "Option1": "Welcome Gustav publicly and show full support.", "Option2": "Voice your concerns about another man living with your wife full-time.", "Consequence1": "<<script>>v.gustavTrust += 1; v.husbandSubmission += 1;<</script>>", "Consequence2": "<<script>>v.gustavHostility += 1; v.husbandInsecurity += 1;<</script>>", "Response1": "Wonderful attitude! Gustav will surely appreciate your support.", "Response2": "Understandable concern—but remember, the contract allows this arrangement." } ]; <</script>>
::Mark Interview End <<setBG 1 setup.ImagePath 'cgs/tvshow/TVShowMarkInterview.png'>> <<set _dayIndex = $TVShow - 1>> <<set _entry = v.TVShowInterviewJSON[_dayIndex]>> <<if $InterviewLastChoice == 1>> <<fadetext "salmon" _entry.Response1 "30%" "60%">> <<elseif $InterviewLastChoice == 2>> <<fadetext "salmon" _entry.Response2 "30%" "60%">> <<else>> <<fadetext "red" "ERROR: No choice found." "30%" "60%">> <</if>> <!-- BUTTON 1 --> <span class="custom-button" style="top: 50%;left: 60%;"> <<button "Finish Interview">> <<goto "livingroom">> <</button>> </span>
<<setBG 1 setup.ImagePath 'cgs/mainmenu/1.png'>> <<nobr>> <!-- ===================== HTML ====================== --> <div id="main-menu-container"> <div class="mm-title">S<span>&</span>S</div> <div class="mm-buttons"> <button class="mm-btn" onclick="SugarCube.Engine.play('Intro')">New Game</button> <button class="mm-btn" onclick="SugarCube.UI.saves()">Load Game</button> <button class="mm-btn" onclick="SugarCube.Engine.play('Changelog')">Changelog</button> <button class="mm-btn" onclick="SugarCube.Engine.play('Configurations')">Configurations</button> <button class="mm-btn" onclick="window.open('https://www.patreon.com/Afeell', '_blank')">Patreon</button> <!-- 🔊 Toggle sound button --> <<if !$soundEnabled>> <<button "Enable Sounds">> <<set $soundEnabled = true>> <<goto "Main Menu">> <</button>> <<else>> <<button "Disable Sounds">> <<set $soundEnabled = false>> <<goto "Main Menu">> <</button>> <</if>> </div> </div> <!-- ====================== CSS ====================== --> <style> /* Reset possible Twine margins */ #passages { margin: 0 !important; padding: 0 !important; } /* Fullscreen flex center */ #main-menu-container { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 9999; color: white; text-align: center; background: rgba(0,0,0,0.25); /* subtle overlay */ backdrop-filter: blur(2px); } /* Title Styling */ .mm-title { font-family: 'Georgia', serif; font-size: clamp(2.2rem, 5vw, 4rem); font-weight: 300; letter-spacing: 3px; margin-bottom: 1.5em; text-shadow: 0px 0px 8px rgba(0,0,0,0.6); } .mm-title span { color: #ff2f7d; font-size: clamp(3.2rem, 1vw, 4rem); } /* Buttons container */ .mm-buttons { display: flex; flex-direction: column; gap: 1rem; width: 80%; max-width: 250px; } /* Buttons */ .mm-btn { padding: 0.9em 1em; font-size: clamp(1rem, 2vw, 1.3rem); font-family: 'Arial', sans-serif; border: none; border-radius: 4px; cursor: pointer; background: rgba(0,0,0,0.55); color: white; letter-spacing: 1px; transition: all 0.25s ease; text-transform: uppercase; backdrop-filter: blur(3px); } /* Hover effect */ .mm-btn:hover { background: rgba(255, 20, 85, 0.8); transform: translateY(-2px); box-shadow: 0 0 12px rgba(255, 20, 85, 0.4); } /* Mobile adjustments */ @media (max-width: 480px) { .mm-buttons { max-width: 200px; } .mm-btn { padding: 0.75em; } } </style> <</nobr>> <!-- ====================== JS ====================== --> <<script>> (function () { /* CREATE CONTROLLER ONLY ONCE */ if (!window.mainMenuMusic) { window.mainMenuMusic = { audio: new Audio(), playlist: [], index: 0, enabled: false, folder: setup.AudioPath + "mainmenu/", songs: [ "Secrets And Stilettos.mp3", "Birthday Bone.mp3", "Lady Of The Isle.mp3", "Up We Go.mp3", "Funeral Phalus.mp3", "Not Gay Bro.mp3", "Shared.mp3" ], /* ❱❱ Randomizer */ shuffle(arr) { for (let i = arr.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [arr[i], arr[j]] = [arr[j], arr[i]]; } return arr; }, /* ❱❱ Start playback */ start() { if (!State.variables.soundEnabled) return; if (this.enabled) return; // already running this.enabled = true; this.playlist = this.shuffle([...this.songs]); this.index = 0; window.currentMusic = this.audio; // 🔥 link global player this.playNext(); }, /* ❱❱ Stop playback */ stop() { this.enabled = false; this.audio.pause(); this.audio.src = ""; }, /* ❱❱ Play next song */ playNext() { if (!this.enabled || !State.variables.soundEnabled) { this.stop(); return; } if (this.index >= this.playlist.length) { this.playlist = this.shuffle([...this.songs]); this.index = 0; } const file = this.playlist[this.index++]; const path = this.folder + file; console.log("🎵 Now playing:", file); this.audio.src = path; /* 🔥 ALWAYS update volume dynamically */ this.audio.volume = (State.variables.masterVolume ?? 100) / 100; window.currentMusic = this.audio; // global reference this.audio.play().catch(err => console.warn("Autoplay blocked:", err) ); this.audio.onended = () => this.playNext(); } }; } /* When entering this passage: start or stop music */ if (State.variables.soundEnabled) { window.mainMenuMusic.start(); } else { window.mainMenuMusic.stop(); } })(); <</script>>
<<nobr>> <<setBG 1 setup.ImagePath 'cgs/mainmenu/1.png'>> <!-- ===================== HTML ====================== --> <div id="main-menu-container"> <div class="mm-title">Character Setup</div> <div class="input-container"> <label for="playerNameInput" class="input-label">Your Name</label> <input id="playerNameInput" class="mm-input" type="text" maxlength="20" placeholder="Player name..."> <label for="wifeNameInput" class="input-label">Wife’s Name</label> <input id="wifeNameInput" class="mm-input" type="text" maxlength="20" placeholder="Wife name..."> </div> <div class="mm-buttons"> <button class="mm-btn" onclick="saveNamesAndContinue()">Finish</button> </div> </div> <!-- ====================== CSS ====================== --> <style> /* Layout */ #passages { margin: 0 !important; padding: 0 !important; } #main-menu-container { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 9999; color: white; text-align: center; background: rgba(0,0,0,0.25); backdrop-filter: blur(2px); } /* Title */ .mm-title { font-family: 'Georgia', serif; font-size: 2.5rem; letter-spacing: 2px; margin-bottom: 1.5rem; color: white; text-shadow: 0 0 10px black; } /* Inputs */ .input-container { display: flex; flex-direction: column; gap: 1rem; width: 80%; max-width: 280px; margin-bottom: 2rem; } .input-label { font-size: 1.1rem; letter-spacing: 1px; color: #ff99c9; } .mm-input { padding: 0.7em; font-size: 1rem; border: none; border-radius: 4px; width: 100%; outline: none; color: white; background: rgba(0,0,0,0.55); backdrop-filter: blur(3px); transition: all 0.25s ease; } .mm-input:focus { background: rgba(255, 20, 85, 0.8); box-shadow: 0 0 12px rgba(255,20,85,0.4); } /* Buttons container */ .mm-buttons { display: flex; flex-direction: column; gap: 1rem; width: 80%; max-width: 250px; } /* Buttons */ .mm-btn { padding: 0.9em 1em; font-size: 1.1rem; border: none; border-radius: 4px; cursor: pointer; background: rgba(0,0,0,0.55); color: white; letter-spacing: 1px; transition: all 0.25s ease; text-transform: uppercase; } .mm-btn:hover { background: rgba(255, 20, 85, 0.8); transform: translateY(-2px); box-shadow: 0 0 12px rgba(255, 20, 85, 0.4); } </style> <</nobr>> <!-- ====================== JS ====================== --> <<script>> window.saveNamesAndContinue = function () { const pName = document.getElementById("playerNameInput").value.trim(); const wName = document.getElementById("wifeNameInput").value.trim(); // Default fallback if empty const finalPlayer = pName || "Player"; const finalWife = wName || "Wife"; // Save to SugarCube variables State.variables.playername = finalPlayer; State.variables.wifename = finalWife; // Move to next passage SugarCube.Engine.play("Dev Notes"); }; setTimeout(() => updateSoundButton(), 0); <</script>>
<<nobr>> <<setBG 1 setup.ImagePath ''>> <style> /* === CONFIG CONTAINER === */ .config-root { max-width: 850px; margin: 0 auto; padding: 1rem 1.2rem; border-radius: 12px; background: #0b0e16; color: #d9e2ff; font-family: system-ui, sans-serif; box-shadow: 0 0 20px rgba(0,0,0,0.55); height: 85vh; overflow-y: auto; overflow-x: hidden; } /* scrollbar */ .config-root::-webkit-scrollbar { width: 6px; } .config-root::-webkit-scrollbar-track { background: #11141c; } .config-root::-webkit-scrollbar-thumb { background: #4af2c4; border-radius: 4px; } /* === TITLE === */ .config-title { font-size: 1.45rem; font-weight: 700; margin-bottom: 0.4rem; } .config-sub { font-size: 0.8rem; opacity: 0.65; margin-bottom: 1.2rem; } /* === BUTTONS (same as changelog) === */ .config-btn { background: radial-gradient(circle at top left, #1a2333, #070b11); border-radius: 999px; border: 1px solid #2ce0b6; color: #e6fcff; padding: 0.45rem 1.2rem; font-size: 0.9rem; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem; margin-bottom: 0.8rem; transition: all 0.15s ease; box-shadow: 0 4px 10px rgba(0,0,0,0.6), 0 0 12px rgba(44,224,182,0.25); } .config-btn:hover { transform: translateY(-1px); background: radial-gradient(circle at top left, #233044, #0a1019); border-color: #55ffd0; box-shadow: 0 6px 14px rgba(0,0,0,0.7), 0 0 16px rgba(85,255,208,0.35); } /* === VOLUME SLIDER === */ .volume-wrapper { margin-top: 1.5rem; padding: 0.6rem; background: #131823; border-radius: 10px; border: 1px solid #2ce0b622; box-shadow: inset 0 0 12px rgba(0,0,0,0.4); } .volume-label { font-size: 0.9rem; margin-bottom: 0.4rem; opacity: 0.75; } input[type=range].volume-slider { -webkit-appearance: none; width: calc(100% - 12px); /* avoids right overflow */ margin-right: 6px; height: 8px; border-radius: 5px; background: #0e131d; outline: none; cursor: pointer; margin-top: 0.4rem; background: linear-gradient(90deg, #2ce0b6 0%, #0e131d 0%); border: 1px solid #2ce0b688; } input[type=range].volume-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 18px; height: 18px; background: #4af2c4; border-radius: 50%; box-shadow: 0 0 10px #4af2c4aa; cursor: pointer; } input[type=range].volume-slider::-moz-range-thumb { width: 18px; height: 18px; background: #4af2c4; border-radius: 50%; cursor: pointer; } /* RETURN BUTTON */ .return-container { margin-top: 1.5rem; } </style> <div class="config-root"> <div class="config-title">Configurations</div> <div class="config-sub">Adjust audio and gameplay preferences.</div> <!-- Sound toggle --> <<if !$soundEnabled>> <button class="config-btn" onclick="window.enableGameSound()"> Enable Sounds </button> <<else>> <button class="config-btn" onclick="window.disableGameSound()"> Disable Sounds </button> <</if>> <!-- Volume slider --> <div class="volume-wrapper"> <div class="volume-label">Master Volume: <span id="volume-display"></span>%</div> <input id="volume-slider" class="volume-slider" type="range" min="0" max="100" value="100"> </div> <!-- Return --> <div class="return-container"> <button class="config-btn" onclick="SugarCube.Engine.play(v.return)"> Save and Return </button> </div> </div> <</nobr>> <<script>> /* Restore scrolling only on this page */ $('html, body').css('overflow', 'auto'); $(document).one(':passageend', () => { $('html, body').css('overflow', 'hidden'); }); /* SOUND TOGGLES */ window.enableGameSound = function() { State.variables.soundEnabled = true; SugarCube.Engine.play("Configurations"); }; window.disableGameSound = function() { State.variables.soundEnabled = false; /* 🔥 Instant stop */ if (window.mainMenuMusic) window.mainMenuMusic.stop(); SugarCube.Engine.play("Configurations"); }; /* ============================ VOLUME SLIDER SYSTEM ===============================*/ $(document).one(':passagedisplay', function () { const slider = document.getElementById("volume-slider"); const display = document.getElementById("volume-display"); if (!slider || !display) return; /* Default value */ if (State.variables.masterVolume == null) { State.variables.masterVolume = 100; } slider.value = State.variables.masterVolume; display.textContent = slider.value; /* Update slider fill color */ slider.style.background = `linear-gradient(90deg, #2ce0b6 ${slider.value}%, #0e131d ${slider.value}%)`; /* When user moves the slider: update volume */ slider.addEventListener("input", () => { State.variables.masterVolume = Number(slider.value); display.textContent = slider.value; slider.style.background = `linear-gradient(90deg, #2ce0b6 ${slider.value}%, #0e131d ${slider.value}%)`; /* 🔥 REAL-TIME VOLUME UPDATE */ if (window.currentMusic) { window.currentMusic.volume = slider.value / 100; } }); }); <</script>>
<<setBG 1 setup.ImagePath ''>> <!-- 🔊 Toggle sound button --> <<if !$soundEnabled>> <<button "Enable Sounds">> <<set $soundEnabled = true>> <<goto "Test Sound">> <</button>> <<else>> <<button "Disable Sounds">> <<set $soundEnabled = false>> <<goto "Test Sound">> <</button>> <</if>> <<script>> (function () { if (window._mainMenuMusicStarted) return; if (!v.soundEnabled) return; // Only run after Enable Sounds button window._mainMenuMusicStarted = true; const folder = setup.AudioPath + "mainmenu/"; const songs = [ "Birthday Bone.mp3", "Lady Of The Isle.mp3", "Up We Go.mp3", "Jazzy.mp3" ]; let playlist = []; let index = 0; let audio = new Audio(); function shuffle(array) { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } return array; } function playNext() { // Reset list when finished if (index >= playlist.length) { playlist = shuffle([...songs]); index = 0; } const file = playlist[index++]; const path = folder + file; console.log("🎵 Now Playing:", file); audio.src = path; audio.play().catch(err => console.warn("Autoplay blocked:", err)); audio.onended = playNext; } // Start the playlist after user allowed sound playlist = shuffle([...songs]); index = 0; playNext(); })(); <</script>>
<<script>> setup.WifeSchedule = { Monday: [ { time: "00:00", location: "bedroom" }, { time: "07:30", location: "kitchen" }, { time: "09:00", location: "livingroom" }, { time: "12:15", location: "kitchen" }, { time: "14:00", location: "livingroom" }, { time: "18:45", location: "kitchen" }, { time: "21:00", location: "bathroom" }, { time: "23:15", location: "bathroom" }, { time: "23:45", location: "bedroom" } ], Tuesday: [ { time: "00:00", location: "bedroom" }, { time: "08:00", location: "kitchen" }, { time: "10:00", location: "livingroom" }, { time: "13:00", location: "kitchen" }, { time: "15:00", location: "livingroom" }, { time: "19:00", location: "bathroom" }, { time: "22:30", location: "bedroom" } ], Wednesday: [ { time: "00:00", location: "bedroom" }, { time: "07:45", location: "kitchen" }, { time: "10:30", location: "livingroom" }, { time: "14:00", location: "livingroom" }, { time: "18:00", location: "bathroom" }, { time: "22:00", location: "bedroom" } ], Thursday: [ { time: "00:00", location: "bedroom" }, { time: "08:15", location: "kitchen" }, { time: "11:00", location: "livingroom" }, { time: "13:45", location: "kitchen" }, { time: "17:30", location: "livingroom" }, { time: "21:15", location: "bathroom" }, { time: "23:00", location: "bedroom" } ], Friday: [ { time: "00:00", location: "bedroom" }, { time: "08:30", location: "kitchen" }, { time: "11:15", location: "livingroom" }, { time: "15:00", location: "livingroom" }, { time: "19:15", location: "kitchen" }, { time: "22:00", location: "bathroom" }, { time: "23:30", location: "bedroom" } ], Saturday: [ { time: "00:00", location: "bedroom" }, { time: "09:00", location: "kitchen" }, { time: "12:00", location: "livingroom" }, { time: "17:00", location: "livingroom" }, { time: "20:00", location: "bathroom" }, { time: "22:45", location: "bedroom" } ], Sunday: [ { time: "00:00", location: "bedroom" }, { time: "09:30", location: "kitchen" }, { time: "11:30", location: "livingroom" }, { time: "16:00", location: "kitchen" }, { time: "18:30", location: "livingroom" }, { time: "21:00", location: "bathroom" }, { time: "23:00", location: "bedroom" } ] }; <</script>>
<<nobr>> <<setBG 1 setup.ImagePath ''>> <!-- ===================== HTML ====================== --> <div id="main-menu-container"> <div class="mm-title">Disclaimer</div> This game contains explicit adult material intended only for mature audiences (18+).<br> <b><span style="color: yellow;">By continuing, you acknowledge and confirm that:</span></b> You are at least 18 years old (or the legal age of majority in your region).<br> This game includes themes of sexual content, fetish material, adult situations, and mature dialogue not suitable for minors.<br> All characters depicted are fictional adults, and any resemblance to real persons—living or dead—is purely coincidental.<br> All locations, scenarios, and events presented in this game are fictional and created purely for entertainment and storytelling purposes.<br> This project is presented as a legitimate artistic creation, comparable to works of literature, music, cinema, and visual arts. It is intended to be interpreted as fiction and should not be bound or limited by subjective or superficial moral judgments.<br> This game does not endorse, encourage, or condone illegal activity, abuse, exploitation, or harmful behavior of any kind.<br> Some themes may be extreme, exaggerated, or stylized for dramatic purposes. Player discretion is advised.<br> You are accessing this content voluntarily. You are responsible for complying with all local laws and regulations regarding adult media. You will not share this game with minors or individuals who do not wish to view adult content.<br> <b><span style="color: lightyellow;">If you are under 18, or if adult content is prohibited in your location, exit now.</span></b> <div class="mm-buttons"> <button class="mm-btn" onclick="SugarCube.Engine.play('Main Menu')">Click Here To Continue</button> <button id="soundBtn" class="mm-btn" onclick="v.soundEnabled = !v.soundEnabled; updateSoundButton();"> </button> </div> <span style="color: yellow;">Some of the songs are NSFW, toggle the audio ON <b>only if</b> you have headphones on or if you are alone!</span> </div> <!-- ====================== CSS ====================== --> <style> /* Reset possible Twine margins */ #passages { margin: 0 !important; padding: 0 !important; } /* Fullscreen flex center */ #main-menu-container { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 9999; color: white; text-align: center; background: rgba(0,0,0,0.25); /* subtle overlay */ backdrop-filter: blur(2px); } /* Title Styling */ .mm-title { font-family: 'Georgia', serif; font-size: clamp(2.2rem, 1.5vw, 4rem); font-weight: 300; letter-spacing: 3px; margin-bottom: 1.5em; text-shadow: 0px 0px 8px rgba(0,0,0,0.6); } .mm-title span { color: #ff2f7d; font-size: clamp(3.2rem, 1vw, 4rem); } /* Buttons container */ .mm-buttons { display: flex; flex-direction: column; gap: 1rem; width: 80%; max-width: 250px; } /* Buttons */ .mm-btn { padding: 0.9em 1em; font-size: clamp(1rem, 2vw, 1.3rem); font-family: 'Arial', sans-serif; border: none; border-radius: 4px; cursor: pointer; background: rgba(0,0,0,0.55); color: white; letter-spacing: 1px; transition: all 0.25s ease; text-transform: uppercase; backdrop-filter: blur(3px); } /* Hover effect */ .mm-btn:hover { background: rgba(255, 20, 85, 0.8); transform: translateY(-2px); box-shadow: 0 0 12px rgba(255, 20, 85, 0.4); } /* Mobile adjustments */ @media (max-width: 480px) { .mm-buttons { max-width: 200px; } .mm-btn { padding: 0.75em; } } </style> <</nobr>> <!-- ====================== JS ====================== --> <<script>> setTimeout(() => { updateSoundButton(); }, 0); <</script>>
<<setBG 1 setup.ImagePath ''>> <<nobr>> <!-- ===================== HTML ====================== --> <div id="main-menu-container"> <div class="mm-title">Dev Notes</div> <b>Version 0.0.1 represents an early development build focused on presenting the underlying systems, mechanics, and framework of the game.</b><br> Narrative progression is currently limited, but this build encourages open exploration to experience the implemented features. <br><br><div class="mm-buttons"> <button class="mm-btn" onclick="SugarCube.Engine.play('Fist Scene')">Click Here To Continue</button> </div> </div> <!-- ====================== CSS ====================== --> <style> /* Reset possible Twine margins */ #passages { margin: 0 !important; padding: 0 !important; } /* Fullscreen flex center */ #main-menu-container { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 9999; color: white; text-align: center; background: rgba(0,0,0,0.25); /* subtle overlay */ backdrop-filter: blur(2px); } /* Title Styling */ .mm-title { font-family: 'Georgia', serif; font-size: clamp(2.2rem, 1.5vw, 4rem); font-weight: 300; letter-spacing: 3px; margin-bottom: 1.5em; text-shadow: 0px 0px 8px rgba(0,0,0,0.6); } .mm-title span { color: #ff2f7d; font-size: clamp(3.2rem, 1vw, 4rem); } /* Buttons container */ .mm-buttons { display: flex; flex-direction: column; gap: 1rem; width: 80%; max-width: 250px; } /* Buttons */ .mm-btn { padding: 0.9em 1em; font-size: clamp(1rem, 2vw, 1.3rem); font-family: 'Arial', sans-serif; border: none; border-radius: 4px; cursor: pointer; background: rgba(0,0,0,0.55); color: white; letter-spacing: 1px; transition: all 0.25s ease; text-transform: uppercase; backdrop-filter: blur(3px); } /* Hover effect */ .mm-btn:hover { background: rgba(255, 20, 85, 0.8); transform: translateY(-2px); box-shadow: 0 0 12px rgba(255, 20, 85, 0.4); } /* Mobile adjustments */ @media (max-width: 480px) { .mm-buttons { max-width: 200px; } .mm-btn { padding: 0.75em; } } </style> <</nobr>> <!-- ====================== JS ====================== -->
<<setBG 1 setup.ImagePath ''>> <<pressContinue>> <<comic "MainGameIntro" "bedroom">>