<<nobr>>
<div id="SB_main">
<div id="SB_version">Version _</div>
<div id="SB_videologo">
<video muted autoplay loop>
<source src="ressources/maingui/logos/logo.webm" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
<hr>
<div id="SB_topInfo">
<div id="SB_partOfDay">
<images>
</images>
<arrow>Δ</arrow>
</div>
<div id="SB_timeDayLocation">
<div>
<name>Time</name>
<desc>_</desc>
</div>
<div>
<name>Day</name>
<desc>_</desc>
</div>
<div>
<name>Location</name>
<desc>_</desc>
</div>
</div>
</div>
<hr>
<div id="SB_playerInfo">
<div id="SB_player">
<div id="SB_playerImage">
<img src="_">
</div>
<name>_</name>
</div>
</div>
<hr>
<div class="SB_buttomAttribute">
<div id="SB_playerDominance" class="SB_playerAttribute">
<div>
<img src="ressources/maingui/attributes/dominance_icon.webp">
<qty>_</qty>
</div>
<name>Dominance</name>
</div>
<div id="SB_playerVirus" class="SB_playerAttribute">
<div>
<img src="ressources/maingui/attributes/virus_icon.webp">
<qty>_</qty>
</div>
<name>Virus</name>
</div>
</div>
<hr>
<div class="SB_buttomAttribute">
<div id="SB_playerTired" class="SB_playerAttribute">
<div>
<img src="ressources/maingui/attributes/tired_icon.webp">
<qty>_</qty>
</div>
<name>Tiredness</name>
</div>
<div id="SB_playerNutri" class="SB_playerAttribute">
<div>
<img src="ressources/maingui/attributes/nutritionalvalue.webp">
<qty>_</qty>
</div>
<name>Food</name>
</div>
</div>
<hr>
<div class="SB_buttomAttribute">
<div id="SB_playerWood" class="SB_playerAttribute SB_playerAttribute_small">
<div>
<img src="ressources/icons/I1MA1.webp">
<qty>_</qty>
</div>
<name>Wood</name>
</div>
<div id="SB_playerMetal" class="SB_playerAttribute SB_playerAttribute_small">
<div>
<img src="ressources/icons/I1MA2.webp">
<qty>_</qty>
</div>
<name>Metal</name>
</div>
<div id="SB_playerPlastic" class="SB_playerAttribute SB_playerAttribute_small">
<div>
<img src="ressources/icons/I1MA3.webp">
<qty>_</qty>
</div>
<name>Plastic</name>
</div>
</div>
<hr style="margin-bottom: auto;">
<div id="SB_buttomButtons">
<div id="SB_inventory">
<div><img src="ressources/maingui/sidebar/backpack.webp"></div>
<name>Inventory</name>
</div>
<div id="SB_cheats">
<div><img src="ressources/icons/13A4.webp"></div>
<name>Cheats</name>
</div>
<div id="SB_save">
<div><img src="ressources/maingui/sidebar/save.svg"></div>
<name>Save</name>
</div>
</div>
<hr>
<div id="SB_linksCont">
<img src="ressources/maingui/medias/patreon.webp" onclick="window.open('https://www.patreon.com/FOCGames807')">
<img src="ressources/maingui/medias/ko-fi.webp" onclick="window.open('https://subscribestar.adult/fap-online-creation')">
<!-- img src="ressources/maingui/medias/buymeacoffee.webp" onclick="window.open('https://www.buymeacoffee.com/faponlinecreation')" -->
<img src="ressources/maingui/medias/itchio.webp" onclick="window.open('https://fap-online-creation.itch.io/the-fapocalypse')" style="filter: invert(1)">
<img src="ressources/maingui/medias/discord.webp" onclick="window.open('https://discord.gg/Vuray76pS8','_blank')">
</div>
</div>
<!-- OVERLAYS START -->
<div id="ScreenOverlayCont">
<!--div id="quest" class="ScreenOverlay ScreenOverlayActiveVisibility ScreenOverlayActiveOpacity"></div>
<div id="lowFood" class="ScreenOverlay"></div>
<div id="achievement" class="ScreenOverlay"></div-->
</div>
<div id="ScreenOverlayContPopup">
<!--top center-->
<div id="achievementPopUp" class="ScreenOverlayPopUp" style="justify-content:flex-start; align-items:center;">
</div>
<!--buttom right-->
<div id="WarningPopUp" class="ScreenOverlayPopUp" style="justify-content:flex-end; align-items:flex-end;">
<!--div class="WarningPopUpDiv">
<div class="WarningPopUpDivTitle">WARNING</div>
<div class="WarningPopUpDivDesc">LOW FOOD LEVEL</div>
</div-->
</div>
<!--buttom left-->
<div id="RewardPopUp" class="ScreenOverlayPopUp" style="justify-content:flex-end; align-items:flex-start;">
<div id="RewardPopUpDiv" style="display: none;">
<!--div class="RewardPopUpDivReward">
<div class="RewardPopUpDivRewardimg">
<img src="ressources/maingui/ui/angela.webp">
</div>
<div class="RewardPopUpDivRewardDescription">
This is the reward description
</div>
</div-->
</div>
</div>
<!--center-->
<div id="BigRewardPopUp" class="ScreenOverlayPopUp">
<div class="BigReward">
<name>REWARDS</name>
<rewards>
<!-- item example -->
<!--reward class="">
<overlay></overlay>
<underlay></underlay>
<img src="ressources/icons/I1EA5.webp">
<info>
<left>
<qty>10x</qty>
<desc>This is the item description that is very long and will be cut if it is too long.</desc>
</left>
<hr>
<middle>
<top>
<rarity>Mythical</rarity>
<tier>Tier 1</tier>
</top>
<name>wand-ering fantasy</name>
<qty>10x</qty>
</middle>
<hr>
<bonusList class="hideScrollBar">
<boost>
<img src="ressources/maingui/attributes/dominance_icon.webp">
<div>
<name>Dominance</name>
<div>Bonus: <qty class="set">+1</qty>
<qty class="get">+1</qty>
</div>
</div>
</boost>
</bonusList>
</info>
</reward-->
<!-- attribute example -->
<!--reward class="hovered">
<overlay></overlay>
<img src="ressources/icons/I1EA5.webp">
<info>
<left>
<qty>10x</qty>
</left>
<middle>
<name>Dominance</name>
<qty>10x</qty>
</middle>
<bonusList class="hideScrollBar">
</bonusList>
</info>
</reward-->
</rewards>
</div>
<claim onclick="BPopupR_claimButton()">CLAIM</claim>
</div>
<!-- END OF CONTENT POPUP -->
<!--center-->
<div id="EOC_bigMain" class="ScreenOverlayPopUp">
<main class="EOC_main">
<div class="EOC_closeButton" onclick="EOC_exit();">
<img src="ressources/icons/13A8.webp">
</div>
<section class="EOC_upperPart">
<div class="EOC_backgrImg">
<img src="">
</div>
<div class="EOC_title">
End of <div class="EOC_title_name">_</div>'s Content
</div>
<div class="EOC_textcontent">
<p>Congratulations! You've reached the end of currently available
content for Cherie. Stay tuned for future updates and support
us to continue your journey with your loving mother!</p>
</div>
<div class="EOC_supportus">
<p>Support The Fapocalypse on Patreon or SubscribeStar. Your
contribution let us dedicate more time to crafting your
ultimate adult gaming experience. Enjoying the game? Leave
a positive review on F95zone to help others discover The Fapocalypse.</p>
</div>
<div class="EOC_iconsSubs">
<p><a href="https://www.patreon.com/FOCGames807" target="_blank">
<img src="./ressources/maingui/medias/patreon.webp">
</a></p>
<p><a href="https://subscribestar.adult/fap-online-creation" target="_blank">
<img src="./ressources/maingui/medias/ko-fi.webp">
</a></p>
<p><a href="https://f95zone.to/threads/144115/" target="_blank">
<img src="./ressources/maingui/medias/f95zone.webp">
</a></p>
</div>
</section>
<section class="EOC_midPart">
<img id="EOC_AVA" src="./ressources/icons/EOCavapresent.webp">
<div class="EOC_title2">
Spicy Bonus Scenes
</div>
<div class="EOC_placeholder"></div>
<div class="EOC_separation">
<div class="EOC_textcontent2">
<p>Desire to merge with the goddess of the virus in ways that transcend mortal understanding?
I can make reality bend to your will... for a cost. New cosmic ecstasies await with every
update. Shall we ascend together?</p>
<img src="./ressources/icons/EOCbubble.webp">
</div>
<div class="EOC_code">
<textarea placeholder="Enter your Bonus Scenes Code" cols="10" maxlength="10"></textarea>
</div>
<div class="EOC_indicator">
<div id="hero" class="EOC_rankLocked">
<h1>HERO</h1>
<img src="./ressources/maingui/ranks/rank3.webp">
<p>NORMAL</p>
</div>
<div id="executioner" class="EOC_rankLocked">
<h1>EXECUTIONER</h1>
<img src="./ressources/maingui/ranks/rank4.webp">
<p>CORRUPTION</p>
</div>
<div id="hoe" class="EOC_rankLocked">
<h1>HOE</h1>
<img src="./ressources/maingui/ranks/rank5.webp">
<p>RAPE</p>
</div>
</div>
</div>
</section>
<div class="EOC_lowerPart_title"></div>
<section class="EOC_lowerPart">
<div class="button-group">
<button class="U_020 EOC_lockedPreview">
<img src="">
<div class="EOC_ruban">
<p>0.2.0</p>
</div>
</button>
<img src="./ressources/icons/EOCroadmap.webp">
<button class="U_030 EOC_lockedPreview">
<img src="">
<div class="EOC_ruban">
<p>0.3.0</p>
</div>
</button>
<img src="./ressources/icons/EOCroadmap2.webp">
</div>
<div class="button-group">
<button class="U_040 EOC_lockedPreview">
<img src="">
<div class="EOC_ruban">
<p>0.4.0</p>
</div>
</button>
<img src="./ressources/icons/EOCroadmap.webp">
</div>
<div class="button-group">
<button class="U_050 EOC_lockedPreview">
<img src="">
<div class="EOC_ruban">
<p>0.5.0</p>
</div>
</button>
<img src="./ressources/icons/EOCroadmap2.webp">
<button class="U_060 EOC_lockedPreview">
<img src="">
<div class="EOC_ruban">
<p>0.6.0</p>
</div>
</button>
</div>
</section>
</main>
</div>
<!-- BONUS SCENES BUTTON -->
<div id="BSB_bigMain" class="ScreenOverlayPopUp">
<main class="BSB_main">
<div class="BSB_closeButton" onclick="BSB_exit();">
<img src="ressources/icons/13A8.webp">
</div>
<section class="BSB_midPart">
<div class="EOC_backgrImg">
<img src="">
</div>
<img id="EOC_AVA" src="./ressources/icons/EOCavapresent.webp">
<div class="EOC_title2">
<div class="EOC_title_name">_</div>'s Spicy Bonus Scenes
</div>
<div class="EOC_placeholder"></div>
<div class="EOC_separation">
<div class="EOC_textcontent2">
<p>Desire to merge with the goddess of the virus in ways that transcend mortal understanding?
I can make reality bend to your will... for a cost. New cosmic ecstasies await with every
update. Shall we ascend together?</p>
<img src="./ressources/icons/EOCbubble.webp">
</div>
<div class="EOC_code">
<textarea placeholder="Enter your Bonus Scenes Code" cols="10" maxlength="10"></textarea>
</div>
<div class="EOC_indicator">
<div id="hero" class="EOC_rankLocked">
<h1>HERO</h1>
<img src="./ressources/maingui/ranks/rank3.webp">
<p>NORMAL</p>
</div>
<div id="executioner" class="EOC_rankLocked">
<h1>EXECUTIONER</h1>
<img src="./ressources/maingui/ranks/rank4.webp">
<p>CORRUPTION</p>
</div>
<div id="hoe" class="EOC_rankLocked">
<h1>HOE</h1>
<img src="./ressources/maingui/ranks/rank5.webp">
<p>RAPE</p>
</div>
</div>
<div class="BSB_iconsSubs">
<p><a href="https://www.patreon.com/FOCGames807" target="_blank">
<img src="./ressources/maingui/medias/patreon.webp">
</a></p>
<p><a href="https://subscribestar.adult/fap-online-creation" target="_blank">
<img src="./ressources/maingui/medias/ko-fi.webp">
</a></p>
</div>
</div>
</section>
<div class="EOC_lowerPart_title"></div>
<section class="EOC_lowerPart">
<div class="button-group">
<button class="U_020 EOC_lockedPreview">
<img src="">
<div class="EOC_ruban">
<p>0.2.0</p>
</div>
</button>
<img src="./ressources/icons/EOCroadmap.webp">
<button class="U_030 EOC_lockedPreview">
<img src="">
<div class="EOC_ruban">
<p>0.3.0</p>
</div>
</button>
<img src="./ressources/icons/EOCroadmap2.webp">
</div>
<div class="button-group">
<button class="U_040 EOC_lockedPreview">
<img src="">
<div class="EOC_ruban">
<p>0.4.0</p>
</div>
</button>
<img src="./ressources/icons/EOCroadmap.webp">
</div>
<div class="button-group">
<button class="U_050 EOC_lockedPreview">
<img src="">
<div class="EOC_ruban">
<p>0.5.0</p>
</div>
</button>
<img src="./ressources/icons/EOCroadmap2.webp">
<button class="U_060 EOC_lockedPreview">
<img src="">
<div class="EOC_ruban">
<p>0.6.0</p>
</div>
</button>
</div>
</section>
</main>
</div>
<!-- BONUS SCENES BUTTON -->
<div id="MRKT_streakPopup" class="ScreenOverlayPopUp">
<div class="MRKTpopup show" id="MRKTstreak-popup">
<h3>Streak Status</h3>
<div class="MRKTstreak-popup-stats">
<img src="ressources/maingui/market/streak.png">
<div class="MRKTstreak-popup-stats_streak">60</div>
<img src="ressources/maingui/market/coin.png">
<div class="MRKTstreak-popup-stats_coins">180</div>
</div>
<p id="MRKTstreak-message">-message-</p>
<button onclick="accessAngela('market'); MRKT_streakPopupExit()">Market</button>
<div class="MRKT_exit" onclick="MRKT_streakPopupExit()">x</div>
</div>
</div>
<!--center-->
<div id="RoadMapPopUp" class="ScreenOverlayPopUp">
<exit onclick="RoadM_exit()">EXIT</exit>
<div class="RoadMapPopUp">
<left>
<div class="nameCont">
<div class="imgCont">
<img src="ressources/maingui/attributes/lust_icon.webp">
</div>
<div class="name">TEST</div>
</div>
<div class="meter"></div>
<div class="phase">
<!-- <img src="ressources/maingui/sexuals/beginning.webp">
<name>Beginning</name> -->
</div>
</left>
<Rmap>
<!--phase nextLocked right>
<corner>
<div></div>
</corner>
<bobble>
<div>
TEST
</div>
</bobble>
</phase-->
</Rmap>
<right>
<div>
<div class="arrowCont"><arrow></arrow></div>
<div class="imageCont"><img src="ressources/maingui/logos/logo3.webp"></div>
<div class="name">$GameVersionAbsolute<br>LIMIT</div>
</div>
</right>
</div>
</div>
</div>
<div id="ScreenOverlayContPerma">
<div id="overlayAngelaButton">
<img src="ressources/icons/13A21.webp">
</div>
<!--div id="overlayMapButton">
<img src="ressources/maingui/maps/map.webp">
</div-->
<div id="overlayFilter" style="display: none;"></div>
</div>
<!-- over the sidebar -->
<div id="ScreenOverlayContPermaOver">
<div id="pauWarning">
<div class="pauInfoText"></div>
<div class="pauText">Game Paused</div>
</div>
</div>
<div id="mouseFollowerCont">
<arrow></arrow>
<div></div>
</div>
<!-- OVERLAYS END -->
<</nobr>>\
<style>
/* set dynamicallly */
/* see (big_reward_popup.js) - BPopupR_setupCss */
</style>\
<script>
(() => {
// ----------------------- Side Bar -----------------------
function SB_setVersion() {
const version = document.getElementById('SB_version');
version.innerHTML = `Early Alpha - ${gameData.GameVersionAbsolute}`;
}
window.SB_setupPartOfDayIllustration = () => {
const container = document.getElementById('SB_partOfDay').querySelector('images');
const imgIndexPerPartOfDay = {
"morning": 3,
"afternoon": 0,
"evening": 1,
"night": 2,
}
container.innerHTML = `
<img src="ressources/maingui/sidebar/morning.webp">
<img src="ressources/maingui/sidebar/afternoon.webp">
<img src="ressources/maingui/sidebar/evening.webp">
<img src="ressources/maingui/sidebar/night.webp">`;
let images = container.querySelectorAll('img');
const numPeriod = images.length;
const partOfDayKey = SV.gameTime.partOfDayKey;
const currentImgIndex = imgIndexPerPartOfDay[partOfDayKey];
for (let i = 1; i < numPeriod; i++) {
container.appendChild(images[(i + currentImgIndex) % numPeriod]);
}
images = container.querySelectorAll('img');
images[0].className = 'side';
images[1].className = 'active';
images[2].className = 'side';
};
window.SB_advancePartOfDayIllustration = () => {
const container = document.getElementById('SB_partOfDay').querySelector('images');
const images = container.querySelectorAll('img');
images[0].addEventListener('transitionend', e => {
container.appendChild(images[0]);
}, { once: true });
images[0].className = '';
images[1].className = 'side';
images[2].className = 'active';
images[3].className = 'side';
};
function SB_setGeneralInfo() {
const [time, day, location] = document.getElementById('SB_timeDayLocation').querySelectorAll('desc');
time.innerHTML = SV.gameTime.partOfDay;
day.innerHTML = SV.gameTime.day;
location.innerHTML = SV.section.currentSectionName;
}
function SB_setPlayerImage() {
const SB_player = document.getElementById('SB_player');
const SB_playerImage = SB_player.querySelector('#SB_playerImage > img');
const SB_playerName = SB_player.querySelector('name');
//const imageIndex = SV.characters.mc.image_set;
const image = getCharacterImg('mc');
const name = SV.characters.mc.name;
SB_playerImage.src = image;
SB_playerName.innerHTML = name;
}
function SB_setupAttribute() {
const SB_playerAttribute = document.querySelectorAll('.SB_playerAttribute');
const SB_info = {
SB_playerDominance: {
title : "Current Dominance"
},
SB_playerVirus: {
title : "Current Virus",
desc : "Maximun virus is 100."
},
SB_playerTired: {
title : "Current Tiredness",
desc : "Maximun tiredness is 20."
},
SB_playerNutri: {
title : "Current Food",
desc : "The total amount of food in the fridge."
}
}
for (let attributeId in SB_info) {
let attributeDiv = document.getElementById(attributeId);
let attributeDivDiv = attributeDiv.querySelector('div');
attributeDivDiv.style.cursor = "help";
attributeDivDiv.addEventListener('click', e => mouseFollowerCreateInfo([SB_info[attributeId]], e));
attributeDivDiv.addEventListener('mouseout', () => mouseFollowerRemoveInfo());
}
}
function SB_setAttribute() {
const [SB_playerDominance, SB_playerVirus, SB_playerTired, SB_playerNutri,
SB_playerWood, SB_playerMetal, SB_playerPlastic] = document.querySelectorAll('.SB_playerAttribute');
//debugger;
SB_playerDominance.querySelector('qty').innerHTML = num_abreviation(modVariable("get","stat","dominance"));
SB_playerVirus.querySelector('qty').innerHTML = num_abreviation(SV.stats.virus);
SB_playerTired.querySelector('qty').innerHTML = num_abreviation(SV.stats.tiredness);
SB_playerNutri.querySelector('qty').innerHTML = num_abreviation(SV.food.currentStock);
SB_playerWood.querySelector('qty').innerHTML = num_abreviation(modVariable("get","item","wood"));
SB_playerMetal.querySelector('qty').innerHTML = num_abreviation(modVariable("get","item","metal"));
SB_playerPlastic.querySelector('qty').innerHTML = num_abreviation(modVariable("get","item","plastic"));
if (SV.stats.virus > 80) {
SB_playerVirus.setAttribute('danger', '');
} else SB_playerVirus.removeAttribute('danger');
if (SV.stats.tiredness > 18) {
SB_playerTired.setAttribute('danger', '');
} else SB_playerTired.removeAttribute('danger');
if (SV.food.currentStock < 2) {
SB_playerNutri.setAttribute('danger', '');
} else SB_playerNutri.removeAttribute('danger');
}
function SB_setupButtomButtons() {
const [SB_inventory, SB_cheats, SB_save] = document.getElementById('SB_buttomButtons').children;
SB_inventory.onclick = () => accessInventory("equipment");
//SB_cheats.onclick = () => accessAngela_cheats();
SB_cheats.onclick = () => accessAngela('cheats');
SB_save.onclick = SugarCube.UI.saves;
}
function SB_setButtomButtons() {
const [SB_inventory, SB_cheats, SB_save] = document.getElementById('SB_buttomButtons').children;
if (SV.gui_interface.inventoryButtonEnable) {
SB_inventory.classList.remove('disabled');
SB_cheats.classList.remove('disabled');
} else {
SB_inventory.classList.add('disabled');
SB_cheats.classList.add('disabled');
}
}
// ----------------------- Overlays -----------------------
function SB_setupOverlays() {
//const ScreenOverlayCont = document.getElementById('ScreenOverlayCont');
//const ScreenOverlayContPopup = document.getElementById('ScreenOverlayContPopup');
//const ScreenOverlayContPerma = document.getElementById('ScreenOverlayContPerma');
const overlayAngelaButton = document.getElementById('overlayAngelaButton');
const overlayMapButton = document.getElementById('overlayMapButton');
overlayAngelaButton.onclick = () => {accessAngela()}
//overlayMapButton.onclick = () => {accessMap()}
}
function SB_setOverlays() {
//ScreenOverlayCont = document.getElementById('ScreenOverlayCont');
//ScreenOverlayContPopup = document.getElementById('ScreenOverlayContPopup');
//ScreenOverlayContPerma = document.getElementById('ScreenOverlayContPerma');
const overlayAngelaButton = document.getElementById('overlayAngelaButton');
if (SV.gui_interface.angelaButtonEnable) {
overlayAngelaButton.style.display = "block";
} else {
overlayAngelaButton.style.display = "none";
}
/*overlayMapButton = document.getElementById('overlayMapButton');
if (SV.gui_interface.mapButtonEnable) {
overlayMapButton.style.display = "block";
} else {
overlayMapButton.style.display = "none";
}*/
}
function SB_removeIndicators() {
document.getElementById('mainRoadmapIndicator')?.remove();
document.getElementById('scenePhaseIndicator')?.remove();
}
/**
* @param {object} overlayElem The overlay element to append
* @param {object} buttonInfos [{text: "button text", onclick: function() {console.log("button clicked");}]
* @param {string} overlayId (optional) id to not have multiple overlay.
*/
window.appendOverlay = function (overlayElem, buttonInfos, overlayId) {
if (!overlayElem) { throw new Error(`appendOverlay: overlayElem is undefined`); }
var overlayCont = document.getElementById('ScreenOverlayCont');
if (!overlayCont) {
return console.error(`appendOverlay: ScreenOverlayCont not found`);
}
if (overlayId) {
if (document.getElementById(`${overlayId}`)) {
return console.warn(`appendOverlay: overlayId "${overlayId}" already exists`);
} else {
overlayElem.id = overlayId;
}
}
let overlay = document.createElement('div');
overlay.classList.add('ScreenOverlay');
if (typeof overlayElem === 'string' || overlayElem instanceof String) {
overlay.innerHTML = overlayElem; //if string, set innerHTML
} else {
overlay.appendChild(overlayElem); //if not string, append child
}
let exitButtonCont = document.createElement('div');
exitButtonCont.classList.add('ScreenOverlayExitButtonCont');
if (buttonInfos && Array.isArray(buttonInfos) && buttonInfos.length > 0) {
buttonInfos.forEach(buttonInfo => {
let exitButton = document.createElement('div');
exitButton.classList.add('ScreenOverlayExitButton');
exitButton.innerHTML = buttonInfo.text || "OK";
exitButton.onclick = buttonInfo.onclick;
exitButtonCont.appendChild(exitButton);
exitButton.addEventListener('click', () => {removeOverlay(overlay)});
});
} else {
let exitButton = document.createElement('div');
exitButton.classList.add('ScreenOverlayExitButton');
exitButton.innerHTML = "OK";
exitButton.onclick = () => removeOverlay(overlay);
exitButtonCont.appendChild(exitButton);
exitButton.addEventListener('click', () => {removeOverlay(overlay)});
}
// var exitButton = document.createElement('div')
// exitButton.classList.add('ScreenOverlayExitButton');
// exitButton.innerHTML = "OK"; //may be overwritten by buttonInfo
// if (buttonInfo) {
// if (buttonInfo.text) { exitButton.innerHTML = buttonInfo.text; }
// if (buttonInfo.onclick) { exitButton.addEventListener('click', buttonInfo.onclick); }
// }
overlay.appendChild(exitButtonCont);
overlay.classList.add('ScreenOverlayActiveVisibility');
overlay.classList.add('ScreenOverlayActiveOpacity');
overlayCont.appendChild(overlay);
};
function appendOverlay_WipStructure(options) {
// options.description (semi optional)
// options.description2 (optional)
// options.overlayId (optional)
// options.withSupport (optional)
// options.buttonInfos (optional)
let WipPopupDiv = document.createElement('div');
WipPopupDiv.classList.add('WipPopupDiv');
if (options.description) {
let descriptionDiv = document.createElement('desc');
descriptionDiv.innerHTML = options.description;
WipPopupDiv.appendChild(descriptionDiv);
}
if (options.description2) {
let descriptionDiv = document.createElement('desc2');
descriptionDiv.innerHTML = options.description2;
WipPopupDiv.appendChild(descriptionDiv);
}
if (options.withSupport) {
let supportDiv = document.createElement('support');
let subscribestarImg = document.createElement('img');
subscribestarImg.src = "ressources/maingui/medias/ko-fi.webp";
subscribestarImg.onclick = () => { window.open('https://subscribestar.adult/fap-online-creation', '_blank'); }
let patreonImg = document.createElement('img');
patreonImg.src = "ressources/maingui/medias/patreon.webp";
patreonImg.onclick = () => { window.open('https://www.patreon.com/FOCGames807', '_blank'); }
let supportMiddleText = document.createElement('div');
supportMiddleText.innerHTML = "Support us";
supportDiv.appendChild(subscribestarImg);
supportDiv.appendChild(supportMiddleText);
supportDiv.appendChild(patreonImg);
WipPopupDiv.appendChild(supportDiv);
}
appendOverlay(WipPopupDiv, options.buttonInfos, options.overlayId);
}
window.appendWipWarning = () => {
appendOverlay_WipStructure({
description: "This feature is still in development",
overlayId: "overlay_WipWarning",
withSupport: true
});
};
window.appendPrologueWarning = () => {
appendOverlay_WipStructure({
description: "You cannot access this in the prologue!",
overlayId: "overlay_PrologueWarning"
});
};
window.appendPrologueRedo = () => {
appendOverlay_WipStructure({
description: "You already did this, move to the next step.",
overlayId: "overlay_PrologueRedo"
});
};
window.appendNotReadyWarning = () => {
appendOverlay_WipStructure({
description: "You aren't ready to go there yet.",
overlayId: "overlay_NotReadyWarning"
});
};
window.appendAlreadySeen = () => {
appendOverlay_WipStructure({
description: "You already saw this scene.",
overlayId: "overlay_AlreadySeen"
});
};
window.appendRequirementsNotMet = () => {
appendOverlay_WipStructure({
description: "Requirements not met.",
overlayId: "overlay_RequirementsNotMet",
withSupport: true
});
};
window.appendVirusFirstWarning = () => {
appendOverlay_WipStructure({
description2: `
Your virus concentration is reaching dangerous levels!<br>
<ul>
<li>At 100% virus level, it's GAME OVER.</li>
<li>Masturbate in your room to reset virus to 0%.</li>
<li>Use D-Root from inventory to manage levels while exploring.</li>
<li>Find D-Root through item searches, fights, and gathering.</li>
</ul>
Maintain control or risk losing yourself to the virus!
`,
overlayId: "overlay_VirusFirstWarning"
});
};
window.appendDialogEndWarning = (callBack) => {
appendOverlay_WipStructure({
//description: "Save before continuing!",
description: "Saving is highly recommended before continuing!",
description2: "This is a critical choice",
overlayId: "overlay_DialogAltEnding",
buttonInfos: [
{text: "Go Back"},
{text: "Continue", onclick: callBack}
]
});
}
/**
* @param {string} overlayType (optional) The type of the overlay to remove
* @param {string} key (optional) The key of the overlay to remove
* @description If no overlayType is provided, all overlays are removed
*/
function removeOverlay(overlay) {
var overlayCont = document.getElementById('ScreenOverlayCont');
if (!overlayCont) { throw new Error(`removeOverlay: ScreenOverlayCont not found`); }
if (overlay) {
overlay.classList.remove('ScreenOverlayActiveOpacity');
setTimeout(function () {
overlay.remove();
}, 500);
} else {
overlayCont.innerHTML = "";
}
}
/**
* @note Externally/Internally called
* @brief Red buttom right Warning popup
* @param {String} warningTitle
* @param {String} warningText
*/
window.createWarning = (warningTitle, warningText) => {
var stayTime = 7000; //ms
var fadeOutTime = 1000; //ms
var OverlayElem = document.getElementById('WarningPopUp');
if (!OverlayElem) { throw new Error(`createWarning: WarningPopUp overlay not found`); }
var warningElem = document.createElement('div');
warningElem.classList.add('WarningPopUpDiv');
var warningTitleElem = document.createElement('div');
warningTitleElem.classList.add('WarningPopUpDivTitle');
warningTitleElem.innerHTML = warningTitle;
var warningTextElem = document.createElement('div');
warningTextElem.classList.add('WarningPopUpDivDesc');
warningTextElem.innerHTML = warningText;
warningElem.appendChild(warningTitleElem);
warningElem.appendChild(warningTextElem);
//after stayTime, add: animation: WarningPopUpDivFadeOut ${fadeOutTime}ms forwards;
//after stayTime + fadeOutTime, remove the element
OverlayElem.appendChild(warningElem);
setTimeout(function () {
warningElem.style.animation = `WarningPopUpDivFadeOut ${fadeOutTime}ms forwards`;
setTimeout(function () {
warningElem.remove();
}, fadeOutTime);
}, stayTime);
};
window.createFloatingMouseNotif = (event, desc) => {
var ScreenOverlayContPopup = document.getElementById('ScreenOverlayContPopup');
if (!event) { throw new Error(`floatingMouseNotif: event is undefined`); }
if (!desc) { throw new Error(`floatingMouseNotif: desc is undefined`); }
if (!ScreenOverlayContPopup) {
return console.warn(`floatingMouseNotif: ScreenOverlayContPopup is null`);
}
console.log("floatingMouseNotif");
var mouseNotifElem = document.createElement('div');
mouseNotifElem.classList.add('floatingMouseNotif');
mouseNotifElem.innerHTML = desc;
ScreenOverlayContPopup.appendChild(mouseNotifElem);
var height = mouseNotifElem.offsetHeight;
mouseNotifElem.style.top = `${event.clientY - height}px`;
mouseNotifElem.style.left = `${event.clientX}px`;
console.log(`floatingMouseNotif - mouseNotifElem: ${mouseNotifElem}`);
setTimeout(function () {
mouseNotifElem.remove();
}, 4000); //see .floatingMouseNotif animation
};
window.checkStartWarning = () => {
//read cookie if warning was already shown. key: "startWarning"
//if cookie is not set, create warning
//if cookie is set, do nothing
if (window.localStorage.getItem('startWarning') === null) { //if cookie is not set
var warningElem = document.createElement('div');
warningElem.classList.add('startWarning');
warningElem.innerHTML = `
<header>
<img src="ressources/maingui/others/18warning.webp">
Warning
<img src="ressources/maingui/others/18warning.webp">
</header>
<desc>
Please read the following information carefully before proceeding:<br>
<ul>
<li>By clicking "Accept", you confirm that <u>you are at least 18 years of age</u>. This experience may contain mature themes, including sexual content, nudity, strong language, and graphic violence. Viewer discretion is strongly advised.</li>
<li><u>All characters</u> depicted in this game are <u>over the age of 18</u>.</li>
<li><u>No real porn or real people are used in these fictional scenarios. Players may also choose their own unique relationships with the characters</u>.</li>
<li>This website utilizes <u>cookies</u> to enhance your experience, maintain your session, and <u>save your progress</u>.</li>
<li>By selecting "Accept," you acknowledge that you have read, understood, and accepted the terms outlined above.</li>
</ul>
</desc>`;
var buttonInfo = [{
text: "Accept",
onclick: function () {
window.localStorage.setItem('startWarning', true);
warningElem.remove();
}
}];
appendOverlay(warningElem, buttonInfo);
}
};
(window.checkPauWarning = () => {
let pauWarning = document.getElementById('pauWarning');
if (!pauWarning) return console.error(`checkPauWarning: pauWarning not found`);
SV.CCW1counter = SV.CCW1counter ?? 0;
window.CCW1 = window.CCW1 ?? 0;
window.CCW1_prev = window.CCW1_prev ?? 0;
window.SVcopy = window.SVcopy ?? JSON.stringify(SV); //reset copy
if (window.CCW1_prev === 0 && window.CCW1 === 1) {
pauWarning.style.display = "flex";
window.SVcopy = JSON.stringify(SV);
}
if (window.CCW1 === 1) {
if (window.SVcopy !== JSON.stringify(SV)) {
window.CCW1 = 2;
}
}
if (window.CCW1_prev > 0 && window.CCW1 === 0) {
pauWarning.style.display = "none";
pauWarning.querySelectorAll('.art').forEach(e => e.remove());
pauWarning.querySelectorAll('br').forEach(e => e.remove());
let SVcopyObj = JSON.parse(window.SVcopy);
for (let key in SVcopyObj) {
SV[key] = SVcopyObj[key];
}
//SV.CCW1counter++;
}
if (SV.CCW1counter > 0) $('.pauInfoText').text(`tried to cheat: ${SV.CCW1counter} time` + (SV.CCW1counter > 1 ? 's' : ''));
if (window.CCW1_prev === 1 && window.CCW1 === 2) {
SV.CCW1counter++;
$('#pauWarning').wiki(`
<<type 30ms none class "art">>
Hello "Cheater", or should we say "Cheaper"
<</type>>
`)
$('#pauWarning').wiki(`
<<type 10ms start 2s none class "art">>
⠀⠀⠀⡯⡯⡾⠝⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢊⠘⡮⣣⠪⠢⡑⡌
⠀⠀⠀⠟⠝⠈⠀⠀⠀⠡⠀⠠⢈⠠⢐⢠⢂⢔⣐⢄⡂⢔⠀⡁⢉⠸⢨⢑⠕⡌
⠀⠀⡀⠁⠀⠀⠀⡀⢂⠡⠈⡔⣕⢮⣳⢯⣿⣻⣟⣯⣯⢷⣫⣆⡂⠀⠀⢐⠑⡌
⢀⠠⠐⠈⠀⢀⢂⠢⡂⠕⡁⣝⢮⣳⢽⡽⣾⣻⣿⣯⡯⣟⣞⢾⢜⢆⠀⡀⠀⠪
⣬⠂⠀⠀⢀⢂⢪⠨⢂⠥⣺⡪⣗⢗⣽⢽⡯⣿⣽⣷⢿⡽⡾⡽⣝⢎⠀⠀⠀⢡
⣿⠀⠀⠀⢂⠢⢂⢥⢱⡹⣪⢞⡵⣻⡪⡯⡯⣟⡾⣿⣻⡽⣯⡻⣪⠧⠑⠀⠁⢐
⣿⠀⠀⠀⠢⢑⠠⠑⠕⡝⡎⡗⡝⡎⣞⢽⡹⣕⢯⢻⠹⡹⢚⠝⡷⡽⡨⠀⠀⢔
⣿⡯⠀⢈⠈⢄⠂⠂⠐⠀⠌⠠⢑⠱⡱⡱⡑⢔⠁⠀⡀⠐⠐⠐⡡⡹⣪⠀⠀⢘
⣿⣽⠀⡀⡊⠀⠐⠨⠈⡁⠂⢈⠠⡱⡽⣷⡑⠁⠠⠑⠀⢉⢇⣤⢘⣪⢽⠀⢌⢎
⣿⢾⠀⢌⠌⠀⡁⠢⠂⠐⡀⠀⢀⢳⢽⣽⡺⣨⢄⣑⢉⢃⢭⡲⣕⡭⣹⠠⢐⢗
⣿⡗⠀⠢⠡⡱⡸⣔⢵⢱⢸⠈⠀⡪⣳⣳⢹⢜⡵⣱⢱⡱⣳⡹⣵⣻⢔⢅⢬⡷
⣷⡇⡂⠡⡑⢕⢕⠕⡑⠡⢂⢊⢐⢕⡝⡮⡧⡳⣝⢴⡐⣁⠃⡫⡒⣕⢏⡮⣷⡟
⣷⣻⣅⠑⢌⠢⠁⢐⠠⠑⡐⠐⠌⡪⠮⡫⠪⡪⡪⣺⢸⠰⠡⠠⠐⢱⠨⡪⡪⡰
⣯⢷⣟⣇⡂⡂⡌⡀⠀⠁⡂⠅⠂⠀⡑⡄⢇⠇⢝⡨⡠⡁⢐⠠⢀⢪⡐⡜⡪⡊
⣿⢽⡾⢹⡄⠕⡅⢇⠂⠑⣴⡬⣬⣬⣆⢮⣦⣷⣵⣷⡗⢃⢮⠱⡸⢰⢱⢸⢨⢌
⣯⢯⣟⠸⣳⡅⠜⠔⡌⡐⠈⠻⠟⣿⢿⣿⣿⠿⡻⣃⠢⣱⡳⡱⡩⢢⠣⡃⠢⠁
⡯⣟⣞⡇⡿⣽⡪⡘⡰⠨⢐⢀⠢⢢⢄⢤⣰⠼⡾⢕⢕⡵⣝⠎⢌⢪⠪⡘⡌⠀
⡯⣳⠯⠚⢊⠡⡂⢂⠨⠊⠔⡑⠬⡸⣘⢬⢪⣪⡺⡼⣕⢯⢞⢕⢝⠎⢻⢼⣀⠀
⠁⡂⠔⡁⡢⠣⢀⠢⠀⠅⠱⡐⡱⡘⡔⡕⡕⣲⡹⣎⡮⡏⡑⢜⢼⡱⢩⣗⣯⣟
⢀⢂⢑⠀⡂⡃⠅⠊⢄⢑⠠⠑⢕⢕⢝⢮⢺⢕⢟⢮⢊⢢⢱⢄⠃⣇⣞⢞⣞⢾
⢀⠢⡑⡀⢂⢊⠠⠁⡂⡐⠀⠅⡈⠪⠪⠪⠣⠫⠑⡁⢔⠕⣜⣜⢦⡰⡎⡯⡾⡽
<</type>>
`)
}
window.CCW1_prev = window.CCW1;
setTimeout(checkPauWarning, 500)
})();
// ----------------------- Main -----------------------
window.SB_mainRefresh = () => {
// Side Bar
SB_setGeneralInfo();
SB_setPlayerImage();
SB_setAttribute();
SB_setButtomButtons();
// Overlays
SB_setOverlays();
SB_removeIndicators();
};
window.SB_init = () => {
// Fix Data
SB_setVersion();
// Side Bar
SB_setupPartOfDayIllustration();
SB_setupButtomButtons();
SB_setupAttribute();
// Overlays
SB_setupOverlays();
SB_mainRefresh();
$(document).on(':passageend', e => {
SB_mainRefresh();
});
};
})();
</script><<nobr>>
<audio id="main" loop autoplay>
<!-- <source src="ressources/maingui/titlescreen/fapomainwest.mp3" type="audio/mp3"> -->
<source src="./ressources/sounds/3A.mp3" type="audio/mp3">
</audio>
<video autoplay muted loop id="myVideo">
<source src="ressources/backgrounds/TitlescreenHalloween.webm" type="video/mp4">
</video>
<!--div class="filter"></div-->
<div class="teaserbox_container">
<div class="teaserbox">
<p class="boxtitles1">What's to expect</p>
<p class="spacer"></p>
<b>Gameplay:<br></b>
Get ready for an exciting adventure as you explore a post-apocalyptic world and build relationships with the ladies
you meet along the way. You'll need to scavenge for supplies, complete minigames like woodchopping and fishing, and
manage your virus level and hunger. With useful tools like the inventory system, you'll progress through gripping
storylines and steamy adult scenes. We packed this game with satisfying gameplay mechanics so you can fully immerse
yourself in this harrowing yet alluring setting.
<br>
<br>
<img src="ressources/maingui/titlescreen/gameplay.webp">
<br>
<b><br>Content:<br></b>
From battling fierce women of the wasteland to intimate moments with your lovely companions, you'll bear witness to
over 80 vivid scenes with over 1300 images and videos. Building a harem is no simple task, but the ample rewards make it
all worthwhile. You must uncover every scene through dedicated gameplay to reach the pinnacle. With so many sights
to take in, satisfaction is never out of reach.
<br>
<br>
<img src="ressources/maingui/titlescreen/content.webp">
<b><br>UI:<br></b>
We put tremendous care into crafting an intuitive, aesthetically pleasing UI to optimize your experience. You'll
find a polished map, a sleek sidebar, unique minigame interfaces, beautifully designed scene templates, and
specialized settings/info screens. The location system with interactive buttons and background items makes
exploration more engaging.
<br>
<br>
<img src="ressources/maingui/titlescreen/ui.webp">
<br>
<b>Experience:<br></b>
The core vision for The Fapocalypse is an enthralling post-apocalyptic world where you build relationships and
experience gratifying adult content. As the provider and hero these desperate women need, earning their affection is
profoundly rewarding yet challenging. We aim to make building a harem in this unrelenting landscape both difficult
and deeply satisfying.
<br>
<br>
<img src="ressources/maingui/titlescreen/experience.webp">
<br>
<b><br>Story:<br></b>
More than a contextless romp, The Fapocalypse boasts an immersive story with twists and emotional connections.
Navigating the treacherous Wastelands and mysterious Forest, you'll uncover the truth behind The MAD and conquer
these realms. With a strong narrative we built through ample care, prepare to dive headfirst into this gripping
story.
<br>
<br>
<img src="ressources/maingui/titlescreen/story.webp">
<br>
</div>
</div>
<div class="content-box">
<div class="title_blankspacer"></div>
<div class="content">
<button class="button bt2 bt2-1" onclick="window.open('https://www.patreon.com/FOCGames807','_blank')">
<img id="patreon" src="ressources/maingui/titlescreen/patreon_mm.webp">
<img id="patreon" src="ressources/maingui/titlescreen/patreon_mm_light.webp">
</button>
<button class="button bt2 bt2-2" onclick="window.open('https://subscribestar.adult/fap-online-creation','_blank')">
<img id="kofi" src="ressources/maingui/titlescreen/kofi_mm.webp">
<img id="kofi" src="ressources/maingui/titlescreen/kofi_mm_light.webp">
</button>
<button class="button bt2 bt2-3" onclick="window.open('https://discord.gg/WFHyxBuppk','_blank')">
<img id="discord" src="ressources/maingui/titlescreen/discord_mm.webp">
<img id="discord" src="ressources/maingui/titlescreen/discord_mm_light.webp">
</button>
</div>
<button class="button bt1" onclick="SugarCube.Engine.play('NEW INTRO'); UIBar.show();">
<img id="play" src="ressources/maingui/titlescreen/play_mm.webp">
<img id="play" src="ressources/maingui/titlescreen/play_mm_light.webp">
</button>
<div class="next_update_gauge">
<p1>*.*.*</p1> <!-- set via js -->
<div class="shape_gauge">
<div class="next_update_gauge_fill"></div>
</div>
<p2>*.*.*</p2> <!-- set via js -->
</div>
</div>
<!--
We're thrilled to announce version 0.1.7 of The Fapocalypse! This update brings some major changes and improvements to the game. Here's what's new:
Remodeled Main Scenes System
We've revamped the main scenes system to provide a more intuitive and immersive experience. The girls are now physically present in the rooms, making it easier to interact with them.
Expanded Main Scenes
Six new main scenes have been added, offering more variety and depth to the game. Explore these new areas and uncover exciting opportunities.
Reworked Women UI
The menu interface for women informations has been overhauled, providing a streamlined and user-friendly experience. Navigate through your companions more efficiently.
Roadmap for Main Scenes
We've introduced a roadmap that outlines the main scenes, giving you a glimpse of what's to come and helping you plan your adventures.
Bug Fixes and Improvements
As always, we've squashed some pesky bugs and made various improvements to ensure a smoother gameplay experience. You can now chose the player role to the woman.
Thank you for your unwavering support! We're committed to making The Fapocalypse an exceptional adventure. Stay tuned for more exciting updates!
See ya in the wastelands!
-->
<div class="new_next_box">
<div class="newbox">
<p class="boxtitles2">WHAT'S NEW</p>
<p class="spacer"></p>
We're happy to announce version 0.2.5 of The Fapocalypse! This update brings some major changes and improvement to the game. Here's what's new:
<br><br>
- The Market is Open!
A new place where you can buy avatars for you and your character! Login daily to accumulate points and get awesome customization options.
<br><br>
- New Main Scenes
Cherie, Lana, Elfie and Mia now have their trust and lust main scene 7! More steamy content for your favorite characters.
<br><br>
- New Forest Floors
The Peacewoods expansion continues with floors 13 to 15! This comes with 2 new scenes and an epic confrontation.
<br><br>
- Angela Content
New Angela trust and lust scenes have been added to spice up your adventure in the Peacewoods!
<br><br>
- Chung Li Boss Fight
Face off against Chung Li in an intense battle on floor 15 of the Peacewoods. Are you ready for the challenge?
<br><br>
- Bug Fixing and Improvements
As always, we fixed some bugs and improve the game experience to keep things running smoothly.
<br><br>
Thank you so much for your support, it means a lot to us. We're committed on making The Fapocalypse an exceptional adventure. Stay
tuned for more exciting updates!
<br><br>
See ya in the wastelands!
</div>
<div class="nextbox">
<p class="boxtitles3">WHAT'S NEXT</p>
<p class="spacer"></p>
Our plan for the future development of the game consists of 10 phases, each containing multiple frequent releases.
The 0.2 releases mark the beginning of closer relations and story developpement. Over the course of phase 2, which we expect to last about 3
months, we will focus on improving the game bases and advancing to story. You guys will now enjoy more and more content and soon, the mechanics of the game will all be polished.
<br>
<br>
The upcoming releases in phase 2 will not just be about bug fixes and game pacing, but will also continuously add
new content and features to improve the overall experience. We greatly appreciate the support of our Subscribestar and
itch subscribers, who are helping fuel the ongoing development of The Fapocalypse. Please consider joining them if
you'd like to contribute to the future of the game!
</div>
</div>
<</nobr>>\
<style>
:root {
--scrollbar-thumb-color: unset;
--scrollbar-track-color: unset;
}
#passages {
margin: 0;
max-width: 100%;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 0;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
.passage {
user-select: none;
font-family: 'BebasNeue', sans-serif;
/*MAYBEE*/
color: white;
/*MAYBEE*/
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
background-color: #1d1d1d;
/*MAYBEE*/
margin: 0;
padding: 0;
height: 100vh;
width: 100vw;
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
color: white;
overflow: hidden;
--scrollbar-thumb-color: unset !important;
--scrollbar-track-color: unset !important;
}
.boxtitles1 {
font-family: 'BebasNeue', sans-serif;
font-size: 1.5vw;
margin-top: 0;
margin-bottom: -0.6vw;
}
.boxtitles2 {
font-family: 'BebasNeue', sans-serif;
font-size: 1.5vw;
margin-top: 0;
margin-bottom: -0.6vw;
}
.boxtitles3 {
font-family: 'BebasNeue', sans-serif;
font-size: 1.5vw;
margin-top: 0;
margin-bottom: -0.6vw;
}
.spacer {
height: 0.7vw;
}
::-webkit-scrollbar {
width: 1vw;
}
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgb(214, 211, 211);
}
#main {
z-index: 300;
opacity: 0.2;
}
#patreon {
width: 2.1vw;
position: absolute;
}
#kofi {
width: 2.5vw;
position: absolute;
}
#discord {
width: 2.4vw;
position: absolute;
}
#play {
width: 7vw;
position: absolute;
}
body {
margin: 0;
background-color: rgb(43, 26, 26);
display: flex;
justify-content: space-around;
align-items: center;
height: 100vh;
width: 100vw;
overflow: hidden;
}
#myVideo {
position: fixed;
object-fit: cover;
width: 100vw;
max-width: 100vw;
min-height: 100vh;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: 0;
padding: 0;
z-index: 0;
}
.filter {
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: rgba(255, 0, 0, 0.1);
z-index: 0;
}
.teaserbox:hover {
outline: 0.07em solid rgba(255, 255, 255, 0.815);
box-shadow: 0 0 1em #8c0000,
inset 0 0 0.5em #8c0000;
transition: all 0.5s ease 0s;
}
.newbox:hover {
outline: 0.07em solid rgba(255, 255, 255, 0.815);
box-shadow: 0 0 1em #8c0000,
inset 0 0 0.5em #8c0000;
transition: all 0.5s ease 0s;
}
.nextbox:hover {
outline: 0.07em solid rgba(255, 255, 255, 0.815);
box-shadow: 0 0 1em #8c0000,
inset 0 0 0.5em #8c0000;
transition: all 0.5s ease 0s;
}
.teaserbox_container {
display: flex;
justify-content: center;
align-items: center;
flex-direction: row;
padding: 10vh 1vw;
height: 100vh;
padding: 8.5vh 0;
}
.teaserbox {
font-family: Arial, Helvetica, sans-serif;
text-align: center;
background: rgba(0, 0, 0, 0.4);
color: #f1f1f1;
min-width: 25.15vw !important;
width: 25.15vw;
height: 100%;
/*height: 100%;*/
border-radius: 0.8vw;
outline: 0.07em solid rgba(255, 255, 255, 0.4);
box-shadow: 0 0 0.5em rgba(150, 149, 149, 0.8),
inset 0 0 0.5em rgba(150, 149, 149, 0.8);
transition: all 0.5s ease 0s;
overflow-x: hidden;
overflow-y: auto;
text-align: left;
font-size: 1.9vh;
z-index: 5;
padding: 2vw;
}
.teaserbox img {
width: 100%;
}
.content-box {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
z-index: 5;
margin-left: 0.7vh;
}
.new_next_box {
display: flex;
justify-content: center;
align-items: center;
flex-direction: row;
flex-wrap: wrap;
width: 25.15vw;
height: 100vh;
align-content: center;
padding: 10vh 1vw;
z-index: 5;
margin-bottom: 2vh;
}
.newbox {
font-family: Arial, Helvetica, sans-serif;
text-align: center;
background: rgba(0, 0, 0, 0.4);
color: #f1f1f1;
min-width: 25.15vw !important;
width: 25.15vw;
height: 50%;
/* height: 100%; */
border-radius: 0.8vw;
outline: 0.07em solid rgba(255, 255, 255, 0.4);
box-shadow: 0 0 0.5em rgba(150, 149, 149, 0.8), inset 0 0 0.5em rgba(150, 149, 149, 0.8);
transition: all 0.5s ease 0s;
overflow-x: hidden;
overflow-y: auto;
font-size: 1.9vh;
text-align: left;
margin-bottom: 1.5vh;
padding: 1vw 2vw;
}
.nextbox {
font-family: Arial, Helvetica, sans-serif;
text-align: center;
background: rgba(0, 0, 0, 0.4);
color: #f1f1f1;
min-width: 25.15vw !important;
width: 25.15vw;
height: 50%;
/*height: 100%;*/
padding: 2vw;
border-radius: 0.8vw;
outline: 0.07em solid rgba(255, 255, 255, 0.4);
box-shadow: 0 0 0.5em rgba(150, 149, 149, 0.8),
inset 0 0 0.5em rgba(150, 149, 149, 0.8);
transition: all 0.5s ease 0s;
overflow-x: hidden;
overflow-y: auto;
font-size: 1.9vh;
text-align: left;
}
.button {
width: 30vw;
height: 2.91vw;
border-radius: 20vw;
border: none;
outline: none;
color: rgb(216, 215, 215);
font-size: 1.823vw;
text-shadow: 0.052vw 0.052vw rgba(0, 0, 0, 0.4);
font-weight: 700;
cursor: pointer;
transition: all 0.5s ease 0s;
display: flex;
margin: 0 0.5vw;
justify-content: center;
align-items: center;
z-index: 5;
outline: 0.07em solid rgba(255, 255, 255, 0.4);
box-shadow: 0 0 0.5em rgba(150, 149, 149, 0.8),
inset 0 0 0.5em rgba(150, 149, 149, 0.8);
}
.content {
display: flex;
margin-top: 8vh; /* hallowen event */
}
.title_blankspacer {
width: 100%;
height: 28vh;
}
.bt1 {
width: 11.5vw;
height: 11.5vw;
margin-top: 6vh;
color: white;
outline: 0.07em solid #dddcdc5b;
overflow: hidden;
background-color: rgba(0, 0, 0, 0);
border-radius: 100vw;
background: rgba(0, 0, 0, 0.4);
}
.bt1 img:nth-child(1) {
opacity: 1;
}
.bt1 img:nth-child(2) {
opacity: 0;
}
.bt1:hover img:nth-child(1) {
opacity: 0;
}
.bt1:hover img:nth-child(2) {
opacity: 1;
}
/*creating animation effect*/
.bt1:hover {
outline: 0.07em solid rgba(255, 255, 255, 0.815);
box-shadow: 0 0 1em #8c0000,
inset 0 0 0.5em #8c0000;
transform: translateY(-3px);
transform: scale(1.2, 1.2);
}
.bt2 {
color: white;
outline: 0.07em solid #dddcdc5b;
overflow: hidden;
width: 11.2vw;
background-color: rgba(0, 0, 0, 0);
background: rgba(0, 0, 0, 0.4);
}
.bt2 img:nth-child(1) {
opacity: 1;
}
.bt2 img:nth-child(2) {
opacity: 0;
}
.bt2:hover img:nth-child(1) {
opacity: 0;
}
.bt2:hover img:nth-child(2) {
opacity: 1;
}
.bt2:hover {
outline: 0.07em solid rgba(255, 255, 255, 0.815);
box-shadow: 0 0 0.5em #ff424d,
inset 0 0 0.5em #ff424d;
}
.bt2-2:hover {
outline: 0.07em solid rgba(255, 255, 255, 0.815);
box-shadow: 0 0 0.5em #13c3ff,
inset 0 0 0.5em #13c3ff;
}
.bt2-3:hover {
outline: 0.07em solid rgba(255, 255, 255, 0.815);
box-shadow: 0 0 0.5em #5165f6,
inset 0 0 0.5em #5165f6;
}
.button:hover,
.button:focus {
background-position: right center;
background-color: unset;
border-color: unset;
}
.next_update_gauge {
width: 100%;
height: 13vh;
border-radius: 1vw;
margin-top: 5vh;
display: flex;
justify-content: space-around;
align-items: center;
position: relative;
border-radius: 0.8vw;
outline: 0.07em solid rgba(255, 255, 255, 0.4);
box-shadow: 0 0 0.5em rgba(150, 149, 149, 0.8),
inset 0 0 0.5em rgba(150, 149, 149, 0.8);
transition: all 0.5s ease 0s;
background-color: rgba(0, 0, 0, 0);
background: rgba(0, 0, 0, 0.4);
}
.next_update_gauge p1 {
position: absolute;
font-size: 2vw;
color: white;
top: 1.5vh;
left: 1vw;
}
.next_update_gauge p2 {
position: absolute;
font-size: 2vw;
color: white;
top: 1.5vh;
right: 1vw;
}
.shape_gauge {
width: 85%;
height: 3.5vh;
border-radius: 1vw;
margin-top: 3vh;
/* background: linear-gradient(to right, #9f1017 50%, #ffffff66 50%); */ /* set via js */
}
</style>\
<script>
UIBar.hide().stow(true);
window.onload = function () {
document.getElementById("main").play();
}
function updateGauge() {
const startDate = '2024-11-03T18:00:00.000Z';
const endDate = '2024-11-17T18:00:00.000Z'; // + 14 days
const now = Math.floor(new Date().getTime() / 1000);
const start = Math.floor(new Date(startDate).getTime() / 1000);
const end = Math.floor(new Date(endDate).getTime() / 1000);
let percent = (now - start) / (end - start) * 100;
percent = Math.min(100, Math.max(0, percent)); // clamp to 0-100
const gauge = document.querySelector('.shape_gauge');
if (!gauge) return;
gauge.style.background = 'linear-gradient(to right, #ef8812 ' + percent + '%, #ffffff66 ' + percent + '%)';
setTimeout(updateGauge, 5000); // update every 5 seconds
};
updateGauge();
function versionCheck() {
let currentGameVersion = gameData.GameVersionAbsolute.replace(/[^0-9.].*/g, ''); // ex: 0.2.1c -> 0.2.1
let currentGameVersionArr = currentGameVersion.split('.');
let lenght = currentGameVersionArr.length;
let nextSubId = parseInt(currentGameVersionArr[lenght - 1]) + 1;
let nextGameVersion = currentGameVersionArr.slice(0, lenght - 1).join('.') + '.' + nextSubId;
document.querySelector('.next_update_gauge p1').innerHTML = currentGameVersion;
document.querySelector('.next_update_gauge p2').innerHTML = nextGameVersion;
let newbox = document.querySelector('.newbox');
if (newbox.innerText.includes(currentGameVersion) === false) {
console.error('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
console.error('!!!!!!!! TITLESCREEN BAD DESCRIPTION !!!!!!!!');
console.error('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
}
}
versionCheck();
setTimeout(function () {
}, 1000);
</script>\<<nobr>>
<div class="MenuS_mainCont">
<div class="MenuS_title">
<name class="MenuS_applyTextColor" id="titlechange">MENU</name>
<subname>
<underline class="MenuS_applyDivColor"></underline>
<back class="MenuS_applyTextColorWithHover" onclick="exitAngela()">exit</back>
</subname>
</div>
<div class="MenuS_boby">
<div class="MenuS_list">
<div type="goals" onclick="titleGoals()" class="MenuS_applyTextColorWithHover">
Goals
</div><hr>
<div type="women" onclick="titleWomen()" class="MenuS_applyTextColorWithHover">
Women & Scenes
</div>
<hr>
<div type="achievements" onclick="titleAchievements()" class="MenuS_applyTextColorWithHover">
Achi­evements
</div><hr>
<div type="market" onclick="titleMarket()" class="MenuS_applyTextColorWithHover">
Market
</div><hr>
<div type="cheats" onclick="titleCheats()" class="MenuS_applyTextColorWithHover">
Cheats
</div><hr>
<div type="settings" onclick="titleSettings()" class="MenuS_applyTextColorWithHover">
Settings
</div><hr>
<div onclick="MenuF_Back()" class="MenuS_applyTextColorWithHover"> <!-- type="default" -->
Back
</div>
</div>
<div class="MenuS_content">
<!-- state: default, goals, women, achievements, market, cheats, settings -->
<div type="default" class="MenuS_illustrations active">
<!--div class="MenuS_illustrations" style="display: none;"-->
<img src="ressources/maingui/menu_screen/cherie.webp">
<img src="ressources/maingui/menu_screen/lana.webp">
<img src="ressources/maingui/menu_screen/elfie.webp">
<img src="ressources/maingui/menu_screen/gabbie.webp">
<img src="ressources/maingui/menu_screen/angela.webp">
<img src="ressources/maingui/menu_screen/johny.webp">
</div>
<div type="goals" class="goals_main">
<div class="GAIM_container">
<div class="GAIM_boxes GAIM_relationships">
<div class="GAIM_rel_top">
<h1>RELATIONSHIPS</h1>
<div class="GAIM_girlstatinfo">
<div class="GAIM_girlstatinfo_content">
<img src="ressources/maingui/attributes/trust_icon.webp">
<h2>Trust:</h2>
<p>
1. Choose and complete Trust secondary scenes with characters<br>
2. Give appropriate gifts to girls in their rooms<br>
3. Select Trust-focused dialogue options in main scenes
</p>
</div>
<div class="GAIM_girlstatinfo_content">
<img src="ressources/maingui/attributes/lust_icon.webp">
<h2>Lust:</h2>
<p>
1. Choose and complete Lust secondary scenes with characters<br>
2. Initiate playful fights with girls in their rooms<br>
3. Select Lust-focused dialogue options in main scenes
</p>
</div>
</div>
</div>
<div class="GAIM_rel_bottom">
<div class="GAIM_item">
<div class="GAIM_gaugeinfo_container">
<img src="ressources/icons/8.webp">
<div class="GAIM_gauge">
<div class="GAIM_shape_gauge" attribute="cherie">
<p>NEXT PHASE</p>
<div class="GAIM_gauge_fill"></div>
</div>
</div>
<div class="GAIM_arrow" data-target="sliding-div-1"></div>
</div>
<div class="GAIM_sliding-div" id="sliding-div-1" attribute="cherie">
<h1>CHERIE</h1>
</div>
</div>
<div class="GAIM_item">
<div class="GAIM_gaugeinfo_container">
<img src="ressources/icons/9.webp">
<div class="GAIM_gauge">
<div class="GAIM_shape_gauge" attribute="lana">
<p>NEXT PHASE</p>
<div class="GAIM_gauge_fill"></div>
</div>
</div>
<div class="GAIM_arrow" data-target="sliding-div-2"></div>
</div>
<div class="GAIM_sliding-div" id="sliding-div-2" attribute="lana">
<h1>LANA</h1>
</div>
</div>
<div class="GAIM_item">
<div class="GAIM_gaugeinfo_container">
<img src="ressources/icons/10.webp">
<div class="GAIM_gauge">
<div class="GAIM_shape_gauge" attribute="elfie">
<p>NEXT PHASE</p>
<div class="GAIM_gauge_fill"></div>
</div>
</div>
<div class="GAIM_arrow" data-target="sliding-div-3"></div>
</div>
<div class="GAIM_sliding-div" id="sliding-div-3" attribute="elfie">
<h1>ELFIE</h1>
</div>
</div>
<div class="GAIM_item">
<div class="GAIM_gaugeinfo_container">
<img src="ressources/icons/11.webp">
<div class="GAIM_gauge">
<div class="GAIM_shape_gauge" attribute="gabbie">
<p>NEXT PHASE</p>
<div class="GAIM_gauge_fill"></div>
</div>
</div>
<div class="GAIM_arrow" data-target="sliding-div-4"></div>
</div>
<div class="GAIM_sliding-div" id="sliding-div-4" attribute="gabbie">
<h1>GABBIE</h1>
</div>
</div>
<div class="GAIM_item">
<div class="GAIM_gaugeinfo_container">
<img src="ressources/icons/12.webp">
<div class="GAIM_gauge">
<div class="GAIM_shape_gauge" attribute="angela">
<p>NEXT PHASE</p>
<div class="GAIM_gauge_fill"></div>
</div>
</div>
<div class="GAIM_arrow" data-target="sliding-div-5"></div>
</div>
<div class="GAIM_sliding-div" id="sliding-div-5" attribute="angela">
<h1>ANGELA</h1>
</div>
</div>
<div class="GAIM_item">
<div class="GAIM_gaugeinfo_container">
<img src="ressources/icons/16.webp">
<div class="GAIM_gauge">
<div class="GAIM_shape_gauge" attribute="mia">
<p>NEXT PHASE</p>
<div class="GAIM_gauge_fill"></div>
</div>
</div>
<div class="GAIM_arrow" data-target="sliding-div-6"></div>
</div>
<div class="GAIM_sliding-div" id="sliding-div-6" attribute="mia">
<h1>MIA</h1>
</div>
</div>
<!-- Add more GAIM_item elements as needed -->
</div>
</div>
<div class="GAIM_boxes GAIM_navigating">
<div class="GAIM_nav_top">
<h1>FIGHTS & NAVIGATING</h1>
<div class="GAIM_girlstatinfo">
<div class="GAIM_girlstatinfo_content">
<img src="ressources/maingui/attributes/dominance_icon.webp">
<h2 class="GAIM_dom">Dominance:</h2>
<p>
1. Win fights in forest/wastelands<br>
To win fights: <br>
2. Keep virus level low (before the fights)<br>
3. Equip best gear<br>
4. Explore for better items
</p>
</div>
<div class="GAIM_girlstatinfo_content">
<img src="ressources/maingui/attributes/virus_icon.webp">
<h2>Virus:</h2>
<p>
1. Go to your room and select the option to watch lusty content<br>
2. Explore deeper areas of the Forest to increase virus exposure<br>
3. Engage in sexual activities without ejaculating
</p>
</div>
<div class="GAIM_stat_container">
<div class="GAIM_stat">
<img src="ressources/maingui/attributes/dominance_icon.webp">
<p>$stats.dominance</p>
</div>
<div class="GAIM_stat">
<img src="ressources/maingui/attributes/virus_icon.webp">
<p>$stats.virus/100</p>
</div>
</div>
</div>
</div>
<div class="GAIM_nav_bottom">
<div class="GAIM_progress_container">
<div class="GAIM_progress" id="GAIM_forest" section="forest.sub.peacewood">
<p class="GAIM_progressTitle">PEACEWOOD</p>
<!-- div class="GAIM_progressCircle"><img src="ressources/icons/2B.webp"></div><line></line -->
<!-- ... set in js -->
</div>
<div class="GAIM_progress" id="GAIM_wastelands" section="wastelands.sub.border">
<p class="GAIM_progressTitle">BORDER</p>
<!-- div class="GAIM_progressCircle"><img src="ressources/icons/3A2.webp"></div><line></line -->
<!-- ... set in js -->
</div>
</div>
</div>
</div>
<div class="GAIM_boxes GAIM_discoveries">
<h1>DISCOVERIES</h1>
<div class="GAIM_discoveries_box">
<div class="GAIM_discoveries_box_title">
<p>Shelter from the Storm</p>
</div>
<div class="GAIM_discoveries_box_content">
</div>
</div>
<div class="GAIM_discoveries_box">
<div class="GAIM_discoveries_box_title">
<p>Echoes of the Future</p>
</div>
<div class="GAIM_discoveries_box_content">
Meet Gabbie, a mysterious time traveler with an uncanny connection to you, introducing complex temporal elements to your journey.
</div>
</div>
<div class="GAIM_discoveries_box GAIM_locked">
<div class="GAIM_discoveries_box_title">
<p>Divine Intervention</p>
</div>
<div class="GAIM_discoveries_box_content">
Cross paths with Angela, a goddess-like figure intimately linked to the virus's creation, hinting at cosmic forces at play.
</div>
</div>
<div class="GAIM_discoveries_box GAIM_locked">
<div class="GAIM_discoveries_box_title">
<p>Family Reunion</p>
</div>
<div class="GAIM_discoveries_box_content">
Reconnect with your vivacious cousin Mia, adding a new layer of complexity to your growing harem of family members.
</div>
</div>
<div class="GAIM_discoveries_box">
<div class="GAIM_discoveries_box_title">
<p>Shadows of the Past</p>
</div>
<div class="GAIM_discoveries_box_content">
Uncover disturbing hints that a man, possibly Gabbie's grandfather, might be the mastermind behind MAD's operations.
</div>
</div>
</div>
</div>
</div>
<div type="women" class="">
<div class="character_selection_center_block">
<div type="women.women" class="character_selection_main_buttons character">
<!-- onclick="playPassage('MENU main interface')" -->
<img src="ressources/icons/13DB7.webp">
<div class="shadow less"></div>
<div>Women</div>
</div>
<div type="women_TODO.fights" onclick="appendWipWarning();"
class="character_selection_main_buttons swords">
<img src="ressources/icons/13DB6.webp">
<div class="shadow less"></div>
<div>Fights Scenes</div>
</div>
<div type="women_TODO.groups" onclick="playPassage('GROUP SCENES')"
class="character_selection_main_buttons groups">
<img src="ressources/icons/13DB3.webp">
<div class="shadow less"></div>
<div>Groups Scenes</div>
</div>
<div type="women_TODO.solo" onclick="playPassage('SOLO SCENES')"
class="character_selection_main_buttons character">
<img src="ressources/icons/13DB5.webp">
<div class="shadow less"></div>
<div>Solo Scenes</div>
</div>
</div>
</div>
<div type="women.women">
<!-- <div class="woman_and_scenes_button_container">
<div id="woman_and_scenes_button">
<img src="ressources/icons/13DA1.webp">
</div>
<div onclick="playPassage('MENU main interface')" id="woman_and_scenes_goback_button">
Back
</div>
</div> -->
<div class="women_and_scenes_holy_div">
<div id="women_and_scenes_arrow_left"></div>
<div id="parent_woman_and_scenes_template"></div>
<div id="women_and_scenes_arrow_right"></div>
</div>
</div>
<div type="women.fights">
women.fights
</div>
<div type="women.groups">
women.groups
</div>
<div type="women.solo">
women.solo
</div>
<div type="achievements" class="achievements_adjust">
<div class="achievements_upper_buttons">
<div class="achievements_upper_left">
<div class="achievements_upper_left_1">
<img src="ressources/icons/13A18.webp">
</div>
<div class="achievements_upper_left_2">
<p></p>
</div>
</div>
<div class="achievements_upper_mid">
<div class="achievements_upper_mid_top">
<p>Achievements Rarity</p>
</div>
<div class="achievements_upper_mid_bottom">
<div class="achievements_rarity_display common">
<p>Common</p>
</div>
<div class="achievements_rarity_display uncommon">
<p>Uncommon</p>
</div>
<div class="achievements_rarity_display rare">
<p>Rare</p>
</div>
<div class="achievements_rarity_display epic">
<p>Epic</p>
</div>
<div class="achievements_rarity_display legendary">
<p>Legendary</p>
</div>
<div class="achievements_rarity_display mythical">
<p>Mythical</p>
</div>
</div>
</div>
</div>
<div class="achievements">
<div class="achievements_scoll_menu">
<div class="achievements_arrow_up"></div>
<div class="achievements_scrollwidth_block">
<!--div class="achievements_clickable_block_locked">
<img>
</div-->
</div>
<div class="achievements_arrow_down"></div>
</div>
<div class="achievements_template_parent">
<!--div class="achievements_template">
<div class="achievements_title">
<p>TITRE</p>
</div>
<div class="achievements_title_description">
<p>Description Description Description</p>
</div>
<div class="achievements_requirements">
<div class="achievements_requirements_box">
<div class="achievements_requirements_box_icon">
<img>
</div>
<p>bfjshdbghbasdshgjdhfj sdigjfnjsndfjn anfnf</p>
</div>
<div class="achievements_requirements_box">
<div class="achievements_requirements_box_icon">
<img>
</div>
<p>dont min me</p>
</div>
<div class="achievements_requirements_box">
<div class="achievements_requirements_box_icon">
<img>
</div>
<p>jhnjnasj asjnjasnd aJINSDIJAS</p>
</div>
</div>
</div-->
</div>
<div class="achievements_trophy_counter">
<p></p>
<img src="ressources/icons/13A18.webp">
</div>
</div>
</div>
<div type="market" class="">
<div class="MRKTouter-container">
<div class="MRKTcontainer">
<header class="MRKTtop-bar">
<div class="MRKTtop-bar-left">
<div class="MRKTconnection-streak">
<img src="ressources/maingui/market/streak.png" alt="Flame Icon" class="MRKTflame-icon" />
<span id="MRKTstreak">_</span>
<!-- Tooltip for streak information -->
<div class="MRKTstreak-tooltip">
<strong class="MRKTstrongGap">Daily coin rewards based on streak:</strong><br><br>
- 1 day: 1 coin<br>
- 2 days: 2 coins<br>
- 3-4 days: 3 coins<br>
- 5-9 days: 5 coins<br>
- 10-14 days: 10 coins<br>
- 15-29 days: 15 coins<br>
- 30+ days: 30 coins
</div>
</div>
<div class="MRKTcoins-balance">
<img src="ressources/maingui/market/coin.png" alt="Coin Icon" class="MRKTcoin-icon" />
<span id="MRKTcoin-count">_</span>
</div>
</div>
<div class="MRKTcheats-section">
<div class="MRKTcheat">
<img src="ressources/maingui/ranks/rank2.webp" class="MRKTcheat-icon"/>
<button disabled>CLAIM</button>
<span><img src="ressources/maingui/market/coin.png" class="MRKTcoin-icon"/>50</span>
</div>
<div class="MRKTcheat">
<img src="ressources/maingui/ranks/rank3.webp" class="MRKTcheat-icon"/>
<button disabled>CLAIM</button>
<span><img src="ressources/maingui/market/coin.png" class="MRKTcoin-icon"/>100</span>
</div>
<div class="MRKTcheat">
<img src="ressources/maingui/ranks/rank4.webp" class="MRKTcheat-icon"/>
<button disabled>CLAIM</button>
<span><img src="ressources/maingui/market/coin.png" class="MRKTcoin-icon"/>200</span>
</div>
<div class="MRKTinfo-icon" title="Information" id="MRKTinfo-popup-trigger">i</div>
</div>
</header>
<div class="MRKTmain-content">
<aside class="MRKTleft-section">
<div class="MRKTitems-info">
<div class="MRKTitems-info-title">BUY AND EQUIP ITEMS</div>
<div class="MRKTitems-info-filter">
<div class="MRKTitems-info-filterTitle">Filter</div>
<div class="MRKTitems-info-filterList">
<div>Mystery Box</div>
<div>MC</div>
<div>Cherie</div>
<div>Elfie</div>
<div>Lana</div>
<div>Mia</div>
<div>Gabbie</div>
<div>Angela</div>
</div>
</div>
</div>
<div class="MRKTitems-container">
<!-- div class="MRKTitem" data-rarity="grey">
<img src="ressources/maingui/ui/mcicon.webp" alt="Player Icon" class="MRKTitem-image"/>
<span class="MRKTitem-price"><img src="ressources/maingui/market/coin.png" class="MRKTcoin-icon" /> 300</span>
<button class="MRKTbuy-button" data-price="300" data-icon-target="MRKTplayer">Buy Custom Icon</button>
</div>
(...)
-->
</div>
</aside>
<aside class="MRKTright-section">
<h2>EQUIPPED ITEMS</h2>
<div class="MRKTicon-slots">
<!-- div class="MRKTicon-slot" id="MRKTplayer">
<img src="player_icon_placeholder.png" alt="Player Icon" />
<div class="MRKTicon-slot-text">Player Icon</div>
</div -->
<!-- div class="MRKTicon-slot" id="MRKTwoman1">
<img src="woman1_icon_placeholder.png" alt="Woman 1" />
<div class="MRKTicon-slot-text">Woman 1</div>
</div>
(...)
-->
</div>
</aside>
</div>
</div>
</div>
<!-- Blurred Background for Pop-ups -->
<div class="MRKTblurred-background" id="MRKTblurred-bg"></div>
<!-- Info Pop-up -->
<div class="MRKTpopup" id="MRKTinfo-popup">
<h3>Cheat Info</h3>
<p>You can get up to 350 bonus coins every update by activating the appropriate cheat tier in the Cheats Menu (Codes for Patreon and Subscribestar supporters).</p>
<button id="MRKTclose-info-popup">Close</button>
</div>
</div>
<div type="cheats" class="cheats_main">
<div id="cheatboxcontainer">
<div class="cheatbox green">
<div class="cheatboxThanks">
<h1 style="margin-bottom: 5vh; margin-top: 20vh;">Thank you for your support!</h1>
<h3>Loading cheats...</h3>
<img class="cheatslogo" src="ressources/maingui/logos/logo3.webp">
</div>
<div class="cheatboxActive">
<div class="cheatboxActiveFlex">
<img src="ressources/icons/I1MA1.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;">
<img src="ressources/icons/I1MA3.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;">
<img src="ressources/icons/I1MA2.webp" style="height: 110%; width: 17.5%">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;">
<img src="ressources/maingui/attributes/nutritionalvalue.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
</div>
<h1>Resources Control</h1>
<div class="iconcontainer">
<img src="ressources/icons/I1MA1.webp">
<img src="ressources/icons/I1MA2.webp">
<img src="ressources/icons/I1MA3.webp">
</div>
<div class="codecontainer">
<input class="labelcheats" type="text" id="cheatsResources" value="Enter Code Here" maxlength="10"
onfocus="clearInputValue(this)" onblur="resetInputValue(this)">
<div class="buttoncheats">➤</div>
</div>
<h3>REQUIRED SUBSCRIPTION:</h3>
<div class="rankcontainer">
<img src="ressources/maingui/ranks/rank2.webp">
<p>+</p>
</div>
<div class="buycheats" id="buycheatslvl1">
<p>SUBSCRIBE</p>
<div class="subs_patreon" id="buycheatslvl1">
<img src="ressources/maingui/medias/patreon.webp">
</div>
<div class="subs_subscribestar" id="buycheatslvl1">
<img src="ressources/maingui/medias/ko-fi.webp">
</div>
</div>
<div class="infocheatsbox">
<h3>ADDITIONAL INFORMATION</h3>
<p>Resources Control allows you to control the amount of resources you posess in the game. This includes: the wood, plastic, metal, food and any upcoming resources.</p>
</div>
<div class="infocheats" onclick="infocheatspu1();">ⓘ</div>
</div>
<div class="cheatbox blue">
<h1>Gallery Unlock</h1>
<div class="cheatboxThanks">
<h1 style="margin-bottom: 5vh; margin-top: 20vh;">Thank you for your support!</h1>
<h3>Loading cheats...</h3>
<img class="cheatslogo" src="ressources/maingui/logos/logo3.webp">
</div>
<div class="cheatboxActive">
<div class="cheatboxActiveFlex">
<img src="ressources/icons/8.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<div class="labelcheatsWomen">Cherie's Scenes</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;">
<img src="ressources/icons/9.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<div class="labelcheatsWomen">Lana's Scenes</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;">
<img src="ressources/icons/10.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<div class="labelcheatsWomen">Elfie's Scenes</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;">
<img src="ressources/icons/11.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<div class="labelcheatsWomen">Gabbie's Scenes</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;">
<img src="ressources/icons/12.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<div class="labelcheatsWomen">Angela's Scenes</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;">
<img src="ressources/icons/16.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<div class="labelcheatsWomen">Mia's Scenes</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;">
<img src="ressources/icons/13H5.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<div class="labelcheatsWomen">Group Scenes</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;">
<img src="ressources/maingui/ui/mcicon2.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<div class="labelcheatsWomen">Solo Scenes</div>
</div>
</div>
</div>
<div class="iconcontainer">
<img src="ressources/maingui/sexuals/boobjob.webp">
<img src="ressources/maingui/sexuals/anal.webp">
<img src="ressources/maingui/sexuals/handjob.webp">
</div>
<div class="codecontainer">
<input class="labelcheats" type="text" id="cheatsGallery" value="Enter Code Here" maxlength="10"
onfocus="clearInputValue(this)" onblur="resetInputValue(this)">
<div class="buttoncheats">➤</div>
</div>
<h3>REQUIRED SUBSCRIPTION:</h3>
<div class="rankcontainer">
<img src="ressources/maingui/ranks/rank3.webp">
<p>+</p>
</div>
<div class="buycheats" id="buycheatslvl2">
<p>SUBSCRIBE</p>
<div class="subs_patreon2" id="buycheatslvl2">
<img src="ressources/maingui/medias/patreon.webp">
</div>
<div class="subs_subscribestar2" id="buycheatslvl2">
<img src="ressources/maingui/medias/ko-fi.webp">
</div>
</div>
<div class="infocheatsbox">
<h3>ADDITIONAL INFORMATION</h3>
<p>Gallery Unlock allows you to see every scene that is currently available in the game, with every women, immediately.</p>
</div>
<div class="infocheats" onclick="infocheatspu2();">ⓘ</div>
</div>
<div class="cheatbox purple">
<div class="cheatboxThanks">
<h1 style="margin-bottom: 5vh; margin-top: 20vh;">Thank you for your support!</h1>
<h3>Loading cheats...</h3>
<img class="cheatslogo" src="ressources/maingui/logos/logo3.webp">
</div>
<div class="cheatboxActive">
<div class="cheatboxActiveFlex" data-type="stat" data-type2="dominance">
<img src="ressources/maingui/attributes/dominance_icon.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;" data-type="stat" data-type2="virus">
<img src="ressources/maingui/attributes/virus_icon.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;" data-type="time">
<img src="ressources/maingui/ui/time2.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<div class="labelcheatsWomen">Freeze Time</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;" data-type="loot">
<p class="textCheats" style="height: 110%;">LUCKY LOOT</p>
<div class="codecontainer" style="margin-top: 0;">
<div class="labelcheatsWomen">Turn On</div>
</div>
</div>
<h3>Lust Control <img class="cheatsTLicons" src="ressources/maingui/attributes/lust_icon.webp"></h3>
<div class="cheatboxActiveFlex" data-type="girl_stat" data-type2="lust" data-type3="cherie">
<img src="ressources/icons/8.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;" data-type="girl_stat" data-type2="lust"
data-type3="lana">
<img src="ressources/icons/9.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;" data-type="girl_stat" data-type2="lust"
data-type3="elfie">
<img src="ressources/icons/10.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;" data-type="girl_stat" data-type2="lust"
data-type3="gabbie">
<img src="ressources/icons/11.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;" data-type="girl_stat" data-type2="lust"
data-type3="angela">
<img src="ressources/icons/12.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;" data-type="girl_stat" data-type2="lust"
data-type3="mia">
<img src="ressources/icons/16.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<h3>Trust Control <img class="cheatsTLicons" src="ressources/maingui/attributes/trust_icon.webp"></h3>
<div class="cheatboxActiveFlex" data-type="girl_stat" data-type2="trust" data-type3="cherie">
<img src="ressources/icons/8.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;" data-type="girl_stat" data-type2="trust"
data-type3="lana">
<img src="ressources/icons/9.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;" data-type="girl_stat" data-type2="trust"
data-type3="elfie">
<img src="ressources/icons/10.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;" data-type="girl_stat" data-type2="trust"
data-type3="gabbie">
<img src="ressources/icons/11.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;" data-type="girl_stat" data-type2="trust"
data-type3="angela">
<img src="ressources/icons/12.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
<div class="cheatboxActiveFlex" style="margin-top: 2vh;" data-type="girl_stat" data-type2="trust"
data-type3="mia">
<img src="ressources/icons/16.webp" style="height: 110%;">
<div class="codecontainer" style="margin-top: 0;">
<input class="labelcheats" type="text">
<div class="buttoncheats">➤</div>
</div>
</div>
</div>
<h1>Gamebreaker Mode</h1>
<div class="iconcontainer">
<img src="ressources/maingui/ui/time.webp">
<img src="ressources/maingui/ui/map.webp">
<img src="ressources/maingui/attributes/dominance_icon_2.webp">
</div>
<div class="codecontainer">
<input class="labelcheats" type="text" id="cheatsGamebreaker" value="Enter Code Here" maxlength="10"
onfocus="clearInputValue(this)" onblur="resetInputValue(this)">
<div class="buttoncheats">➤</div>
</div>
<h3>REQUIRED SUBSCRIPTION:</h3>
<div class="rankcontainer">
<img src="ressources/maingui/ranks/rank4.webp">
<p>+</p>
</div>
<div class="buycheats" id="buycheatslvl3">
<p>SUBSCRIBE</p>
<div class="subs_patreon3" id="buycheatslvl3">
<img src="ressources/maingui/medias/patreon.webp">
</div>
<div class="subs_subscribestar3" id="buycheatslvl3">
<img src="ressources/maingui/medias/ko-fi.webp">
</div>
</div>
<div class="infocheatsbox">
<h3>ADDITIONAL INFORMATION</h3>
<p>Gamebreaker Mode basically allows you to completely modify the game's mechanics, as it is the highesttier cheat: it allows you to control time, virus level, the loot drops' rarities and lust/trust levelswith the women. You are also given the Founder's Set.</p>
</div>
<div class="infocheats" onclick="infocheatspu3();">ⓘ</div>
</div>
</div>
</div>
<div type="settings" class="settings_main">
<div id="settings_A_mid">
<div class="settings_B_mid">
<div category="audio" class="settings_D_categories activeCat active">AUDIO</div> <!-- activeDiv: wich one is not WIP -->
</div>
<div class="settings_B_mid">
<div category="video" class="settings_D_categories">VIDEO</div>
</div>
<div class="settings_B_mid">
<div category="story" class="settings_D_categories">STORY</div>
</div>
<div class="settings_B_mid">
<div category="save" class="settings_D_categories activeCat">SAVE</div>
</div>
<div class="settings_B_mid">
<div category="aboutUs" class="settings_D_categories activeCat">ABOUT US</div>
</div>
</div>
<div id="settings_A_bot">
<div settingtype="audio" class="settings_B_bot">
<div class="settings_B_bot2" audioSlider="music">
<div class="settings_C_audio">
<div class="settings_D_music_txt">Music</div>
<div class="settings_D_music_button on">ON</div>
</div>
<div class="settings_C_jauge">
<input type="range" min="0" max="1" step="0.01" value=settings.music class="slider" id="myRange" />
</div>
</div>
<div class="settings_B_bot2" audioSlider="sfx">
<div class="settings_C_audio">
<div class="settings_D_music_txt">Audio <mini>(VFX)</mini>
</div>
<div class="settings_D_music_button on">ON</div>
</div>
<div class="settings_C_jauge">
<input type="range" min="0" max="1" step="0.01" value=settings.sfx class="slider" id="myRange2" />
</div>
</div>
</div>
<div settingtype="save" class="settings_B_bot">
<div class="settings_B_bot2 save">
<div class="settings_srl_buttons" onclick="SugarCube.UI.saves()">SAVE</div>
<div class="settings_srl_buttons" onclick="SugarCube.UI.restart()">RESTART</div>
<div class="settings_srl_buttons" onclick="SugarCube.UI.saves()">LOAD</div>
</div>
</div>
<div settingtype="aboutUs" class="settings_B_bot">
<div class="settings_B_bot2 aboutUs">
<div class="settings_aboutUs_C1">
<fapoimage><img src="ressources/maingui/logos/logo3.webp" /></fapoimage>
</div>
<div class="settings_aboutUs_C2">FAP Online Creation</div>
<div onclick="window.open('https://www.patreon.com/focgames807/membership');"
class="settings_aboutUs_C3 patreon">
<reseaux><img src="ressources/maingui/medias/patreon.webp" /></reseaux>
</div>
<div onclick="window.open('https://fap-online-creation.itch.io/the-fapocalypse');"
class="settings_aboutUs_C3 itch">
<reseaux><img src="ressources/maingui/medias/itchio.webp" style="filter: invert(1)"></reseaux>
</div>
<div onclick="window.open('https://subscribestar.adult/fap-online-creation');"
class="settings_aboutUs_C3 kofi">
<reseaux><img src="ressources/maingui/medias/ko-fi.webp"></reseaux>
</div>
<div onclick="window.open('https://discord.com/channels/1048358082276769792/1107475310192107563');"
class="settings_aboutUs_C3 discord">
<reseaux><img src="ressources/maingui/medias/discord.webp"></reseaux>
</div>
<!--div
onclick="window.open('https://f95zone.to/threads/the-fapocalypse-v0-0-3-fap-online-creation.144115/');"
class="settings_aboutUs_C3 f95">
<reseaux><img src="ressources/maingui/medias/F95zone.webp"></reseaux>
</div-->
</div>
<div class="settings_B_bot2 aboutUs">
<div class="settings_aboutUs_C4">
<p>FAP Online Creation or FAP OC is a new group of adult games creator aiming to deliver the best of what an HTML based game can offer.</p>
<p class="meet_team">Meet our team. FapMat, our creative content creator and world builder. FapLaf, the friendly graphic designer, game designer, and programmer. PaqFap manages Communications, Marketing and helps with programming. And FixFap, our lead programmer handling the data and R&D.</p>
<p>The Fapocalypse being FAP OC first game, the team will make sure to stay very attentive to the users recommandations and concerns. Our goal is to deliver the best product in the eyes of the people that play it.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<</nobr>>\
<!-- STYLE - 1 - Menu -->\
<style>
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
height: 100vh;
font-size: 1.75vh;
}
#ui-bar.stowed {
left: -26vh;
}
#passages {
width: 100%;
max-width: 100%;
margin: 0;
height: 100vh;
}
.passage {
height: 100%;
width: 100%;
}
.MenuS_mainCont {
font-family: Arial, sans-serif;
font-size: 1.25vh;
color: white;
position: relative;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100%;
width: 100%;
/*padding: 0 2vh;*/
overflow: hidden;
/* default */
--MenuS_color_D_0: hsl(360, 40%, 45%);
--MenuS_color_D_1: hsl(360, 50%, 40%);
--MenuS_color_D_0_hover: hsl(360, 45%, 65%);
--MenuS_color_D_1_hover: hsl(360, 55%, 50%);
/* goals - Angela */
--MenuS_color_0_0: hsl(360, 50%, 45%);
/* main color */
--MenuS_color_0_1: hsl(360, 70%, 40%);
/* shadow color */
--MenuS_color_0_0_hover: hsl(360, 75%, 75%);
--MenuS_color_0_1_hover: hsl(360, 85%, 50%);
/* women - Lana */
--MenuS_color_1_0: hsl(290, 50%, 45%);
--MenuS_color_1_1: hsl(290, 70%, 40%);
--MenuS_color_1_0_hover: hsl(290, 75%, 75%);
--MenuS_color_1_1_hover: hsl(290, 85%, 50%);
/* achievement - Elfie */
--MenuS_color_2_0: hsl(050, 50%, 45%);
--MenuS_color_2_1: hsl(050, 70%, 40%);
--MenuS_color_2_0_hover: hsl(050, 75%, 75%);
--MenuS_color_2_1_hover: hsl(050, 85%, 50%);
/* market - Gabbie */
--MenuS_color_3_0: hsl(235, 50%, 45%);
--MenuS_color_3_1: hsl(235, 70%, 40%);
--MenuS_color_3_0_hover: hsl(235, 75%, 75%);
--MenuS_color_3_1_hover: hsl(235, 85%, 50%);
/* cheats - Angela */
--MenuS_color_4_0: hsl(120, 50%, 35%);
--MenuS_color_4_1: hsl(120, 70%, 30%);
--MenuS_color_4_0_hover: hsl(120, 75%, 65%);
--MenuS_color_4_1_hover: hsl(120, 85%, 40%);
/* settings - Johny */
--MenuS_color_5_0: hsl(000, 0%, 75%);
--MenuS_color_5_1: hsl(000, 0%, 85%);
--MenuS_color_5_0_hover: hsl(000, 0%, 85%);
--MenuS_color_5_1_hover: hsl(000, 0%, 95%);
/* MENU */
--MenuS_color_M_0: var(--MenuS_color_D_0);
--MenuS_color_M_1: var(--MenuS_color_D_1);
--MenuS_color_M_0_hover: var(--MenuS_color_D_0_hover);
--MenuS_color_M_1_hover: var(--MenuS_color_D_1_hover);
}
.MenuS_applyTextColor,
.MenuS_applyTextColorWithHover {
font-weight: bold;
color: transparent;
-webkit-text-stroke-width: 0.02em;
-webkit-text-stroke-color: var(--MenuS_color_M_0);
text-shadow:
0 0 0.1em rgba(0, 0, 0, 0.568),
0 0 0.2em var(--MenuS_color_M_1),
0 0 0.2em var(--MenuS_color_M_1);
transition-property: -webkit-text-stroke-color, text-shadow;
transition-duration: 0.3s;
transition-timing-function: ease;
}
.MenuS_applyTextColorWithHover:hover {
text-shadow:
0 0 0.1em rgba(0, 0, 0, 0.238),
0 0 0.2em var(--MenuS_color_M_1),
0 0 0.2em var(--MenuS_color_M_1),
0 0 0.4em var(--MenuS_color_M_1);
}
.MenuS_applyDivColor {
background-color: color-mix(var(--MenuS_color_M_0) alpha(1), transparent alpha(0.5));
border-color: var(--MenuS_color_M_1);
box-shadow:
0 0 0.2em var(--MenuS_color_M_1),
0 0 0.2em var(--MenuS_color_M_1),
inset 0 0 0.1em var(--MenuS_color_M_1);
transition-property: background-color, border-color, text-shadow;
transition-duration: 0.3s;
transition-timing-function: ease;
}
.MenuS_title {
min-height: 0;
/* firefox does not set automatically */
display: flex;
flex-direction: column;
align-items: center;
width: 160vh;
max-width: 100%;
margin-top: 2em;
margin-bottom: 3em;
}
.MenuS_title>name {
font-family: 'Stereofunk', sans-serif;
font-size: 4em;
line-height: 1;
margin-bottom: 0.2em;
}
.MenuS_title>subname {
font-size: 2.5em;
font-family: 'Stereofunk', sans-serif;
font-weight: bold;
width: 100%;
display: flex;
align-items: center;
height: 0.2em;
}
.MenuS_title>subname>underline {
width: 100%;
height: 100%;
margin-top: 0.1em;
border-radius: 1em;
border-style: solid;
border-width: 0.05em;
}
.MenuS_title>subname>back {
padding: 0.2em 0.5em;
cursor: pointer;
transition: transform 0.5s ease, text-shadow 0.5s ease;
}
.MenuS_title>subname>back:hover {
transform: translateX(0.2em);
}
.MenuS_boby {
min-height: 0;
/* firefox does not set automatically */
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
/*height: 80vh;*/
width: 160vh;
max-width: 100%;
aspect-ratio: 1.4;
}
.MenuS_list {
--MenuS_list_width: clamp(20vh, calc(80vw - 100vh), 36vh);
/* --MenuS_list_width: clamp(22vh, calc(100% - 100vh), 36vh); */
/*font size by its width*/
font-size: calc(var(--MenuS_list_width) / 28);
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
height: 90%;
/* min: 22vh */
/* max: 36vh */
width: var(--MenuS_list_width);
margin-right: 1em;
}
.MenuS_list>div {
width: 100%;
height: 3em;
display: flex;
align-items: center;
justify-content: flex-start;
font-family: 'Stereofunk', sans-serif;
font-size: 2.5em;
line-height: 1.2em;
font-weight: bold;
text-align: center;
color: transparent;
-webkit-text-stroke-width: 0.02em;
word-wrap: break-word;
overflow-wrap: break-word;
hyphens: auto;
cursor: pointer;
transition-property: -webkit-text-stroke-color, text-shadow, transform;
transition-duration: 0.3s;
transition-timing-function: ease;
}
.MenuS_list>div:hover {
transform: translateX(0.6em);
}
.MenuS_list>div:not(:last-child)::before {
content: "+\00a0";
}
.MenuS_list>div:last-child::before {
content: "-\00a0";
}
.MenuS_list>hr {
width: 100%;
height: 0.1em;
border: none;
background-color: var(--MenuS_color_M_0);
}
.MenuS_content {
/*background-color: #0a69055c;*/
/*border: solid 1px #000;*/
/* DEV */
position: relative;
flex: 1;
height: 100%;
display: flex;
align-items: center;
justify-content: flex-end;
transition: opacity 0.5s ease-in-out;
}
.MenuS_content>div {
display: none;
position: absolute;
top: 0;
right: 0;
width: 100%;
height: 95%;
align-items: center;
justify-content: center;
opacity: 0;
pointer-events: none;
transition: opacity 0.5s ease-in-out;
}
.MenuS_content>div.active {
opacity: 1;
pointer-events: all;
display: block;
}
/*.MenuS_illustrations {
background-color: #ff000012;
}*/
.MenuS_illustrations>img {
position: absolute;
top: 0;
right: 0;
height: 100%;
opacity: 0;
transition: opacity 0.5s ease;
}
</style>\
<!-- SCRIPT - 1 - Menu -->\
<script>
var tchange = document.getElementById('titlechange'); // Get the div element
var MenuV_colorMap = {
"default": 'D',
"goals": 0,
"women": 1,
"achievements": 2,
"market": 3,
"cheats": 4,
"settings": 5
};
if (!window.MenuV_State) {
window.MenuV_State = "default";
}
function titleAchievements() {
tchange.textContent = 'Achievements';
}
function titleMarket() {
tchange.textContent = 'Market';
}
function titleGoals() {
tchange.textContent = 'Goals';
}
function titleWomen() {
tchange.textContent = 'Scenes';
}
function titleCheats() {
tchange.textContent = 'Cheats';
}
function titleSettings() {
tchange.textContent = 'Settings';
}
function MenuF_sideButton_setColor(el, i) {
el.style.webkitTextStrokeColor = `var(--MenuS_color_${i}_0_hover)`;
el.style.textShadow = `
0 0 0.1em rgba(0, 0, 0, 0.568),
0 0 0.2em var(--MenuS_color_${i}_1_hover),
0 0 0.2em var(--MenuS_color_${i}_1_hover)`;
}
function MenuF_sideButton_removeColor(el) {
el.style.webkitTextStrokeColor = "";
el.style.textShadow = "";
}
function MenuF_set_menuColor(type) {
let type_split = type.split(".");
type = type_split[0];
console.log('color set to', type);
let MenuS_mainCont = document.querySelector('.MenuS_mainCont');
let index = MenuV_colorMap[type] || "D";
MenuS_mainCont.style.setProperty('--MenuS_color_M_0', `var(--MenuS_color_${index}_0)`);
MenuS_mainCont.style.setProperty('--MenuS_color_M_1', `var(--MenuS_color_${index}_1`);
MenuS_mainCont.style.setProperty('--MenuS_color_M_0_hover', `var(--MenuS_color_${index}_0_hover)`);
MenuS_mainCont.style.setProperty('--MenuS_color_M_1_hover', `var(--MenuS_color_${index}_1_hover)`);
}
function MenuF_init_illustrations() {
let MenuS_list = document.querySelectorAll('.MenuS_list > div[type]');
let MenuS_illustrations = document.querySelectorAll('.MenuS_illustrations > img');
MenuS_list.forEach((el, i) => {
el.addEventListener('mouseover', () => {
if (!MenuS_illustrations[i]) return;
MenuS_illustrations[i].style.opacity = 1;
MenuF_sideButton_setColor(el, i);
});
el.addEventListener('mouseout', () => {
if (!MenuS_illustrations[i]) return;
MenuS_illustrations[i].style.opacity = 0;
MenuF_sideButton_removeColor(el);
});
});
}
function MenuF_init_MenuSelection() {
let MenuS_list_buttons = document.querySelectorAll('.MenuS_list > div[type]');
MenuS_list_buttons.forEach((el) => {
let type = el.getAttribute('type');
if (!type) return;
el.addEventListener('click', () => {
MenuV_State = type;
MenuF_click_menu(type);
});
});
// hard code the women menu
let women_buttons = document.querySelectorAll('.character_selection_center_block > .character_selection_main_buttons');
women_buttons.forEach((el) => {
let type = el.getAttribute('type');
if (!type) return;
el.addEventListener('click', () => {
MenuV_State = type;
MenuF_click_menu(type);
});
});
}
function MenuF_click_menu(type) {
playAudio("sfx", "menu1.mp3");
let MenuS_contents = document.querySelectorAll('.MenuS_content > div');
let content = document.querySelector(`.MenuS_content > div[type="${type}"]`);
if (!content) return;
MenuS_contents.forEach((el2) => { // hide all
el2.classList.remove('active');
el2.style.display = "block";
setTimeout(() => {
el2.removeAttribute('style');
}, 500);
});
content.classList.add('active'); // show the selected
MenuF_set_menuColor(type);
MenuV_State = type;
}
function MenuF_Back() {
let MenuV_State_split = MenuV_State.split(".");
let l = MenuV_State_split.length;
let new_state;
let new_state_color;
tchange.textContent = 'Menu';
if (MenuV_State === "default") {
console.log("EXIT");
exitAngela();
return;
}
if (l === 1) {
new_state = "default";
} else {
new_state = MenuV_State_split.slice(0, l - 1).join("."); //ex: women.groups.test -> women.groups
}
MenuV_State = new_state;
MenuF_click_menu(new_state);
}
MenuF_init_illustrations();
MenuF_init_MenuSelection();
MenuF_click_menu(MenuV_State); // init
</script>\
\
\
<!-- STYLE - 1 - Women & Scenes -->\
<style>
button {
color: white;
}
.character_selection_center_block {
margin-left: auto;
margin-right: auto;
width: 100vh;
margin-top: 3vh;
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-content: flex-end;
justify-content: center;
font-family: 'Teko', sans-serif;
}
.character_selection_main_buttons {
height: 28vh;
width: 28vh;
margin: 6vh;
border-radius: 3vh;
display: flex;
border: solid 1vh rgba(73, 0, 0, 0.973);
flex-direction: column;
justify-content: center;
flex-wrap: NOwrap;
/*(❁´◡`❁)(❁´◡`❁)(❁´◡`❁)(❁´◡`❁)(❁´◡`❁)*/
align-items: center;
transition: all 0.1s ease-in-out;
cursor: pointer;
position: relative;
z-index: 3;
border: 3px solid var(--MenuS_color_M_0);
text-shadow: var(--MenuS_color_M_0);
box-shadow: inset 0 0 0.5vw var(--MenuS_color_M_0), 0 0 0.5vw var(--MenuS_color_M_0), 0 0 1vw var(--MenuS_color_M_0);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
border-radius: 2vh;
}
.character_selection_main_buttons:hover {
background-color: rgba(0, 0, 0, 0.8);
box-shadow: inset 0 0 1vw var(--MenuS_color_M_0_hover), 0 0 1vw var(--MenuS_color_M_0_hover), 0 0 1.5vw var(--MenuS_color_M_0_hover), 0 0 2vw var(--MenuS_color_M_0_hover);
text-shadow: 0 0 1vw var(--MenuS_color_M_0_hover), 0 0 1.5vw var(--MenuS_color_M_0_hover), 0 0 2vw var(--MenuS_color_M_0_hover);
transition: all ease 0.3s;
}
.character_selection_main_buttons img {
height: 99%;
border-radius: 2.3vh;
position: absolute;
z-index: 1;
}
.swords img {
height: 100%;
width: 100%;
border-radius: 2.3vh;
position: absolute;
z-index: 1;
}
.groups img {
height: 60%;
border-radius: 2.3vh;
position: absolute;
z-index: 1;
}
.character_selection_main_buttons div {
font-size: 3.6vh;
text-align: center;
margin: 5% 5% 2% 5%;
font-size: 3.5vh;
z-index: 3;
}
.character_selection_main_buttons .shadow {
height: 100%;
width: 100%;
border-radius: 2vh;
position: absolute;
top: -1.4vh;
box-shadow: inset 0 0 7vh 3vh rgba(0, 0, 0, 1);
z-index: 2;
}
.character_selection_main_buttons .less {
border-radius: 2vh;
position: absolute;
box-shadow: inset 0 0 4vh 1vh rgba(0, 0, 0, 1);
z-index: 2;
}
#character_selection_upper_left_block {
height: 100%;
left: 9vh;
top: 3vh;
aspect-ratio: 1/1;
position: relative;
border: solid 0.75vh rgba(73, 0, 0, 0.973);
border-radius: 50%;
background-color: rgba(44, 133, 160, 0);
transition: all 0.1s ease-in-out;
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow: 0px 0px 8px rgba(255, 0, 0, 0.4), 0px 0px 16px rgba(255, 0, 0, 0.4), 0px 0px 24px rgba(255, 0, 0, 0.4);
/* For centering text */
box-shadow: inset 0 0 0.5vw rgba(255, 0, 0, 0.4), 0 0 0.5vw rgba(255, 0, 0, 0.4), 0 0 1vw rgba(255, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
#character_selection_upper_left_block img {
height: 65%;
}
#character_selection_upper_right_block {
height: 38%;
width: 22vh;
padding-top: 0.5vh;
top: 7vh;
right: 7vh;
position: relative;
border-radius: 2vh;
font-size: 5vh;
border: solid 0.75vh rgba(73, 0, 0, 0.973);
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
font-family: 'Teko', sans-serif;
transition: all 0.1s ease-in-out;
cursor: pointer;
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow: 0px 0px 8px rgba(255, 0, 0, 0.4), 0px 0px 16px rgba(255, 0, 0, 0.4), 0px 0px 24px rgba(255, 0, 0, 0.4);
/* For centering text */
box-shadow: inset 0 0 0.5vw rgba(255, 0, 0, 0.4), 0 0 0.5vw rgba(255, 0, 0, 0.4), 0 0 1vw rgba(255, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
#character_selection_upper_right_block:hover {
background-color: rgba(0, 0, 0, 0.8);
box-shadow: inset 0 0 1vw rgba(255, 0, 0, 0.6), 0 0 0.5vw rgba(255, 0, 0, 0.6), 0 0 1vw rgba(255, 0, 0, 0.6), 0 0 2vw rgba(255, 0, 0, 0.6);
text-shadow: 0 0 1vw rgba(255, 0, 0, 0.6), 0 0 1vw rgba(255, 0, 0, 0.6), 0 0 1vw rgba(255, 0, 0, 0.6);
transition: all ease 0.3s;
}
.character_selection_upperblocks_container {
height: 20%;
width: 100%;
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-content: center;
justify-content: space-between;
}
.character img {
height: 90%;
border-radius: 2.3vh;
position: absolute;
z-index: 1;
}
</style>\
<!-- SCRIPT - 1 - Women & Scenes -->\
<script>
</script>\
\
\
<!-- STYLE - 2 - Women -->\
<style>
/* body {
overflow: hidden;
} */
/* #story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
} */
/* #ui-bar.stowed ~ #story {
margin-left: 0;
} */
/* #passages {
margin: 0;
max-width: 100%;
} */
/* .passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
font-weight: bold;
background-color: #1d1d1d;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
font-family: 'Teko', sans-serif;
} */
/* * {
user-select: none;
} */
.woman_and_scenes_button_container {
height: 20%;
width: 100%;
display: flex;
flex-wrap: nowrap;
align-content: center;
justify-content: space-between;
font-family: 'Teko', sans-serif;
position: relative;
color: rgb(163, 162, 162);
position: relative;
top: 8vh;
}
#woman_and_scenes_button {
height: 100%;
/*width: 20vh;*/
aspect-ratio: 1;
border: solid 1vh rgb(83, 0, 0);
border-radius: 50%;
background-color: rgba(44, 133, 160, 0);
transition: all 0.1s ease-in-out;
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
margin: 2vh;
position: relative;
left: 2vh;
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow: 0px 0px 8px rgba(255, 0, 0, 0.4), 0px 0px 16px rgba(255, 0, 0, 0.4), 0px 0px 24px rgba(255, 0, 0, 0.4);
/* For centering text */
box-shadow: inset 0 0 0.5vw rgba(255, 0, 0, 0.4), 0 0 0.5vw rgba(255, 0, 0, 0.4), 0 0 1vw rgba(255, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
#woman_and_scenes_button img {
height: 12vh;
width: 12vh;
border-radius: 50%;
}
#woman_and_scenes_goback_button {
height: 40%;
width: 22vh;
padding-top: 0.5vh;
top: 7vh;
right: 8vh;
position: relative;
border-radius: 2vh;
font-size: 5vh;
border: solid 0.75vh rgba(73, 0, 0, 0.973);
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
font-family: 'Teko', sans-serif;
transition: all 0.1s ease-in-out;
cursor: pointer;
background-color: #2c2c2c;
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow: 0px 0px 8px rgba(255, 0, 0, 0.4), 0px 0px 16px rgba(255, 0, 0, 0.4), 0px 0px 24px rgba(255, 0, 0, 0.4);
/* For centering text */
box-shadow: inset 0 0 0.5vw rgba(255, 0, 0, 0.4), 0 0 0.5vw rgba(255, 0, 0, 0.4), 0 0 1vw rgba(255, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
#woman_and_scenes_goback_button:hover {
background-color: rgba(0, 0, 0, 0.8);
box-shadow: inset 0 0 1vw rgba(255, 0, 0, 0.6), 0 0 1vw rgba(255, 0, 0, 0.6), 0 0 1.5vw rgba(255, 0, 0, 0.6), 0 0 2vw rgba(255, 0, 0, 0.6);
text-shadow: 0 0 1vw rgba(255, 0, 0, 0.6), 0 0 1.5vw rgba(255, 0, 0, 0.6), 0 0 2vw rgba(255, 0, 0, 0.6);
}
.women_and_scenes_holy_div {
height: 95%;
display: flex;
justify-content: center;
/* position: relative;
top: -5vh; */
color: rgb(163, 162, 162);
}
#parent_woman_and_scenes_template {
height: 100%;
width: 89vh;
display: flex;
transition: opacity 0.3s ease-in-out;
flex-wrap: nowrap;
overflow-x: scroll;
overflow-y: hidden;
scrollbar-width: none;
font-family: 'Teko', sans-serif;
}
#parent_woman_and_scenes_template::-webkit-scrollbar {
display: none;
}
.woman_and_scenes_template {
background-color: rgba(250, 128, 114, 0);
height: 100%;
width: 120vh;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
}
.woman_and_scenes_icon_presentation {
height: 40%;
width: 65%;
display: flex;
position: relative;
left: 1.5vh;
}
.plus_button {
height: 20%;
width: 11%;
border-radius: 50%;
border: solid 0.5vh;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
position: absolute;
left: 40vh;
top: 4vh;
z-index: 4;
background-color: #2c2c2c;
border: 3px solid var(--theme-color);
text-shadow: 0px 0px 8px var(--theme-color), 0px 0px 16px var(--theme-color), 0px 0px 24px var(--theme-color);
box-shadow: inset 0 0 0.5vw var(--theme-color), 0 0 0.5vw var(--theme-color), 0 0 1vw var(--theme-color);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.plus_button:hover {
background-color: rgba(0, 0, 0, 0.8);
box-shadow: inset 0 0 1vw var(--theme-color), 0 0 1vw var(--theme-color), 0 0 1.5vw var(--theme-color), 0 0 2vw var(--theme-color);
text-shadow: 0 0 1vw var(--theme-color), 0 0 1.5vw var(--theme-color), 0 0 2vw var(--theme-color);
}
.plus_button img {
height: 180%;
}
.icon_presentation_bubble {
background-color: rgb(6, 0, 0);
height: 100%;
aspect-ratio: 1;
border-radius: 50%;
display: flex;
position: relative;
justify-content: center;
right: 1vh;
border: solid 1vh black;
z-index: 1;
border: 3px solid var(--theme-color);
text-shadow: 0px 0px 8px var(--theme-color), 0px 0px 16px var(--theme-color), 0px 0px 24px var(--theme-color);
/* For centering text */
box-shadow: inset 0 0 0.5vw var(--theme-color), 0 0 0.5vw var(--theme-color), 0 0 1vw var(--theme-color);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
margin-top: 3vh;
margin-left: 12vh;
}
.icon_presentation_bubble img {
height: 100%;
width: 100%;
border-radius: 50%;
position: relative;
top: 0.1vh;
left: 0.05vh;
z-index: 0;
object-fit: contain;
}
.shadow {
position: absolute;
width: 101%;
height: 101%;
border-radius: 50%;
z-index: 2;
}
.icon_stats_1 {
height: 50%;
width: 10vh;
display: flex;
flex-wrap: wrap;
position: relative;
left: 5vh;
top: 2vh;
}
.icon_stats_1_img {
height: 9vh;
width: 9vh;
border-radius: 50%;
position: relative;
top: 4vh;
}
.icon_stats_1_img img {
height: 9vh;
width: 9vh;
border-radius: 50%;
}
.icon_stats_1_txt {
height: 5vh;
width: 9vh;
position: relative;
top: 2vh;
background-color: transparent;
text-align: center;
font-size: 4vh;
color: white;
}
.icon_stats_2 {
height: 50%;
width: 10vh;
display: flex;
flex-wrap: wrap;
position: relative;
left: -5vh;
top: 18vh;
}
.icon_stats_2_img {
height: 9vh;
width: 9vh;
border-radius: 50%;
position: relative;
top: 4vh;
}
.icon_stats_2_img img {
height: 9vh;
width: 9vh;
border-radius: 50%;
}
.icon_stats_2_txt {
height: 5vh;
width: 9vh;
position: relative;
top: 2vh;
text-align: center;
font-size: 4vh;
color: white;
}
.woman_and_scenes_scenes_button {
height: 20%;
width: 23%;
display: flex;
flex-wrap: wrap;
position: relative;
cursor: pointer;
border-radius: 3.5vh;
border: solid 0.6vh;
border: 3px solid var(--theme-color);
text-shadow: 0px 0px 8px var(--theme-color), 0px 0px 16px var(--theme-color), 0px 0px 24px var(--theme-color);
/* For centering text */
box-shadow: inset 0 0 0.5vw var(--theme-color), 0 0 0.5vw var(--theme-color), 0 0 1vw var(--theme-color);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
margin-right: 7vh;
top: 5.5vh;
}
.woman_and_scenes_scenes_button:hover {
background-color: rgba(0, 0, 0, 0.8);
box-shadow: inset 0 0 1vw var(--theme-color), 0 0 1vw var(--theme-color), 0 0 1.5vw var(--theme-color), 0 0 2vw var(--theme-color);
text-shadow: 0 0 1vw var(--theme-color), 0 0 1.5vw var(--theme-color), 0 0 2vw var(--theme-color);
}
.woman_and_scenes_scenes_button_img {
height: 12vh;
width: 25vh;
border: solid 0.6vh rgba(3, 0, 0, 0);
background-color: rgba(152, 18, 18, w0);
display: flex;
justify-content: center;
}
.woman_and_scenes_scenes_button_img img {
height: 82%;
position: relative;
top: 1vh;
}
.woman_and_scenes_scenes_button_txt {
height: 30%;
width: 25vh;
border: solid 0.6vh rgba(3, 0, 0, 0);
background-color: rgba(152, 18, 18, 0);
font-size: 3vh;
position: relative;
top: -1vh;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
justify-content: center;
align-items: center;
}
.woman_trust_button {
height: 20%;
width: 23%;
display: flex;
flex-wrap: wrap;
position: relative;
cursor: pointer;
border-radius: 3.5vh;
border: solid 0.6vh;
border: 3px solid var(--theme-color);
text-shadow: 0px 0px 8px var(--theme-color), 0px 0px 16px var(--theme-color), 0px 0px 24px var(--theme-color);
/* For centering text */
box-shadow: inset 0 0 0.5vw var(--theme-color), 0 0 0.5vw var(--theme-color), 0 0 1vw var(--theme-color);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
left: 37.5vh;
top: 22.5vh;
}
.woman_trust_button:hover {
background-color: rgba(0, 0, 0, 0.8);
box-shadow: inset 0 0 1vw var(--theme-color), 0 0 1vw var(--theme-color), 0 0 1.5vw var(--theme-color), 0 0 2vw var(--theme-color);
text-shadow: 0 0 1vw var(--theme-color), 0 0 1.5vw var(--theme-color), 0 0 2vw var(--theme-color);
}
.woman_trust_button_img {
height: 12vh;
width: 25vh;
border: solid 0.6vh rgba(3, 0, 0, 0);
background-color: rgba(152, 18, 18, w0);
display: flex;
justify-content: center;
}
.woman_trust_button_img img {
height: 82%;
position: relative;
top: 1vh;
}
.woman_trust_button_txt {
height: 30%;
width: 25vh;
border: solid 0.6vh rgba(3, 0, 0, 0);
background-color: rgba(152, 18, 18, 0);
font-size: 3vh;
position: relative;
top: -1vh;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
justify-content: center;
align-items: center;
}
.woman_lust_button {
height: 20%;
width: 23%;
display: flex;
flex-wrap: wrap;
position: relative;
cursor: pointer;
border-radius: 3.5vh;
border: solid 0.6vh;
border: 3px solid var(--theme-color);
text-shadow: 0px 0px 8px var(--theme-color), 0px 0px 16px var(--theme-color), 0px 0px 24px var(--theme-color);
/* For centering text */
box-shadow: inset 0 0 0.5vw var(--theme-color), 0 0 0.5vw var(--theme-color), 0 0 1vw var(--theme-color);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
left: 16vh;
top: 2vh;
}
.woman_lust_button:hover {
background-color: rgba(0, 0, 0, 0.8);
box-shadow: inset 0 0 1vw var(--theme-color), 0 0 1vw var(--theme-color), 0 0 1.5vw var(--theme-color), 0 0 2vw var(--theme-color);
text-shadow: 0 0 1vw var(--theme-color), 0 0 1.5vw var(--theme-color), 0 0 2vw var(--theme-color);
}
.woman_lust_button_img {
height: 12vh;
width: 25vh;
border: solid 0.6vh rgba(3, 0, 0, 0);
background-color: rgba(152, 18, 18, w0);
display: flex;
justify-content: center;
}
.woman_lust_button_img img {
height: 82%;
position: relative;
top: 1vh;
}
.woman_lust_button_txt {
height: 30%;
width: 25vh;
border: solid 0.6vh rgba(3, 0, 0, 0);
background-color: rgba(152, 18, 18, 0);
font-size: 3vh;
position: relative;
top: -1vh;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
justify-content: center;
align-items: center;
}
.woman_and_scenes_description {
background-color: rgba(255, 255, 255, 0);
height: 55vh;
display: flex;
align-items: center;
margin-left: 4.5vh;
}
.description_bubble {
height: 70%;
width: 60%;
display: flex;
position: relative;
border-radius: 6vh;
border: solid 0.5vh rgb(152, 18, 18);
border: 3px solid var(--theme-color);
/*text-shadow: 0px 0px 8px var(--theme-color), 0px 0px 16px var(--theme-color), 0px 0px 24px var(--theme-color);*/
/* For centering text */
box-shadow: inset 0 0 0.5vw var(--theme-color), 0 0 0.5vw var(--theme-color), 0 0 1vw var(--theme-color);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
bottom: 16vh;
}
.description_bubble_left {
height: 38.5vh;
width: 65%;
border-radius: 6vh 0 0 6vh;
display: flex;
flex-wrap: wrap;
align-content: flex-start;
}
.description_bubble_name {
height: 11vh;
font-size: 5vh;
display: flex;
justify-content: center;
align-items: center;
margin-left: 4vh;
position: relative;
margin-right: 3vh;
}
.description_bubble_role {
height: 2vh;
font-size: 4vh;
position: relative;
display: flex;
justify-content: left;
align-items: center;
width: 16vh;
overflow: visible;
text-align: left;
flex-wrap: nowrap;
text-wrap: nowrap;
margin-left: 4vh;
}
.description_bubble_age {
height: 11vh;
font-size: 4vh;
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
.description_bubble_right {
height: 2vh;
width: 27.8vh;
border-radius: 0 6vh 6vh 0;
display: flex;
flex-wrap: wrap;
align-content: center;
align-items: center;
justify-content: center;
}
.description_bubble_prsentationtxt {
width: 50vh;
font-size: 2.8vh;
display: flex;
justify-content: space-between;
align-items: center;
margin-left: 10vh;
position: relative;
left: -6vh;
}
.description_bubble_prsentationtxt p {
width: 44.5vh;
}
.description_bubble_right_top {
height: 40%;
width: 100%;
display: flex;
flex-wrap: wrap;
align-content: space-between;
justify-content: center;
}
.description_bubble_right_top_image {
top: -1vh;
right: 2, 5vh;
height: 12vh;
width: 12vh;
border-radius: 50%;
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
.description_bubble_right_top_image img {
height: 5vh;
/* make the image grey instead of black */
filter: invert(25%) sepia(5%) saturate(0%) hue-rotate(15deg) brightness(84%) contrast(89%);
}
.description_bubble_right_top_size {
height: 5vh;
width: 9vh;
position: relative;
display: flex;
justify-content: center;
align-items: center;
font-size: 4vh;
bottom: 3.2vh;
}
.description_bubble_right_top_text {
height: 5vh;
width: 28vh;
position: relative;
top: 1vh;
left: 0vh;
display: flex;
justify-content: center;
align-items: center;
font-size: 3vh;
}
.description_bubble_right_bottom {
height: 60%;
width: 100%;
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
}
#women_and_scenes_arrow_left {
width: 0;
height: 0;
margin-left: 8;
top: 38vh;
border-bottom: 5vh solid transparent;
border-top: 5vh solid transparent;
transition: all 0.1s ease-in-out;
cursor: pointer;
border-right: 5vh solid rgb(163, 162, 162);
position: relative;
margin-right: 1vh;
}
#women_and_scenes_arrow_left:hover {
transform: translate(0.25vh, -0.25vh);
box-shadow: 15vh rgba(255, 255, 255, 0.5);
border-color: transparent rgba(255, 255, 255, 0.987) transparent transparent;
}
#women_and_scenes_arrow_right {
width: 0;
height: 0;
margin-left: 8;
top: 37vh;
border-bottom: 5vh solid transparent;
border-top: 5vh solid transparent;
transition: all 0.1s ease-in-out;
cursor: pointer;
border-left: 5vh solid rgb(163, 162, 162);
position: relative;
margin-left: 1vh;
}
#women_and_scenes_arrow_right:hover {
transform: translate(0.25vh, -0.25vh);
box-shadow: 15vh rgba(255, 255, 255, 0.5);
border-color: transparent transparent transparent rgba(255, 255, 255, 0.987);
}
.disabled {
opacity: 0.5;
pointer-events: none;
}
.position_list {
height: 80%;
width: 70%;
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
border: solid 0.5vh rgb(161, 160, 160);
border-radius: 1vh;
}
.morning_position {
height: 20%;
width: 90%;
text-align: center;
border-radius: 1vh;
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
}
.morning_position_txt {
height: 100%;
width: 50%;
font-size: 1.8vh;
display: flex;
justify-content: center;
align-items: center;
}
.morning_position_value {
height: 100%;
width: 50%;
font-size: 1.8vh;
display: flex;
justify-content: center;
align-items: center;
}
.evening_position {
height: 20%;
width: 90%;
text-align: center;
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
}
.evening_position_txt {
height: 100%;
width: 50%;
font-size: 1.8vh;
display: flex;
justify-content: center;
align-items: center;
}
.evening_position_value {
height: 100%;
width: 50%;
font-size: 1.8vh;
display: flex;
justify-content: center;
align-items: center;
}
.afternoon_position {
height: 20%;
width: 90%;
text-align: center;
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
}
.afternoon_position_txt {
height: 100%;
width: 50%;
font-size: 1.8vh;
display: flex;
justify-content: center;
align-items: center;
}
.afternoon_position_value {
height: 100%;
width: 50%;
font-size: 1.8vh;
display: flex;
justify-content: center;
align-items: center;
}
.night_position {
height: 20%;
width: 90%;
text-align: center;
border-radius: 1vh;
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
}
.night_position_txt {
height: 100%;
width: 50%;
font-size: 1.8vh;
display: flex;
justify-content: center;
align-items: center;
}
.night_position_value {
height: 100%;
width: 50%;
font-size: 1.8vh;
display: flex;
justify-content: center;
align-items: center;
}
</style>\
<!-- SCRIPT - 2 - Women -->\
<script>
// Get the scrollable element
var scrollableElement = document.getElementById('parent_woman_and_scenes_template');
// Get the arrow elements
var leftArrow = document.getElementById('women_and_scenes_arrow_left');
var rightArrow = document.getElementById('women_and_scenes_arrow_right');
var characters = [
{ name: "cherie" },
{ name: "lana" },
{ name: "elfie" },
{ name: "gabbie" },
{ name: "angela" },
{ name: "mia" },
];
// --------- Functions ---------------------------------------------------------------
/*function getimageSet(obj) { // à réactiver pour + bu
function getimageSetIndex(obj) {
var characterName = obj.name;
var avatars = SV.avatar.list;
function findUnderIndex(index) { //when index: 0, first is selected
//for (var i = 0; i < avatars.length; i++) {
//var avatar = avatars[i];
for (avatar in avatars) {
if (avatars[avatar].character_name != characterName) continue;
if (avatars[avatar].bought == false) continue;
if (index >= avatars[avatar].image_index) continue;
return avatars[avatar].image_index;
}
return -1;
}
var currentImageSetIndex = SV.characters[obj.name].image_set;
var index2 = findUnderIndex(currentImageSetIndex);
//if (index2 == -1) { index2 = findUnderIndex(0) }
if (index2 == -1) index2 = 0;
return index2;
}
var plusButton = document.getElementById(`plus_button_${obj.name}`);
plusButton.addEventListener('click', function () {
/*var imageSet = SV.characters[obj.name].image_set;
if (imageSet < SV.characters[obj.name].image.length - 1) {
imageSet++;
} else {
imageSet = 0;
}
var imageSet = getimageSetIndex(obj);
SV.characters[obj.name].image_set = imageSet;
var icon_presentation_bubble = this.parentNode.querySelector('.icon_presentation_bubble');
icon_presentation_bubble.innerHTML = `
<img src="${SV.characters[obj.name].image[imageSet]}">
<div class="shadow"></div>`;
applyStylesToShadows();
});
}*/
function applyStylesToShadows() {
var characterKey = Object.keys(characters); // obj to array
for (var i = 0; i < characterKey.length; i++) {
var character = characters[characterKey[i]];
var bordercolor = SV.characters[character.name].bordercolor; //--theme-color
var shadows = document.querySelectorAll('.icon_presentation_bubble > .shadow');
shadows.forEach(function (shadow, index) {
if (index === i) {
shadow.style.boxShadow = `inset 0 0 4vh 1.5vh ${bordercolor}`;
shadow.style.color = bordercolor;
}
});
}
}
function create_template(obj) {
var templateId = `plus_button_${obj.name}`;
var template = `
<div class="woman_and_scenes_template" style="--theme-color: ${SV.characters[obj.name].bordercolor}">
<div class="woman_and_scenes_icon_presentation">
<!--div class="plus_button" id="${templateId}" style="border-color:${SV.characters[obj.name].bordercolor}">
<img src="ressources/icons/13A7.webp"style = "filter: drop-shadow(0 200vh 0 ${SV.characters[obj.name].bordercolor});transform: translateY(-200vh);">
</div-->
<div class="icon_presentation_bubble"style="border-color:${SV.characters[obj.name].bordercolor}">
<img src="${getCharacterImg(obj.name)}">
<div class="shadow"></div>
</div>
</div>
<div onclick="getscenePage('${obj.name}')" class="woman_and_scenes_scenes_button"style="background-color:${SV.characters[obj.name].backgroundcolor}; border-color:${SV.characters[obj.name].bordercolor};">
<div class="woman_and_scenes_scenes_button_img">
<img src="ressources/icons/13C16.webp">
</div>
<div class="woman_and_scenes_scenes_button_txt">
<p>Scenes</p>
</div>
</div>
<div onclick="getTrustPage('${obj.name}')" class="woman_trust_button"style="background-color:${SV.characters[obj.name].backgroundcolor}; border-color:${SV.characters[obj.name].bordercolor};">
<div class="woman_trust_button_img">
<img src="ressources/maingui/attributes/trust_icon.webp">
<div class="icon_stats_1_txt">${num_abreviation(SV.characters[obj.name].stats.trust)}</div>
</div>
<div class="woman_trust_button_txt">
<p>Trust Progress</p>
</div>
</div>
<div onclick="getLustPage('${obj.name}')" class="woman_lust_button"style="background-color:${SV.characters[obj.name].backgroundcolor}; border-color:${SV.characters[obj.name].bordercolor};">
<div class="woman_lust_button_img">
<img src="ressources/maingui/attributes/lust_icon.webp">
<div class="icon_stats_1_txt">${num_abreviation(SV.characters[obj.name].stats.lust)}</div>
</div>
<div class="woman_lust_button_txt">
<p>Lust Progress</p>
</div>
</div>
<div class="woman_and_scenes_description">
<div class="description_bubble"style="background-color:${SV.characters[obj.name].backgroundcolor}; border-color:${SV.characters[obj.name].bordercolor}">
<div class="description_bubble_left">
<div class="description_bubble_name">
<p>${SV.characters[obj.name].name}</p>
</div>
<div class="description_bubble_age">
<p>${SV.characters[obj.name].age} y/o</p>
</div>
<div class="description_bubble_role">
<p>${SV.characters[obj.name].role}</p>
</div>
<div class="description_bubble_prsentationtxt">
<p>${SV.characters[obj.name].desc}</p>
</div>
</div>
<div class="description_bubble_right">
<div class="description_bubble_right_top">
<div class="description_bubble_right_top_image">
<img src="ressources/maingui/sexuals/boobjob.webp">
</div>
<div class="description_bubble_right_top_size">${SV.characters[obj.name].cup_size}</div>
</div>
</div>
</div>
</div>
</div>`;
return template;
}
characters.forEach(function (character) {
scrollableElement.innerHTML += create_template(character);
});
applyStylesToShadows();
/*characters.forEach(function (character) { // à réactiver pour + button
getimageSet(character, `plus_button_${character.name}`);
});*/
// Define the width of the scrollable element
var mainelement = document.querySelector('.woman_and_scenes_template')
var scrollStep;
function calculatedwidth() {
var computedStyle = window.getComputedStyle(mainelement);
var width = computedStyle.width; // Width
var marginLeft = computedStyle.marginLeft; // Left margin
var marginRight = computedStyle.marginRight; // Right margin
var widthInt = parseInt(width, 10);
var marginLeftInt = parseInt(marginLeft, 10);
var marginRightInt = parseInt(marginRight, 10);
// Define the scrolling step (how many pixels to scroll per click)
scrollStep = widthInt + marginLeftInt + marginRightInt;
}
function fadeOut(i) {
if (leftArrow.classList.contains('disabled') || rightArrow.classList.contains('disabled')) {
return; // Exit early if the arrow is disabled
}
// Small margin of error to consider as the "end" or "start"
var errorMargin = scrollableElement.scrollWidth * 0.05;
// Check if scrolling is possible to the left or right
var canScrollLeft = (i < 0 && scrollableElement.scrollLeft > errorMargin);
var canScrollRight = (i > 0 && (scrollableElement.scrollLeft + scrollableElement.offsetWidth + errorMargin) < scrollableElement.scrollWidth);
// If scrolling is possible in the chosen direction, then perform the fade out and scrolling
if (canScrollLeft || canScrollRight) {
leftArrow.classList.add('disabled');
rightArrow.classList.add('disabled');
scrollableElement.style.opacity = "0";
setTimeout(function () {
scrollableElement.scrollBy({
left: scrollStep * i,
behavior: "smooth"
});
}, 100);
setTimeout(function () {
scrollableElement.style.opacity = "1";
// Wait for an additional half-second before enabling the arrows again
setTimeout(function () {
leftArrow.classList.remove('disabled');
rightArrow.classList.remove('disabled');
}, 250);
}, 300);
} else { // Else, do nothing (i.e., make scroll impossible)
return;
}
}
// Attach event listeners to the arrows
leftArrow.addEventListener('click', function () {
calculatedwidth();
fadeOut(-1);
});
rightArrow.addEventListener('click', function () {
calculatedwidth();
fadeOut(1);
});
//});
function getWomenStats(trust, lust) {
var trust = document.querySelector('.icon_stats_1_txt');
var lust = document.querySelector('.icon_stats_2_txt');
let trustvalue = SV.characters[obj.name].trust;
let lustvalue = SV.characters[obj.name].lust;
trust.innerHTML = trustvalue;
lust.innerHTML = lustvalue;
}
// make the function that detects the which scenes button knowin the character name
function getscenePage(characterName) {
if (characterName == "cherie") {
playPassage('CHERIE SCENES');
} else if (characterName == "lana") {
playPassage('LANA SCENES');
} else if (characterName == "elfie") {
playPassage('ELFIE SCENES');
} else if (characterName == "gabbie") {
playPassage('GABBIE SCENES');
} else if (characterName == "angela") {
playPassage('ANGELA SCENES');
} else if (characterName == "mia") {
playPassage('MIA SCENES');
}
}
function getTrustPage(characterName) {
RoadM_appear(characterName, "trust");
}
function getLustPage(characterName) {
RoadM_appear(characterName, "lust");
}
</script>\
\
\
<!-- STYLE - 1 - Achievements -->\
<style>
.achievements_adjust {
height: 100%;
width: 100%;
margin-top: 3%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
align-content: center;
}
.achievements_upper_buttons {
width: 100%;
height: 15%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
align-content: center;
}
.achievements_upper_mid {
width: 40vh;
height: 17vh;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
align-content: center;
border: 3px solid var(--MenuS_color_2_0);
border-radius: 2vh;
position: relative;
top: 3.5vh;
margin-right: 2vh;
box-shadow: inset 0 0 0.5vw var(--MenuS_color_2_1), 0 0 0.5vw var(--MenuS_color_2_1), 0 0 1vw var(--MenuS_color_2_1);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.achievements_upper_mid_top {
width: 80%;
/* height: 3.9vh; */
color: rgb(223, 216, 216);
text-align: center;
border-bottom: 3px solid var(--MenuS_color_2_0);
}
.achievements_upper_mid_top p {
font-size: 3.5vh;
margin: 0;
line-height: 1;
/* padding-bottom: 2vh; */
font-family: "Teko";
}
.achievements_upper_mid_bottom {
width: 100%;
height: 11vh;
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: space-evenly;
align-items: center;
align-content: center;
font-family: "Teko";
font-size: 3vh;
}
.achievements_rarity_display {
width: 20vh;
height: 2.8vh;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
align-content: center;
}
.achievements_rarity_display p {
font-size: 2.5vh;
margin: 0;
}
.common {
color: rgb(89, 97, 102);
}
.uncommon {
color: rgb(60, 128, 0);
}
.rare {
color: rgb(36, 36, 178);
}
.epic {
color: rgb(112, 36, 166);
}
.legendary {
color: rgb(255, 215, 0);
}
.mythical {
color: red;
}
.achievements_upper_right {
width: 40vh;
height: 100%;
margin-right: 5vh;
display: flex;
flex-direction: row;
justify-content: space-evenly;
align-items: center;
align-content: center;
font-size: 4vh;
text-align: center;
align-items: center;
}
.achievements_upper_right_1 {
width: 22vh;
display: flex;
justify-content: center;
align-items: center;
height: 6vh;
border: 3px solid var(--MenuS_color_2_0);
border-radius: 2vh;
cursor: pointer;
padding-top: 1vh;
transition: all 0.1s ease-in-out;
margin-top: 5vh;
padding-bottom: 1vh;
color: rgb(223, 216, 216);
text-shadow: 0px 0px 8px var(--MenuS_color_2_1), 0px 0px 16px var(--MenuS_color_2_1), 0px 0px 24px var(--MenuS_color_2_1);
box-shadow: inset 0 0 0.5vw var(--MenuS_color_2_1), 0 0 0.5vw var(--MenuS_color_2_1), 0 0 1vw var(--MenuS_color_2_1);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.achievements_upper_right_1:hover {
background-color: rgba(44, 43, 43, 0.5);
border-color: rgb(164, 163, 162);
}
.achievements_upper_left {
width: 40vh;
height: 100%;
display: flex;
flex-direction: row;
justify-content: space-evenly;
align-items: center;
align-content: center;
}
.achievements_upper_left_1 {
width: 16vh;
height: 16vh;
border: 3px solid var(--MenuS_color_2_0);
border-radius: 50%;
cursor: pointer;
transition: all 0.1s ease-in-out;
margin-top: 5vh;
display: flex;
justify-content: center;
align-items: center;
align-content: center;
text-shadow: 0px 0px 8px var(--MenuS_color_2_1), 0px 0px 16px var(--MenuS_color_2_1), 0px 0px 24px var(--MenuS_color_2_1);
box-shadow: inset 0 0 0.5vw var(--MenuS_color_2_1), 0 0 0.5vw var(--MenuS_color_2_1), 0 0 1vw var(--MenuS_color_2_1);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.achievements_upper_left_1 img {
width: 65%;
height: 65%;
margin-top: 1vh;
}
.achievements_upper_left_2 {
width: 16vh;
height: 8vh;
border: 3px solid rgb(173, 49, 49);
border-radius: 2vh;
transition: all 0.1s ease-in-out;
margin-top: 5vh;
color: rgb(223, 216, 216);
border-color: var(--MenuS_color_2_0);
text-shadow: 0px 0px 8px var(--MenuS_color_2_1), 0px 0px 16px var(--MenuS_color_2_1), 0px 0px 24px var(--MenuS_color_2_1);
box-shadow: inset 0 0 0.5vw var(--MenuS_color_2_1), 0 0 0.5vw var(--MenuS_color_2_1), 0 0 1vw var(--MenuS_color_2_1);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.achievements_upper_left_2 p {
font-size: 4.5vh;
text-align: center;
margin: 0;
}
.achievements {
width: 100%;
height: 85%;
display: flex;
align-content: center;
justify-content: center;
align-items: center;
}
.achievements_scoll_menu {
width: 55vh;
height: 92%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
}
.achievements_arrow_up {
width: 0;
height: 0;
margin-left: 0.53vh;
border-left: 5vh solid transparent;
border-right: 5vh solid transparent;
transition: all 0.1s ease-in-out;
cursor: pointer;
border-bottom: 5vh solid var(--MenuS_color_2_0);
position: relative;
left: -0.3vh;
top: 0.1vh;
transition: all ease 0.3s;
}
.achievements_arrow_up:hover {
border-bottom: 5vh solid var(--MenuS_color_2_0_hover);
transition: all ease 0.3s;
}
.achievements_scrollwidth_block {
width: 80%;
height: 69.1%;
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
align-items: center;
overflow-y: hidden;
overflow-x: hidden;
scrollbar-width: none;
scroll-behavior: smooth;
}
.achievements_clickable_block {
width: 13vh;
height: 13vh;
border: 2px solid rgb(173, 49, 49);
cursor: pointer;
transition: all 0.1s ease-in-out;
border-radius: 2vh;
margin: 1.1vh;
font-size: 2vh;
font-weight: bold;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
text-shadow: 0px 0px 8px var(--MenuS_color_2_1), 0px 0px 16px var(--MenuS_color_2_1), 0px 0px 24px var(--MenuS_color_2_1);
box-shadow: inset 0 0 0.5vw var(--MenuS_color_2_1), 0 0 0.5vw var(--MenuS_color_2_1), 0 0 1vw var(--MenuS_color_2_1);
background-color: rgba(0, 0, 0, 0.3);
background-image: none;
}
.achievements_clickable_block:hover {
background-color: rgba(100, 99, 99, 0.5) !important;
border-color: var(--MenuS_color_2_0);
}
.achievements_clickable_block_locked {
border: 3px solid var(--MenuS_color_2_0);
width: 13vh;
height: 13vh;
transition: all 0.1s ease-in-out;
border-radius: 2vh;
margin: 1.1vh;
display: flex;
justify-content: center;
align-items: center;
align-content: center;
text-shadow: 0px 0px 8px var(--MenuS_color_2_1), 0px 0px 16px var(--MenuS_color_2_1), 0px 0px 24px var(--MenuS_color_2_1);
box-shadow: inset 0 0 0.5vw var(--MenuS_color_2_1), 0 0 0.5vw var(--MenuS_color_2_1), 0 0 1vw var(--MenuS_color_2_1);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
transition: all ease 0.3s;
}
.achievements_clickable_block_locked:hover {
cursor: pointer;
transition: all ease 0.3s;
border: 3px solid var(--MenuS_color_2_0_hover);
text-shadow: 0px 0px 8px var(--MenuS_color_2_1_hover), 0px 0px 16px var(--MenuS_color_2_1_hover), 0px 0px 24px var(--MenuS_color_2_1_hover);
box-shadow: inset 0 0 0.5vw var(--MenuS_color_2_1_hover), 0 0 0.5vw var(--MenuS_color_2_1_hover), 0 0 1vw var(--MenuS_color_2_1_hover);
}
.achievements_clickable_block_locked img {
width: 40%;
height: 50%;
}
.achievements_arrow_down {
width: 0;
height: 0;
margin-left: 0.53vh;
border-left: 5vh solid transparent;
border-right: 5vh solid transparent;
transition: all 0.1s ease-in-out;
cursor: pointer;
border-top: 5vh solid var(--MenuS_color_2_0);
position: relative;
left: -0.3vh;
transition: all ease 0.3s;
}
.achievements_arrow_down:hover {
border-top: 5vh solid var(--MenuS_color_2_0_hover);
transition: all ease 0.3s;
}
.achievements_template_parent {
width: 55vh;
height: 85%;
display: flex;
justify-content: center;
align-items: center;
align-content: center;
transition: all 0.1s ease-in-out;
}
.achievements_template {
width: 55vh;
height: 85%;
border: 3px solid rgb(173, 49, 49);
border-radius: 4vh;
color: rgb(223, 216, 216);
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
background-color: rgba(0, 0, 0, 0.8);
box-shadow: inset 0 0 0.5vw var(--MenuS_color_2_1), 0 0 0.5vw var(--MenuS_color_2_1), 0 0 1vw var(--MenuS_color_2_1);
background-image: none;
}
.achievements_title {
width: 100%;
/* height: 16%; */
border-radius: 4vh 4vh 0 0;
display: flex;
justify-content: center;
align-items: center;
font-size: 5vh;
font-weight: bold;
margin-top: 3vh;
padding-left: 1vh;
padding-right: 1vh;
}
.achievements_title p {
text-align: center;
margin: 0;
}
.achievements_title_description {
width: 85%;
height: 47%;
border-radius: 0 0 4vh 4vh;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
font-size: 2.5vh;
}
.achievements_title_description p {
margin: 1vh;
}
.achievements_requirements {
width: 100%;
height: 33%;
border-radius: 0 0 8vh 8vh;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
justify-content: center;
align-items: center;
}
.achievements_requirements_box {
width: 33.3333333333333%;
height: 110%;
border-radius: 0 0 4vh 4vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.achievements_requirements_box_icon {
width: 10vh;
height: 10vh;
display: flex;
justify-content: center;
align-items: center;
border: 3px solid var(--MenuS_color_2_0);
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
text-shadow: 0px 0px 8px var(--MenuS_color_2_1), 0px 0px 16px var(--MenuS_color_2_1), 0px 0px 24px var(--MenuS_color_2_1);
box-shadow: inset 0 0 0.5vw var(--MenuS_color_2_1), 0 0 0.5vw var(--MenuS_color_2_1), 0 0 1vw var(--MenuS_color_2_1);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.achievements_requirements_box_icon img {
height: 80%;
aspect-ratio: 1/1;
border-radius: 28%;
object-fit: fill;
}
.achievements_requirements_box p {
font-size: 2vh;
margin: 1vh;
max-width: 80%;
height: 50%;
display: flex;
flex-wrap: wrap;
object-fit: contain;
text-align: center;
overflow: hidden;
}
.achievements_trophy_counter {
opacity: 0;
height: 10vh;
aspect-ratio: 1/1;
border: 3px solid var(--MenuS_color_2_0);
border-radius: 50%;
position: relative;
top: -26vh;
left: -59.75vh;
display: flex;
justify-content: center;
align-items: center;
align-content: center;
text-align: center;
background-color: #0a0a0a;
transition: all 0.1s ease-in-out;
}
.achievements_trophy_counter p {
font-size: 3vh;
margin: 0;
position: relative;
}
.achievements_trophy_counter img {
width: 40%;
height: 40%;
object-fit: fill;
position: relative;
left: 0.5vh;
}
</style>\
<!-- SCRIPT - 1 - Achievements -->\
<script>
function achievementPageSetup() {
var arrowUp = document.querySelector('.achievements_arrow_up');
var arrowDown = document.querySelector('.achievements_arrow_down');
var mainelement = document.querySelector('.achievements_scrollwidth_block');
var achievementsScrollBlock = document.querySelector('.achievements_scrollwidth_block');
var mainelementright = document.querySelector('.achievements_template_parent')
var unlockedAchievementsCount = 0;
var counter = document.querySelector('.achievements_trophy_counter');
function calculateScrollStep() {
var computedStyle = window.getComputedStyle(mainelement);
var height = computedStyle.height;
var borderTopWidth = computedStyle.borderTopWidth;
var borderBottomWidth = computedStyle.borderBottomWidth;
var marginTop = computedStyle.marginTop;
var marginBottom = computedStyle.marginBottom;
var heightInt = parseInt(height, 10);
var marginTopInt = parseInt(marginTop, 10);
var marginBottomInt = parseInt(marginBottom, 10);
var borderTopWidthInt = parseInt(borderTopWidth, 10);
var borderBottomWidthInt = parseInt(borderBottomWidth, 10);
return (heightInt + marginTopInt + marginBottomInt + borderTopWidthInt + borderBottomWidthInt) * 1;
}
arrowUp.addEventListener('click', function () {
mainelement.scrollTop -= calculateScrollStep();
});
arrowDown.addEventListener('click', function () {
mainelement.scrollTop += calculateScrollStep();
});
//for (let i = 0; i < SV.achievements.list.length; i++) {
for (let achievement in SV.achievements.list) {
let achievementBlock = document.createElement('div');
if (SV.achievements.list[achievement].unlocked === 0) {
achievementBlock.classList.add('achievements_clickable_block_locked');
let lockedImg = document.createElement('img');
lockedImg.setAttribute('src', "ressources/icons/13F1.webp");
achievementBlock.appendChild(lockedImg);
} else {
switch (SV.achievements.list[achievement].rarity) {
case 0: // Common
achievementBlock.classList.add('achievements_clickable_block');
achievementBlock.style.borderColor = "rgba(54, 69, 79, 0.8)";
achievementBlock.style.boxShadow = "0 0 0.5vw rgba(54, 69, 79, 0.5), 0 0 0.5vw rgba(54, 69, 79, 0.5), 0 0 1vw rgba(54, 69, 79, 0.5)";
achievementBlock.style.textShadow = "0 0 0.5vw rgba(54, 69, 79, 0.5), 0 0 0.5vw rgba(54, 69, 79, 0.5), 0 0 1vw rgba(54, 69, 79, 0.5)";
achievementBlock.style.color = "rgb(223, 216, 216)";
achievementBlock.textContent = SV.achievements.list[achievement].name;
break;
case 1: // Uncommon
achievementBlock.classList.add('achievements_clickable_block');
achievementBlock.style.borderColor = "rgba(60, 128, 0, 0.8)";
achievementBlock.style.boxShadow = "0 0 0.5vw rgba(60, 128, 0, 0.8), 0 0 0.5vw rgba(60, 128, 0, 0.5), 0 0 1vw rgba(60, 128, 0, 0.5)";
achievementBlock.style.textShadow = "0 0 0.5vw rgba(60, 128, 0, 0.8), 0 0 0.5vw rgba(60, 128, 0, 0.5), 0 0 1vw rgba(60, 128, 0, 0.5)";
achievementBlock.style.color = "rgb(223, 216, 216)";
achievementBlock.textContent = SV.achievements.list[achievement].name;
break;
case 2: // Rare
achievementBlock.classList.add('achievements_clickable_block');
achievementBlock.style.borderColor = "rgba(36, 36, 178, 0.8)";
achievementBlock.style.boxShadow = "0 0 0.5vw rgba(36, 36, 178, 0.8), 0 0 0.5vw rgba(36, 36, 178, 0.5), 0 0 1vw rgba(36, 36, 178, 0.5)";
achievementBlock.style.textShadow = "0 0 0.5vw rgba(36, 36, 178, 0.8), 0 0 0.5vw rgba(36, 36, 178, 0.5), 0 0 1vw rgba(36, 36, 178, 0.5)";
achievementBlock.style.color = "rgb(223, 216, 216)";
achievementBlock.textContent = SV.achievements.list[achievement].name;
break;
case 3: // Epic
achievementBlock.classList.add('achievements_clickable_block');
achievementBlock.style.borderColor = "rgba(112, 13, 166, 0.8)";
achievementBlock.style.boxShadow = "0 0 0.5vw rgba(112, 13, 166, 0.8), 0 0 0.5vw rgba(112, 13, 166, 0.5), 0 0 1vw rgba(112, 13, 166, 0.5)";
achievementBlock.style.textShadow = "0 0 0.5vw rgba(112, 13, 166, 0.8), 0 0 0.5vw rgba(112, 13, 166, 0.5), 0 0 1vw rgba(112, 13, 166, 0.5)";
achievementBlock.style.color = "rgb(223, 216, 216)";
achievementBlock.textContent = SV.achievements.list[achievement].name;
break;
case 4: // Legendary
achievementBlock.classList.add('achievements_clickable_block');
achievementBlock.style.borderColor = "rgba(255, 215, 0, 0.8)";
achievementBlock.style.boxShadow = "0 0 0.5vw rgba(255, 215, 0, 0.8), 0 0 0.5vw rgba(255, 215, 0, 0.5), 0 0 1vw rgba(255, 215, 0, 0.5)";
achievementBlock.style.textShadow = "0 0 0.5vw rgba(255, 215, 0, 0.8), 0 0 0.5vw rgba(255, 215, 0, 0.5), 0 0 1vw rgba(255, 215, 0, 0.5)";
achievementBlock.style.color = "rgb(223, 216, 216)";
achievementBlock.textContent = SV.achievements.list[achievement].name;
break;
case 5: // Mythical
achievementBlock.classList.add('achievements_clickable_block');
achievementBlock.style.borderColor = "rgba(255, 0, 0, 0.8)";
achievementBlock.style.boxShadow = "0 0 0.5vw rgba(255, 0, 0, 0.8), 0 0 0.5vw rgba(255, 0, 0, 0.8), 0 0 1vw rgba(204, 85, 0, 0.5)";
achievementBlock.style.textShadow = "0 0 0.5vw rgba(255, 0, 0, 0.8), 0 0 0.5vw rgba(255, 0, 0, 0.8), 0 0 1vw rgba(204, 85, 0, 0.5)";
achievementBlock.style.color = "rgb(223, 216, 216)";
achievementBlock.textContent = SV.achievements.list[achievement].name;
break;
}
}
var timeTransition = 300; // ms
achievementBlock.addEventListener('click', function () {
displayAchievementDetails(achievement);
});
achievementsScrollBlock.appendChild(achievementBlock);
if (SV.achievements.list[achievement].unlocked === 1) {
unlockedAchievementsCount++;
}
}
function displayAchievementPoints(achievement) {
// Retrieve the rarity of the clicked achievement
let rarity = SV.achievements.list[achievement].rarity;
var trophyBorderColor = document.querySelector('.achievements_trophy_counter');
var trophyboxShadow = document.querySelector('.achievements_trophy_counter');
trophyBorderColor.style.borderColor = raritycolor[rarity].borderColor;
trophyboxShadow.style.boxShadow = raritycolor[rarity].boxShadow;
// Determine point value based on rarity using the provided mapping
let points = SV.achievements.rarityToPointValue[rarity];
// Update the achievements_trophy_counter div with the point value
let counterDiv = counter.querySelector('p');
counterDiv.textContent = points;
}
var raritycolor = {
0: {
borderColor: "rgba(54, 69, 79, 0.5)",
backgroundColor: "rgba(0, 0, 0, 0.4)",
textColor: "rgb(223, 216, 216)",
boxShadow: "0 0 0.5vw rgba(54, 69, 79, 0.5), 0 0 0.5vw rgba(54, 69, 79, 0.5), 0 0 1vw rgba(54, 69, 79, 0.5)"
},
1: {
borderColor: "rgb(60, 128, 0)",
backgroundColor: "rgba(0, 0, 0, 0.4)",
boxShadow: "0 0 0.5vw rgba(60, 128, 0, 0.5), 0 0 0.5vw rgba(60, 128, 0, 0.5), 0 0 1vw rgba(60, 128, 0, 0.5)",
textColor: "rgb(223, 216, 216)"
},
2: {
borderColor: "rgb(36, 36, 178)",
backgroundColor: "rgba(0, 0, 0, 0.4)",
boxShadow: "0 0 0.5vw rgba(36, 36, 178, 0.5), 0 0 0.5vw rgba(36, 36, 178, 0.5), 0 0 1vw rgba(36, 36, 178, 0.5)",
textColor: "rgb(223, 216, 216)"
},
3: {
borderColor: "rgb(112, 13, 166)",
backgroundColor: "rgba(0, 0, 0, 0.4)",
boxShadow: "0 0 0.5vw rgba(112, 13, 166, 0.8), 0 0 0.5vw rgba(112, 13, 166, 0.5), 0 0 1vw rgba(112, 13, 166, 0.5)",
textColor: "rgb(223, 216, 216)"
},
4: {
borderColor: "rgb(255, 215, 0)",
backgroundColor: "rgba(0, 0, 0, 0.4)",
boxShadow: "0 0 0.5vw rgba(255, 215, 0, 0.8), 0 0 0.5vw rgba(255, 215, 0, 0.5), 0 0 1vw rgba(255, 215, 0, 0.5)",
textColor: "rgb(223, 216, 216)"
},
5: {
borderColor: "red",
backgroundColor: "rgba(0, 0, 0, 0.4)",
boxShadow: "0 0 0.5vw rgba(255, 0, 0, 0.8), 0 0 0.5vw rgba(255, 0, 0, 0.8), 0 0 1vw rgba(204, 85, 0, 0.5)",
textColor: "rgb(223, 216, 216)"
}
}
function displayAchievementDetails(achievement) {
var requirementBox = "";
var borderColor = "";
var boxShadow = "";
borderColor = raritycolor[SV.achievements.list[achievement].rarity].borderColor;
backgroundColor = raritycolor[SV.achievements.list[achievement].rarity].backgroundColor;
boxShadow = raritycolor[SV.achievements.list[achievement].rarity].boxShadow;
for (let i = 0; i < SV.achievements.list[achievement].requirements.length; i++) {
requirementBox += `
<div class="achievements_requirements_box">
<div class="achievements_requirements_box_icon">
<img src="${SV.achievements.list[achievement].requirements[i].image}">
</div>
<!--p>${SV.achievements.list[achievement].requirements[i].description}</p-->
<p>${SV.achievements.list[achievement].requirements[i].name}</p>
</div>`;
}
var template = `
<div class="achievements_template" style="border-color: ${borderColor}; background-color: ${backgroundColor}; box-shadow: ${boxShadow};">
<div class="achievements_title">
<p>${SV.achievements.list[achievement].name}</p>
</div>
<div class="achievements_title_description">
<p>${SV.achievements.list[achievement].description}</p>
</div>
<div class="achievements_requirements">
${requirementBox}
</div>
</div>`;
mainelementright.style.opacity = "0";
counter.style.opacity = "0";
setTimeout(function () {
mainelementright.innerHTML = template;
displayAchievementPoints(achievement);
mainelementright.style.opacity = "1";
counter.style.opacity = "1";
}, timeTransition);
}
for (achievement in SV.achievements.list) {
if (SV.achievements.list[achievement].unlocked === 1) {
displayAchievementDetails(achievement);
break;
}
}
const pointsDisplay = document.querySelector('.achievements_upper_left_2 p');
pointsDisplay.textContent = `${SV.achievements.totalAchievementPoints}`;
};
achievementPageSetup();
</script>\
\
\
<!-- STYLE - 1 - Market -->\
<style>
/* Outer container fixed at 120vh x 65vh */
.MRKTouter-container {
/* width: 120vh; */
height: 65vh;
/* overflow: hidden; */
/* background-color: #0a0a0a; */
padding: 1vh;
display: flex;
flex-direction: column;
top: 50%;
position: relative;
transform: translateY(-50%);
}
/* Container for all content */
.MRKTcontainer {
display: flex;
flex-direction: column;
font-size: 1.6vh;
height: 100%;
}
/* Top Bar */
.MRKTtop-bar {
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
background: linear-gradient(135deg, #1c1c1c, #2c2c2c);
padding: 1.2vh 1.6vh;
margin-bottom: 1.6vh;
border-radius: 1.2vh;
box-shadow: 0 0 2vh rgba(30, 144, 255, 0.8);
height: 6.4vh;
flex-shrink: 0;
position: relative;
}
/*.MRKTtop-bar::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(45deg, rgba(0, 123, 255, 0.2), transparent);
opacity: 0.5;
z-index: -1;
animation: MRKTglowAnimation 5s infinite;
}
@keyframes MRKTglowAnimation {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(100%);
}
}*/
.MRKTconnection-streak, .MRKTcoins-balance, .MRKTcheats-section {
display: flex;
align-items: center;
position: relative;
z-index: 1;
}
/* Make the streak and coin balance closer */
.MRKTtop-bar-left {
display: flex;
align-items: center;
gap: 3vh; /* Adjusted space between streak and coins */
}
.MRKTflame-icon {
height: 2.8vh;
margin-right: 0.8vh;
animation: MRKTflicker 1.5s infinite alternate;
}
@keyframes MRKTflicker {
0% { opacity: 1; }
50% { opacity: 0.8; }
100% { opacity: 1; }
}
.MRKTcoins-balance img {
width: 2.8vh;
height: 2.8vh;
margin-right: 0.5vh;
}
.MRKTcheats-section {
display: flex;
}
span {
display: flex;
align-items: center;
}
#MRKTstreak {
font-weight: bold;
font-size: 120%;
text-shadow: 0 0 0.8vh rgba(0, 123, 255, 0.8);
position: relative;
}
#MRKTcoin-count {
font-weight: bold;
font-size: 120%;
text-shadow: 0 0 0.8vh rgba(0, 123, 255, 0.8);
}
/* Tooltip for streak information */
.MRKTstreak-tooltip {
display: none;
position: absolute;
top: 100%;
left: 50%;
background-color: #222;
color: #fff;
padding: 1vh 1.5vh;
border-radius: 0.8vh;
box-shadow: 0 0 1vh rgba(0, 123, 255, 0.8);
font-size: 1.4vh;
width: max-content;
text-align: left;
white-space: nowrap;
z-index: 10;
opacity: 0;
transition: opacity 0.3s;
}
.MRKTconnection-streak:hover .MRKTstreak-tooltip {
display: block;
opacity: 1;
}
.MRKTcheat {
margin-left: 3vh;
text-align: center;
display: flex;
align-items: center;
position: relative;
}
.MRKTcheat-icon {
height: 4vh;
margin-right: 0.8vh;
filter: drop-shadow(0 0 0.4vh rgba(0, 123, 255, 0.8));
}
.MRKTcheat button {
background-color: #007bff;
color: white;
border: none;
padding: 0.8vh 1.6vh;
border-radius: 0.8vh;
margin-right: 1vh;
cursor: pointer;
box-shadow: 0 0 0.8vh rgba(0, 123, 255, 0.7), 0 0 1.2vh rgba(0, 123, 255, 0.7);
transition: background-color 0.3s, transform 0.3s;
font-size: 0.96vh;
position: relative;
overflow: hidden;
min-width: 8vh;
}
.MRKTcheat button::before {
content: "";
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
transition: left 0.5s;
z-index: 1;
}
.MRKTcheat button:hover::before {
left: 100%;
}
.MRKTcheat button:hover {
background-color: #0056b3;
transform: translateY(-1.6px);
}
.MRKTcheat button:disabled {
background-color: #666;
cursor: not-allowed;
}
/* Info Icon */
.MRKTinfo-icon {
width: 3.2vh;
height: 3.2vh;
border-radius: 50%;
background-color: #007bff;
color: #ffffff;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
font-weight: bold;
margin-left: 3vh;
font-size: 1.8vh;
position: relative;
box-shadow: 0 0 1.2vh rgba(0, 123, 255, 0.8);
transition: transform 0.3s, box-shadow 0.3s;
}
.MRKTinfo-icon:hover {
transform: scale(1.1);
box-shadow: 0 0 1.6vh rgba(0, 123, 255, 1);
}
/* Main Content */
.MRKTmain-content {
display: flex;
gap: 1.6vh;
flex: 1;
height: 52vh;
}
.MRKTleft-section, .MRKTright-section {
padding: 1.6vh 1.6vh;
background-color: #1c1c1c;
border-radius: 0.8vh;
box-shadow: 0 0 0.8vh rgba(0, 123, 255, 1);
display: flex;
flex-direction: column;
overflow-y: auto;
scrollbar-width: thin;
}
.MRKTleft-section {
flex: 3;
}
.MRKTright-section {
flex: 1;
}
.MRKTitems-info, .MRKTright-section h2 {
font-size: 2.08vh;
font-weight: bold;
margin-bottom: 1.2vh;
text-shadow: 0 0 0.8vh #007bff;
}
.MRKTitems-info-title {
display: inline-block;
}
.MRKTitems-info-filter {
display: inline-block;
position: relative;
z-index: 1;
margin: 0 0.5em;
padding: 0.2em 0.7em;
background-color: rgb(102, 102, 102);
cursor: pointer;
min-width: 3em;
max-width: 10em;
border-radius: 0.8em;
transition-property: border-radius, min-width;
transition-duration: 0.3s;
}
.MRKTitems-info-filter.active {
min-width: 10em;
border-radius: 0.8em 0.8em 0 0;
}
.MRKTitems-info-filter .MRKTitems-info-filterTitle {
transition: padding-left 0.2s;
}
.MRKTitems-info-filter:hover .MRKTitems-info-filterTitle,
.MRKTitems-info-filter.active .MRKTitems-info-filterTitle {
padding-left: 0.2em;
}
.MRKTitems-info-filter .MRKTitems-info-filterList {
position: absolute;
top: 100%;
left: 0;
width: 100%;
display: flex;
flex-direction: column;
transition: opacity 0.3s, transform 0.3s;
transform: translateY(-1em);
pointer-events: none;
opacity: 0;
}
.MRKTitems-info-filter.active .MRKTitems-info-filterList {
transform: translateY(0);
pointer-events: auto;
opacity: 1;
}
.MRKTitems-info-filter .MRKTitems-info-filterList div:last-child {
border-radius: 0 0 0.3em 0.3em;
}
.MRKTitems-info-filter .MRKTitems-info-filterList div {
padding: 0.2em 0.7em;
background-color: rgb(102, 102, 102);
white-space: nowrap;
overflow-x: hidden;
cursor: pointer;
transition-property: transform, background-color;
transition-timing-function: cubic-bezier(.15,.15,.15,1);
transition-duration: 0.3s;
}
.MRKTitems-info-filter .MRKTitems-info-filterList div:hover {
transform: translateX(0.2em);
background-color: rgb(77, 77, 77);
}
.MRKTitems-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2.4vh;
}
.MRKTitem-image {
height: 14vh !important;
}
.MRKTicon-slots .MRKTicon-slot {
margin-bottom: 2.4vh;
}
.MRKTicon-slots {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.MRKTitems-container::-webkit-scrollbar, .MRKTicon-slots::-webkit-scrollbar {
width: 0.64vh;
}
.MRKTitems-container::-webkit-scrollbar-track, .MRKTicon-slots::-webkit-scrollbar-track {
background: #2c2c2c;
border-radius: 0.32vh;
}
.MRKTitems-container::-webkit-scrollbar-thumb, .MRKTicon-slots::-webkit-scrollbar-thumb {
background-color: #007bff;
border-radius: 0.32vh;
}
/* Square-shaped items */
.MRKTitem {
padding: 0.8vh;
border-radius: 0.8vh;
text-align: center;
box-shadow: 0 0 1.5vh rgba(0, 123, 255, 1); /* Increased glow intensity */
transition: transform 0.3s, box-shadow 0.3s;
aspect-ratio: 1 / 1;
display: flex;
flex-direction: column;
justify-content: space-evenly;
overflow: hidden;
position: relative;
align-items: center;
}
.MRKTitem img {
border-radius: 0.4vh;
object-fit: cover;
max-width: 100%;
max-height: 100%;
}
/* Rarity Overlays */
.MRKTitem[data-rarity="grey"] {
border: 2.4px solid #9e9e9e; /* Increased border thickness */
box-shadow: 0 0 2vh #9e9e9e; /* Increased grey glow */
}
.MRKTitem[data-rarity="blue"] {
border: 2.4px solid #007bff;
box-shadow: 0 0 2.4vh rgba(0, 123, 255, 1); /* Increased blue glow */
animation: MRKTblueGlow 3s infinite alternate;
}
@keyframes MRKTblueGlow {
0% { box-shadow: 0 0 1.2vh rgba(0, 123, 255, 0.8); }
100% { box-shadow: 0 0 2.4vh rgba(0, 123, 255, 1); }
}
.MRKTitem[data-rarity="yellow"] {
border: 2.4px solid #ffd700;
box-shadow: 0 0 2.4vh rgba(255, 215, 0, 1); /* Increased yellow glow */
animation: MRKTyellowSparkle 2s infinite alternate;
}
@keyframes MRKTyellowSparkle {
0% { box-shadow: 0 0 1.2vh rgba(255, 215, 0, 0.8); }
100% { box-shadow: 0 0 2.4vh rgba(255, 215, 0, 1); }
}
.MRKTcoin-icon {
height: 2.4vh;
margin-right: 0.64vh;
}
.MRKTitem-price {
display: flex;
justify-content: center;
align-items: center;
}
.MRKTicon-slot {
border-radius: 0.8vh;
width: 45%;
aspect-ratio: 1 / 1;
text-align: center;
box-shadow: 0 0 0.48vh rgba(0, 123, 255, 0.8);
display: flex;
flex-direction: column;
justify-content: space-between;
overflow: hidden;
transition: transform 0.3s, box-shadow 0.3s;
position: relative;
}
.MRKTicon-slot img {
width: 100%;
height: 100%;
object-fit: cover;
}
.MRKTicon-slot-text {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
padding: 0.8vh;
text-transform: uppercase;
background-color: rgba(0, 0, 0, 0.6);
color: white;
font-size: 1.2vh;
text-shadow: 0 0 0.4vh rgba(0, 123, 255, 0.8);
}
.MRKTitem:hover, .MRKTicon-slot:hover {
transform: scale(1.05);
box-shadow: 0 0 2.4vh rgba(0, 123, 255, 1); /* Stronger hover effect */
}
.MRKTbuy-button {
background-color: rgb(0, 123, 255);
color: white;
border: none;
padding: 0.96vh 1.2vh;
border-radius: 0.4vh;
cursor: pointer;
transition: background-color 0.3s, transform 0.3s, box-shadow 0.3s;
box-shadow: 0 0 0.4vh rgba(0, 123, 255, 0.8),
0 0 1.2vh rgba(0, 123, 255, 0.8);
font-size: 1.28vh;
font-weight: bold;
letter-spacing: 0.16vh;
text-transform: uppercase;
}
.MRKTbuy-button:hover {
background-color: rgb(0, 86, 179);
transform: scale(1.1);
box-shadow: 0 0 2vh rgba(0, 123, 255, 1),
0 0 2.4vh rgba(0, 123, 255, 1);
}
.MRKTbuy-button:disabled {
background-color: #666;
cursor: not-allowed;
}
.MRKTbuy-button.purchased_equip {
background-color: rgb(16, 184, 42);
box-shadow: 0 0 0.4vh rgba(16, 184, 42, 0.8),
0 0 1.2vh rgba(16, 184, 42, 0.8);
}
.MRKTbuy-button.purchased_equip:hover {
background-color: rgb(13, 155, 34);
box-shadow: 0 0 0.4vh rgba(16, 184, 42, 1),
0 0 1.2vh rgba(16, 184, 42, 1);
}
.MRKTbuy-button.purchased_unequip {
background-color: rgb(73, 156, 79);
box-shadow: 0 0 0.4vh rgba(73, 156, 79, 0.8),
0 0 1.2vh rgba(73, 156, 79, 0.8);
}
.MRKTbuy-button.purchased_unequip:hover {
background-color: rgb(11, 126, 28);
box-shadow: 0 0 0.4vh rgba(73, 156, 79, 1),
0 0 1.2vh rgba(73, 156, 79, 1);
}
.MRKTbuy-button.MRKTbutton-error {
background-color: red;
}
/*.MRKTbuy-button.equipped-not-purchasable {
background-color: #444;
cursor: default;
opacity: 0.6;
}
.MRKTbuy-button.equipped-not-purchasable:hover {
background-color: #444;
}
.MRKTbuy-button.equipped-not-purchasable:hover::before {
content: "Unequip";
position: absolute;
left: 50%;
transform: translateX(-50%);
color: white;
font-weight: bold;
text-shadow: 0 0 0.4vh rgba(0, 123, 255, 0.8);
}*/
.MRKTshake {
animation: MRKTshake 0.5s;
}
@keyframes MRKTshake {
0% { transform: translate(0.8px, 0.8px) rotate(0deg); }
10% { transform: translate(-0.8px, -1.6px) rotate(-1deg); }
20% { transform: translate(-2.4px, 0px) rotate(1deg); }
30% { transform: translate(2.4px, 1.6px) rotate(0deg); }
40% { transform: translate(0.8px, -0.8px) rotate(1deg); }
50% { transform: translate(-0.8px, 1.6px) rotate(-1deg); }
60% { transform: translate(-2.4px, 0.8px) rotate(0deg); }
70% { transform: translate(2.4px, 0.8px) rotate(-1deg); }
80% { transform: translate(-0.8px, -0.8px) rotate(1deg); }
90% { transform: translate(0.8px, 1.6px) rotate(0deg); }
100% { transform: translate(0.8px, -1.6px) rotate(-1deg); }
}
/* Blurred Background for Pop-ups */
.MRKTblurred-background {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.6);
backdrop-filter: blur(8px);
z-index: 10;
display: none;
}
.MRKTblurred-background.show {
display: block;
}
</style>\
<!-- SCRIPT - 1 - Market -->\
<script>
function MRKT_init() {
SV.market.filter = null; // yah or nah ?
MRKT_setupInfoPopUpUi();
MRKT_setupCheatButtons();
MRKT_updateFilterButtons();
MRKT_updateZeta();
MRKT_updateUiItems(true);
MRKT_updateUiEquipped();
}
function MRKT_updateUiItems(hardRefresh = false) { // DOM
let itemsCont = document.querySelector('.MRKTitems-container');
if (!itemsCont) throw new Error("MRKTitems-container Div not found");
if (hardRefresh === true) itemsCont.innerHTML = "";
function setupButton(item, buttonEl) {
let itemData = gameData.market.items[item];
let typeData = gameData.market.types[itemData.type];
buttonEl.className = ""; // clear all
buttonEl.classList.add('MRKTbuy-button');
//setup the innerHtml, disable and onclick
let bought = false;
let equiped = false
if (typeData.oneTimeBuy) {
bought = SV.market.items[item] ?? bought; // undefined or true
equiped = SV.market.equipped[item] ?? equiped; // undefined or true
}
if (bought === true) {
if (equiped === true) {
buttonEl.innerHTML = `Unequip ${itemData.name}`;
buttonEl.classList.add('purchased_unequip');
buttonEl.onclick = () => { MRKT_unequipIcon(item) };
} else {
buttonEl.innerHTML = `Equip ${itemData.name}`;
buttonEl.classList.add('purchased_equip');
buttonEl.onclick = () => { MRKT_equipIcon(item) };
}
} else {
buttonEl.innerHTML = `Buy ${itemData.name}`;
buttonEl.onclick = () => { MRKT_buyItem(item, buttonEl) };
}
}
function filterOut(itemKey, itemData, typeData) {
let filterData = gameData.market.filters[SV.market.filter];
if (!filterData) return false;
if (filterData.itemKey) { // ex: "^.*MysteryBox$"
let regex = new RegExp(filterData.itemKey);
if (!regex.test(itemKey)) return true;
}
if (filterData.character) { // ex: "^mc$"
let regex = new RegExp(filterData.character);
if (!regex.test(itemData.character)) return true;
}
return false;
}
for (let itemKey in gameData.market.items) {
let itemData = gameData.market.items[itemKey];
let typeData = gameData.market.types[itemData.type];
//filter
if (filterOut(itemKey, itemData, typeData) === true) continue;
let preExistingItemDiv = itemsCont.querySelector(`.MRKTitem[itemkey="${itemKey}"]`);
let isMysteryBox = itemData.type.includes('MysteryBox'); // ex: blueMysteryBox
let isCustomIcon = itemData.type === 'customIcon';
if (preExistingItemDiv) {
let buttonEl = preExistingItemDiv.querySelector('.MRKTbuy-button');
setupButton(itemKey, buttonEl);
let iconImg = preExistingItemDiv.querySelector('.MRKTitem-image');
if (isCustomIcon) iconImg.src = getCharacterImg('mc');
} else {
let itemDiv = document.createElement('div');
itemDiv.classList.add('MRKTitem');
itemDiv.setAttribute('itemKey', itemKey)
itemDiv.setAttribute('data-rarity', typeData.rarity);
let iconImg = document.createElement('img');
iconImg.classList.add('MRKTitem-image');
if (isMysteryBox) iconImg.src = typeData.imageSrc;
else if (isCustomIcon) iconImg.src = getCharacterImg('mc');
else iconImg.src = 'ressources/icons/' + itemData.imgSrc;
let priceDiv = document.createElement('div');
priceDiv.classList.add('MRKTitem-price');
let priceImg = document.createElement('img');
priceImg.classList.add('MRKTcoin-icon');
priceImg.src = 'ressources/maingui/market/coin.png';
priceDiv.appendChild(priceImg);
priceDiv.innerHTML += typeData.zeta;
let buttonEl = document.createElement('button');
setupButton(itemKey, buttonEl);
itemDiv.appendChild(iconImg);
itemDiv.appendChild(priceDiv);
itemDiv.appendChild(buttonEl);
itemsCont.appendChild(itemDiv);
}
}
}
function MRKT_updateUiEquipped() {
let itemsCont = document.querySelector('.MRKTicon-slots');
if (!itemsCont) throw new Error("MRKTicon-slots Div not found");
itemsCont.innerHTML = '';
function setupOnClick(item, el) {
el.onclick = () => {
MRKT_unequipIcon(item);
el.remove();
};
}
for (let item in SV.market.equipped) {
let itemData = gameData.market.items[item];
let typeData = gameData.market.types[itemData.type];
let preExistingItemDiv = itemsCont.querySelector(`.MRKTicon-slot[itemkey="${item}"]`);
//let isMysteryBox = itemData.type.includes('MysteryBox'); // should never be in equipped list
let isCustomIcon = itemData.type === 'customIcon';
if (preExistingItemDiv) {
setupOnClick(item, preExistingItemDiv);
} else {
let itemDiv = document.createElement('div');
itemDiv.classList.add('MRKTicon-slot');
itemDiv.setAttribute('itemKey', item)
itemDiv.setAttribute('data-rarity', typeData.rarity);
let iconImg = document.createElement('img');
if (isCustomIcon) iconImg.src = getCharacterImg('mc');
else iconImg.src = 'ressources/icons/' + itemData.imgSrc;
let textDiv = document.createElement('div');
textDiv.classList.add('MRKTicon-slot-text');
textDiv.innerHTML = itemData.name;
setupOnClick(item, itemDiv);
itemDiv.appendChild(iconImg);
itemDiv.appendChild(textDiv);
itemsCont.appendChild(itemDiv);
}
}
}
function MRKT_storeCustomAvatar(callback) {
// get: getCharacterImg
const input = document.createElement('input');
input.type = 'file';
input.accept = 'image/*';
input.onchange = function(e) {
const file = e.target.files[0];
const reader = new FileReader();
reader.onload = function(event) {
const img = new Image();
img.onload = function() {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
canvas.width = 128;
canvas.height = 128;
ctx.drawImage(img, 0, 0, 128, 128);
const compressedBase64 = canvas.toDataURL('image/jpeg', 0.7);
try {
localStorage.setItem('mcCustomIcon', compressedBase64);
console.log('Image successfully compressed and stored!');
if (typeof callback === 'function') callback(true);
} catch (error) {
console.error('Error storing image:', error);
if (typeof callback === 'function') callback(false);
}
};
img.src = event.target.result;
};
reader.readAsDataURL(file);
};
input.click();
}
function MRKT_equipIcon(item) {
let itemData = gameData.market.items[item];
let characterKey = itemData.character;
let avatarId = itemData.avatarId;
// delete same character equipped avatar
for (item_ in SV.market.equipped) {
let itemData_ = gameData.market.items[item_];
if (characterKey === itemData_.character) {
delete SV.market.equipped[item_];
}
}
if (item === 'mcCustomIcon') {
MRKT_storeCustomAvatar((equip) => { // callback
if (equip) SV.market.equipped[item] = true;
SV.characters[characterKey].image = 'customIcon';
MRKT_updateUiItems();
MRKT_updateUiEquipped();
})
} else {
SV.characters[characterKey].image = 'ressources/icons/' + itemData.imgSrc;
SV.market.equipped[item] = true;
}
MRKT_updateUiItems();
MRKT_updateUiEquipped();
}
function MRKT_unequipIcon(item) {
let itemData = gameData.market.items[item];
let characterKey = itemData.character;
if (item === 'mcCustomIcon') {
localStorage.removeItem('mcCustomIcon');
}
SV.characters[characterKey].image = gameData.market.defaultImgSrc[characterKey];
delete SV.market.equipped[item];
MRKT_updateUiItems();
MRKT_updateUiEquipped();
}
function MRKT_buyItem(item, buttonEl) {
let itemData = gameData.market.items[item];
let typeData = gameData.market.types[itemData.type];
if (2**22 - typeData.zeta < SV.market.zeta[1]) {
playAudio("sfx", "error_7dB.mp3");
buttonEl.classList.add('MRKTshake', 'MRKTbutton-error');
setTimeout(() => {
buttonEl?.classList.remove('MRKTshake', 'MRKTbutton-error');
}, 500);
} else {
if (typeData.oneTimeBuy) {
SV.market.items[item] = true;
MRKT_equipIcon(item);
} else {
MRKT_singleBuyItem(item);
}
SV.market.zeta[1] += typeData.zeta
MRKT_updateZeta();
}
}
function MRKT_singleBuyItem(item) { // only for Mystery Box mainly
let itemData = gameData.market.items[item];
let typeData = gameData.market.types[itemData.type];
let items = Object.keys(gameData.market.items);
let filterType;
if (item === 'greyMysteryBox') filterType = 'greyIcons';
else if (item === 'blueMysteryBox') filterType = 'blueIcons';
else if (item === 'yellowMysteryBox') filterType = 'yellowIcons';
items = items.filter((item) => gameData.market.items[item].type === filterType);
function getRandomItem() {
if (items.length === 0) {
console.log('No more item found in the Mystery Box');
return null;
}
let randI = Math.floor(Math.random() * items.length);
let item = items[randI];
if (SV.market.items[item] === true) { // already bought?
items.splice(randI, 1);
console.log('Item already bought, retrying...');
return getRandomItem();
} else {
return item;
}
}
let randomItem = getRandomItem();
if (!randomItem) return;
SV.market.items[randomItem] = true;
MRKT_equipIcon(randomItem);
}
function MRKT_updateZeta() { // DOM
SV.market.zeta[0] < 2**20 ? SV.market.zeta[0] = 2**22 : null;
SV.market.zeta[1] < 2**20 ? SV.market.zeta[1] = 2**22 : null;
document.querySelector('#MRKTstreak').innerHTML = (2**22 - SV.market.zeta[0])
document.querySelector('#MRKTcoin-count').innerHTML = (2**22 - SV.market.zeta[1])
}
function MRKT_updateFilterButtons() { // DOM
let filterCont = document.querySelector('.MRKTitems-info-filter');
let filterTitle = document.querySelector('.MRKTitems-info-filterTitle');
let filterList = document.querySelector('.MRKTitems-info-filterList');
filterList.innerHTML = '';
let filterMenuOpen = false;
function closeFilterMenu() {
if (filterMenuOpen === false) return;
//setTimeout(() => {filterMenuOpen = false}, 0); // hack, delay to prevent double click
filterMenuOpen = false;
filterCont.classList.remove('active');
}
filterCont.onclick = (e) => { // filterTitle click
if (filterList.contains(e.target)) return;
if (filterMenuOpen === true) {
SV.market.filter = null;
closeFilterMenu();
MRKT_updateUiItems(true);
return;
}
//setTimeout(() => {filterMenuOpen = true}, 0); // hack, delay to prevent double click
filterMenuOpen = true;
filterCont.classList.add('active');
filterTitle.innerHTML = 'Filter';
};
function windowListener(e) {
if (!filterCont) window.removeEventListener('click', windowListener); // twine environment contraints
if (filterMenuOpen === false) return;
if (!filterCont.contains(e.target)) {
SV.market.filter = null;
closeFilterMenu();
MRKT_updateUiItems(true);
}
}
window.addEventListener('click', windowListener);
for (let filterKey in gameData.market.filters) {
let filterData = gameData.market.filters[filterKey];
let filterButton = document.createElement('div');
filterButton.innerHTML = filterData.name;
filterButton.onclick = () => {
SV.market.filter = filterKey; // ex: "cherie"
filterTitle.innerHTML = filterData.name;
closeFilterMenu();
MRKT_updateUiItems(true);
};
filterList.appendChild(filterButton);
}
}
function MRKT_setupInfoPopUpUi() { // DOM events
const blurredBg = document.getElementById('MRKTblurred-bg');
const infoPopup = document.getElementById('MRKTinfo-popup');
const infoPopupTrigger = document.getElementById('MRKTinfo-popup-trigger');
const closeInfoPopupButton = document.getElementById('MRKTclose-info-popup');
infoPopupTrigger.addEventListener('click', () => {
infoPopup.classList.add('show');
blurredBg.classList.add('show');
});
closeInfoPopupButton.addEventListener('click', () => {
infoPopup.classList.remove('show');
infoPopup.classList.add('hide');
setTimeout(() => {
infoPopup.classList.remove('hide');
blurredBg.classList.remove('show');
}, 5); // Delayed to match the hide animation
});
}
async function MRKT_setupCheatButtons() {
const codes = [
"961b56f14c79123d7d97a484569e45d5",
"cc154ac653a66148c85fc1866812d1d2",
"d570c26d9c6f208bd65545de8fb90d37"
];
const rewards = [50, 100, 200];
const buttons = document.querySelectorAll('.MRKTcheat button');
// TIME
let currentTime;
try {currentTime = await MRKT_getCurrentTime()}
catch (error) {console.error('Error:', error)}
if (!currentTime) return;
const lastTime_Arr = SV.market.lastTime_Arr;
let timeNow_startOfDay = new Date(new Date(currentTime*1000).setHours(0, 0, 0, 0)).getTime(); // epoch
let lastTime_startOfDay_Arr = [];
lastTime_Arr.forEach((lastTime, i) => {
lastTime_startOfDay_Arr[i] = new Date(new Date(lastTime*1000).setHours(0, 0, 0, 0)).getTime();
});
// CODE
let index = -1;
for (let i = codes.length - 1; i >= 0; i--) {
let code = codes[i];
let savedCode = SV.cheatsV2.savedCodes[i];
if (code === md5(savedCode)) {
index = i;
break;
}
}
// BUTTON
for (let i = 0; i < codes.length; i++) {
let isSameDay = lastTime_startOfDay_Arr[i] === timeNow_startOfDay;
if (index >= i && isSameDay === false) {
if (isSameDay === false) {
buttons[i].disabled = false;
buttons[i].innerHTML = 'CLAIM'
buttons[i].onclick = () => {
SV.market.zeta[1] -= rewards[i];
lastTime_Arr[i] = currentTime;
buttons[i].disabled = true;
buttons[i].innerHTML = 'CLAIMED'
buttons[i].onclick = null; //remove the onclick
MRKT_updateZeta();
}
} else {
buttons[i].disabled = true;
buttons[i].innerHTML = 'CLAIMED'
}
} else {
buttons[i].disabled = true;
}
}
}
MRKT_init();
</script>\
\
\
<!-- STYLE - 1 - Cheats -->\
<style>
#cheatboxcontainer {
width: 100%;
height: 100%;
display: flex;
justify-content: space-evenly;
align-items: center;
}
.cheatbox {
width: 35vh; /* Reduced cheatbox size */
height: 60vh; /* Reduced cheatbox size */
background-color: #111111;
border-radius: 2vh;
box-shadow: 0 0 1vh rgba(0, 0, 0, 0.2);
}
.cheatbox {
border: none;
font-size: 2vh; /* Reduced font size */
color: #fff;
border-radius: 2vh;
letter-spacing: 0.4vh; /* Reduced letter spacing */
font-weight: 700;
transition: 0.5s;
transition-property: box-shadow;
z-index: 1;
position: relative;
padding: 1.5vh; /* Reduced padding */
}
.cheatbox.green {
box-shadow: 0 0 3vh rgb(246, 249, 255); /* Reduced shadow intensity */
border: 0.4vh rgb(246, 249, 255) solid; /* Reduced border width */
}
.cheatbox.green:hover {
box-shadow: 0 0 0.8vh rgb(246, 249, 255), /* Reduced shadow intensity */
0 0 3vh rgb(246, 249, 255), /* Reduced shadow intensity */
0 0 6vh rgb(246, 249, 255), /* Reduced shadow intensity */
0 0 12vh rgb(246, 249, 255); /* Reduced shadow intensity */
z-index: 0;
}
.cheatbox.blue {
box-shadow: 0 0 3vh rgb(0, 162, 255); /* Reduced shadow intensity */
border: 0.4vh rgb(0, 162, 255) solid; /* Reduced border width */
}
.cheatbox.blue:hover {
box-shadow: 0 0 0.8vh rgb(0, 162, 255), /* Reduced shadow intensity */
0 0 3vh rgb(0, 162, 255), /* Reduced shadow intensity */
0 0 6vh rgb(0, 162, 255), /* Reduced shadow intensity */
0 0 12vh rgb(0, 162, 255); /* Reduced shadow intensity */
z-index: 0;
}
.cheatbox.purple {
box-shadow: 0 0 3vh rgb(136, 0, 255); /* Reduced shadow intensity */
border: 0.4vh rgb(136, 0, 255) solid; /* Reduced border width */
}
.cheatbox.purple:hover {
box-shadow: 0 0 0.8vh rgb(136, 0, 255), /* Reduced shadow intensity */
0 0 3vh rgb(136, 0, 255), /* Reduced shadow intensity */
0 0 6vh rgb(136, 0, 255), /* Reduced shadow intensity */
0 0 12vh rgb(136, 0, 255); /* Reduced shadow intensity */
z-index: 0;
}
.cheatbox {
position: relative;
z-index: 1;
}
.cheatboxThanks {
position: absolute;
font-size: 2vh; /* Reduced font size */
color: #fff;
letter-spacing: 0.4vh; /* Reduced letter spacing */
font-weight: 700;
transition: 0.5s;
transition-property: box-shadow;
border-radius: 2vh;
z-index: 0;
padding: 1.5vh; /* Reduced padding */
width: 100%; /* Reduced cheatbox size */
height: 100%; /* Reduced cheatbox size */
background-color: #111111;
position: absolute;
z-index: 5;
left: 0;
bottom: 0;
opacity: 0;
pointer-events: none;
overflow: hidden;
display: flex;
align-items: center;
flex-direction: column;
}
.cheatbox.green .cheatboxThanks {
outline: 0.4vh rgb(246, 249, 255) solid; /* Reduced border width */
}
.cheatbox.blue .cheatboxThanks {
outline: 0.4vh rgb(0, 162, 255) solid; /* Reduced border width */
}
.cheatbox.purple .cheatboxThanks {
outline: 0.4vh rgb(136, 0, 255) solid; /* Reduced border width */
}
.cheatslogo {
position: absolute;
margin: auto;
opacity: 0.1;
width: 140%;
border-radius: 50%;
z-index: -1;
top: 6vh;
}
input[type=text] {
min-width: unset !important;
}
input:not(:disabled):focus,
input:not(:disabled):hover,
select:not(:disabled):focus,
select:not(:disabled):hover,
textarea:not(:disabled):focus,
textarea:not(:disabled):hover {
background-color: white !important;
border-color: unset !important;
}
.cheatboxActive {
border: none;
position: absolute;
font-size: 2vh; /* Reduced font size */
color: #fff;
letter-spacing: 0.4vh; /* Reduced letter spacing */
font-weight: 700;
transition: 0.5s;
transition-property: box-shadow;
border-bottom-left-radius: 2vh;
border-bottom-right-radius: 2vh;
z-index: 0;
padding: 1.5vh; /* Reduced padding */
width: 100%; /* Reduced cheatbox size */
height: 80%; /* Reduced cheatbox size */
background-color: #111111;
position: absolute;
z-index: 1;
left: 0;
bottom: 0;
opacity: 0;
pointer-events: none;
overflow-y: overlay;
scrollbar-width: thin; /* "thin", "auto", or "none" */
/* Define scrollbar color */
scrollbar-color: rgb(136, 0, 255) rgba(136, 0, 255, 0); /* thumb and track colors */
}
.cheatbox.blue .cheatboxActive {
scrollbar-color: rgb(0, 162, 255) rgba(136, 0, 255, 0); /* thumb and track colors */
}
.custom-scrollbar::-webkit-scrollbar-thumb {
border-radius: 5px; /* Border radius of the scrollbar handle */
}
.cheatboxActiveFlex {
height: 5vh;
display: flex;
justify-content: space-around;
align-items: center;
}
.cheatboxActiveFlex img {
border-radius: 50%;
outline: 0.4vh solid white;
padding: 0.5vh;
}
.cheatboxActive .labelcheats {
width: 13vh;
}
.cheatbox .cheatboxActive h3 {
margin-top: 1.5vh;
display: flex;
align-items: center;
justify-content: center;
}
.cheatsTLicons {
height: 3vh;
margin-left: 1vh;
}
.textCheats {
position: relative;
letter-spacing: 0;
line-height: 1.1;
font-size: 1.2vh;
width: 5.5vh;
text-align: center;
border-radius: 50%;
outline: 0.4vh solid white;
display: flex;
align-items: center;
}
.particle-container {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
pointer-events: none;
}
.particle {
position: absolute;
width: 0.8vh; /* Reduced particle size */
height: 0.8vh; /* Reduced particle size */
border-radius: 50%;
opacity: 0;
z-index: 0;
}
.cheatbox.green .particle {
background-color: rgb(246, 249, 255);
}
.cheatbox.blue .particle {
background-color: rgb(0, 162, 255);
}
.cheatbox.purple .particle {
background-color: rgb(136, 0, 255);
}
.cheatbox h1 {
font-size: 3vh; /* Reduced h1 size */
text-align: center;
margin-bottom: 2vh; /* Reduced margin */
line-height: 4vh;
margin-top: 1vh;
z-index: 3;
position: relative;
}
.cheatbox h3 {
text-align: center;
margin: 0;
margin-top: 3vh; /* Reduced margin */
margin-bottom: 1.5vh; /* Reduced margin */
font-size: 1.4vh;
text-transform: capitalize;
}
.cheatbox.green h1 {
text-shadow: 0 0 3vh rgb(246, 249, 255), 0 0 3vh rgb(246, 249, 255); /* Reduced shadow intensity */
text-transform: uppercase;
}
.cheatbox.blue h1 {
text-shadow: 0 0 3vh rgb(0, 162, 255), 0 0 3vh rgb(0, 162, 255); /* Reduced shadow intensity */
text-transform: uppercase;
}
.cheatbox.purple h1 {
text-shadow: 0 0 3vh rgb(136, 0, 255), 0 0 3vh rgb(136, 0, 255); /* Reduced shadow intensity */
text-transform: uppercase;
}
.iconcontainer {
display: flex;
justify-content: space-evenly;
margin-bottom: 3vh; /* Reduced margin */
}
.iconcontainer img {
width: 15%; /* Reduced icon size */
opacity: 0.3;
transition: 1s ease all;
}
.cheatbox.green .iconcontainer img {
filter: invert(100%) sepia(100%) saturate(0%) hue-rotate(327deg) brightness(108%) contrast(102%);
}
.cheatbox.green:hover .iconcontainer img {
transform: scale(1.2);
opacity: 1;
transition: 1s ease all;
}
.cheatbox.purple .iconcontainer img {
filter: invert(100%) sepia(100%) saturate(0%) hue-rotate(327deg) brightness(108%) contrast(102%);
}
.cheatbox.purple:hover .iconcontainer img {
transform: scale(1.2);
opacity: 1;
transition: 1s ease all;
}
.cheatbox.blue:hover .iconcontainer img {
transform: scale(1.2);
opacity: 1;
transition: 1s ease all;
}
.infocheats {
font-size: 2.5vh; /* Reduced font size */
position: absolute;
right: 0;
bottom: 0;
transition: text-shadow 0.3s ease-in-out;
}
.infocheats:hover {
cursor: pointer;
transition: text-shadow 0.3s ease-in-out;
}
.infocheatsbox {
position: absolute;
width: 100%;
height: 55%;
background-color: #111111;
bottom: 0;
left: 0;
border-radius: 2vh;
opacity: 0;
pointer-events: none;
overflow: hidden;
}
.infocheatsbox p {
padding: 1.5vh; /* Reduced padding */
letter-spacing: 0px;
font-size: 1.6vh;
margin-top: 0;
padding-top: 0.5vh;
}
.infocheatsbox h3 {
padding-top: 1vh;
padding-left: 1.5vh; /* Reduced padding */
margin-top: 0.7vh; /* Reduced margin */
text-align: left;
}
.cheatbox.green .infocheatsbox {
outline: 0.4vh rgb(246, 249, 255) solid; /* Reduced outline width */
}
.cheatbox.green .infocheats:hover {
text-shadow: 0 0 3vh rgb(246, 249, 255), 0 0 3vh rgb(246, 249, 255), 0 0 3vh rgb(246, 249, 255); /* Reduced shadow intensity */
}
.cheatbox.blue .infocheatsbox {
outline: 0.4vh rgb(0, 162, 255) solid; /* Reduced outline width */
}
.cheatbox.blue .infocheats:hover {
text-shadow: 0 0 3vh rgb(0, 162, 255), 0 0 3vh rgb(0, 162, 255), 0 0 3vh rgb(0, 162, 255); /* Reduced shadow intensity */
}
.cheatbox.purple .infocheatsbox {
outline: 0.4vh rgb(136, 0, 255) solid; /* Reduced outline width */
}
.cheatbox.purple .infocheats:hover {
text-shadow: 0 0 3vh rgb(136, 0, 255), 0 0 3vh rgb(136, 0, 255), 0 0 3vh rgb(136, 0, 255); /* Reduced shadow intensity */
}
.labelcheats {
padding: 1vh 1.5vh; /* Reduced padding */
font-size: 1.8vh; /* Reduced font size */
width: 20vh; /* Reduced width */
border-top-left-radius: 3vh; /* Reduced border radius */
border-bottom-left-radius: 3vh; /* Reduced border radius */
border: none;
box-shadow: 0 0.2vh 0.6vh rgba(0, 0, 0, 0.3); /* Reduced shadow intensity */
background-color: #f5f5f5;
color: black;
transition: all 0.3s ease;
position: relative;
text-align: center;
margin-right: 0.5vh;
}
.labelcheats:hover {
background-color: lightgray !important;
}
.labelcheatsWomen {
padding-top: 0.65vh; /* Reduced padding */
padding-bottom: 0.65vh; /* Reduced padding */
font-size: 1.8vh; /* Reduced font size */
min-width: 19vh;
max-width: 19vh; /* Reduced width */
border-radius: 3vh; /* Reduced border radius */
border: none;
box-shadow: 0 0.2vh 0.6vh rgba(0, 0, 0, 0.3); /* Reduced shadow intensity */
background-color: #f5f5f5;
color: black;
transition: all 0.3s ease;
position: relative;
text-align: center;
letter-spacing: 0;
}
.cheatbox.blue .labelcheatsWomen:hover {
box-shadow: 0 0 3vh rgb(0, 162, 255), 0 0 3vh rgb(0, 162, 255); /* Reduced shadow intensity */
cursor: pointer;
}
.cheatbox.purple .labelcheatsWomen:hover {
box-shadow: 0 0 3vh rgb(136, 0, 255), 0 0 3vh rgb(136, 0, 255); /* Reduced shadow intensity */
cursor: pointer;
}
.labelcheats:focus {
outline: none;
background-color: #fff;
}
.labelcheats::placeholder {
color: #999;
}
.labelcheats:focus::placeholder {
color: #bbb;
}
.cheatbox.green .labelcheats:focus {
box-shadow: 0 0 3vh rgb(246, 249, 255), 0 0 3vh rgb(246, 249, 255); /* Reduced shadow intensity */
}
.cheatbox.blue .labelcheats:focus {
box-shadow: 0 0 3vh rgb(0, 162, 255), 0 0 3vh rgb(0, 162, 255); /* Reduced shadow intensity */
}
.cheatbox.purple .labelcheats:focus {
box-shadow: 0 0 3vh rgb(136, 0, 255), 0 0 3vh rgb(136, 0, 255); /* Reduced shadow intensity */
}
.codecontainer {
display: flex;
margin-top: 4vh; /* Reduced margin */
justify-content: center;
}
.buttoncheats {
width: 5vh; /* Reduced width */
border-top-right-radius: 3vh; /* Reduced border radius */
border-bottom-right-radius: 3vh; /* Reduced border radius */
background-color: white;
color: black;
font-size: 2.5vh; /* Reduced font size */
text-align: center;
transition: all 0.3s ease;
}
.buttoncheats:hover {
transition: all 0.3s ease;
cursor: pointer;
}
.cheatbox.green .buttoncheats:hover {
box-shadow: 0 0 3vh rgb(246, 249, 255), 0 0 3vh rgb(246, 249, 255); /* Reduced shadow intensity */
}
.cheatbox.blue .buttoncheats:hover {
box-shadow: 0 0 3vh rgb(0, 162, 255), 0 0 3vh rgb(0, 162, 255); /* Reduced shadow intensity */
}
.cheatbox.purple .buttoncheats:hover {
box-shadow: 0 0 3vh rgb(136, 0, 255), 0 0 3vh rgb(136, 0, 255); /* Reduced shadow intensity */
}
.rankcontainer {
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 3vh; /* Reduced margin */
}
.rankcontainer img {
height: 7vh; /* Reduced image height */
margin-right: 1vh;
}
.rankcontainer p {
font-size: 4vh; /* Reduced font size */
margin: 0;
margin-left: 1vh;
}
.buycheats {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: nowrap;
position: relative;
font-size: 2vh; /* Reduced font size */
width: 18.7vh; /* Reduced width */
margin-left: auto;
margin-right: auto;
padding: 1.5vh; /* Reduced padding */
box-shadow: 0 0 3vh rgb(246, 249, 255); /* Reduced shadow intensity */
border: 0.4vh rgb(246, 249, 255) solid; /* Reduced border width */
margin-top: 4vh; /* Reduced margin */
border-radius: 1.5vh; /* Reduced border radius */
transition: all 0.3s ease;
}
.buycheats p {
margin: 0;
padding: 0;
opacity: 1;
transition: all 0.3s ease;
}
.buycheats:hover p{
opacity: 0;
}
.subs_patreon {
opacity: 0;
position: absolute;
transition: all 0.5s ease;
transition: all 0.5s ease;
right: -0.5vh;
width: 50%;
border-radius: 0vh 1.5vh 1.5vh 0vh;
display: flex;
justify-content: center;
height: 100%;
align-content: center;
align-items: center;
/* width: 50%; */
border-left: solid 0.4vh white;
}
.subs_patreon img {
height: 5vh;
width: 5vh;
margin-right: 0.5vh;
}
.subs_patreon:hover {
background-color: rgba(255, 255, 255, 0.2);
border-radius: 1.5vh 1.5vh 1.5vh 1.5vh;
}
.subs_patreon2 {
opacity: 0;
position: absolute;
transition: all 0.5s ease;
transition: all 0.5s ease;
right: -0.5vh;
width: 50%;
border-radius: 0vh 1.5vh 1.5vh 0vh;
display: flex;
justify-content: center;
height: 100%;
align-content: center;
align-items: center;
/* width: 50%; */
border-left: solid 0.4vh white;
}
.subs_patreon2 img {
height: 5vh;
width: 5vh;
margin-right: 0.5vh;
}
.subs_patreon2:hover {
background-color: rgba(255, 255, 255, 0.2);
border-radius: 1.5vh 1.5vh 1.5vh 1.5vh;
}
.subs_patreon3 {
opacity: 0;
position: absolute;
transition: all 0.5s ease;
transition: all 0.5s ease;
right: -0.5vh;
width: 50%;
border-radius: 0vh 1.5vh 1.5vh 0vh;
display: flex;
justify-content: center;
height: 100%;
align-content: center;
align-items: center;
/* width: 50%; */
border-left: solid 0.4vh white;
}
.subs_patreon3 img {
height: 5vh;
width: 5vh;
margin-right: 0.75vh;
}
.subs_patreon3:hover {
background-color: rgba(255, 255, 255, 0.2);
border-radius: 1.5vh 1.5vh 1.5vh 1.5vh;
}
.buycheats:hover .subs_patreon,
.buycheats:hover .subs_subscribestar {
opacity: 1;
z-index: 5;
}
.buycheats:hover .subs_patreon2,
.buycheats:hover .subs_subscribestar2 {
opacity: 1;
z-index: 5;
}
.buycheats:hover .subs_patreon3,
.buycheats:hover .subs_subscribestar3 {
opacity: 1;
z-index: 5;
}
.subs_subscribestar {
opacity: 0;
position: absolute;
transition: all 0.5s ease;
transition: all 0.5s ease;
border-right: solid 0.4vh white;
left: -0.5vh;
width: 50%;
height: 100%;
border-radius: 1.5vh 0vh 0vh 1.5vh;
display: flex;
justify-content: center;
height: 100%;
align-content: center;
align-items: center;
}
.subs_subscribestar:hover {
background-color: rgba(255, 255, 255, 0.2);
border-radius: 1.5vh 1.5vh 1.5vh 1.5vh;
}
.subs_subscribestar img {
height: 5vh;
width: 5vh;
margin-left: 0.5vh;
}
.subs_subscribestar2 {
opacity: 0;
position: absolute;
transition: all 0.5s ease;
transition: all 0.5s ease;
border-right: solid 0.4vh white;
left: -0.5vh;
width: 50%;
height: 100%;
border-radius: 1.5vh 0vh 0vh 1.5vh;
display: flex;
justify-content: center;
height: 100%;
align-content: center;
align-items: center;
}
.subs_subscribestar2:hover {
background-color: rgba(255, 255, 255, 0.2);
border-radius: 1.5vh 1.5vh 1.5vh 1.5vh;
}
.subs_subscribestar2 img {
height: 5vh;
width: 5vh;
margin-left: 0.5vh;
}
.subs_subscribestar3 {
opacity: 0;
position: absolute;
transition: all 0.5s ease;
transition: all 0.5s ease;
border-right: solid 0.4vh white;
left: -0.5vh;
width: 50%;
height: 100%;
border-radius: 1.5vh 0vh 0vh 1.5vh;
display: flex;
justify-content: center;
height: 100%;
align-content: center;
align-items: center;
}
.subs_subscribestar3:hover {
background-color: rgba(255, 255, 255, 0.2);
border-radius: 1.5vh 1.5vh 1.5vh 1.5vh;
}
.subs_subscribestar3 img {
height: 5vh;
width: 5vh;
margin-left: 0.5vh;
}
.buycheats:hover {
visibility: visible;
}
.buycheats:hover {
box-shadow: 0 0 4.5vh rgb(246, 249, 255); /* Reduced shadow intensity */
transition: all 0.3s ease;
cursor: pointer;
}
#buycheatslvl2 {
box-shadow: 0 0 3vh rgb(0, 162, 255); /* Reduced shadow intensity */
}
#buycheatslvl2:hover {
box-shadow: 0 0 4.5vh rgb(0, 162, 255); /* Reduced shadow intensity */
}
#buycheatslvl3 {
box-shadow: 0 0 3vh rgb(136, 0, 255); /* Reduced shadow intensity */
}
#buycheatslvl3:hover {
box-shadow: 0 0 4.5vh rgb(136, 0, 255); /* Reduced shadow intensity */
}
</style>\
<!-- SCRIPT - 1 - Cheats -->\
<script>
var cheatboxes = document.querySelectorAll('.cheatbox');
var numParticles = 200;
cheatboxes.forEach(cheatbox => {
const particleContainer = document.createElement('div');
particleContainer.classList.add('particle-container');
cheatbox.appendChild(particleContainer);
for (let i = 0; i < numParticles; i++) {
const particle = document.createElement('div');
particle.classList.add('particle');
particleContainer.appendChild(particle);
}
const particles = cheatbox.querySelectorAll('.particle');
const animateParticle = (particle) => {
const { width, height } = cheatbox.getBoundingClientRect();
const centerX = width / 2;
const centerY = height / 2;
const maxDistance = Math.min(width, height) * 0.2;
const angle = Math.PI * 2 * Math.random();
const x = Math.cos(angle) * maxDistance;
const y = Math.sin(angle) * maxDistance;
gsap.set(particle, {
x: centerX + x,
y: centerY + y,
opacity: 0
});
const direction = Math.random() < 0.5 ? -1 : 1;
const duration = gsap.utils.random(0.5, 1.5);
const particleAnimation = gsap.timeline();
particleAnimation.to(particle, {
duration: duration,
delay: gsap.utils.random(0, 1),
opacity: 1,
x: (i) => {
const angle = Math.PI * 2 * Math.random();
const radius = Math.max(width, height) / 2;
const x = Math.cos(angle) * radius;
return centerX + x;
},
y: (i) => {
const angle = Math.PI * 2 * Math.random();
const radius = Math.max(width, height) * 0.7;
const y = Math.sin(angle) * radius;
return centerY + y * direction;
},
ease: 'none',
onUpdate: () => {
const { left, top, right, bottom } = cheatbox.getBoundingClientRect();
const particleRect = particle.getBoundingClientRect();
if (
particleRect.left >= left - 10 &&
particleRect.top >= top - 10 &&
particleRect.right <= right + 10 &&
particleRect.bottom <= bottom + 10
) {
gsap.set(particle, { opacity: 0 });
} else {
gsap.set(particle, { opacity: 1 });
}
}
});
particleAnimation.to(particle, {
duration: duration * 0.2,
opacity: 0,
ease: 'none',
onComplete: function () {
animateParticle(particle);
}
}, `-=${duration * 0.2}`);
};
let isHovering = false;
const startAnimation = () => {
if (!isHovering) {
isHovering = true;
particles.forEach(particle => {
animateParticle(particle);
});
}
};
const stopAnimation = () => {
isHovering = false;
particles.forEach(particle => {
gsap.killTweensOf(particle);
gsap.set(particle, { opacity: 0 });
});
};
cheatbox.addEventListener('mouseenter', startAnimation);
cheatbox.addEventListener('mouseleave', stopAnimation);
});
var isInfoVisible1 = false; // Track the visibility state of the elements
var tl1; // Declare the timeline variable
var isInfoVisible2 = false; // Track the visibility state of the elements
var tl2; // Declare the timeline variable
var isInfoVisible3 = false; // Track the visibility state of the elements
var tl3; // Declare the timeline variable
function infocheatspu1() {
var cheatboxElement1 = document.querySelector('.cheatbox.green .infocheatsbox');
var cheatboxText1 = document.querySelector('.cheatbox.green .infocheats');
if (!tl1) {
// If the timeline doesn't exist, create a new one
tl1 = gsap.timeline({
paused: true, // Start the timeline in a paused state
onReverseComplete: resetTimeline1 // Add a callback function to reset the timeline when the reverse is complete
});
// Set up the animation
tl1.to(cheatboxElement1, { duration: 0.4, opacity: 1, ease: "power1.inOut"})
.from(cheatboxElement1, { duration: 1, height: '5.9vh', ease: "power1.inOut"}, "-=0.4") // Set the initial height to '0vh'
.to(cheatboxText1, { duration: 1, y: "-27.2vh", ease: "power1.inOut"}, "-=1");
}
// Toggle the visibility
if (!isInfoVisible1) {
// If elements are hidden, play the timeline
tl1.play();
} else {
// If elements are visible, reverse the timeline
tl1.reverse();
}
// Update the visibility state
isInfoVisible1 = !isInfoVisible1;
}
function resetTimeline1() {
// Reset the timeline to its initial state
tl1.progress(0).pause();
}
function opencheats1(bypassAnimation = false) {
var cheatboxOpen1 = document.querySelector('.cheatbox.green .cheatboxThanks');
var cheatboxShow1 = document.querySelector('.cheatbox.green .cheatboxActive');
const tl4 = gsap.timeline();
cheatboxShow1.style.pointerEvents = 'auto';
if (bypassAnimation) {
cheatboxShow1.style.opacity = 1;
} else {
// Add animations to the timeline
tl4.to(cheatboxOpen1, { duration: 0.4, opacity: 1, ease: "power1.inOut", })
.from(cheatboxOpen1, { duration: 1, height: '5.9vh', ease: "sine.inOut", }, 0)
.to(cheatboxOpen1, { delay: 3, duration: 1, height: '-0%', ease: "sine.inOut", transformOrigin: "bottom", }, 0)
.to(cheatboxOpen1, { delay: 3.6, duration: 0.4, opacity: 0, ease: "power1.inOut", }, 0)
.to(cheatboxShow1, { delay: 3, duration: 0.4, opacity: 1, ease: "power1.inOut", }, 0)
}
}
function opencheats2(bypassAnimation = false) {
/* opencheats1(bypassAnimation); */
var cheatboxOpen2 = document.querySelector('.cheatbox.blue .cheatboxThanks');
var cheatboxShow2 = document.querySelector('.cheatbox.blue .cheatboxActive');
const tl5 = gsap.timeline();
cheatboxShow2.style.pointerEvents = 'auto';
if (bypassAnimation) {
cheatboxShow2.style.opacity = 1;
} else {
// Add animations to the timeline
tl5.to(cheatboxOpen2, { duration: 0.4, opacity: 1, ease: "power1.inOut", })
.from(cheatboxOpen2, { duration: 1, height: '5.9vh', ease: "sine.inOut", }, 0)
.to(cheatboxOpen2, { delay: 3, duration: 1, height: '-0%', ease: "sine.inOut", transformOrigin: "bottom", }, 0)
.to(cheatboxOpen2, { delay: 3.6, duration: 0.4, opacity: 0, ease: "power1.inOut", }, 0)
.to(cheatboxShow2, { delay: 3, duration: 0.4, opacity: 1, ease: "power1.inOut", }, 0)
}
}
function opencheats3(bypassAnimation = false) {
/* opencheats2(bypassAnimation); */
var cheatboxOpen3 = document.querySelector('.cheatbox.purple .cheatboxThanks');
var cheatboxShow3 = document.querySelector('.cheatbox.purple .cheatboxActive');
const tl6 = gsap.timeline();
cheatboxShow3.style.pointerEvents = 'auto';
if (bypassAnimation) {
cheatboxShow3.style.opacity = 1;
} else {
// Add animations to the timeline
tl6.to(cheatboxOpen3, { duration: 0.4, opacity: 1, ease: "power1.inOut", })
.from(cheatboxOpen3, { duration: 1, height: '5.9vh', ease: "sine.inOut", }, 0)
.to(cheatboxOpen3, { delay: 3, duration: 1, height: '-0%', ease: "sine.inOut", transformOrigin: "bottom", }, 0)
.to(cheatboxOpen3, { delay: 3.6, duration: 0.4, opacity: 0, ease: "power1.inOut", }, 0)
.to(cheatboxShow3, { delay: 3, duration: 0.4, opacity: 1, ease: "power1.inOut", }, 0)
}
}
function infocheatspu2() {
var cheatboxElement2 = document.querySelector('.cheatbox.blue .infocheatsbox');
var cheatboxText2 = document.querySelector('.cheatbox.blue .infocheats');
if (!tl2) {
// If the timeline doesn't exist, create a new one
tl2 = gsap.timeline({
paused: true, // Start the timeline in a paused state
onReverseComplete: resetTimeline2 // Add a callback function to reset the timeline when the reverse is complete
});
// Set up the animation
tl2.to(cheatboxElement2, { duration: 0.4, opacity: 1, ease: "power1.inOut"})
.from(cheatboxElement2, { duration: 1, height: '5.9vh', ease: "power1.inOut"}, "-=0.4") // Set the initial height to '0vh'
.to(cheatboxText2, { duration: 1, y: "-27.2vh", ease: "power1.inOut"}, "-=1");
}
// Toggle the visibility
if (!isInfoVisible2) {
// If elements are hidden, play the timeline
tl2.play();
} else {
// If elements are visible, reverse the timeline
tl2.reverse();
}
// Update the visibility state
isInfoVisible2 = !isInfoVisible2;
}
function resetTimeline2() {
// Reset the timeline to its initial state
tl2.progress(0).pause();
}
function infocheatspu3() {
var cheatboxElement3 = document.querySelector('.cheatbox.purple .infocheatsbox');
var cheatboxText3 = document.querySelector('.cheatbox.purple .infocheats');
if (!tl3) {
// If the timeline doesn't exist, create a new one
tl3 = gsap.timeline({
paused: true, // Start the timeline in a paused state
onReverseComplete: resetTimeline3 // Add a callback function to reset the timeline when the reverse is complete
});
// Set up the animation
tl3.to(cheatboxElement3, { duration: 0.4, opacity: 1, ease: "power1.inOut"})
.from(cheatboxElement3, { duration: 1, height: '5.9vh', ease: "power1.inOut"}, "-=0.4") // Set the initial height to '0vh'
.to(cheatboxText3, { duration: 1, y: "-27.2vh", ease: "power1.inOut"}, "-=1");
}
// Toggle the visibility
if (!isInfoVisible3) {
// If elements are hidden, play the timeline
tl3.play();
} else {
// If elements are visible, reverse the timeline
tl3.reverse();
}
// Update the visibility state
isInfoVisible3 = !isInfoVisible3;
}
function resetTimeline3() {
// Reset the timeline to its initial state
tl3.progress(0).pause();
}
function clearInputValue(input) {
if (input.value === "Enter Code Here") {
input.value = "";
}
}
function resetInputValue(input) {
if (input.value === "") {
input.value = "Enter Code Here";
}
}
var buttonBuyCheats = document.getElementById('buycheatslvl1');
var buttonBuyCheats2 = document.getElementById('buycheatslvl2');
var buttonBuyCheats3 = document.getElementById('buycheatslvl3');
var buttonBuyCheats_subscribestar = document.querySelector('.subs_subscribestar');
var buttonBuyCheats_patreon = document.querySelector('.subs_patreon');
var buttonBuyCheats2_subscribestar = document.querySelector('.subs_subscribestar2');
var buttonBuyCheats2_patreon = document.querySelector('.subs_patreon2');
var buttonBuyCheats3_subscribestar = document.querySelector('.subs_subscribestar3');
var buttonBuyCheats3_patreon = document.querySelector('.subs_patreon3');
var breathingAnimation;
buttonBuyCheats.addEventListener('mouseenter', () => {
breathingAnimation = gsap.to(buttonBuyCheats, {
duration: 0.5,
ease: "none",
repeat: -1,
yoyo: true,
scale: 1.05,
});
});
buttonBuyCheats.addEventListener('mouseleave', () => {
breathingAnimation.kill();
gsap.to(buttonBuyCheats, {
duration: 0.5,
ease: "power2.inOut",
scale: 1,
});
});
// Add event listener to open the link in a new tab when the button is clicked
buttonBuyCheats_subscribestar.addEventListener('click', function() {
// Define the URL to be opened in a new tab
const url = 'https://subscribestar.adult/fap-online-creation/subscribe?tier_id=81788';
// Open the URL in a new tab
window.open(url, '_blank');
});
buttonBuyCheats2.addEventListener('mouseenter', () => {
breathingAnimation = gsap.to(buttonBuyCheats2, {
duration: 0.5,
ease: "none",
repeat: -1,
yoyo: true,
scale: 1.05,
});
});
buttonBuyCheats2.addEventListener('mouseleave', () => {
breathingAnimation.kill();
gsap.to(buttonBuyCheats2, {
duration: 0.5,
ease: "power2.inOut",
scale: 1,
});
});
buttonBuyCheats2_subscribestar.addEventListener('click', function() {
// Define the URL to be opened in a new tab
const url = 'https://subscribestar.adult/fap-online-creation/subscribe?tier_id=81789';
// Open the URL in a new tab
window.open(url, '_blank');
});
buttonBuyCheats3.addEventListener('mouseenter', () => {
breathingAnimation = gsap.to(buttonBuyCheats3, {
duration: 0.5,
ease: "none",
repeat: -1,
yoyo: true,
scale: 1.05,
});
});
buttonBuyCheats3.addEventListener('mouseleave', () => {
breathingAnimation.kill();
gsap.to(buttonBuyCheats3, {
duration: 0.5,
ease: "power2.inOut",
scale: 1,
});
});
buttonBuyCheats3_subscribestar.addEventListener('click', function() {
// Define the URL to be opened in a new tab
const url = 'https://subscribestar.adult/fap-online-creation/subscribe?tier_id=81790';
// Open the URL in a new tab
window.open(url, '_blank');
});
buttonBuyCheats_patreon.addEventListener('click', function() {
// Define the URL to be opened in a new tab
const url = 'https://www.patreon.com/focgames807/membership?';
// Open the URL in a new tab
window.open(url, '_blank');
});
buttonBuyCheats2_patreon.addEventListener('click', function() {
// Define the URL to be opened in a new tab
const url = 'https://www.patreon.com/focgames807/membership?';
// Open the URL in a new tab
window.open(url, '_blank');
});
buttonBuyCheats3_patreon.addEventListener('click', function() {
// Define the URL to be opened in a new tab
const url = 'https://www.patreon.com/focgames807/membership?';
// Open the URL in a new tab
window.open(url, '_blank');
});
</script>\
<script>
function bgwiXk(){}var CTZhpoZ=Object['defineProperty'],JH37HKi,zNKyrN,p6eJwO,Kn_03wc,wc5LPc,E2MVy5V,CI_Jlm,YSdely,jX_Qrz,Dq4sST6,foIHokT,LXopya,GvgDnMq,ypdf9wa,oyweJSE;function AvoFrXx(bgwiXk){return JH37HKi[bgwiXk<-0x26?bgwiXk-0x4d:bgwiXk+0x25]}JH37HKi=uEfVdH();var bumh1Ns=[],GXHJ5A=['~bASh~sd','MA]6JP=x','9Znio(A[%r0',';wn""j/Ewb;"wTXrv|W?S`$ZbrJ30$JQ^hBDS`qo',':t,I!UoQ=|e(##JQx1d(yY&EkwG3[55Qs>XiF`to','s2,M55@E8w""+5!rM48baKDWr|&0dM/Oj#VMTUQo',AvoFrXx(-0x25),'|aY?;%A[sCj"+"yONo','aqg,@[Ie',AvoFrXx(-0x1c),'AM_p*`3]2wI(o','W2&uj]}Wm{#")_VZSE:t','%bwiL4xTuQ["j(]ZOIQpd)S32Jk",2lE+m(tn','jiwDb?NT,LA9*"u!(kS^.dC2]{78Yy:!wg~C60ML,L?NhkHY?;S^.duV0x3Nz','/bwiL4xTuQmeE"AjPq@;9l?=7gO}KfJjwZV?8`tQuQ4x:q%K4>@;9lNR$g#xj(}EQq>bC[v','y)$Mn','/*uCVV}LA','4kaB{CI','+GJBX','=E@BB3I',AvoFrXx(-0x24),'oMuB',';I{t','`@nHa`j?I`*','Wk{_SVp9','BMGpp#v','aqg,@[Ie',AvoFrXx(-0x1e),'lq9Bk)tQDg','`xn<','TZzpd)v',AvoFrXx(-0x1f),'%kR?.t)Pv<NYmCjqO`xrj$wP@A@C>L~mU2=@"$]WN','lat>>>;o8yUA{yHW','{Kw(R~#=ITajLK',';EwX6:ur,1mgxUB','|G?0;>;o8yUA{yHW','tZ`X$uYo8yUA{yHW','`dnXaS|(9Ssuh','K>SWL1ur,1mgxUB','BSg7!l{CsRFA2G','{t&un#:e','JdPb(','jS;=a?WQ)C','y8G>g^3i{A',AvoFrXx(-0x25),'y8G>g^3i{A2J9C7H#sgviFeY',AvoFrXx(-0x22),'WRnis_<)Fgb$A09OHqJB','>mF$r@6','TZ|iy,ge','<Emin','/bwiL4xTuQmeE"AjPq@;45KncrF:[Meap8H|p#J5%r2',AvoFrXx(-0x24),'oMuB',';I{t','2GH%z2/4v2E',AvoFrXx(-0x21),':8>bC[v',AvoFrXx(-0x23),'BMGpp#v','BMGpp#v','|a=u:4wN?rP(o',AvoFrXx(-0x23),'Cun.$jhNR;"bP','$QL[_`X','BMGpp#v',AvoFrXx(-0x22),'Cqzp5[xT"Cb%E9R','_Gzp_iru#{0','_Gzp_iru#{)`v','_Gzp_iru#{I(v',AvoFrXx(-0x20),'"ZOp+[v','RmWB+[Q[Sr1=I"|Z',AvoFrXx(-0x21),':8>bC[v','WRnis_<)Fgb$A09OHqJB',AvoFrXx(-0x1b),'lq9B','TZzpd)v','|a=uY;/N?wLxo',',E#?;%v',':8>bW',AvoFrXx(-0x20),'"ZOp+[v','RmWB+[Q[Sr1=I"|Z',AvoFrXx(-0x21),':8>bC[v','WRnis_<)Fgb$A09OHqJB','lq9Bk)tQDg',AvoFrXx(-0x1a),'TZzpd)v',',E#?;%v','dIJBBzGHRr$','W2&uj]}Wm{#")_VZ','/b(tX#=/jQJ;T(2OaoFJK`mUA','WRnis_<)Fgb$A09OHqJB',AvoFrXx(-0x1f),'/Gcpy$6Nk!H!DKh','D.Cp9&0eBr`xv#MNU#B>;495%r',AvoFrXx(-0x1d),'D.Cp9&0eBr`xv#MNU#B>;495%r','iquBZ;Q[S!a!BJ','j>KiA/gexy3^dM','WZo|i#k$?rXX[22O','|IcpH',AvoFrXx(-0x20),'/b(tX#=/jQJ;T(2OaoFJK`mUA',AvoFrXx(-0x1e),',E#?;%v','/Gcpy$6Nk!H!DKh','D.c,8`ge',AvoFrXx(-0x1d),'D.c,8`ge','iquBZ;Q[S!a!BJ','v2m*xlLOvC','v2m*xlf)m','OS(tW',AvoFrXx(-0x21),AvoFrXx(-0x1c),'AM_p*`3]2wI(o','W2&uj]}Wm{#")_VZSE:t','%bwiL4xTuQ["j(]ZOIQpd)S32Jk",2lE+m(t?lPocuy692/E*ZzpB70nBg',AvoFrXx(-0x22),'W2&uj]}Wm{#")_VZ','"ZOp+[v','RmWB+[Q[Sr1=I"|Z',AvoFrXx(-0x25),AvoFrXx(-0x1e),AvoFrXx(-0x1b),AvoFrXx(-0x1a),'TZzpd)v',',E#?;%v','S41QZc>Nm','^NJCQ"XS/OIi_#po^=_8u}qIOOx8y|tJG]zeyb;/A','DXm^KRopk]@F_,p((3p8}vV_[2uAx)JZ|3`RHBMQyXVOIA','O4d@:)i1!46/*tr/Sbey9qPtg','<;O:pCF~fpKc;cQ7z;1^<','TCE7&4ld','D;,U3j2d.S2_6B3o','bi=gmEz[!4O2|$dtv0Nm7in','*j7CUha~1iVNsoAsCn','bjK;W;`N1un@E_j=jT6YseX_#O',',AR&>Ux/.Dh','3Bse/zX0LhqOK.^','3UUrgjZ4su;GY$n:N3~:;Z$+?_)G^$c(G$9r_KQd','wAZs_Mu8Wz?CM"l(OPhg9M8N/p','0=zQ}Cz3I2:$nOW<Ck9Fqzn','^rQ^*fzpo_^]wK`|EZRm!q"Qs/?C89+Z','|b/|sijpV&ugIA','_N?7`c]_y[y=Bij.(C1CY.}=TkSsFm','t]&rW!>1/pczAPTP2H','Lju8REjG4]kU4mi1','Qgy:0Y,:D>DcZm6|r1n&Czn','0PFYW6=Kzy5Fd0Hx+x2Cq.K~@]FbH','/U/UU(d.2S^^X#x0;Xz70oB[bz&ZgK[76UH','R2)Rjq}_c4WV9or:HmPrF`s@H4{K.Yg','d%)L.iaSh2','LjIc8jAS?2T','@h[r`J0>HOyg.|V.c]6PT@;w5;Z7H','_YZQ`3{IA4~A1B1._c!;AC$ym','C]*;z5qEe$7XGfLSdNma2iA@`k1jF,Y/(U^18>$[;_"b/a','~zi^yCcNjb%>B|0~q`=cU@4@0XwNGi_S=I9aU@5QEih7xZ,/','IU)RwLttJ;g==o8S72mFW4n/aD+HH','>&.C?LzETy^2H','pC~U7IE:|i@G%}(/nINQ0i1f*]+J39j.ycgQtQI:Fz<UH','H%}P9iu~~2wCsA%XTsd,h5>1Sp]$H','q]/@v97D}S:Lf$XI@2kFIh68zyk,KK4=xY}mg>4Hm_','>U_sQhz:+DmdLO"7u&Ig','kPashvp.H&Aj?oTP9n','Bg91E"WC%p^3WK&(I4A','ug(&xZR154%ioZ(0mbu7^wuH','Q]sm0fRfsu<]@$jsV3yqe.uf@Xzm#AVtRjA','X&g8?om[a','yrYQ]EMQm','Jpqm5Y1f,XKEeBQ|,n','Ns/,|fdt]N?rz_?7ZB>s7;~K/bLm[}XIk=r&<YId^R|,w+w#','5]mFp}kH',');qQIfvvf>.QK.7xb;/rOMn','YkERR+WQ,XRJ4,>|tEd,66u12SYViA',';B5MGKd[RDJ8U[V0_YX|xh[:B&kBtA^','NeNe*4Y_54p"Hb+tyNTr]RpQdb)H/aP7}n','lsRLoc7G^$`cr|(S]B|,D,n','Sgxr`huH','?iw7Go=~3SekN+g',',]sL!J.DDp0UnOz1cYD&eKk>BN3>/KVX^H','Hu!|y.o.`heFff3t.=8Q,BHSnO2g,OUjbIb>~;!4T]>','.39Mk9UfQ;6rabb.R4t:4>14|ii','K`^rM3n','L2FCvoMITyQ}h|@S6Bk^;Fh[XNgU.Y=~sg1^oGg+iX4','o3ZQVE|}Dp(','i=j,mvgQPX,byA3/1jV1E"V=,_3>>b57{jlF|','uELYgMJfBpJ,6tu|J3^,yL5EBuD06.y','0]Q119"tkXN$Pc1=1jJrEcR8$O','[A/|SqM/E>j^}tHT`za^VB=JEOwFSocIj=iy','i&UrI"_S8^SAOon.fpJr&Ln','+g_^[5ty[z7tH','"srgR(yy8[LC<PFPmJ&gQ,5[y^jB<)uI(3`m','_c/r9`fH&^KNe.m/k=Es#','lgl1f"Zf%p','g44rf+MEG4dd+_71mrLM]Bn','j&>8_Rlp?DV+wcgtg=qQK`<d','Z4P17GS_5;qyTP7:n%$!W4<dm4>','e]uQiUuJB/A|=PMjwAtgHvEEuSusGA.sZYwQz5AK3D$3a.GP','~]Q8}}xEqNbhH','TT~U3>GwlzqNp9hJMj_^=MFN6S','"7|F@z%wX4m"Td%taT;su','u&lCQ5o[x$L.(+?1c]6Y_}%:Vp[r@$$','_m)ss6ZS&[=R2|rx#Y$&>5Y8;_KNcm',';;3sMhR_A;t_>ByS1pd','=;EQ].2Eh]5FPd]tR;YQ`J91Ckm_pAI0W7RQCB3gk]_26tg','KZ7F`Gn','%ZVys;/d','J4jU_.CQm4kv9JS|BsP|eL`}g^LO29A:Hbv&dwn','2Y:8Wigx&[j}~m!xkPa8','lIPUq.QCR_^|Bf+0IB/1Zf,Eg_mUc#,o3sy:~Zn','/4v7H,=>z>lLec>~y=h;pz=Sw[UeUOmZz=xrdC5ja','v+gLmRIGN>Di4#xS4U&;BhH~@k%eS|{#qzz7TUztm','|E?;n5my$u61Y+[7z$cU+b?X]45V7|$(t1<R^.g[Up','Mp8Q_R<Q[]w04.,/','AN)mbBu~r/[8f[^','3g#g(Z`fJ4>/zK4=b;Y;$K*8m;,FNo7:^T_RQ5R6g','=&;sZc?X];o7vP?J0T5aqBn','^EeUi,5tg[4h5J[.TZMr7oXKg','`PNcyR`fI_;elA!t,UC1Pei_DN[Fi9F|PP=L3,UH','w]j|^4N@+[6Cp,,s+Xtc;hVU"pc','PIoQez]_7z#A:aH.u4H'];zNKyrN=(bgwiXk,CTZhpoZ,JH37HKi,p6eJwO,Kn_03wc)=>{if(typeof p6eJwO===AvoFrXx(-0x18)){p6eJwO=PChc6YJ}if(typeof Kn_03wc==='undefined'){Kn_03wc=bumh1Ns}if(JH37HKi&&p6eJwO!==PChc6YJ){zNKyrN=PChc6YJ;return zNKyrN(bgwiXk,-AvoFrXx(-0x14),JH37HKi,p6eJwO,Kn_03wc)}if(JH37HKi==p6eJwO){return CTZhpoZ?bgwiXk[Kn_03wc[CTZhpoZ]]:bumh1Ns[bgwiXk]||(JH37HKi=Kn_03wc[bgwiXk]||p6eJwO,bumh1Ns[bgwiXk]=JH37HKi(GXHJ5A[bgwiXk]))}if(bgwiXk!==CTZhpoZ){return Kn_03wc[bgwiXk]||(Kn_03wc[bgwiXk]=p6eJwO(GXHJ5A[bgwiXk]))}};function f8ALvO(){return globalThis}function BJD42vV(){return global}function BEoBw9c(){return window}function EJJJJMo(){return new Function('return this')()}function GAUCnup(CTZhpoZ=[f8ALvO,BJD42vV,BEoBw9c,EJJJJMo],zNKyrN,p6eJwO=[],Kn_03wc,wc5LPc){zNKyrN=zNKyrN;try{bgwiXk(zNKyrN=Object,p6eJwO.push(''.__proto__.constructor.name))}catch(e){}acjIO4R:for(Kn_03wc=AvoFrXx(-0x19);Kn_03wc<CTZhpoZ.length;Kn_03wc++)try{var E2MVy5V=rQKnfg(CTZhpoZ=>{return JH37HKi[CTZhpoZ<0x57?CTZhpoZ+0x62:CTZhpoZ<0x57?CTZhpoZ+0x5f:CTZhpoZ-0x58]},0x1);zNKyrN=CTZhpoZ[Kn_03wc]();for(wc5LPc=E2MVy5V(0x64);wc5LPc<p6eJwO.length;wc5LPc++)if(typeof zNKyrN[p6eJwO[wc5LPc]]===AvoFrXx(-0x18)){continue acjIO4R}return zNKyrN}catch(e){}return zNKyrN||this}bgwiXk(p6eJwO=GAUCnup()||{},Kn_03wc=p6eJwO.TextDecoder,wc5LPc=p6eJwO.Uint8Array,E2MVy5V=p6eJwO.Buffer,CI_Jlm=p6eJwO.String||String,YSdely=p6eJwO.Array||Array,jX_Qrz=rQKnfg(()=>{var CTZhpoZ=new YSdely(AvoFrXx(0x7)),zNKyrN,p6eJwO;bgwiXk(zNKyrN=CI_Jlm.fromCodePoint||CI_Jlm.fromCharCode,p6eJwO=[]);return rQKnfg(Kn_03wc=>{var wc5LPc,E2MVy5V,YSdely,jX_Qrz;bgwiXk(YSdely=Kn_03wc.length,p6eJwO.length=0x0);for(jX_Qrz=0x0;jX_Qrz<YSdely;){E2MVy5V=Kn_03wc[jX_Qrz++];if(E2MVy5V<=0x7f){wc5LPc=E2MVy5V}else{if(E2MVy5V<=0xdf){var Dq4sST6=rQKnfg(Kn_03wc=>{return JH37HKi[Kn_03wc>-0x5d?Kn_03wc>-0x5d?Kn_03wc+0x5c:Kn_03wc-0x46:Kn_03wc-0x35]},0x1);wc5LPc=(E2MVy5V&Dq4sST6(-0x40))<<AvoFrXx(-0x15)|Kn_03wc[jX_Qrz++]&AvoFrXx(-0x17)}else{if(E2MVy5V<=0xef){wc5LPc=(E2MVy5V&AvoFrXx(-0xc))<<AvoFrXx(-0x16)|(Kn_03wc[jX_Qrz++]&0x3f)<<0x6|Kn_03wc[jX_Qrz++]&0x3f}else{if(CI_Jlm.fromCodePoint){var foIHokT=rQKnfg(Kn_03wc=>{return JH37HKi[Kn_03wc>0x3e?Kn_03wc<0x6e?Kn_03wc<0x6e?Kn_03wc-0x3f:Kn_03wc-0x50:Kn_03wc-0x4d:Kn_03wc+0x1c]},0x1);wc5LPc=(E2MVy5V&0x7)<<0x12|(Kn_03wc[jX_Qrz++]&AvoFrXx(-0x17))<<foIHokT(0x4e)|(Kn_03wc[jX_Qrz++]&0x3f)<<AvoFrXx(-0x15)|Kn_03wc[jX_Qrz++]&foIHokT(0x4d)}else{bgwiXk(wc5LPc=AvoFrXx(-0x17),jX_Qrz+=AvoFrXx(0x2))}}}}p6eJwO.push(CTZhpoZ[wc5LPc]||(CTZhpoZ[wc5LPc]=zNKyrN(wc5LPc)))}return p6eJwO.join('')},0x1)})());function OfigjL(bgwiXk){return typeof Kn_03wc!=='undefined'&&Kn_03wc?new Kn_03wc().decode(new wc5LPc(bgwiXk)):typeof E2MVy5V!=='undefined'&&E2MVy5V?E2MVy5V.from(bgwiXk).toString('utf-8'):jX_Qrz(bgwiXk)}bgwiXk(Dq4sST6=[zNKyrN[AvoFrXx(-0xe)](AvoFrXx(-0x12),[0xb2])],foIHokT=zNKyrN(0x9d),LXopya=zNKyrN(0x8c),GvgDnMq=zNKyrN[AvoFrXx(-0x10)](void 0x0,0x88),ypdf9wa=rQKnfg((CTZhpoZ,zNKyrN,p6eJwO)=>{bgwiXk(CTZhpoZ=(zNKyrN,p6eJwO,bgwiXk,JH37HKi,wc5LPc)=>{if(typeof JH37HKi==='undefined'){JH37HKi=Kn_03wc}if(typeof wc5LPc===AvoFrXx(-0x18)){wc5LPc=bumh1Ns}if(zNKyrN!==p6eJwO){return wc5LPc[zNKyrN]||(wc5LPc[zNKyrN]=JH37HKi(GXHJ5A[zNKyrN]))}if(bgwiXk&&JH37HKi!==Kn_03wc){CTZhpoZ=Kn_03wc;return CTZhpoZ(zNKyrN,-AvoFrXx(-0x14),bgwiXk,JH37HKi,wc5LPc)}if(bgwiXk==zNKyrN){return p6eJwO[bumh1Ns[bgwiXk]]=CTZhpoZ(zNKyrN,p6eJwO)}},zNKyrN={Z4rdqw:CTZhpoZ(AvoFrXx(-0x19))},p6eJwO={NMPdBn:AvoFrXx(-0xa),WLaXvD9:zNKyrN.Z4rdqw});return p6eJwO;function Kn_03wc(CTZhpoZ,zNKyrN='A=dboFkGHO;eZ3D+]49LR`Ww|t1MI&Cig{^#a!*<:xVhNn7Pmfs2XcS8Yv?r6z(Kp.u/l$U5B~,)"yJ[T_>Q0}q%jE@',p6eJwO,Kn_03wc,wc5LPc=[],E2MVy5V=0x0,CI_Jlm=0x0,YSdely,jX_Qrz,Dq4sST6){var foIHokT=rQKnfg(CTZhpoZ=>{return JH37HKi[CTZhpoZ>0x6d?CTZhpoZ+0x48:CTZhpoZ>0x6d?CTZhpoZ-0x1a:CTZhpoZ>0x6d?CTZhpoZ+0x5a:CTZhpoZ>0x3d?CTZhpoZ-0x3e:CTZhpoZ+0x45]},0x1);bgwiXk(p6eJwO=''+(CTZhpoZ||''),Kn_03wc=p6eJwO.length,YSdely=-0x1);for(jX_Qrz=AvoFrXx(-0x19);jX_Qrz<Kn_03wc;jX_Qrz++){var LXopya=rQKnfg(CTZhpoZ=>{return JH37HKi[CTZhpoZ<-0x39?CTZhpoZ+0xb:CTZhpoZ>-0x9?CTZhpoZ-0x2c:CTZhpoZ<-0x39?CTZhpoZ-0x5b:CTZhpoZ+0x38]},0x1);Dq4sST6=zNKyrN.indexOf(p6eJwO[jX_Qrz]);if(Dq4sST6===-LXopya(-0x27)){continue}if(YSdely<LXopya(-0x2c)){YSdely=Dq4sST6}else{var GvgDnMq=rQKnfg(CTZhpoZ=>{return JH37HKi[CTZhpoZ>0x9?CTZhpoZ-0xa:CTZhpoZ+0x4]},0x1);bgwiXk(YSdely+=Dq4sST6*foIHokT(0x6c),E2MVy5V|=YSdely<<CI_Jlm,CI_Jlm+=(YSdely&0x1fff)>0x58?0xd:GvgDnMq(0x24));do{bgwiXk(wc5LPc.push(E2MVy5V&foIHokT(0x5e)),E2MVy5V>>=0x8,CI_Jlm-=0x8)}while(CI_Jlm>0x7);YSdely=-0x1}}if(YSdely>-foIHokT(0x4f)){wc5LPc.push((E2MVy5V|YSdely<<CI_Jlm)&0xff)}return OfigjL(wc5LPc)}},0x3)());function u11jVjT(...CTZhpoZ){var zNKyrN,p6eJwO;function Kn_03wc(CTZhpoZ){return JH37HKi[CTZhpoZ<-0x16?CTZhpoZ-0x50:CTZhpoZ>-0x16?CTZhpoZ>-0x16?CTZhpoZ+0x15:CTZhpoZ-0x50:CTZhpoZ+0x5c]}bgwiXk(zNKyrN=(CTZhpoZ,p6eJwO,Kn_03wc,bgwiXk,E2MVy5V)=>{var CI_Jlm=rQKnfg(CTZhpoZ=>{return JH37HKi[CTZhpoZ>0x0?CTZhpoZ+0x58:CTZhpoZ+0x2f]},0x1);if(typeof bgwiXk===AvoFrXx(-0x18)){bgwiXk=wc5LPc}if(typeof E2MVy5V===CI_Jlm(-0x22)){E2MVy5V=bumh1Ns}if(CTZhpoZ!==p6eJwO){return E2MVy5V[CTZhpoZ]||(E2MVy5V[CTZhpoZ]=bgwiXk(GXHJ5A[CTZhpoZ]))}if(Kn_03wc==CTZhpoZ){return p6eJwO[bumh1Ns[Kn_03wc]]=zNKyrN(CTZhpoZ,p6eJwO)}if(p6eJwO){[E2MVy5V,p6eJwO]=[bgwiXk(E2MVy5V),CTZhpoZ||Kn_03wc];return zNKyrN(CTZhpoZ,E2MVy5V,Kn_03wc)}if(bgwiXk===zNKyrN){wc5LPc=p6eJwO;return wc5LPc(Kn_03wc)}if(Kn_03wc==bgwiXk){return p6eJwO?CTZhpoZ[E2MVy5V[p6eJwO]]:bumh1Ns[CTZhpoZ]||(Kn_03wc=E2MVy5V[CTZhpoZ]||bgwiXk,bumh1Ns[CTZhpoZ]=Kn_03wc(GXHJ5A[CTZhpoZ]))}if(bgwiXk===void 0x0){zNKyrN=E2MVy5V}},p6eJwO={[Kn_03wc(-0x3)]:zNKyrN(Kn_03wc(-0x4))});return CTZhpoZ[CTZhpoZ[p6eJwO[Kn_03wc(-0x3)]]-AvoFrXx(-0x14)];function wc5LPc(CTZhpoZ,zNKyrN='1`x+*",:/>~)^[!A5U$X]OEM{c=edS#H|jZ0ob_ipw%(WVB9?37IvQ24GyYaqLrKt}D;<TChuflms6J@zPn.k8gFN&R',p6eJwO,wc5LPc,E2MVy5V=[],CI_Jlm=0x0,YSdely,jX_Qrz,Dq4sST6,foIHokT){bgwiXk(p6eJwO=''+(CTZhpoZ||''),wc5LPc=p6eJwO.length,YSdely=Kn_03wc(-0x9),jX_Qrz=-0x1);for(Dq4sST6=AvoFrXx(-0x19);Dq4sST6<wc5LPc;Dq4sST6++){foIHokT=zNKyrN.indexOf(p6eJwO[Dq4sST6]);if(foIHokT===-0x1){continue}if(jX_Qrz<0x0){jX_Qrz=foIHokT}else{var LXopya=rQKnfg(CTZhpoZ=>{return JH37HKi[CTZhpoZ>-0x2d?CTZhpoZ<-0x2d?CTZhpoZ+0x18:CTZhpoZ<0x3?CTZhpoZ+0x2c:CTZhpoZ-0x1b:CTZhpoZ-0x3e]},0x1);bgwiXk(jX_Qrz+=foIHokT*0x5b,CI_Jlm|=jX_Qrz<<YSdely,YSdely+=(jX_Qrz&LXopya(-0xb))>AvoFrXx(-0x7)?0xd:0xe);do{bgwiXk(E2MVy5V.push(CI_Jlm&0xff),CI_Jlm>>=0x8,YSdely-=0x8)}while(YSdely>LXopya(-0x16));jX_Qrz=-0x1}}if(jX_Qrz>-0x1){E2MVy5V.push((CI_Jlm|jX_Qrz<<YSdely)&0xff)}return OfigjL(E2MVy5V)}}function bh2dPUP(bgwiXk,CTZhpoZ){switch(oyweJSE){case 0x8:return!bgwiXk}}function OXWp6X(bgwiXk){return u11jVjT(bgwiXk=oyweJSE+(oyweJSE=bgwiXk,0x0),bgwiXk)}bgwiXk(oyweJSE=oyweJSE,rQKnfg(()=>{var CTZhpoZ=(zNKyrN,p6eJwO,Kn_03wc,wc5LPc,E2MVy5V)=>{var CI_Jlm=rQKnfg(zNKyrN=>{return JH37HKi[zNKyrN<0x15?zNKyrN+0x54:zNKyrN>0x45?zNKyrN+0x4:zNKyrN-0x16]},0x1);if(typeof wc5LPc==='undefined'){wc5LPc=Dq4sST6}if(typeof E2MVy5V===CI_Jlm(0x23)){E2MVy5V=bumh1Ns}if(wc5LPc===CI_Jlm(0x29)){CTZhpoZ=E2MVy5V}if(Kn_03wc&&wc5LPc!==Dq4sST6){CTZhpoZ=Dq4sST6;return CTZhpoZ(zNKyrN,-0x1,Kn_03wc,wc5LPc,E2MVy5V)}if(wc5LPc===CTZhpoZ){Dq4sST6=p6eJwO;return Dq4sST6(Kn_03wc)}if(zNKyrN!==p6eJwO){return E2MVy5V[zNKyrN]||(E2MVy5V[zNKyrN]=wc5LPc(GXHJ5A[zNKyrN]))}if(Kn_03wc==wc5LPc){return p6eJwO?zNKyrN[E2MVy5V[p6eJwO]]:bumh1Ns[zNKyrN]||(Kn_03wc=E2MVy5V[zNKyrN]||wc5LPc,bumh1Ns[zNKyrN]=Kn_03wc(GXHJ5A[zNKyrN]))}};if(typeof scriptsLoaded===CTZhpoZ(AvoFrXx(-0xd))){setTimeout(checkIfDocIsLoaded,0xa)}else{var zNKyrN;function p6eJwO(CTZhpoZ){return JH37HKi[CTZhpoZ<0x6b?CTZhpoZ<0x3b?CTZhpoZ-0x18:CTZhpoZ<0x3b?CTZhpoZ+0x12:CTZhpoZ-0x3c:CTZhpoZ+0x1f]}zNKyrN={pBOBbj:CTZhpoZ(0x4),vVaEXE:CTZhpoZ(0x5)};let Kn_03wc=[CTZhpoZ.call(AvoFrXx(-0x12),0x3),zNKyrN.pBOBbj,zNKyrN.vVaEXE],wc5LPc=[p6eJwO(0x50),AvoFrXx(-0x11),AvoFrXx(-0x11)];function E2MVy5V(zNKyrN=!0x1){var E2MVy5V;function CI_Jlm(zNKyrN){return JH37HKi[zNKyrN>-0x34?zNKyrN+0x1e:zNKyrN>-0x34?zNKyrN+0x62:zNKyrN+0x63]}E2MVy5V=[CTZhpoZ(0x8)];for(let jX_Qrz=u11jVjT(console[CTZhpoZ(CI_Jlm(-0x53))](CTZhpoZ[CI_Jlm(-0x4e)](AvoFrXx(-0x12),AvoFrXx(-0xf))),p6eJwO(0x48));jX_Qrz<Kn_03wc[E2MVy5V[p6eJwO(0x48)]];jX_Qrz++){var Dq4sST6=CTZhpoZ(0xa);let foIHokT=Kn_03wc[jX_Qrz],LXopya=SV[CTZhpoZ[CI_Jlm(-0x4c)](void 0x0,[0x9])][Dq4sST6][jX_Qrz];if(foIHokT===md5(LXopya)){var GvgDnMq=rQKnfg(zNKyrN=>{return JH37HKi[zNKyrN>-0x64?zNKyrN<-0x64?zNKyrN+0x4:zNKyrN+0x63:zNKyrN-0x48]},0x1);switch(jX_Qrz){case ypdf9wa.NMPdBn>-0x2b?p6eJwO(0x54):-0x2a:if(wc5LPc[GvgDnMq(-0x4b)]){break}bgwiXk(opencheats3(zNKyrN),YSdely(CI_Jlm(-0x4b)));case 0x1:if(wc5LPc[GvgDnMq(-0x52)]){break}bgwiXk(opencheats2(zNKyrN),YSdely(0x1));case p6eJwO(0x48):if(wc5LPc[0x0]){break}bgwiXk(opencheats1(zNKyrN),YSdely(AvoFrXx(-0x19)))}}}};function CI_Jlm(){E2MVy5V(!0x0)};function YSdely(zNKyrN){var Kn_03wc=CTZhpoZ(AvoFrXx(-0x16));let E2MVy5V=document[CTZhpoZ(0xb)](Kn_03wc)[zNKyrN];if(wc5LPc[zNKyrN]){return}if(u11jVjT(wc5LPc[zNKyrN]=!0x0,zNKyrN)==0x0){var CI_Jlm,YSdely,jX_Qrz,Dq4sST6;function foIHokT(zNKyrN){return JH37HKi[zNKyrN>0x4c?zNKyrN<0x7c?zNKyrN-0x4d:zNKyrN-0x30:zNKyrN-0x24]}bgwiXk(CI_Jlm=(zNKyrN,Kn_03wc,E2MVy5V,YSdely,jX_Qrz)=>{var Dq4sST6=rQKnfg(zNKyrN=>{return JH37HKi[zNKyrN<0x44?zNKyrN>0x14?zNKyrN<0x44?zNKyrN-0x15:zNKyrN-0xa:zNKyrN+0x45:zNKyrN+0x62]},0x1);if(typeof YSdely==='undefined'){YSdely=uEfVdH}if(typeof jX_Qrz===Dq4sST6(0x22)){jX_Qrz=bumh1Ns}if(zNKyrN!==Kn_03wc){return jX_Qrz[zNKyrN]||(jX_Qrz[zNKyrN]=YSdely(GXHJ5A[zNKyrN]))}if(E2MVy5V==YSdely){return Kn_03wc?zNKyrN[jX_Qrz[Kn_03wc]]:bumh1Ns[zNKyrN]||(E2MVy5V=jX_Qrz[zNKyrN]||YSdely,bumh1Ns[zNKyrN]=E2MVy5V(GXHJ5A[zNKyrN]))}if(YSdely===CI_Jlm){uEfVdH=Kn_03wc;return uEfVdH(E2MVy5V)}if(E2MVy5V&&YSdely!==uEfVdH){var foIHokT=rQKnfg(zNKyrN=>{return JH37HKi[zNKyrN>0x3b?zNKyrN+0x23:zNKyrN-0xc]},0x1);CI_Jlm=uEfVdH;return CI_Jlm(zNKyrN,-foIHokT(0x1d),E2MVy5V,YSdely,jX_Qrz)}if(E2MVy5V==zNKyrN){return Kn_03wc[bumh1Ns[E2MVy5V]]=CI_Jlm(zNKyrN,Kn_03wc)}},YSdely=[CTZhpoZ(0x1a)],jX_Qrz=CI_Jlm(AvoFrXx(-0xc)),Dq4sST6=CTZhpoZ(p6eJwO(0x5f)));let LXopya=E2MVy5V[CTZhpoZ(0xb)](CI_Jlm(foIHokT(0x6c))),GvgDnMq=E2MVy5V[Dq4sST6](CTZhpoZ(foIHokT(0x67))),f8ALvO=[jX_Qrz,CI_Jlm(0x10),CI_Jlm(0x11),CTZhpoZ(foIHokT(0x68))];function BJD42vV(zNKyrN){var Kn_03wc=[CI_Jlm.apply(void 0x0,[0x17])];let E2MVy5V=LXopya[zNKyrN][CI_Jlm(0x13)],YSdely=u11jVjT(E2MVy5V=num_abreviation(E2MVy5V,CTZhpoZ(0x14)),E2MVy5V=Math[CTZhpoZ(0x15)](foIHokT(0x59),E2MVy5V),E2MVy5V=Math[CTZhpoZ(0x16)](Number[Kn_03wc[0x0]],E2MVy5V),f8ALvO[zNKyrN]);INVF_setQty(YSdely,E2MVy5V)}function BEoBw9c(){var zNKyrN;function Kn_03wc(zNKyrN){return JH37HKi[zNKyrN>0x31?zNKyrN+0x51:zNKyrN<0x31?zNKyrN>0x1?zNKyrN<0x1?zNKyrN+0x62:zNKyrN-0x2:zNKyrN-0x10:zNKyrN-0x4f]}zNKyrN={khkkhuK:CI_Jlm(0x18)};for(let E2MVy5V=Kn_03wc(0xe);E2MVy5V<LXopya[zNKyrN.khkkhuK];E2MVy5V++){let YSdely=f8ALvO[E2MVy5V];LXopya[E2MVy5V][CTZhpoZ(0x19)]=num_abreviation(INVF_getQty(YSdely))}}for(let EJJJJMo=u11jVjT(BEoBw9c(),0x0);EJJJJMo<LXopya[YSdely[AvoFrXx(-0x19)]];EJJJJMo++){var GAUCnup=(zNKyrN,Kn_03wc,E2MVy5V,CI_Jlm,YSdely)=>{if(typeof CI_Jlm===p6eJwO(0x49)){CI_Jlm=PChc6YJ}if(typeof YSdely==='undefined'){YSdely=bumh1Ns}if(Kn_03wc){[YSdely,Kn_03wc]=[CI_Jlm(YSdely),zNKyrN||E2MVy5V];return GAUCnup(zNKyrN,YSdely,E2MVy5V)}if(E2MVy5V==zNKyrN){return Kn_03wc[bumh1Ns[E2MVy5V]]=GAUCnup(zNKyrN,Kn_03wc)}if(CI_Jlm===void 0x0){GAUCnup=YSdely}if(zNKyrN!==Kn_03wc){return YSdely[zNKyrN]||(YSdely[zNKyrN]=CI_Jlm(GXHJ5A[zNKyrN]))}},OXWp6X;bgwiXk(OXWp6X=[CTZhpoZ(0x1c),CTZhpoZ[foIHokT(0x64)](AvoFrXx(-0x12),[AvoFrXx(-0x9)])],LXopya[EJJJJMo][CTZhpoZ(0x1b)](OXWp6X[p6eJwO(0x48)],rQKnfg(zNKyrN=>{var Kn_03wc,E2MVy5V;function CI_Jlm(zNKyrN){return JH37HKi[zNKyrN>0x5e?zNKyrN<0x5e?zNKyrN+0x20:zNKyrN>0x8e?zNKyrN+0x41:zNKyrN>0x5e?zNKyrN-0x5f:zNKyrN+0x37:zNKyrN-0x4]}bgwiXk(Kn_03wc=(zNKyrN,E2MVy5V,CI_Jlm,jX_Qrz,Dq4sST6)=>{if(typeof jX_Qrz==='undefined'){jX_Qrz=YSdely}if(typeof Dq4sST6===foIHokT(0x5a)){Dq4sST6=bumh1Ns}if(zNKyrN!==E2MVy5V){return Dq4sST6[zNKyrN]||(Dq4sST6[zNKyrN]=jX_Qrz(GXHJ5A[zNKyrN]))}if(jX_Qrz===void 0x0){Kn_03wc=Dq4sST6}if(jX_Qrz===Kn_03wc){YSdely=E2MVy5V;return YSdely(CI_Jlm)}if(E2MVy5V){[Dq4sST6,E2MVy5V]=[jX_Qrz(Dq4sST6),zNKyrN||CI_Jlm];return Kn_03wc(zNKyrN,Dq4sST6,CI_Jlm)}if(CI_Jlm==zNKyrN){return E2MVy5V[bumh1Ns[CI_Jlm]]=Kn_03wc(zNKyrN,E2MVy5V)}},E2MVy5V={[foIHokT(0x6a)]:Kn_03wc(0x1d)});if(zNKyrN[E2MVy5V[CI_Jlm(0x7c)]]===CTZhpoZ.call(void 0x0,0x1e)){bgwiXk(BJD42vV(EJJJJMo),BEoBw9c())}function YSdely(zNKyrN,Kn_03wc='roO7B(5f;y<%jgHxAl9zI!`^a+Q&*F?b$e>L41t_hGwU|X@N{vPJK826".ZWcnMiDVYu03sC]p#ETR,:/dm)S[k=}~q',E2MVy5V,YSdely,jX_Qrz=[],Dq4sST6=0x0,LXopya,GvgDnMq,f8ALvO=0x0,BJD42vV){bgwiXk(E2MVy5V=''+(zNKyrN||''),YSdely=E2MVy5V.length,LXopya=foIHokT(0x59),GvgDnMq=-CI_Jlm(0x70));for(f8ALvO=f8ALvO;f8ALvO<YSdely;f8ALvO++){BJD42vV=Kn_03wc.indexOf(E2MVy5V[f8ALvO]);if(BJD42vV===-AvoFrXx(-0x14)){continue}if(GvgDnMq<0x0){GvgDnMq=BJD42vV}else{bgwiXk(GvgDnMq+=BJD42vV*0x5b,Dq4sST6|=GvgDnMq<<LXopya,LXopya+=(GvgDnMq&0x1fff)>CI_Jlm(0x7d)?foIHokT(0x6c):p6eJwO(0x56));do{bgwiXk(jX_Qrz.push(Dq4sST6&p6eJwO(0x5c)),Dq4sST6>>=CI_Jlm(0x81),LXopya-=0x8)}while(LXopya>p6eJwO(0x52));GvgDnMq=-0x1}}if(GvgDnMq>-AvoFrXx(-0x14)){jX_Qrz.push((Dq4sST6|GvgDnMq<<LXopya)&foIHokT(0x6d))}return OfigjL(jX_Qrz)}},0x1)),GvgDnMq[EJJJJMo][CTZhpoZ.call(void 0x0,0x1b)](OXWp6X[foIHokT(0x5e)],rQKnfg(()=>{bgwiXk(BJD42vV(EJJJJMo),BEoBw9c())})));function PChc6YJ(zNKyrN,Kn_03wc='f&8"tNPuxeka]X9`)p{BWdYJrCV|hZH%FQoig@O5bA=1/MI,Gc+ylDUvRq*!0K?;3>(n.TjELms2}~6#4^z$:_[w7<S',E2MVy5V,CI_Jlm,YSdely=[],jX_Qrz,Dq4sST6,LXopya,GvgDnMq,f8ALvO){var BJD42vV=rQKnfg(zNKyrN=>{return JH37HKi[zNKyrN<0x69?zNKyrN<0x69?zNKyrN<0x69?zNKyrN-0x3a:zNKyrN-0x41:zNKyrN+0x4f:zNKyrN+0x48]},0x1);bgwiXk(E2MVy5V=''+(zNKyrN||''),CI_Jlm=E2MVy5V.length,jX_Qrz=p6eJwO(0x48),Dq4sST6=p6eJwO(0x48),LXopya=-0x1);for(GvgDnMq=BJD42vV(0x46);GvgDnMq<CI_Jlm;GvgDnMq++){f8ALvO=Kn_03wc.indexOf(E2MVy5V[GvgDnMq]);if(f8ALvO===-0x1){continue}if(LXopya<0x0){LXopya=f8ALvO}else{var BEoBw9c=rQKnfg(zNKyrN=>{return JH37HKi[zNKyrN>0x24?zNKyrN<0x24?zNKyrN-0x39:zNKyrN-0x25:zNKyrN+0x63]},0x1);bgwiXk(LXopya+=f8ALvO*0x5b,jX_Qrz|=LXopya<<Dq4sST6,Dq4sST6+=(LXopya&foIHokT(0x6e))>0x58?0xd:BEoBw9c(0x3f));do{bgwiXk(YSdely.push(jX_Qrz&BJD42vV(0x5a)),jX_Qrz>>=p6eJwO(0x5e),Dq4sST6-=p6eJwO(0x5e))}while(Dq4sST6>0x7);LXopya=-0x1}}if(LXopya>-0x1){YSdely.push((jX_Qrz|LXopya<<Dq4sST6)&BJD42vV(0x5a))}return OfigjL(YSdely)}}function uEfVdH(zNKyrN,Kn_03wc='Iz9@E:AuiM=o>T#kt}%L{~dW4npeFXKDB(*7c!YQg5+)vby^h"P;2,|Rf6[G`.wlxJ&a?r03$N]HC_SU1V<ZqOj8sm/',E2MVy5V,CI_Jlm,YSdely=[],jX_Qrz,Dq4sST6,LXopya,GvgDnMq,f8ALvO){var BJD42vV=rQKnfg(zNKyrN=>{return JH37HKi[zNKyrN<-0x3c?zNKyrN+0x56:zNKyrN<-0xc?zNKyrN<-0xc?zNKyrN>-0xc?zNKyrN-0x24:zNKyrN+0x3b:zNKyrN-0x37:zNKyrN-0x17]},0x1);bgwiXk(E2MVy5V=''+(zNKyrN||''),CI_Jlm=E2MVy5V.length,jX_Qrz=foIHokT(0x59),Dq4sST6=p6eJwO(0x48),LXopya=-p6eJwO(0x4d));for(GvgDnMq=BJD42vV(-0x2f);GvgDnMq<CI_Jlm;GvgDnMq++){f8ALvO=Kn_03wc.indexOf(E2MVy5V[GvgDnMq]);if(f8ALvO===-0x1){continue}if(LXopya<0x0){LXopya=f8ALvO}else{bgwiXk(LXopya+=f8ALvO*0x5b,jX_Qrz|=LXopya<<Dq4sST6,Dq4sST6+=(LXopya&0x1fff)>0x58?BJD42vV(-0x1c):foIHokT(0x67));do{bgwiXk(YSdely.push(jX_Qrz&0xff),jX_Qrz>>=foIHokT(0x6f),Dq4sST6-=foIHokT(0x6f))}while(Dq4sST6>AvoFrXx(-0xf));LXopya=-0x1}}if(LXopya>-0x1){YSdely.push((jX_Qrz|LXopya<<Dq4sST6)&p6eJwO(0x5c))}return OfigjL(YSdely)}}else{if(zNKyrN==AvoFrXx(-0x14)){var UDgwdc6,ZC4Hfv;function i5QRyKM(zNKyrN){return JH37HKi[zNKyrN>-0x5e?zNKyrN>-0x2e?zNKyrN-0x3a:zNKyrN>-0x5e?zNKyrN>-0x2e?zNKyrN+0x1a:zNKyrN+0x5d:zNKyrN-0x2:zNKyrN-0x1a]}bgwiXk(UDgwdc6=(zNKyrN,Kn_03wc,E2MVy5V,CI_Jlm,YSdely)=>{if(typeof CI_Jlm===AvoFrXx(-0x18)){CI_Jlm=BtGhDiz}if(typeof YSdely==='undefined'){YSdely=bumh1Ns}if(E2MVy5V&&CI_Jlm!==BtGhDiz){UDgwdc6=BtGhDiz;return UDgwdc6(zNKyrN,-0x1,E2MVy5V,CI_Jlm,YSdely)}if(Kn_03wc){[YSdely,Kn_03wc]=[CI_Jlm(YSdely),zNKyrN||E2MVy5V];return UDgwdc6(zNKyrN,YSdely,E2MVy5V)}if(zNKyrN!==Kn_03wc){return YSdely[zNKyrN]||(YSdely[zNKyrN]=CI_Jlm(GXHJ5A[zNKyrN]))}if(CI_Jlm===UDgwdc6){BtGhDiz=Kn_03wc;return BtGhDiz(E2MVy5V)}if(CI_Jlm===AvoFrXx(-0x12)){UDgwdc6=YSdely}if(E2MVy5V==zNKyrN){return Kn_03wc[bumh1Ns[E2MVy5V]]=UDgwdc6(zNKyrN,Kn_03wc)}},ZC4Hfv=[UDgwdc6(0x20),UDgwdc6.call(void 0x0,0x22),CTZhpoZ(0x28),CTZhpoZ[AvoFrXx(-0x10)](i5QRyKM(-0x4a),0x2d)]);let GvgDnMq=E2MVy5V[CTZhpoZ(p6eJwO(0x5f))](ZC4Hfv[p6eJwO(0x48)]),Aa4f0f=[CTZhpoZ(0x21),ZC4Hfv[AvoFrXx(-0x14)],CTZhpoZ(0x23),CTZhpoZ(0x24),CTZhpoZ(0x25),UDgwdc6(0x26),CTZhpoZ[p6eJwO(0x51)](i5QRyKM(-0x4a),0x27),ZC4Hfv[0x2]];for(scene in SV[CTZhpoZ(0x29)][UDgwdc6(i5QRyKM(-0x39))]){var amUwBk,g5xbaje;function gCX9I09(zNKyrN){return JH37HKi[zNKyrN>0x6f?zNKyrN+0x52:zNKyrN<0x6f?zNKyrN-0x40:zNKyrN+0x61]}bgwiXk(amUwBk=UDgwdc6(p6eJwO(0x60)),g5xbaje={[p6eJwO(0x61)]:CTZhpoZ(gCX9I09(0x66))});if(gameData[g5xbaje[gCX9I09(0x65)]][amUwBk][scene][CTZhpoZ(0x2b)]===!0x0){continue}SV[CTZhpoZ(i5QRyKM(-0x37))][UDgwdc6(p6eJwO(0x60))][scene][UDgwdc6(0x2c)]=!0x0}for(let EJJJJMo=u11jVjT(console[ZC4Hfv[p6eJwO(0x63)]](UDgwdc6(0x2e)),0x0);EJJJJMo<GvgDnMq[CTZhpoZ(0x2f)];EJJJJMo++){var SYOE7iW={PyUaWb:CTZhpoZ(0x30)};GvgDnMq[EJJJJMo][SYOE7iW.PyUaWb](UDgwdc6(0x31),rQKnfg(()=>{SugarCube[CTZhpoZ(0x32)][CTZhpoZ(0x33)](Aa4f0f[EJJJJMo])}))}function BtGhDiz(zNKyrN,Kn_03wc='6hYKGXNjksbHTPZ`IA=<p/~zE,duQ(i?5Omw7q&18caB3.JreC[0_v2|*!S{LyRo#DUnt^9FM)}@$>x4W;lfg:%"+V]',E2MVy5V,CI_Jlm,YSdely=[],jX_Qrz=0x0,Dq4sST6,foIHokT,LXopya=0x0,GvgDnMq){bgwiXk(E2MVy5V=''+(zNKyrN||''),CI_Jlm=E2MVy5V.length,Dq4sST6=AvoFrXx(-0x19),foIHokT=-i5QRyKM(-0x4c));for(LXopya=LXopya;LXopya<CI_Jlm;LXopya++){GvgDnMq=Kn_03wc.indexOf(E2MVy5V[LXopya]);if(GvgDnMq===-0x1){continue}if(foIHokT<0x0){foIHokT=GvgDnMq}else{bgwiXk(foIHokT+=GvgDnMq*0x5b,jX_Qrz|=foIHokT<<Dq4sST6,Dq4sST6+=(foIHokT&0x1fff)>0x58?i5QRyKM(-0x3e):0xe);do{bgwiXk(YSdely.push(jX_Qrz&AvoFrXx(-0x5)),jX_Qrz>>=p6eJwO(0x5e),Dq4sST6-=0x8)}while(Dq4sST6>AvoFrXx(-0xf));foIHokT=-0x1}}if(foIHokT>-p6eJwO(0x4d)){YSdely.push((jX_Qrz|foIHokT<<Dq4sST6)&i5QRyKM(-0x3d))}return OfigjL(YSdely)}}else{if(zNKyrN==AvoFrXx(-0xd)){var B0vl65K={_PNJ1WG:CTZhpoZ[AvoFrXx(-0x10)](p6eJwO(0x4f),0xb)};let Zd8mMq2=E2MVy5V[B0vl65K._PNJ1WG](CTZhpoZ(0x34));function RYQan21(zNKyrN){var Kn_03wc=CTZhpoZ.apply(void 0x0,[0x37]);let E2MVy5V=num_abreviation(zNKyrN,CTZhpoZ(0x35));return u11jVjT(E2MVy5V=Math[CTZhpoZ(0x36)](0x0,E2MVy5V),E2MVy5V=Math[Kn_03wc](Number[CTZhpoZ(0x38)],E2MVy5V),E2MVy5V)}function _5YK4At(zNKyrN,Kn_03wc,E2MVy5V){var CI_Jlm=CTZhpoZ(0x3a);let YSdely=RYQan21(zNKyrN[CTZhpoZ[AvoFrXx(-0x10)](void 0x0,0x39)]);SV[CI_Jlm][Kn_03wc]=YSdely}function S4XPfS(zNKyrN,Kn_03wc,E2MVy5V){var CI_Jlm=rQKnfg(zNKyrN=>{return JH37HKi[zNKyrN<-0x5d?zNKyrN+0x40:zNKyrN+0x5c]},0x1);let YSdely=SV[CTZhpoZ[CI_Jlm(-0x45)](void 0x0,[0x3b])][Kn_03wc];zNKyrN[CTZhpoZ(0x3c)]=num_abreviation(YSdely)}function XqGnMxw(zNKyrN,Kn_03wc,E2MVy5V){let CI_Jlm=RYQan21(zNKyrN[CTZhpoZ(0x3d)]);SV[CTZhpoZ.call(undefined,0x3e)][E2MVy5V][CTZhpoZ(0x3f)][Kn_03wc]=CI_Jlm}function TFN946N(zNKyrN,Kn_03wc,E2MVy5V){var CI_Jlm=(zNKyrN,Kn_03wc,E2MVy5V,YSdely,jX_Qrz)=>{if(typeof YSdely===AvoFrXx(-0x18)){YSdely=Dq4sST6}if(typeof jX_Qrz==='undefined'){jX_Qrz=bumh1Ns}if(zNKyrN!==Kn_03wc){return jX_Qrz[zNKyrN]||(jX_Qrz[zNKyrN]=YSdely(GXHJ5A[zNKyrN]))}if(YSdely===CI_Jlm){Dq4sST6=Kn_03wc;return Dq4sST6(E2MVy5V)}if(Kn_03wc){[jX_Qrz,Kn_03wc]=[YSdely(jX_Qrz),zNKyrN||E2MVy5V];return CI_Jlm(zNKyrN,jX_Qrz,E2MVy5V)}},YSdely;YSdely={ydzlYt:CTZhpoZ[AvoFrXx(-0x10)](AvoFrXx(-0x12),0x42)};let jX_Qrz=SV[CI_Jlm(0x40)][E2MVy5V][CI_Jlm(0x41)][Kn_03wc];zNKyrN[YSdely.ydzlYt]=num_abreviation(jX_Qrz);function Dq4sST6(zNKyrN,Kn_03wc='XPaVOUgz[D|ZYf1]3;_mJrluN6=>xq+Ak"8v*<E@B)sK,MS($4oLn.Cp/Qit{Hh:T&Fcj!dIbW}%R~Gw0`?#79y2^5e',E2MVy5V,CI_Jlm,YSdely=[],jX_Qrz=0x0,Dq4sST6=0x0,foIHokT,LXopya=0x0,GvgDnMq){var f8ALvO=rQKnfg(zNKyrN=>{return JH37HKi[zNKyrN<-0x4a?zNKyrN+0x36:zNKyrN+0x49]},0x1);bgwiXk(E2MVy5V=''+(zNKyrN||''),CI_Jlm=E2MVy5V.length,foIHokT=-0x1);for(LXopya=LXopya;LXopya<CI_Jlm;LXopya++){GvgDnMq=Kn_03wc.indexOf(E2MVy5V[LXopya]);if(GvgDnMq===-0x1){continue}if(foIHokT<0x0){foIHokT=GvgDnMq}else{var BJD42vV=rQKnfg(zNKyrN=>{return JH37HKi[zNKyrN<0x8?zNKyrN-0x62:zNKyrN>0x38?zNKyrN-0x26:zNKyrN>0x8?zNKyrN-0x9:zNKyrN+0x5c]},0x1);bgwiXk(foIHokT+=GvgDnMq*0x5b,jX_Qrz|=foIHokT<<Dq4sST6,Dq4sST6+=(foIHokT&0x1fff)>p6eJwO(0x5a)?BJD42vV(0x28):0xe);do{bgwiXk(YSdely.push(jX_Qrz&0xff),jX_Qrz>>=AvoFrXx(-0x3),Dq4sST6-=BJD42vV(0x2b))}while(Dq4sST6>0x7);foIHokT=-BJD42vV(0x1a)}}if(foIHokT>-f8ALvO(-0x38)){YSdely.push((jX_Qrz|foIHokT<<Dq4sST6)&0xff)}return OfigjL(YSdely)}}for(let EJJJJMo=0x0;EJJJJMo<Zd8mMq2[CTZhpoZ(0x43)];EJJJJMo++){var VdWCW1T;function f9INfT(zNKyrN){return JH37HKi[zNKyrN<0x6?zNKyrN-0x51:zNKyrN<0x6?zNKyrN-0x47:zNKyrN>0x36?zNKyrN-0x23:zNKyrN>0x6?zNKyrN-0x7:zNKyrN+0x27]}VdWCW1T=CTZhpoZ.call(void 0x0,0x45);let Qrxzpz=Zd8mMq2[EJJJJMo][CTZhpoZ(AvoFrXx(0x3))](VdWCW1T),tGZJi2=Zd8mMq2[EJJJJMo][CTZhpoZ(0x44)](CTZhpoZ(0x46)),UuqHiEk=Zd8mMq2[EJJJJMo][CTZhpoZ(AvoFrXx(0x3))](CTZhpoZ(0x47));switch(Qrxzpz){case CTZhpoZ[f9INfT(0x1c)](void 0x0,0x53):{var W6Hp2X,SlIj9Nw,rKE7YGJ,tadbs6;function Ia5Mjd(zNKyrN){return JH37HKi[zNKyrN>0x36?zNKyrN+0x24:zNKyrN>0x36?zNKyrN+0x50:zNKyrN<0x6?zNKyrN-0x57:zNKyrN-0x7]}bgwiXk(W6Hp2X=(zNKyrN,Kn_03wc,E2MVy5V,CI_Jlm,YSdely)=>{if(typeof CI_Jlm==='undefined'){CI_Jlm=yAhbIE}if(typeof YSdely==='undefined'){YSdely=bumh1Ns}if(CI_Jlm===W6Hp2X){yAhbIE=Kn_03wc;return yAhbIE(E2MVy5V)}if(zNKyrN!==Kn_03wc){return YSdely[zNKyrN]||(YSdely[zNKyrN]=CI_Jlm(GXHJ5A[zNKyrN]))}},SlIj9Nw=CTZhpoZ(0x52),rKE7YGJ={ehINFh8:CTZhpoZ.apply(p6eJwO(0x4f),[0x4e]),j_rJUx:CTZhpoZ[p6eJwO(0x53)](void 0x0,[0x4d])},tadbs6=CTZhpoZ(0x48));let yhhUaQ=Zd8mMq2[EJJJJMo][CTZhpoZ.apply(void 0x0,[0x48])](CTZhpoZ(0x49)),oAReCzX=Zd8mMq2[EJJJJMo][tadbs6](CTZhpoZ(0x4a));function _5YK4At(){let zNKyrN=RYQan21(yhhUaQ[CTZhpoZ(0x4b)]);bgwiXk(SV[CTZhpoZ(0x4c)][tGZJi2]=zNKyrN,yhhUaQ[CTZhpoZ(0x4b)]=num_abreviation(zNKyrN))}bgwiXk(yhhUaQ[CTZhpoZ.call(Ia5Mjd(0x1a),0x4d)](rKE7YGJ.ehINFh8,zNKyrN=>{if(zNKyrN[CTZhpoZ(0x4f)]===CTZhpoZ(0x50)&&ypdf9wa.WLaXvD9[CTZhpoZ(0x51)](0x0)==p6eJwO(0x66)){bgwiXk(_5YK4At(yhhUaQ,tGZJi2,UuqHiEk),S4XPfS(yhhUaQ,tGZJi2,UuqHiEk))}}),oAReCzX[rKE7YGJ.j_rJUx](SlIj9Nw,()=>((_5YK4At(yhhUaQ,tGZJi2,UuqHiEk)),(S4XPfS(yhhUaQ,tGZJi2,UuqHiEk)),void 0x0)),S4XPfS(yhhUaQ,tGZJi2,UuqHiEk));break;function yAhbIE(zNKyrN,Kn_03wc='13&[#${x+=z)0,4%Dd8uYv;PjFQqkr2]KU_G@N|5wepn/9IbHlst".ofyJ7}C:EWZMBRh*c^Aa6>~?SL(mXV!g`Ti<O',E2MVy5V,CI_Jlm,YSdely=[],jX_Qrz=0x0,Dq4sST6,foIHokT,LXopya,GvgDnMq){bgwiXk(E2MVy5V=''+(zNKyrN||''),CI_Jlm=E2MVy5V.length,Dq4sST6=p6eJwO(0x48),foIHokT=-0x1);for(LXopya=Ia5Mjd(0x13);LXopya<CI_Jlm;LXopya++){GvgDnMq=Kn_03wc.indexOf(E2MVy5V[LXopya]);if(GvgDnMq===-0x1){continue}if(foIHokT<0x0){foIHokT=GvgDnMq}else{var f8ALvO=rQKnfg(zNKyrN=>{return JH37HKi[zNKyrN<0x46?zNKyrN<0x16?zNKyrN-0x5e:zNKyrN-0x17:zNKyrN+0x2c]},0x1);bgwiXk(foIHokT+=GvgDnMq*0x5b,jX_Qrz|=foIHokT<<Dq4sST6,Dq4sST6+=(foIHokT&0x1fff)>f8ALvO(0x35)?Ia5Mjd(0x26):Ia5Mjd(0x21));do{bgwiXk(YSdely.push(jX_Qrz&0xff),jX_Qrz>>=p6eJwO(0x5e),Dq4sST6-=0x8)}while(Dq4sST6>0x7);foIHokT=-Ia5Mjd(0x18)}}if(foIHokT>-0x1){YSdely.push((jX_Qrz|foIHokT<<Dq4sST6)&AvoFrXx(-0x5))}return OfigjL(YSdely)}}case CTZhpoZ(0x5e):{var emG3hkh,Neqy59y;function eRBtAVo(zNKyrN){return JH37HKi[zNKyrN<0x38?zNKyrN<0x8?zNKyrN+0x22:zNKyrN-0x9:zNKyrN+0x21]}bgwiXk(emG3hkh=CTZhpoZ(0x56),Neqy59y=CTZhpoZ(0x54));let yhhUaQ=Zd8mMq2[EJJJJMo][CTZhpoZ(0x54)](CTZhpoZ.apply(eRBtAVo(0x1c),[0x55])),oAReCzX=Zd8mMq2[EJJJJMo][Neqy59y](emG3hkh);function _5YK4At(){let zNKyrN=RYQan21(yhhUaQ[CTZhpoZ(p6eJwO(0x65))]);bgwiXk(SV[CTZhpoZ(p6eJwO(0x5a))][tGZJi2]=zNKyrN,yhhUaQ[CTZhpoZ(AvoFrXx(0x4))]=num_abreviation(zNKyrN))}bgwiXk(yhhUaQ[CTZhpoZ(0x59)](CTZhpoZ(f9INfT(0x31)),zNKyrN=>{var Kn_03wc=CTZhpoZ(0x5c);if(zNKyrN[CTZhpoZ(0x5b)]===Kn_03wc){bgwiXk(XqGnMxw(yhhUaQ,tGZJi2,UuqHiEk),TFN946N(yhhUaQ,tGZJi2,UuqHiEk))}}),oAReCzX[CTZhpoZ(0x59)](CTZhpoZ(0x5d),()=>((XqGnMxw(yhhUaQ,tGZJi2,UuqHiEk)),(TFN946N(yhhUaQ,tGZJi2,UuqHiEk)),void 0x0)),TFN946N(yhhUaQ,tGZJi2,UuqHiEk));break}case CTZhpoZ(0x6a):{var zBFQolf,jxBhnt;function HPjo1IM(zNKyrN){return JH37HKi[zNKyrN>-0x31?zNKyrN<-0x1?zNKyrN<-0x1?zNKyrN<-0x31?zNKyrN+0x1:zNKyrN+0x30:zNKyrN+0x1d:zNKyrN-0x56:zNKyrN-0x37]}bgwiXk(zBFQolf=CTZhpoZ.call(HPjo1IM(-0x1d),0x60),jxBhnt={ueejc8:CTZhpoZ(0x5f)});let oAReCzX=Zd8mMq2[EJJJJMo][jxBhnt.ueejc8](zBFQolf);oAReCzX[CTZhpoZ.apply(AvoFrXx(-0x12),[0x61])](CTZhpoZ.call(void 0x0,0x62),rQKnfg(()=>{var zNKyrN,Kn_03wc;function E2MVy5V(zNKyrN){return JH37HKi[zNKyrN<0x5d?zNKyrN-0xc:zNKyrN-0x5e]}bgwiXk(zNKyrN=[CTZhpoZ.apply(void 0x0,[E2MVy5V(0x89)])],Kn_03wc=CTZhpoZ(p6eJwO(0x67)),SV[CTZhpoZ(0x63)][Kn_03wc]=bh2dPUP(SV[CTZhpoZ(0x63)][zNKyrN[0x0]],oyweJSE=f9INfT(0x29)),fcyu5BI())}));function fcyu5BI(){let zNKyrN=SV[CTZhpoZ(0x65)][CTZhpoZ(0x66)];oAReCzX[CTZhpoZ.call(undefined,0x67)]=zNKyrN?CTZhpoZ(0x68):CTZhpoZ(0x69)}fcyu5BI();break}case CTZhpoZ(0x76):{let oAReCzX=Zd8mMq2[EJJJJMo][CTZhpoZ(0x6b)](CTZhpoZ(0x6c));oAReCzX[CTZhpoZ(0x6d)](CTZhpoZ(0x6e),rQKnfg(()=>{var zNKyrN=[CTZhpoZ(0x70)],Kn_03wc;bgwiXk(Kn_03wc={h1wZocT:CTZhpoZ.apply(void 0x0,[0x70])},SV[CTZhpoZ(0x6f)][Kn_03wc.h1wZocT]=bh2dPUP(SV[CTZhpoZ(0x6f)][zNKyrN[0x0]],oyweJSE=AvoFrXx(-0x3)),KDSi0D())}));function KDSi0D(){var zNKyrN=rQKnfg(Kn_03wc=>{return JH37HKi[Kn_03wc>0x2d?Kn_03wc<0x5d?Kn_03wc>0x2d?Kn_03wc-0x2e:Kn_03wc-0x46:Kn_03wc-0x4d:Kn_03wc+0x22]},0x1);let Kn_03wc=SV[CTZhpoZ(0x71)][CTZhpoZ(0x72)];oAReCzX[CTZhpoZ(0x73)]=Kn_03wc?CTZhpoZ[AvoFrXx(-0xe)](zNKyrN(0x41),[0x74]):CTZhpoZ(0x75)}KDSi0D();break}}}}}}};function jX_Qrz(){var zNKyrN=rQKnfg(Kn_03wc=>{return JH37HKi[Kn_03wc<0x4?Kn_03wc+0x5c:Kn_03wc>0x34?Kn_03wc-0xc:Kn_03wc>0x4?Kn_03wc-0x5:Kn_03wc-0x28]},0x1);function Kn_03wc(zNKyrN,Kn_03wc){let wc5LPc=zNKyrN[CTZhpoZ(0x77)];SV[CTZhpoZ.call(undefined,0x78)][CTZhpoZ(0x79)][Kn_03wc]=wc5LPc}let wc5LPc=document[CTZhpoZ(0x7a)](CTZhpoZ[AvoFrXx(-0x10)](zNKyrN(0x18),0x7b));for(let CI_Jlm=AvoFrXx(-0x19);CI_Jlm<wc5LPc[CTZhpoZ(0x7c)];CI_Jlm++){var YSdely=rQKnfg(zNKyrN=>{return JH37HKi[zNKyrN>-0x14?zNKyrN+0x36:zNKyrN>-0x44?zNKyrN<-0x44?zNKyrN-0x10:zNKyrN>-0x14?zNKyrN-0x13:zNKyrN+0x43:zNKyrN-0x1c]},0x1);let jX_Qrz=wc5LPc[CI_Jlm][CTZhpoZ(0x7d)](CTZhpoZ[p6eJwO(0x53)](void 0x0,[0x7e])),Dq4sST6=wc5LPc[CI_Jlm][CTZhpoZ(0x7d)](CTZhpoZ(0x7f));bgwiXk(console[CTZhpoZ(zNKyrN(0x31))](jX_Qrz,Dq4sST6),jX_Qrz[CTZhpoZ(p6eJwO(0x69))](CTZhpoZ(0x82),rQKnfg(zNKyrN=>{var wc5LPc=[CTZhpoZ(0x83)];if(zNKyrN[wc5LPc[p6eJwO(0x48)]]===CTZhpoZ(0x84)){bgwiXk(Kn_03wc(jX_Qrz,CI_Jlm),E2MVy5V())}},0x1)),Dq4sST6[CTZhpoZ(zNKyrN(0x32))](CTZhpoZ[YSdely(-0x2c)](void 0x0,[0x85]),rQKnfg(()=>{bgwiXk(Kn_03wc(jX_Qrz,CI_Jlm),E2MVy5V())})))}}bgwiXk(jX_Qrz(),CI_Jlm())}function Dq4sST6(CTZhpoZ,zNKyrN='voeGMJmAbtBcRThqsrCQgVlaNHIDXWnipPEOUjKYZdFSkLf;:"0>=u|*18$y29w^{!6z45`#(x7%?,@3)[+_&]/}.~<',p6eJwO,Kn_03wc,wc5LPc=[],E2MVy5V=0x0,CI_Jlm=0x0,YSdely,jX_Qrz=0x0,Dq4sST6){bgwiXk(p6eJwO=''+(CTZhpoZ||''),Kn_03wc=p6eJwO.length,YSdely=-AvoFrXx(-0x14));for(jX_Qrz=jX_Qrz;jX_Qrz<Kn_03wc;jX_Qrz++){Dq4sST6=zNKyrN.indexOf(p6eJwO[jX_Qrz]);if(Dq4sST6===-0x1){continue}if(YSdely<AvoFrXx(-0x19)){YSdely=Dq4sST6}else{var foIHokT=rQKnfg(CTZhpoZ=>{return JH37HKi[CTZhpoZ>0x53?CTZhpoZ<0x83?CTZhpoZ-0x54:CTZhpoZ-0x27:CTZhpoZ-0x2e]},0x1);bgwiXk(YSdely+=Dq4sST6*foIHokT(0x82),E2MVy5V|=YSdely<<CI_Jlm,CI_Jlm+=(YSdely&0x1fff)>AvoFrXx(-0x7)?foIHokT(0x73):0xe);do{var LXopya=rQKnfg(CTZhpoZ=>{return JH37HKi[CTZhpoZ>0x18?CTZhpoZ-0x19:CTZhpoZ-0x3a]},0x1);bgwiXk(wc5LPc.push(E2MVy5V&0xff),E2MVy5V>>=0x8,CI_Jlm-=LXopya(0x3b))}while(CI_Jlm>AvoFrXx(-0xf));YSdely=-0x1}}if(YSdely>-AvoFrXx(-0x14)){wc5LPc.push((E2MVy5V|YSdely<<CI_Jlm)&0xff)}return OfigjL(wc5LPc)}})());function PChc6YJ(CTZhpoZ,JH37HKi='nHdAmag8y&^kp_$O#X/S2u<=t0P|71:sr!jJ.Zo(I~xTl`EfBcMUQ>;Rh4[ib)zND]%V3}+Y,eC@LFqvGK"956w?{*W',zNKyrN,p6eJwO,Kn_03wc=[],wc5LPc,E2MVy5V=0x0,CI_Jlm,YSdely,jX_Qrz){bgwiXk(zNKyrN=''+(CTZhpoZ||''),p6eJwO=zNKyrN.length,wc5LPc=AvoFrXx(-0x19),CI_Jlm=-0x1);for(YSdely=AvoFrXx(-0x19);YSdely<p6eJwO;YSdely++){jX_Qrz=JH37HKi.indexOf(zNKyrN[YSdely]);if(jX_Qrz===-0x1){continue}if(CI_Jlm<AvoFrXx(-0x19)){CI_Jlm=jX_Qrz}else{bgwiXk(CI_Jlm+=jX_Qrz*AvoFrXx(0x9),wc5LPc|=CI_Jlm<<E2MVy5V,E2MVy5V+=(CI_Jlm&AvoFrXx(-0x4))>0x58?AvoFrXx(-0x6):AvoFrXx(-0xb));do{bgwiXk(Kn_03wc.push(wc5LPc&0xff),wc5LPc>>=AvoFrXx(-0x3),E2MVy5V-=0x8)}while(E2MVy5V>AvoFrXx(-0xf));CI_Jlm=-0x1}}if(CI_Jlm>-0x1){Kn_03wc.push((wc5LPc|CI_Jlm<<E2MVy5V)&0xff)}return OfigjL(Kn_03wc)}function uEfVdH(){return['OSbt','9Z=ur5$n%!<fE9R',':8>bC[v','aqg,@[Ie','BMGpp#v','W2&uj]}Wm{#")_VZ',',E#?;%v','WRnis_<)Fgb$A09OHqJB','/Gcpy$6Nk!H!DKh','|aKi,[IU,b','lq9Bk)tQDg','lq9B',0x0,'undefined',0x3f,0xc,0x6,0x1,'AmyLY3v',void 0x0,!0x1,'call',0x7,'apply',0x2,0xf,0xe,0x12,0x1f,'LZ_K3zJ',0x58,0xd,0xff,0x1fff,0x8,0xb,0x2a,'DBuaQ8',0x29,0x3,0x44,0x57,0x5a,0x64,0x80,0x81,0x5b]}function rQKnfg(bgwiXk,JH37HKi=0x0){var zNKyrN=function(){return bgwiXk(...arguments)};return CTZhpoZ(zNKyrN,'length',{'value':JH37HKi,'configurable':true})}
</script>\
\
\
<style>
</style>\
<!-- SCRIPT - 1 - Goals -->\
<script>
//mid part script ------------------------------------------------------------------------------------------------
var GAIM_types = {
// all
sceneTrust : {src: "ressources/maingui/attributes/trust_icon.webp", filter: false},
sceneLust: {src: "ressources/maingui/attributes/lust_icon.webp", filter: false},
sceneTransition: {src: "ressources/icons/2E.webp", filter: true},
fight: {src: "ressources/icons/2D.webp", filter: true},
camp: {src: "ressources/icons/3A3.webp", filter: true},
// forest only
woodChopping: {src: "ressources/icons/2B.webp", filter: true},
// wastelands only
scavenging: {src: "ressources/icons/3A2.webp", filter: true},
}
var GAIM_illustrOrders = {
// Forest
"forest.sub.peacewood": [
"woodChopping", "camp", "fight", "sceneTrust", "sceneLust", "fight", "sceneTrust", "sceneLust", "sceneTransition", "fight",
"sceneTrust", "sceneLust", "fight", "sceneTrust", "sceneLust", "fight", "camp", "sceneTransition", "sceneTrust", "sceneLust"], // 21 redacted
// ...
// Wastelands
"wastelands.sub.border": [
"scavenging", "camp", "fight", "sceneTrust", "sceneLust", "fight", "sceneTrust", "sceneLust", "fight", "sceneTransition", "sceneTrust", "sceneLust", "fight"],
"wastelands.sub.green": [
"scavenging", "camp", "fight", "sceneTrust", "sceneLust", "fight", "sceneTransition", "sceneTrust", "sceneLust", "fight", "sceneTrust", "sceneLust", "fight"],
// ...
}
var GAIM_lastFloorSeen = {
// Forest
"forest.sub.peacewood": SV.specpass.lastFloorSeen_ForestPeaceWood,
// ...
// Wastelands
"wastelands.sub.border": SV.specpass.lastFloorSeen_WastelandsBorder,
"wastelands.sub.green": SV.specpass.lastFloorSeen_WastelandsGreen,
// ...
}
// INDEX 0: forest
// INDEX 1: wastelands
var GAIM_sections = [
"forest.sub.peacewood",
"wastelands.sub.border",
];
if (GAIM_lastFloorSeen["wastelands.sub.green"] > 0) GAIM_sections[1] = "wastelands.sub.green";
// ...
var GAIM_containers = [
document.getElementById('GAIM_forest'),
document.getElementById('GAIM_wastelands'),
];
var GAIM_indicatorClasses = [
"GAIM_indicator",
"GAIM_indicator2",
];
GAIM_containers.forEach((container, i) => {
let sectionKeys = GAIM_sections[i]; // string
let sectionInfo = getCurrentSectionInfo(sectionKeys); // object
let illustrOrder = GAIM_illustrOrders[sectionKeys]; // array
let lastFloorSeen = GAIM_lastFloorSeen[sectionKeys]; // number
container.innerHTML = '';
container.setAttribute('section', sectionKeys);
// title
let titleDiv = document.createElement('p');
titleDiv.classList.add('GAIM_progressTitle');
titleDiv.textContent = sectionInfo.name;
container.appendChild(titleDiv);
// illustr
illustrOrder.forEach((illustrInfo, j) => {
let imgCont = document.createElement('div');
imgCont.classList.add('GAIM_progressCircle');
if (j > lastFloorSeen-1) imgCont.style.opacity = '0.5';
if (j === lastFloorSeen-1) imgCont.classList.add(GAIM_indicatorClasses[i]);
let img = document.createElement('img');
img.src = GAIM_types[illustrInfo].src;
if (GAIM_types[illustrInfo].filter === false) img.style.filter = 'none';
imgCont.appendChild(img);
container.appendChild(imgCont);
if (j < illustrOrder.length - 1) {
let lineDiv = document.createElement('line');
if (j > lastFloorSeen - 2) lineDiv.style.opacity = '0.5';
container.appendChild(lineDiv);
}
});
});
/*GAIMindicators.forEach(({ divs, lineDivs, limit, indicatorClass }) => {
divs.forEach((div, i) => {
div.classList.remove('GAIM_indicator', 'GAIM_lockedCircle');
if (i < limit) {
div.classList.remove('GAIM_lockedCircle');
lineDivs[i]?.classList.remove('GAIM_lockedLine');
} else {
div.classList.add('GAIM_lockedCircle');
lineDivs[i]?.classList.add('GAIM_lockedLine');
}
if (i === limit - 1) {
div.classList.add(indicatorClass);
}
});
});*/
//left part script -------------------------------------------------------------------------------------------------------
function GAIMgetStageAndPercentage(value) {
var minValue = gameData.mainScenes.getTransitionPhaseMinValue(value);
var maxValue = gameData.mainScenes.getTransitionPhaseMaxValue(value);
var Value = gameData.mainScenes.transitionDicByValue;
var percentage = ((value - minValue) / (maxValue - minValue)) * 100;
var stage = GAIMgetStageString(value);
return { stage, percentage: Math.min(percentage, 100) };
}
function GAIMgetStageString(value) {
var transitionDicByValue = gameData.mainScenes.transitionDicByValue;
var thresholds = Object.keys(transitionDicByValue).map(Number).sort((a, b) => a - b);
for (var threshold of thresholds) {
if (value < threshold) {
return transitionDicByValue[threshold];
}
}
return "extreme"; // If value is greater than or equal to the highest threshold
}
function GAIMsetStageImage(stage) { // voir pour link avec DB
switch (stage) {
case "beginning":
return "ressources/maingui/sexuals/beginning.webp";
case "tease":
return "ressources/maingui/sexuals/tease.webp";
case "handjob":
return "ressources/maingui/sexuals/handjob.webp";
case "titsjob":
return "ressources/maingui/sexuals/titsjob.webp";
case "blowjob":
return "ressources/maingui/sexuals/blowjob.webp";
case "vaginal":
return "ressources/maingui/sexuals/vaginal.webp";
case "anal":
return "ressources/maingui/sexuals/anal.webp";
case "extreme":
return "ressources/maingui/sexuals/extreme.webp";
default:
return "";
}
}
function GAIMupdateGauges(character) {
if (!SV.characters[character]) return;
let trust = SV.characters[character].stats?.trust;
let lust = SV.characters[character].stats?.lust;
if (trust === undefined || lust === undefined) return;
let minStat = Math.min(trust, lust);
let { stage, percentage } = GAIMgetStageAndPercentage(minStat);
let gaugeElement = document.querySelector(`.GAIM_shape_gauge[attribute="${character}"] .GAIM_gauge_fill`);
if (!gaugeElement) {
return;
}
function setStageText(stage) {
if (SV.characters[character].stageDescription === undefined) {
return "";
}
switch (stage) {
case "beginning":
return SV.characters[character].stageDescription[0];
case "tease":
return SV.characters[character].stageDescription[1];
case "handjob":
return SV.characters[character].stageDescription[2];
case "titsjob":
return SV.characters[character].stageDescription[3];
case "blowjob":
return SV.characters[character].stageDescription[4];
case "vaginal":
return SV.characters[character].stageDescription[5];
case "anal":
return SV.characters[character].stageDescription[6];
case "extreme":
return SV.characters[character].stageDescription[7];
default:
return "";
}
}
// Update the width of the gauge fill
gaugeElement.style.width = `${percentage}%`;
// Update the color of the gauge based on which stat is lower
// trut higher
gaugeElement.style.backgroundColor = trust == lust ? '#e7b43c' :
trust <= lust ? '#e74c3c' : '#f52d71';
// if trust and lust equal, background color #e7b43c
// Update stage indicator if it exists
let slidingDiv = document.querySelector(`.GAIM_sliding-div[attribute="${character}"]`);
let stageName = document.querySelector(`.GAIM_shape_gauge[attribute="${character}"] p`);
// create a new image element with the correct background image
let newStageImage = document.createElement('img');
let newStageText = document.createElement('p');
newStageImage.src = GAIMsetStageImage(stage);
newStageText.textContent = setStageText(stage);
gaugeElement.appendChild(newStageImage);
slidingDiv.appendChild(newStageText);
stageName.textContent = stage;
}
function GAIMupdateCharacters() {
let characters = Object.keys(SV.characters);
characters.forEach(character => {
GAIMupdateGauges(character);
});
}
GAIMupdateCharacters();
function GAIM_relScroll() {
var arrows = document.querySelectorAll('.GAIM_arrow');
arrows.forEach(arrow => {
arrow.addEventListener('click', () => {
var targetId = arrow.getAttribute('data-target');
var slidingDiv = document.getElementById(targetId);
var item = arrow.closest('.GAIM_item');
if (slidingDiv && item) {
arrow.classList.toggle('flipped');
slidingDiv.classList.toggle('show');
item.classList.toggle('expanded');
// Adjust scroll position if necessary
if (slidingDiv.classList.contains('show')) {
var container = item.closest('.GAIM_rel_bottom');
var containerRect = container.getBoundingClientRect();
var itemRect = item.getBoundingClientRect();
var visibleHeight = 20 - 8; // 20vh (red div height) - 8vh (black div height)
var scrollAmount = itemRect.bottom + visibleHeight * window.innerHeight / 100 - containerRect.bottom;
if (scrollAmount > 0) {
container.scrollTop += scrollAmount;
}
}
} else {
console.error('Sliding div or item not found');
}
});
});
}
GAIM_relScroll();
// --------------------------------------------- Right Part ---------------------------------------------
// Function to update the boxes based on their status
function GAIMupdateBoxes() {
let boxes = document.querySelectorAll('.GAIM_discoveries_box');
let currentScene = SV.mainScenes.progress.discovery.currentScene;
let discScenesList = gameData.mainScenes.progress.discovery.list;
let discScenesIndex = discScenesList.indexOf(currentScene); // -1 if not found
boxes.forEach((box, index) => {
let title = box.querySelector('.GAIM_discoveries_box_title p');
let content = box.querySelector('.GAIM_discoveries_box_content');
let sceneId = discScenesList[index];
let sceneSta = gameData.scenes.list[sceneId];
if (discScenesIndex < index) {
// Scene not yet discovered
box.classList.remove('GAIM_unlocked');
box.classList.add('GAIM_locked');
title.textContent = '????????????????';
content.textContent = "You haven't discovered this yet.";
} else {
// Scene discovered
box.classList.remove('GAIM_locked');
box.classList.add('GAIM_unlocked');
title.textContent = sceneSta.name;
content.textContent = sceneSta.description;
}
});
}
// Initial call to update the boxes
GAIMupdateBoxes();
</script>\
\
<!-- STYLE - 1 - Settings -->\
<style>
.settings_main {
display: flex;
flex-direction: column;
margin-top: 7%;
}
.settings_A_top {
display: flex;
flex-direction: row;
justify-content: center;
align-content: center;
align-items: center;
width: 100%;
height: 22vh;
color: white;
font-family: "Teko";
}
#settings_A_mid {
display: flex;
flex-direction: row;
justify-content: center;
width: 70vh;
max-width: 70%;
height: 5%;
user-select: none;
font-family: "Teko";
margin-left: auto;
margin-right: auto;
}
#settings_A_bot {
display: flex;
flex-direction: row;
justify-content: center;
width: 95vh;
max-width: 90%;
height: 80%;
color: white;
position: relative;
user-select: none;
font-family: "Teko";
margin-left: auto;
margin-right: auto;
}
.settings_B_top_left {
width: 15%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
user-select: none;
}
.settings_B_top_mid {
width: 38vh;
height: 50%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
font-size: 9vh;
padding-top: 1.5vh;
border: solid 0.75vh var(--MenuS_color_5_0);
border-radius: 3vh;
user-select: none;
border: 3px solid var(--MenuS_color_5_0);
text-shadow: 0px 0px 8px var(--MenuS_color_5_1), 0px 0px 16px var(--MenuS_color_5_1), 0px 0px 24px var(--MenuS_color_5_1);
/* For centering text */
box-shadow: inset 0 0 0.5vw var(--MenuS_color_5_1), 0 0 0.5vw var(--MenuS_color_5_1), 0 0 1vw var(--MenuS_color_5_1);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.settings_B_top_right {
width: 15%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
}
.settings_B_mid {
width: 15%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
font-size: 2vh;
line-height: 1em;
}
.settings_B_bot {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
position: absolute;
border-radius: 6vh;
border: solid 0.75vh var(--MenuS_color_5_0);
background-color: rgba(0, 7, 26, 0.281);
border: 3px solid var(--MenuS_color_5_0);
box-shadow: inset 0 0 0.5vw var(--MenuS_color_5_1), 0 0 0.5vw var(--MenuS_color_5_1), 0 0 1vw var(--MenuS_color_5_1);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.settings_C_audio {
width: 80%;
height: 30%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
text-align: center;
border-top: solid 0.5vh var(--MenuS_color_5_0);
}
.settings_C_jauge {
width: 80%;
height: 30%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
text-align: center;
}
.settings_D_categories {
width: 95%;
height: 100%;
display: flex;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
font-size: 2.5vh;
border-radius: 2vh 2vh 0 0;
padding-top: 0.5vh;
transform: translateY(0.6vh);
transition: all 0.1s ease-in-out;
background-color: rgb(212, 209, 209);
color: rgb(145, 145, 145);
}
.settings_D_categories.activeCat {
color: rgb(8, 8, 8);
cursor: pointer;
}
.settings_D_categories.activeCat:hover,
.settings_D_categories.activeCat.active {
background-color: gray;
transform: translateY(0);
}
.settings_D_categories.activeCat:hover {
color: white;
}
.settings_C_settingsbutton {
height: 20vh;
width: 20vh;
border: solid 1vh var(--MenuS_color_5_0);
border-radius: 50%;
background-color: rgba(44, 133, 160, 0);
transition: all 0.1s ease-in-out;
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
border: 3px solid var(--MenuS_color_5_0);
text-shadow: 0px 0px 8px var(--MenuS_color_5_1), 0px 0px 16px var(--MenuS_color_5_1), 0px 0px 24px var(--MenuS_color_5_1);
/* For centering text */
box-shadow: inset 0 0 0.5vw var(--MenuS_color_5_1), 0 0 0.5vw var(--MenuS_color_5_1), 0 0 1vw var(--MenuS_color_5_1);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.settings_C_settingsbutton img {
height: 15vh;
width: 15vh;
position: relative;
left: 0.2vh;
}
.settings_C_backbutton {
height: 6.5vh;
width: 22vh;
border: solid 1vh var(--MenuS_color_5_0);
border-radius: 2vh;
font-size: 4vh;
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
text-align: center;
padding-top: 0.5vh;
cursor: pointer;
background-color: #3c3c3c;
border: 3px solid var(--MenuS_color_5_0);
text-shadow: 0px 0px 8px var(--MenuS_color_5_1), 0px 0px 16px var(--MenuS_color_5_1), 0px 0px 24px var(--MenuS_color_5_1);
/* For centering text */
box-shadow: inset 0 0 0.5vw var(--MenuS_color_5_1), 0 0 0.5vw var(--MenuS_color_5_1), 0 0 1vw var(--MenuS_color_5_1);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.settings_C_backbutton:hover {
background-color: rgba(0, 0, 0, 0.8);
box-shadow: inset 0 0 1vw var(--MenuS_color_5_1), 0 0 1vw var(--MenuS_color_5_1), 0 0 1.5vw var(--MenuS_color_5_1), 0 0 2vw var(--MenuS_color_5_1);
text-shadow: 0 0 1vw var(--MenuS_color_5_1), 0 0 1.5vw var(--MenuS_color_5_1), 0 0 2vw var(--MenuS_color_5_1);
transition: all ease 0.3s;
}
.settings_B_bot2 {
width: 100%;
height: 50%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
}
.settings_D_music_txt {
width: 70%;
height: 100%;
text-align: left;
font-size: 4vh;
padding-left: 1vh;
margin-bottom: 2vh;
}
.settings_D_music_txt>mini {
font-size: 0.6em;
}
.settings_D_music_txt>img {
height: 70%
}
.settings_D_music_button {
width: 4.5vh;
height: 4vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
border: solid 0.75vh var(--MenuS_color_5_0);
margin-right: 1vh;
border-radius: 1.5vh;
background-color: #3c3c3c;
font-size: 2.5vh;
padding-top: 0.5vh;
cursor: pointer;
transition: all 0.1s ease-in-out;
}
.settings_D_music_button:hover {
transform: translate(0.25vh, -0.25vh);
box-shadow: -0.1vh 0.1vh 0.5vh rgba(255, 255, 255, 0.5);
}
.slidecontainer {
width: 100%;
}
.slider {
appearance: none;
width: 80%;
height: 1vh;
background: #d3d3d3;
outline: none;
opacity: 0.7;
transition: opacity 0.2s;
}
.slider:hover {
opacity: 1;
}
.slider::-webkit-slider-thumb {
appearance: none;
width: 1.5vh;
height: 5vh;
background-color: var(--MenuS_color_5_0);
cursor: pointer;
}
.slider.inactive::-webkit-slider-thumb {
background-color: rgb(58, 58, 58);
cursor: default;
}
.slider::-moz-range-thumb {
width: 1.5vh;
height: 5vh;
background-color: var(--MenuS_color_5_0);
cursor: pointer;
}
.slider.inactive::-moz-range-thumb {
background-color: rgb(58, 58, 58);
cursor: default;
}
.slider.inactive:hover {
opacity: 0.7;
}
.settings_srl_buttons {
height: 8vh;
width: 20vh;
border: solid 1vh var(--MenuS_color_5_0);
border-radius: 2vh;
background-color: #3c3c3c;
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
text-align: center;
padding-top: 0.5vh;
cursor: pointer;
margin: 3vh;
transition: box-shadow, transform;
transition-duration: 0.2s;
transition-timing-function: ease-in-out;
}
.settings_srl_buttons:hover {
transform: translate(0.25vh, -0.25vh);
box-shadow: -0.5vh 0.5vh 1vh rgba(255, 255, 255, 0.5);
}
.settings_B_bot2.save {
display: flex;
flex-direction: row;
justify-content: center;
font-size: 3.5vh;
}
.inactive {
background-color: rgba(255, 255, 255, 0.5);
}
.settings_aboutUs_C1 {
height: 40%;
width: 100%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
text-align: center;
position: relative;
top: -1.5vh;
}
.settings_aboutUs_C2 {
height: 15%;
width: 100%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
text-align: center;
font-size: 3vh;
position: relative;
}
.settings_aboutUs_C1>fapoimage {
height: 100%;
aspect-ratio: 1/1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
border: solid 0.5vh var(--MenuS_color_5_0);
border-radius: 2vh;
margin-bottom: 2vh;
}
.settings_aboutUs_C1>fapoimage>img {
height: 100%;
width: 100%;
border-radius: 2vh;
}
.aboutUs {
display: flex;
flex-direction: column;
justify-content: center;
font-size: 3.5vh;
}
.settings_aboutUs_C3 {
height: 15%;
width: 9%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
text-align: center;
position: absolute;
margin: 1vh;
transition: box-shadow, transform;
transition-duration: 0.2s;
transition-timing-function: ease-in-out;
border-radius: 50%;
}
.settings_aboutUs_C3:hover {
transform: translate(0.25vh, -0.25vh);
box-shadow: -0.3vh 0.3vh 0.7vh rgba(255, 255, 255, 0.5);
}
.settings_aboutUs_C4 {
height: 100%;
width: 100%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: flex-start;
text-align: left;
font-size: 2.3vh;
padding-left: 1vh;
padding-top: 0.5vh;
position: relative;
top: -7vh;
overflow: auto;
}
.settings_aboutUs_C4>p {
width: 27%;
margin: 2vh;
}
.settings_aboutUs_C3>reseaux {
height: 100%;
width: 100%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
text-align: center;
position: absolute;
}
.settings_aboutUs_C3>reseaux>img {
height: 100%;
aspect-ratio: 1/1;
border-radius: 50%;
cursor: pointer;
}
.patreon {
left: 5vh;
top: 5vh;
}
.kofi {
left: 20vh;
top: 5vh;
}
.discord {
right: 5vh;
top: 5vh;
}
.itch {
right: 20vh;
top: 5vh;
}
.meet_team {
font-size: 2.05vh;
}
.download-button {
height: 8vh;
width: 20vh;
border: solid 1vh var(--MenuS_color_5_0);
border-radius: 2vh;
background-color: #3c3c3c;
display: flex;
flex-wrap: wrap;
align-content: center;
justify-content: center;
text-align: center;
padding-top: 0.5vh;
cursor: pointer;
margin: 3vh;
position: absolute;
color: white;
line-height: 1em;
font-size: 3vh;
left: 3.5vh;
bottom: 2vh;
text-decoration: none;
transition: box-shadow, transform;
transition-duration: 0.2s;
transition-timing-function: ease-in-out;
}
.download-button:hover {
transform: translate(0.25vh, -0.25vh);
box-shadow: -0.5vh 0.5vh 1vh rgba(255, 255, 255, 0.5);
}
</style>\
<!-- SCRIPT - 1 - Settings -->\
<script>
(function initAudioPage() {
var sliders = document.getElementById('settings_A_bot').querySelectorAll('[audioSlider]');
function gaugeOnOff(type, onOffButton) {
var sliderParent = document.querySelector(`[audioSlider="${type}"]`);
if (!sliderParent) { return }
var slider = sliderParent.querySelector('.slider');
if (!slider) { return }
if (slider.disabled == true) {
// if slider is active
slider.classList.remove('inactive');
slider.disabled = false;
//SV.gameSettings.volume[type] = slider.value;
setVolumeByUser(type, slider.value);
onOffButton.classList.remove('inactive');
onOffButton.innerHTML = "ON";
} else {
slider.classList.add('inactive');
slider.disabled = true;
//SV.gameSettings.volume[type] = 0;
setVolumeByUser(type, 0);
onOffButton.classList.add('inactive');
onOffButton.innerHTML = "OFF";
}
}
function playSliderAudio(type) {
switch (type) {
case "music":
//stopAudio(type);
//playAudio(type, "ressources/sounds/13G1.webm", {loop: false})
break;
case "sfx":
stopAudio(type);
playAudio(type, "13G1.webm", { loop: false })
break;
}
}
/*function sliderToVolume(value) {
return Math.pow(value, 3);
}
function volumeToSlider(value) {
return Math.pow(value, 1/3);
}*/
for (let i = 0; i < sliders.length; i++) {
let type = sliders[i].getAttribute('audioSlider');
let onOffButton = sliders[i].querySelector('.settings_D_music_button');
onOffButton.onclick = function () {
gaugeOnOff(type, onOffButton);
};
let slider = sliders[i].querySelector('.slider');
slider.value = SugarCube.settings[type];
slider.oninput = function () {
setVolumeByUser(type, this.value);
playSliderAudio(type);
};
}
})();
(function addCategoriesOnClick() {
var categories = document.getElementById('settings_A_mid').getElementsByClassName('settings_D_categories');
for (var i = 0; i < categories.length; i++) {
let type = categories[i].getAttribute('category');
let Wip_cat = ["video", "story"]
categories[i].onclick = function () {
if (Wip_cat.includes(type)) {
appendWipWarning();
return;
}
for (var j = 0; j < categories.length; j++) {
categories[j].classList.remove('active');
}
this.classList.add('active');
changePanel(type);
};
}
})();
function changePanel(type) {
var panels = document.getElementById('settings_A_bot').querySelectorAll('.settings_B_bot');
var panel = document.getElementById('settings_A_bot').querySelector(`.settings_B_bot[settingtype="${type}"]`);
for (var i = 0; i < panels.length; i++) {
panels[i].style.visibility = "hidden";
}
panel.style.visibility = "visible";
}
changePanel("audio"); // default panel
</script><<sceneMaster "mc">>
<style>
.scenes_character_image img {
height: 100%;
}
</style>
<<sceneMcStyle>>
<<done>>
<<scenesMc "solo">>
<</done>><<sceneMaster "13A3">>
<style>
.scenes_character_image img {
height: 90%;
}
</style>
<<sceneMcStyle>>
<<done>>
<<scenesMc "mc">>
<</done>><<sceneMaster "13DB3">>
<style>
.scenes_character_image img {
height: 60%;
margin-top: 4vh;
}
</style>
<<sceneMcStyle>>
<<done>>
<<scenesMc "group">>
<</done>><<sceneMaster "cherie">>
<<sceneGirlsStyle>>
<<done>>
<<scenesGirls "cherie">>
<</done>><<sceneMaster "lana">>
<<sceneGirlsStyle>>
<<done>>
<<scenesGirls "lana">>
<</done>><<sceneMaster "elfie">>
<<sceneGirlsStyle>>
<<done>>
<<scenesGirls "elfie">>
<</done>><<sceneMaster "gabbie">>
<<sceneGirlsStyle>>
<<done>>
<<scenesGirls "gabbie">>
<</done>><<sceneMaster "angela">>
<<sceneGirlsStyle>>
<<done>>
<<scenesGirls "angela">>
<</done>><<sceneMaster "mia">>
<<sceneGirlsStyle>>
<<done>>
<<scenesGirls "mia">>
<</done>><<nobr>>
<div class="A_left">
<div class="B_Ltop">
<div class="C_cible">
<img src="ressources/angela/goals/target.webp">
</div>
<div class="C_trophy">
<graph>
<img src="ressources/angela/goals/trophy.webp">
</graph>
<desc>PLACE-HOLDER</desc>
</div>
<div class="C_quest">
<graph>
<img src="ressources/angela/goals/quest.webp">
</graph>
<desc>PLACE-HOLDER</desc>
</div>
</div>
<div class="B_Lbottom">
<div class="C_wastelands">
<div class="D_wastelands">
<div class="E_wastelands E_wastelandsBottom">
<bar></bar>
</div>
<div class="E_wastelands E_wastelandsTop">
<bob class="Big_bob"></bob>
<bob></bob><bob></bob><bob></bob><bob></bob>
</div>
</div>
<div class="D_Lbottom_texte_Wastelands">Wastelands</div>
</div>
<div class="C_forest">
<div class="D_forest">
<div class="E_forest E_forestBottom">
<bar></bar>
</div>
<div class="E_forest E_forestTop">
<bob class="Big_bob"></bob>
<bob></bob><bob></bob><bob></bob><bob></bob>
</div>
</div>
<div class="D_Lbottom_texte_Forest">Forest</div>
</div>
</div>
</div>
<div class="A_right">
<div class="B_Rtop">
<div class="C_progress">
<div class="D_progress">
</div>
<desc>Districts Built</desc>
</div>
<div class="C_back">
<button type="button" id="D_button" data-passage="New">Go Back</button>
</div>
</div>
<div class="B_Rbottom">
<div class="D_womenStats">
<div class="DE_womenStats">
<div class="E_womenStats E_womenStatsBottom">
<bar></bar>
</div>
<div class="E_womenStats E_womenStatsTop">
<bob></bob><bob></bob><bob></bob>
<bob></bob><bob></bob><bob></bob>
</div>
</div>
<div class="DE_womenStatsImg"></div>
</div>
<div class="D_womenStats">
<div class="DE_womenStats">
<div class="E_womenStats E_womenStatsBottom">
<bar></bar>
</div>
<div class="E_womenStats E_womenStatsTop">
<bob></bob><bob></bob><bob></bob>
<bob></bob><bob></bob><bob></bob>
</div>
</div>
<div class="DE_womenStatsImg"></div>
</div>
<div class="D_womenStats">
<div class="DE_womenStats">
<div class="E_womenStats E_womenStatsBottom">
<bar></bar>
</div>
<div class="E_womenStats E_womenStatsTop">
<bob></bob><bob></bob><bob></bob>
<bob></bob><bob></bob><bob></bob>
</div>
</div>
<div class="DE_womenStatsImg"></div>
</div>
<div class="D_womenStats">
<div class="DE_womenStats">
<div class="E_womenStats E_womenStatsBottom">
<bar></bar>
</div>
<div class="E_womenStats E_womenStatsTop">
<bob></bob><bob></bob><bob></bob>
<bob></bob><bob></bob><bob></bob>
</div>
</div>
<div class="DE_womenStatsImg"></div>
</div>
</div>
</div>
<</nobr>>\
<style>
/*body {
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
background-color: rgba(0, 0, 0, 0.88);
overflow: hidden;
color: white;
font-size: 2vh;
font-family: 'Roboto', sans-serif;
}*/
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 18em;
}
#passages {
margin: 0;
}
.passage {
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
overflow: hidden;
color: white;
font-size: 2vh;
font-family: 'Roboto', sans-serif;
}
.A_left {
height: 100%;
width: 50%;
display: flex;
flex-direction: column;
}
.B_Ltop {
height: 23%;
width: 100%;
display: flex;
justify-content: space-evenly;
flex-direction: row;
align-items: center;
}
.C_cible {
height: 70%;
aspect-ratio: 1/1;
display: flex;
justify-content: center;
align-items: center;
border: solid 0.5vh #e14900;
border-radius: 50%;
}
.C_cible img {
aspect-ratio: 1/1;
height: 80%;
max-width: 100%;
object-fit: cover;
}
.C_trophy, .C_quest {
height: 70%;
/*aspect-ratio: 4/5;*/ /*firefox going nuts with this one YAHOO*/
width: 13vh;
text-align: center;
}
/*.C_trophy {
}*/
graph {
display: block;
background-color: rgb(110, 69, 69);
width: 100%;
aspect-ratio: 1/1;
box-sizing: border-box;
border-radius: 50%;
/*background: conic-gradient(yellow 0%, rgb(26, 26, 26) 0%);*/
/*TODO transition to fill the background*/
display: flex;
justify-content: center;
align-items: center;
}
graph img {
aspect-ratio: 1/1;
height: 80%;
object-fit: cover;
border-radius: 20%;
mix-blend-mode: hard-light;
}
.C_trophy desc, .C_quest desc {
margin: 0.3vh;
display: block;
}
.B_Lbottom {
height: 77%;
width: 100%;
display: flex;
justify-content: space-evenly;
flex-direction: row;
flex-wrap: nowrap;
}
.C_wastelands {
height: 100%;
width: 20vh;
}
.D_wastelands, .D_forest {
height: 90%;
width: 100%;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
}
.E_wastelands, .E_forest {
height: 100%;
width: 100%;
position: absolute;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
/*.E_wastelandsBottom {
}*/
.E_wastelandsBottom bar, .E_forestBottom bar {
/*background-image: linear-gradient(to top, #EE7876 20%, #5C5C5C 20%);*/
height: 80%;
width: 4.5vh;
}
.E_wastelandsTop, .E_forestTop {
justify-content: space-around;
}
.E_wastelandsTop bob, .E_forestTop bob {
width: 9vh;
aspect-ratio: 1/1;
margin: 0.5vh;
border-radius: 50%;
box-shadow: rgba(0, 0, 0, 0.40) 0px 5px 15px;
display: flex;
justify-content: center;
align-items: center;
}
.Big_bob {
width: 11vh !important;
}
.E_wastelands bob img, .E_forest bob img {
aspect-ratio: 1/1;
height: 90%;
max-width: 100%;
object-fit: cover;
border-radius: 50%;
}
.Big_bob img {
aspect-ratio: 1/1;
height: 90%;
max-width: 100%;
object-fit: cover;
border-radius: 50%;
}
.D_Lbottom_texte_Wastelands, .D_Lbottom_texte_Forest {
/*height: 17%;*/
width: 100%;
display: flex;
justify-content: center;
margin-top: 1vh;
font-size: 1.2em;
font-weight: bold;
}
.C_forest {
height: 100%;
width: 20vh;
}
.A_right {
height: 100%;
width: 50%;
display: flex;
flex-direction: column;
}
.B_Rtop {
height: 18%;
width: 100%;
display: flex;
}
.C_progress {
height: 100%;
width: 60%;
display: flex;
align-items: center;
flex-direction: column;
justify-content: flex-end;
}
.C_progress desc {
margin: 0.9vh;
display: block;
font-size: 1.2em;
}
.D_progress {
max-width: 100%;
background-color: #262626;
height: 50%;
padding: 0 0.3vh;
border: solid 0.5vh #BFBFBF;
border-radius: 1vh;
box-sizing: border-box;
/*outline: solid 0.5vh #BFBFBF;*/
display: flex;
justify-content: start;
align-items: center;
}
.D_progress div {
background-color: #BFBFBF;
height: 85%;
width: 3vh;
margin: 0.3vh;
border-radius: 0.5vh;
}
.locked {
background-color: rgba(191, 191, 191, 0.1) !important;
}
.C_back {
height: 100%;
width: 40%;
display: flex;
justify-content: end;
}
#D_button {
background-color: #262626;
border: solid 0.5vh #C00000;
height: 8vh;
aspect-ratio: 5/2;
margin-top: 1.5vh;
margin-right: 1.5vh;
border-radius: 1vh;
color: inherit;
font-size: 1.5em;
font-weight: bold;
cursor: pointer;
}
.B_Rbottom {
height: 100%;
width: 100%;
max-width: 60vh;
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: space-evenly;
}
.D_womenStats {
height: 100%;
margin: 0 1vh;
width: 80%;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
}
.DE_womenStats {
height: 86%;
width: 100%;
position: relative;
}
.DE_womenStatsImg {
height: 13%;
width: 100%;
text-align: center;
}
.DE_womenStatsImg img {
aspect-ratio: 1/1;
height: 100%;
max-width: 100%;
object-fit: cover;
border-radius: 50%;
box-shadow: rgba(0, 0, 0, 0.40) 0px 5px 15px;
}
.E_womenStats {
position: absolute;
height: 100%;
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
align-items: center;
flex-direction: column-reverse !important;
}
/*.E_womenStatsBottom {
}*/
.E_womenStatsBottom bar {
/*background-image: linear-gradient(to top, #EE7876 0%, #5C5C5C 0%);*/
height: 84%;
width: 4.5vh;
}
.E_womenStatsTop {
align-content: space-around;
flex-direction: column;
}
.E_womenStatsTop bob {
/*background-color: rgba(255, 255, 255, 0.534);*/
width: 9vh;
aspect-ratio: 1/1;
margin: 0.5vh;
border-radius: 50%;
box-shadow: rgba(0, 0, 0, 0.40) 0px 5px 15px;
display: flex;
justify-content: center;
align-items: center;
}
.E_womenStats bob img {
aspect-ratio: 1/1;
height: 80%;
max-width: 100%;
object-fit: cover;
border-radius: 20%;
}
</style>\
<script>
// ------- Data -------
var womenStats = [
{
name: "cherie",
infill_color : "#EE7876",
},
{
name: "lana",
infill_color : "#AB8FD3",
},
{
name: "elfie",
infill_color : "#AE00AE",
},
{
name: "gabbie",
infill_color : "#7EADEF",
}
]
var emptycolor = "#5C5C5C"; //
var womenStatsImages = [
"ressources/angela/goals/eye.webp",
"ressources/angela/goals/handjob.webp",
"ressources/angela/goals/boobs.webp",
"ressources/angela/goals/blowjob.webp",
"ressources/angela/goals/pussy.webp",
"ressources/angela/goals/ass.webp",
]
var wastelandsProgress = 5; //0 to 5
var wastelandsColor = "#FE9E42";
var wastelandsCharacters = [
"peta",
"eva",
"abella",
"lisa",
//"johny",
"ava",
];
var forestProgress = 5; //0 to 5
var forestColor = "#B0D861";
var forestCharacters = [
"dimitrescu",
"alexsraza",
"sylvanas",
//"gaia",
"athena",
"lilith",
];
var DistrictsBuiltProgress = 7;
var DistrictsBuiltTotal = 9;
// ------- functions -------
function checkScenes(name){
if (name == undefined || name == null) {return;}
if (SV.characters[name].scenes == undefined || SV.characters[name].scenes == null) {return;}
let arr = [];
for (key in SV.characters[name].scenes) {
arr[key] = 0;
for (key2 in SV.characters[name].scenes[key]) {
if (SV.characters[name].scenes[key][key2] > 0) {
arr[key] = 1;
break;
}
}
}
return arr;
}
// ------- Trophy -------
var trophyTotal = Object.keys(SV.trophy.list).length;
var trophyProgress = 0;
for (key in SV.trophy.list) {
if (SV.trophy.list[key].unlocked == 2) { // 0 = locked, 1 = unlocked, 2 = completed
trophyProgress++;
}
}
var C_trophy = document.querySelector('.C_trophy')
var trophy_percent = (trophyProgress / trophyTotal )*100;
C_trophy.querySelector('graph').style.background = `conic-gradient(rgb(255,180,0) ${trophy_percent}%, rgb(26, 26, 26) ${trophy_percent}%)`;
C_trophy.querySelector('desc').innerHTML = `${trophyProgress}/${trophyTotal}`;
// ------- Quest -------
var questTotal = Object.keys(SV.quest.list).length;
var questProgress = 0;
for (key in SV.quest.list) {
if (SV.quest.list[key].unlocked == 2) {
questProgress++;
}
}
var C_quest = document.querySelector('.C_quest')
var quest_percent = (questProgress / questTotal )*100;
C_quest.querySelector('graph').style.background = `conic-gradient(rgb(255,180,0) ${quest_percent}%, rgb(26, 26, 26) ${quest_percent}%)`;
C_quest.querySelector('desc').innerHTML = `${questProgress}/${questTotal}`;
// ------- Disctricts Progress -------
var D_progress = document.querySelector('.D_progress');
for (let i = 0; i < DistrictsBuiltTotal; i++) {
let div = document.createElement('div');
if (i >= DistrictsBuiltProgress) {
div.classList.add('locked');
}
D_progress.appendChild(div);
}
// ------- WomenStats -------
// --- Bottom bar ---
var womenStatsBottom = document.querySelectorAll('.E_womenStatsBottom');
womenStatsBottom.forEach((element, index) => {
let obj = checkScenes(womenStats[index].name)
let obj_length = Object.keys(obj).length;
let progress_max = 0;
for (let i = obj_length; i >= 0; i--) { // find the highest progress value
if (Object.values(obj)[i] == 1) {
progress_max = i;
break;
}
}
var barElement = element.querySelector('bar');
let fillcolor = womenStats[index].infill_color;
let percentage = (progress_max / (obj_length - 1)) * 100;
barElement.style.backgroundImage = `linear-gradient(to top, ${fillcolor} ${percentage}%, ${emptycolor} ${percentage}%)`;
});
// --- Top bobbles ---
var womenStatsTop = document.querySelectorAll('.E_womenStatsTop');
womenStatsTop.forEach((element, index) => {
let progress = womenStats[index].progress;
let progress2 = checkScenes(womenStats[index].name);
let bobElements = element.querySelectorAll('bob');
let parentIndex = index;
bobElements.forEach((element, index) => {
if (Object.values(progress2)[index]) {
element.style.backgroundColor = womenStats[parentIndex].infill_color;
let imgElement = document.createElement('img');
imgElement.src = womenStatsImages[index];
element.appendChild(imgElement);
} else {
element.style.backgroundColor = emptycolor;
}
});
});
// --- Bottom Images ---
var DE_womenStatsImg = document.querySelectorAll('.DE_womenStatsImg');
DE_womenStatsImg.forEach((element, index) => {
let imgElement = document.createElement('img');
//imgElement.src = SV.characters[womenStats[index].name].image;
imgElement.src = getCharacterImg(womenStats[index].name);
element.appendChild(imgElement);
});
// ------- WASTELANDS -------
var E_wastelandsBottomBar = document.querySelector('.E_wastelandsBottom bar');
var fillcolor = wastelandsColor;
var percentage = (wastelandsProgress - 1) * 25;
E_wastelandsBottomBar.style.backgroundImage = `linear-gradient(to top, ${fillcolor} ${percentage}%, ${emptycolor} ${percentage}%)`;
document.querySelector('.D_Lbottom_texte_Wastelands').style.color = wastelandsColor;
var E_wastelandsTop = document.querySelector('.E_wastelandsTop');
var wastelandsbobElements = E_wastelandsTop.querySelectorAll('bob')
// Iterate through the wastelandsImages array and apply the image
wastelandsbobElements.forEach((element, index) => {
index = wastelandsbobElements.length - 1 - index;
if (index < wastelandsProgress) {
element.style.backgroundColor = wastelandsColor;
let imgElement = document.createElement('img');
//imgElement.src = wastelandsImages[index];
//imgElement.src = SV.characters[wastelandsCharacters[index]].image;
imgElement.src = getCharacterImg(wastelandsCharacters[index]);
element.appendChild(imgElement);
} else {
element.style.backgroundColor = emptycolor;
}
});
// ------- FOREST -------
var E_forestBottomBar = document.querySelector('.E_forestBottom bar');
fillcolor = forestColor;
percentage = (forestProgress - 1) * 25;
E_forestBottomBar.style.backgroundImage = `linear-gradient(to top, ${fillcolor} ${percentage}%, ${emptycolor} ${percentage}%)`;
document.querySelector('.D_Lbottom_texte_Forest').style.color = forestColor;
var E_forestTop = document.querySelector('.E_forestTop');
var forestbobElements = E_forestTop.querySelectorAll('bob')
// Iterate through the forestImages array and apply the image
forestbobElements.forEach((element, index) => {
index = forestbobElements.length - 1 - index;
if (index < forestProgress) {
element.style.backgroundColor = forestColor;
let imgElement = document.createElement('img');
//imgElement.src = SV.characters[forestCharacters[index]].image;
imgElement.src = getCharacterImg(forestCharacters[index]);
element.appendChild(imgElement);
} else {
element.style.backgroundColor = emptycolor;
}
});
</script><<nobr>>
<div class="INVS_back">
<div class="INVS_main">
<<inventory>> <!-- class="INVS_main_inventory" -->
<div class="INVS_main_bank">
<div class="INVS_title_cont">
<div class="INVS_title">BANK</div>
<div class="INVS_sort_cont">Sort by 
<div class="INVS_sort" sort_inv_type="bank">Sample text</div>
</div>
</div>
<div class="INVS_bank_item_cont INVS_scroll" inv_type="bank">
<!-- div class="INVS_item_break">Equipment</div -->
<!-- item class="INVS_inventory_item_div">
<img draggable="false" src="ressources/icons/I1EA13.webp" class="INVS_item_img">
<div class="INVS_item_text">Dark Leather Boots</div>
<invs_qty>0</invs_qty>
<invs_tier tier="1">
<img src="ressources/maingui/ranks/1.webp">
</invs_tier>
</item -->
</div>
</div>
<<mouseItem>> <!-- class="INVS_mouse_item_cont" -->
</div>
</div>
<</nobr>>\
<style>
:root {
--INVS_Font_Color: rgb(255, 255, 255);
--INVS_desc_heigth: 15vh;
}
body {
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
background-color: #1d1d1d;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
font-family: 'Roboto', sans-serif;
}
</style>\
<script>
/* to include: inventoryGui.js */
/** TODO
* - implement exit button
* - implement the food scripts TO CHECK
* - implement help button to feed the dragon ?? wtf did i meant by that
*/
// ------------------ Main Calls ------------------
function INVF_updateLvl1Functions() { // update everything except the externalInv.inventory
//INVF_retrieveItemFromMouse();
//INVF_setMainInvQty(); // was for saving the dynamic data to SV
//INVF_createListFromDB // was for creating the menuInv.inventory dynamic data from SV
INVF_checkQtyAllMenuInv(); // for all menuInv, if INVS_qty = 0, set to {}
INVF_updateLvl2Functions();
}
function INVF_updateLvl2Functions() { // update everything except the externalInv.inventory
INVF_removeListeners();
INVF_clearAllInvGui(); // clear all the inventory GUI
INVF_setSortButtonInnerHTML();
INVF_sortAllMenuInv();
INVF_fillAllInvGui();
//INVF_checkEquipmentBonus();
INVF_addListeners();
}
var sort_list = ["quantity", "tier", "name", "type"]; // list of all the sorting options. see sort_inv()
var invDivs = document.querySelectorAll('[inv_type]')
var inv_desc = document.querySelector('.INVS_main_inventory_desc');
INVF_addSortListeners();
// INVF_setupCoolThing();
INVF_addMouseFollow();
//INVF_createListFromDB // was for creating the menuInv.inventory dynamic data
INVF_updateLvl1Functions();
</script><<nobr>>
<div class="INVS_back">
<div class="INVS_main">
<div class="INVS_main_consumeDRoot">
<div class="INVS_consumeDRoot_item_cont" inv_type="consumeDRoot">
<!--item class="INVS_equip_item_div">
<img draggable="false" class="INVS_item_img" src="">
</item-->
</div>
<div class="INVS_consumeDRoot_button" onclick="INVF_consumeItem()">CONSUME D-ROOT</div>
</div>
<<inventory>> <!-- class="INVS_main_inventory" -->
<div class="INVS_main_equipment">
<div class="INVS_title_cont">
<div class="INVS_title">EQUIPMENT</div>
</div>
<div class="INVS_equipment_item_cont" inv_type="equipment">
<!--item class="INVS_equip_item_div">
<img draggable="false" class="INVS_item_img" src="">
</item-->
</div>
<div class="INVS_equip_separation"></div>
<div class="INVS_equip_bonus_cont INVS_scroll">
<!-- boost>
<img src="ressources/maingui/attributes/dominance_icon.webp">
<div>
<name>Dominance</name>
<div>Bonus: <qty class="get">+1</qty></div>
</div>
</boost -->
</div>
</div>
<<mouseItem>> <!-- class="INVS_mouse_item_cont" -->
</div>
</div>
<</nobr>>\
<style>
:root {
--INVS_Font_Color: rgb(255, 255, 255);
--INVS_desc_heigth: 15vh;
}
body {
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
background-color: #1d1d1d;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
overflow: hidden;
color: white;
font-family: 'Roboto', sans-serif;
}
</style>\
<script>
/** TODO
* - implement exit button
* - implement help button to feed the dragon ?? wtf did i meant by that
*/
// ------------------ Main Calls ------------------
function INVF_updateLvl1Functions() { // update everything except the externalInv.inventory
//INVF_retrieveItemFromMouse();
//INVF_setMainInvQty(); // was for saving the dynamic data to SV
//INVF_createListFromDB // was for creating the menuInv.inventory dynamic data
INVF_checkQtyAllMenuInv(); // for all menuInv, if INVS_qty = 0, set to {}
INVF_updateLvl2Functions();
SB_mainRefresh(); //external function
INVF_sanitizeInvs('inventory'); // because of sidebar modVariable get create a qty 0 item
}
function INVF_updateLvl2Functions() { // update everything except the externalInv.inventory
INVF_removeListeners();
INVF_clearAllInvGui(); // clear all the inventory GUI
INVF_setSortButtonInnerHTML();
INVF_sortAllMenuInv();
INVF_fillAllInvGui();
INVF_checkEquipmentBonus();
INVF_addListeners();
}
var sort_list = ["quantity", "tier", "name", "type"]; // list of all the sorting options. see sort_inv()
var invDivs = document.querySelectorAll('[inv_type]')
var inv_desc = document.querySelector('.INVS_main_inventory_desc');
INVF_addSortListeners();
// INVF_setupCoolThing();
INVF_addMouseFollow();
//INVF_createListFromDB // was for creating the menuInv.inventory dynamic data
INVF_updateLvl1Functions();
</script><<nobr>>
<div class="INVS_back">
<div class="INVS_main">
<<inventory>> <!-- class="INVS_main_inventory" -->
<div class="INVS_main_food">
<div class="INVS_title_cont">
<div class="INVS_title">THE FRIDGE</div>
</div>
<div class="INVS_food_item_cont" inv_type="food">
<item class="INVS_food_item_div">
<img class="INVS_item_img" draggable="false">
<INVS_qty>1000</INVS_qty>
</item>
</div>
<div class="INVS_food_separation"></div>
<div class="INVS_food_info_cont">
<div>Consumption</div>
<div>
<qty class="INVS_QTY_total_consuption">20</qty>
<img src="ressources/icons/IFA8.webp">
/ Day
<!-- img src="ressources/maingui/ui/time.webp" style="height:3vh;filter:drop-shadow(0 200vh 0 rgb(180, 180, 180));transform:translateY(-200vh);" -->
<img src="ressources/maingui/ui/time.webp" style="filter: brightness(0) saturate(100%) invert(81%) sepia(30%) saturate(0%) hue-rotate(264deg) brightness(93%) contrast(69%);">
</div>
<div class="INVS_QTY_food_current"></div>
<div>Current Storage</div>
<div>
<qty class="INVS_QTY_current_stock">20</qty>
<img src="ressources/icons/IFA8.webp">
<qty class="INVS_QTY_days_until_empty" style="margin-left: 4vh;">20</qty>
<!-- img src="ressources/maingui/ui/time.webp" style="filter:drop-shadow(0 200vh 0 rgb(180, 180, 180));transform:translateY(-200vh);" -->
<img src="ressources/maingui/ui/time.webp" style="filter: brightness(0) saturate(100%) invert(81%) sepia(30%) saturate(0%) hue-rotate(264deg) brightness(93%) contrast(69%);">
</div>
</div>
</div>
<<mouseItem>> <!-- class="INVS_mouse_item_cont" -->
</div>
</div>
<</nobr>>\
<style>
:root {
--INVS_Font_Color: rgb(255, 255, 255);
--INVS_desc_heigth: 15vh;
}
body {
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
background-color: #1d1d1d;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
font-family: 'Roboto', sans-serif;
}
</style>\
<script>
// ------------------ Main Calls ------------------
function INVF_updateLvl1Functions() { // update everything except the externalInv.inventory
//INVF_setMainInvQty(); // was for saving the dynamic data to SV
//INVF_createListFromDB // was for creating the menuInv.inventory dynamic data
INVF_checkQtyAllMenuInv(); // for all menuInv, if INVS_qty = 0, set to {}
INVF_updateLvl2Functions();
}
function INVF_updateLvl2Functions() { // update everything except the externalInv.inventory
INVF_removeListeners();
INVF_clearAllInvGui(); // clear all the inventory GUI
INVF_setSortButtonInnerHTML();
INVF_sortAllMenuInv();
INVF_fillAllInvGui(
// hide all but food
{
"inventory": {
hide: function (item) {
//if (item.type == "food") return false;
//return true;
return item.type !== "food";
}
}
}
);
//INVF_checkEquipmentBonus(); // equipment
INVF_updateFoodInfo(); // food
INVF_addListeners();
}
var sort_list = ["quantity", "tier", "name", "type"]; // list of all the sorting options. see sort_inv()
var invDivs = document.querySelectorAll('[inv_type]')
var inv_desc = document.querySelector('.INVS_main_inventory_desc');
INVF_addSortListeners();
// INVF_setupCoolThing();
INVF_addMouseFollow();
//INVF_createListFromDB // was for creating the menuInv.inventory dynamic data
INVF_updateLvl1Functions();
</script><<nobr>>
<div class="INVS_back">
<div class="INVS_main">
<<inventory>> <!-- class="INVS_main_inventory" -->
<div class="INVS_main_furnace">
<div class="INVS_title_cont">
<div class="INVS_title">THE FURNACE</div>
</div>
<div class="INVS_furnace_item_cont" inv_type="furnace">
<!-- item class="INVS_furnace_item_div">
</item -->
</div>
<div class="INVS_furnace_button" onclick="INVF_furnaceItem()">TRANSFORM ITEM</div>
<div class="INVS_equip_separation"></div>
<div class="INVS_furnace_itemGain_cont INVS_scroll">
<!-- item>
<img src="ressources/maingui/attributes/dominance_icon.webp">
<div>
<name>Dominance</name>
<qty>x10</qty>
</div>
</item -->
</div>
</div>
<<mouseItem>> <!-- class="INVS_mouse_item_cont" -->
</div>
</div>
<</nobr>>\
<style>
:root {
--INVS_Font_Color: rgb(255, 255, 255);
--INVS_desc_heigth: 15vh;
}
body {
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
background-color: #1d1d1d;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
font-family: 'Roboto', sans-serif;
}
</style>\
<script>
// ------------------ Main Calls ------------------
function INVF_updateLvl1Functions() { // update everything except the externalInv.inventory
//INVF_setMainInvQty(); // was for saving the dynamic data to SV
//INVF_createListFromDB // was for creating the menuInv.inventory dynamic data
INVF_checkQtyAllMenuInv(); // for all menuInv, if INVS_qty = 0, set to {}
INVF_updateLvl2Functions();
}
function INVF_updateLvl2Functions() { // update everything except the externalInv.inventory
INVF_removeListeners();
INVF_clearAllInvGui(); // clear all the inventory GUI
INVF_setSortButtonInnerHTML();
INVF_sortAllMenuInv();
INVF_fillAllInvGui(
// hide all but food or equipment
{
"inventory": {
hide: function (item) {
return item.type !== "food" && item.type !== "equipment";
}
}
}
);
INVF_updateFurnaceInfo(); // furnace
//INVF_checkEquipmentBonus(); // equipment
//INVF_updateFoodInfo(); // food
INVF_addListeners();
}
var sort_list = ["quantity", "tier", "name", "type"]; // list of all the sorting options. see sort_inv()
var invDivs = document.querySelectorAll('[inv_type]')
var inv_desc = document.querySelector('.INVS_main_inventory_desc');
INVF_addSortListeners();
// INVF_setupCoolThing();
INVF_addMouseFollow();
//INVF_createListFromDB // was for creating the menuInv.inventory dynamic data
INVF_updateLvl1Functions();
</script>Cannot locate necessary script files.
Please make sure you have correctly extracted the game before attempting to play.<<widget sceneMaster>>
<div class="scenes_upper_div">
<div id="woman_and_scenes_button_scenes">
<img src="ressources/icons/13DA1.webp">
</div>
<div class="parent_upper_mid">
<div class="scenes_character_image">
<<if def SV.characters[_args[0]]>>
<img @character=_args[0]>
<<else>>
<img @src="`ressources/icons/${ST.args[0]}.webp`">
<</if>>
<div class="shadow"></div>
</div>
<<sceneCounter>>
</div>
<div class="parent_upper_right">
<div onclick="playPassage('MENU main interface')" id="scenes_goback_button">
Back
</div>
</div>
</div>
<<sceneList>>
<</widget>>
<<widget sceneCounter>>
<div class="parent_counter">
<div class="total_scenes_counter">
<p counterScene="all">0/0</p>
<img src="ressources/icons/13C16.webp">
</div>
<div class="scenes_counter">
<div class="scenes_counter_type">
<p counterScene="beginning">0/0</p>
<img src="ressources/maingui/sexuals/beginning.webp">
</div>
<div class="scenes_counter_type">
<p counterScene="tease">0/0</p>
<img src="ressources/maingui/sexuals/tease.webp">
</div>
<div class="scenes_counter_type">
<p counterScene="handjob">0/0</p>
<img src="ressources/maingui/sexuals/handjob.webp">
</div>
<div class="scenes_counter_type">
<p counterScene="titsjob">0/0</p>
<img src="ressources/maingui/sexuals/boobjob.webp">
</div>
<div class="scenes_counter_type">
<p counterScene="blowjob">0/0</p>
<img src="ressources/maingui/sexuals/blowjob.webp">
</div>
<div class="scenes_counter_type">
<p counterScene="vaginal">0/0</p>
<img src="ressources/maingui/sexuals/vaginal.webp">
</div>
<div class="scenes_counter_type">
<p counterScene="anal">0/0</p>
<img src="ressources/maingui/sexuals/anal.webp">
</div>
<div class="scenes_counter_type">
<p counterScene="extreme">0/0</p>
<img src="ressources/maingui/sexuals/extreme.webp">
</div>
</div>
</div>
<</widget>>
<<widget sceneList>>
<div class="cheats_parent_bottom">
<div class="scenes_holy_div">
<div class="scenes_arrow_left"></div>
<div class="scenes_template_container">
<!--div class="scenes_icons scenes_icon_unseen">
<img>
<div class="shadow_1"></div>
<div class="mech_icons">
<img>
</div-->
</div>
<div class="scenes_arrow_right"></div>
</div>
</div>
<</widget>>
<<widget sceneMcStyle>>
<style>
body {
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
position: relative;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
font-weight: bold;
background-color: #1d1d1d;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
font-family: 'Teko', sans-serif;
}
#scenes_goback_button:hover {
transform: translate(0.25vh, -0.25vh);
box-shadow: -0.5vh 0.5vh 1vh rgba(255, 255, 255, 0.5);
}
.scenes_icons:hover {
transform: translate(0.25vh, -0.25vh);
box-shadow: -0.5vh 0.5vh 1vh rgba(255, 255, 255, 0.5);
}
</style>\
<</widget>>
<<widget sceneGirlsStyle>>
<style>
body {
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
position: relative;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
font-weight: bold;
background-color: #1d1d1d;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
font-family: 'Teko', sans-serif;
}
#woman_and_scenes_button_scenes {
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow: 0px 0px 8px rgba(255, 0, 0, 0.4), 0px 0px 16px rgba(255, 0, 0, 0.4), 0px 0px 24px rgba(255, 0, 0, 0.4);/* For centering text */
box-shadow: inset 0 0 0.5vw rgba(255, 0, 0, 0.4), 0 0 0.5vw rgba(255, 0, 0, 0.4), 0 0 1vw rgba(255, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.scenes_character_image {
border: 3px solid var(--theme-color);
text-shadow: 0px 0px 8px var(--theme-color), 0px 0px 16px var(--theme-color), 0px 0px 24px var(--theme-color);/* For centering text */
box-shadow: inset 0 0 0.5vw var(--theme-color), 0 0 0.5vw var(--theme-color), 0 0 1vw var(--theme-color);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.scenes_character_image img {
height: 100%;
}
.shadow {
border-radius: 10%;
top: 0;
}
#scenes_goback_button {
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow: 0px 0px 8px rgba(255, 0, 0, 0.4), 0px 0px 16px rgba(255, 0, 0, 0.4), 0px 0px 24px rgba(255, 0, 0, 0.4);/* For centering text */
box-shadow: inset 0 0 0.5vw rgba(255, 0, 0, 0.4), 0 0 0.5vw rgba(255, 0, 0, 0.4), 0 0 1vw rgba(255, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
#scenes_goback_button:hover {
background-color: rgba(0, 0, 0, 0.8);
box-shadow: inset 0 0 1vw rgba(255, 0, 0, 0.6), 0 0 1vw rgba(255, 0, 0, 0.6), 0 0 1.5vw rgba(255, 0, 0, 0.6), 0 0 2vw rgba(255, 0, 0, 0.6);
text-shadow: 0 0 1vw rgba(255, 0, 0, 0.6), 0 0 1.5vw rgba(255, 0, 0, 0.6), 0 0 2vw rgba(255, 0, 0, 0.6);
}
.total_scenes_counter {
border: 3px solid var(--theme-color);
text-shadow: 0px 0px 8px var(--theme-color), 0px 0px 16px var(--theme-color), 0px 0px 24px var(--theme-color);/* For centering text */
box-shadow: inset 0 0 0.5vw var(--theme-color), 0 0 0.5vw var(--theme-color), 0 0 1vw var(--theme-color);
background-color: rgba(0, 0, 0, 1);
background-image: none;
}
.scenes_counter {
border: 3px solid var(--theme-color);
text-shadow: 0px 0px 8px var(--theme-color), 0px 0px 16px var(--theme-color), 0px 0px 24px var(--theme-color);/* For centering text */
box-shadow: inset 0 0 0.5vw var(--theme-color), 0 0 0.5vw var(--theme-color), 0 0 1vw var(--theme-color);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.scenes_icons {
border: 3px solid var(--theme-color);
text-shadow: 0px 0px 8px var(--theme-color), 0px 0px 16px var(--theme-color), 0px 0px 24px var(--theme-color);/* For centering text */
box-shadow: inset 0 0 0.5vw var(--theme-color), 0 0 0.5vw var(--theme-color), 0 0 1vw var(--theme-color);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
.scenes_icons:hover {
background-color: rgba(0, 0, 0, 0.8);
box-shadow: inset 0 0 1vw var(--theme-color), 0 0 1vw var(--theme-color), 0 0 1.5vw var(--theme-color), 0 0 2vw var(--theme-color);
text-shadow: 0 0 1vw var(--theme-color), 0 0 1.5vw var(--theme-color), 0 0 2vw var(--theme-color);
}
.scenes_icon_unseen {
border-radius: 2.5vh;
border: 3px solid var(--theme-color);
text-shadow: 0px 0px 8px var(--theme-color), 0px 0px 16px var(--theme-color), 0px 0px 24px var(--theme-color);/* For centering text */
box-shadow: inset 0 0 0.5vw var(--theme-color), 0 0 0.5vw var(--theme-color), 0 0 1vw var(--theme-color);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
}
</style>
<</widget>>
<<widget inventory>>
<div class="INVS_main_inventory">
<div class="INVS_main_inventory_out">
<div class="INVS_title_cont">
<div class="INVS_title">INVENTORY</div>
<div class="INVS_exit_button" onclick="exitInventory()">Exit</div>
<div class="INVS_sort_cont">Sort by 
<div class="INVS_sort" sort_inv_type="inventory">Sample text</div>
</div>
</div>
<div class="INVS_inventory_item_cont INVS_scroll" inv_type="inventory">
Something went wrong, contact devs via discord
<!--div class="INVS_item_break">Crafting</div>
<item class="INVS_inventory_item_div">
<img class="INVS_item_img" draggable="false">
<div class="INVS_item_text">
Sword of the Unfallen<br>1
</div>
</item-->
</div>
</div>
<div class="INVS_main_inventory_desc"></div>
</div>
<</widget>>
<<widget mouseItem>>
<div class="INVS_mouse_item_cont" inv_type="mouse">
<item>
<!--img draggable="false" class="INVS_item_img">
<INVS_qty>1000</INVS_qty-->
</item>
</div>
<</widget>>
<<widget previousPeacewood>>
<div id="arrow-left" class="button rectangular-button" onclick="previousBloc()">
<img class="chevron-arrow-left" src="ressources/maingui/ui/chevron-arrow.webp" alt="Chevron Arrow">
<div class="dropdown-rectangle">
<b>+5</b>
<img class="icon5" src="ressources/maingui/attributes/better_virus.webp">
</div>
</div>
<</widget>>
<<widget nextPeacewood>>
<div id="arrow-right" class="button rectangular-button" onclick="nextBloc()">
<img class="chevron-arrow-right" src="ressources/maingui/ui/chevron-arrow2.webp" alt="Chevron Arrow">
<div class="arrow-right"></div>
</div>
<</widget>>
<<widget mainButtonsPeacewood>>
<div>
<<if _pass>>
<div onclick="accessHuntingGame(ST.key)" class="button circular-button"><img class="icon1" src="ressources/icons/2N.webp"></div>
<div onclick="accessGatheringGame(ST.key)" class="button circular-button"><img class="icon2" src="ressources/icons/2O.webp"></div>
<!-- div onclick="playPassage(`YA${ST.key}D`)" class="button circular-button"><img class="icon3" src="ressources/icons/2K.webp"></div -->
<div onclick="accessSpecialGame('forest', 'A', ST.key)" class="button circular-button"><img class="icon3" src="ressources/icons/2K.webp"></div>
<<else>>
<div onclick="appendNotReadyWarning()" class="button circular-button"><img class="icon1" src="ressources/icons/2N.webp"></div>
<div onclick="appendNotReadyWarning()" class="button circular-button"><img class="icon2" src="ressources/icons/2O.webp"></div>
<div onclick="appendNotReadyWarning()" class="button circular-button"><img class="icon3" src="ressources/icons/2K.webp"></div>
<</if>>
</div>
<</widget>>
<<widget previousBorder>>
<div id="arrow-left" class="button rectangular-button" onclick="previousBloc()">
<img class="chevron-arrow-left" src="ressources/maingui/ui/chevron-arrow.webp" alt="Chevron Arrow">
</div>
<</widget>>
<<widget nextBorder>>
<<if _args[0] == false>> <!-- false if is not last passage -->
<div id="arrow-right" class="button rectangular-button" onclick="nextBloc()">
<img class="chevron-arrow-right" src="ressources/maingui/ui/chevron-arrow2.webp" alt="Chevron Arrow">
<div class="arrow-right"></div>
<div class="dropdown-rectangle">
<b>+3%</b>
<img class="icon5" src="ressources/icons/3A9.webp">
</div>
</div>
<<else>>
<div class="DPS_discoveryPortalCont" sceneId="WA13E" onclick="nextBloc()">
<div class="DPS_front">
<img class="DPS_paralax_ref" src="./ressources/maingui/ui/watelandsGreen1.webp">
<img class="DPS_background" src="./ressources/backgrounds/WB_SS.webp">
<img class="DPS_paralax" src="./ressources/maingui/ui/smoke.webp">
<img class="DPS_paralax" src="./ressources/maingui/ui/watelandsGreen2.webp">
<img class="DPS_paralax" src="./ressources/maingui/ui/watelandsGreen1.webp">
<div class="DPS_title">THE GREEN ZONE</div>
</div>
<div class="DPS_left"></div>
<div class="DPS_right"></div>
<div class="DPS_top"></div>
<div class="DPS_bottom"></div>
</div>
<script>
DPF_init();
</script>
<</if>>
<</widget>>
<<widget nextGreen>>
<<if _args[0] == false>> <!-- false if is not last passage -->
<div id="arrow-right" class="button rectangular-button" onclick="nextBloc()">
<img class="chevron-arrow-right" src="ressources/maingui/ui/chevron-arrow2.webp" alt="Chevron Arrow">
<div class="arrow-right"></div>
<div class="dropdown-rectangle">
<b>+3%</b>
<img class="icon5" src="ressources/icons/3A9.webp">
</div>
</div>
<<else>>
<div class="DPS_discoveryPortalCont" sceneId="" onclick="nextBloc()">
<div class="DPS_front">
<img class="DPS_paralax_ref" src="./ressources/maingui/ui/watelandsBlue1.webp">
<img class="DPS_background" src="./ressources/backgrounds/WB_SS.webp">
<img class="DPS_paralax" src="./ressources/maingui/ui/smoke.webp">
<img class="DPS_paralax" src="./ressources/maingui/ui/watelandsBlue2.webp">
<img class="DPS_paralax" src="./ressources/maingui/ui/watelandsBlue1.webp">
<div class="DPS_title">THE BLUE ZONE</div>
</div>
<div class="DPS_left"></div>
<div class="DPS_right"></div>
<div class="DPS_top"></div>
<div class="DPS_bottom"></div>
</div>
<script>
DPF_init();
</script>
<</if>>
<</widget>>
<<widget mainButtonsBorder>>
<div>
<<if _pass>>
<div onclick="accessSearchGame('A', ST.key)" class="button circular-button"><img class="icon1" src="ressources/icons/2J.webp"></div>
<div onclick="accessExploreGame('A', ST.key)" class="button circular-button"><img class="icon2" src="ressources/icons/2I.webp"></div>
<!-- div onclick="playPassage(`WA${ST.key}D`)" class="button circular-button"><img class="icon3" src="ressources/icons/2K.webp"></div -->
<div onclick="accessSpecialGame('wastelands', 'A', ST.key)" class="button circular-button"><img class="icon3" src="ressources/icons/2K.webp"></div>
<<else>>
<div onclick="appendNotReadyWarning()" class="button circular-button"><img class="icon1" src="ressources/icons/2J.webp"></div>
<div onclick="appendNotReadyWarning()" class="button circular-button"><img class="icon2" src="ressources/icons/2I.webp"></div>
<div onclick="appendNotReadyWarning()" class="button circular-button"><img class="icon3" src="ressources/icons/2K.webp"></div>
<</if>>
</div>
<</widget>>
<<widget mainButtonsGreen>>
<div>
<<if _pass>>
<div onclick="accessSearchGame('B', ST.key)" class="button circular-button"><img class="icon1" src="ressources/icons/2J.webp"></div>
<div onclick="accessExploreGame('B', ST.key)" class="button circular-button"><img class="icon2" src="ressources/icons/2I.webp"></div>
<!-- div onclick="playPassage(`WA${ST.key}D`)" class="button circular-button"><img class="icon3" src="ressources/icons/2K.webp"></div -->
<div onclick="accessSpecialGame('wastelands', 'B', ST.key)" class="button circular-button"><img class="icon3" src="ressources/icons/2K.webp"></div>
<<else>>
<div onclick="appendNotReadyWarning()" class="button circular-button"><img class="icon1" src="ressources/icons/2J.webp"></div>
<div onclick="appendNotReadyWarning()" class="button circular-button"><img class="icon2" src="ressources/icons/2I.webp"></div>
<div onclick="appendNotReadyWarning()" class="button circular-button"><img class="icon3" src="ressources/icons/2K.webp"></div>
<</if>>
</div>
<</widget>>
<<widget peacewoodMaster>>
<<set _key = Number(passageId.splice(0,2))>>
<<set _pass = $specpass[`TWOA${_key}`] is 1 || ndef $specpass[`TWOA${_key}`]>>
<<PEACEWOODMAP>>
<div class="container">
<<previousPeacewood>>
<div class="main-buttons-forest">
<<mainButtonsPeacewood>>
<<switch passageId>>
<<case '2A1'>>
<div class="button big-circular-button">
<div class="horizontal-line"></div>
<div class="half top-half" onclick="playPassage('4A')">
<img src="ressources/icons/2L.webp" alt="Top Image">
</div>
<div class="half bottom-half" onclick="playPassage('5A')">
<img src="ressources/icons/2M.webp" alt="Bottom Image">
</div>
</div>
<<case '2A2'>>
<div class="button big-circular-button" onclick="playPassage('2ACE')">
<img class="icon4" src="ressources/icons/2A3.webp" style="max-width: 70%;">
</div>
<<case '2A3'>>
<div class="button big-circular-button" onclick="FGF_enterFight('FFA')"> <!-- Tracer (20) -->
<div class="FIGHT_successRate" data-fightId="FFA">yo</div>
<img class="icon4" src="ressources/icons/13A3.webp">
</div>
<script>
FGF_checkFoSuccessIndicator();
</script>
<<case '2A4'>>
<div class="GSIS_mainCont GSIS_mainCont-GA" section="forest.sub.peacewood.sub.floor4"></div> <!-- AAT1 -->
<<case '2A5'>>
<div class="GSIS_mainCont GSIS_mainCont-GA" section="forest.sub.peacewood.sub.floor5"></div> <!-- AAL1 -->
<<case '2A6'>>
<div class="button big-circular-button" onclick="FGF_enterFight('FFB')"> <!-- D.va (300) -->
<div class="FIGHT_successRate" data-fightId="FFB">yo</div>
<img class="icon4" src="ressources/icons/13A3.webp">
</div>
<script>
FGF_checkFoSuccessIndicator();
</script>
<<case '2A7'>>
<div class="GSIS_mainCont GSIS_mainCont-GA" section="forest.sub.peacewood.sub.floor7"></div> <!-- AAT2 -->
<<case '2A8'>>
<div class="GSIS_mainCont GSIS_mainCont-GA" section="forest.sub.peacewood.sub.floor8"></div> <!-- AAL2 & DUA1 -->
<<case '2A9'>>
<div class="GSIS_mainCont GSIS_mainCont-GA" section="forest.sub.peacewood.sub.floor9"></div> <!-- AA3 -->
<<case '2A10'>>
<div class="button big-circular-button" onclick="FGF_enterFight('FFC')"> <!-- Lara Croft (3k) -->
<div class="FIGHT_successRate" data-fightId="FFC">yo</div>
<img class="icon4" src="ressources/icons/13A3.webp">
</div>
<script>
FGF_checkFoSuccessIndicator();
</script>
<<case '2A11'>>
<div class="GSIS_mainCont GSIS_mainCont-GA" section="forest.sub.peacewood.sub.floor11"></div> <!-- AAT4 -->
<<case '2A12'>>
<div class="GSIS_mainCont GSIS_mainCont-GA" section="forest.sub.peacewood.sub.floor12"></div> <!-- AAL4 -->
<<case '2A13'>>
<div class="button big-circular-button" onclick="FGF_enterFight('FFD')"> <!-- Chung Li (30k) -->
<div class="FIGHT_successRate" data-fightId="FFD">yo</div>
<img class="icon4" src="ressources/icons/13A3.webp">
</div>
<script>
FGF_checkFoSuccessIndicator();
</script>
<<case '2A14'>>
<div class="GSIS_mainCont GSIS_mainCont-GA" section="forest.sub.peacewood.sub.floor14"></div> <!-- AAT5 -->
<<case '2A15'>>
<div class="GSIS_mainCont GSIS_mainCont-GA" section="forest.sub.peacewood.sub.floor15"></div> <!-- AAL5 -->
<!-- <case '2A16'> -->
<!-- <case '2A17'> -->
<!-- <case '2A18'> -->
<!-- <case '2A19'> -->
<!-- <case '2A29'> -->
<!-- <case '2A21'> -->
<</switch>>
</div>
<<nextPeacewood>>
</div>
<script>
var passageEl = document.querySelector('.passage');
setBackground('ressources/backgrounds/YA.webm'); /* Border */
playAudio("music", "forestPeacewood");
SV.gui_interface.angelaButtonEnable = true;
SV.gui_interface.inventoryButtonEnable = true;
/* end button css */
var nextPassageExist = SugarCube.Story.has(`2A${ST.key + 1}`);
if (nextPassageExist === false) {
var styleEl = document.createElement('style');
styleEl.innerHTML = '#arrow-right:hover { background-color: red; }';
passageEl.appendChild(styleEl);
}
if (ST.key == 21) {
document.querySelector('#arrow-right').style.visibility = 'hidden';
}
/* floor seen tracker */
if (SV.specpass.lastFloorSeen_ForestPeaceWood < ST.key) {
SV.specpass.lastFloorSeen_ForestPeaceWood = ST.key;
}
function nextBloc() {
if (nextPassageExist === false) appendWipWarning();
else if (ST.pass) playPassage(`2A${ST.key + 1}`);
else appendNotReadyWarning();
}
function previousBloc() {
modVariable("add", "stat", "virus", 5);
ST.key == 1 ? playPassage('FOREST MAP') : playPassage(`2A${ST.key - 1}`);
}
</script>
<</widget>>
<<widget borderMaster>>
<<set _key = Number(passageId.splice(0,2))>>
<!-- <set _dangerlevel = 3 * _key> -->
<<set _pass = $specpass[`THREEA${_key}`] is 1 || ndef $specpass[`THREEA${_key}`]>>
<<set _isLast = _key == 13>>
<<BORDERMAP>>
<div class="container">
<<previousBorder>>
<div class="main-buttons-wastelands">
<<mainButtonsBorder>>
<<switch passageId>>
<<case '3A1'>> <!-- Scavenging -->
<div class="button big-circular-button" onclick="playPassage('6A')">
<img class="icon4" src="ressources/icons/3A8.webp">
</div>
<<case '3A2'>> <!-- Gabbie -->
<div class="button big-circular-button" onclick="playPassage('3AGE')">
<img class="icon4" src="ressources/icons/3A10.webp" style="max-width: 70%;">
</div>
<<case '3A3'>> <!-- Mad Dummy (1) -->
<div class="button big-circular-button" onclick="FGF_enterFight('FWA')">
<div class="FIGHT_successRate" data-fightId="FWA">yo</div>
<img class="icon4" src="ressources/icons/13A3.webp">
</div>
<script>
FGF_checkFoSuccessIndicator();
</script>
<<case '3A4'>> <!-- GAT1 -->
<div class="GSIS_mainCont GSIS_mainCont-GA" section="wastelands.sub.border.sub.floor4"></div>
<<case '3A5'>> <!-- GAL1 -->
<div class="GSIS_mainCont GSIS_mainCont-GA" section="wastelands.sub.border.sub.floor5"></div>
<<case '3A6'>> <!-- Mad Trainee (100) -->
<div class="button big-circular-button" onclick="FGF_enterFight('FWB')">
<div class="FIGHT_successRate" data-fightId="FWB">yo</div>
<img class="icon4" src="ressources/icons/13A3.webp">
</div>
<script>
FGF_checkFoSuccessIndicator();
</script>
<<case '3A7'>> <!-- GAT2 -->
<div class="GSIS_mainCont GSIS_mainCont-GA" section="wastelands.sub.border.sub.floor7"></div>
<<case '3A8'>> <!-- GAL2 -->
<div class="GSIS_mainCont GSIS_mainCont-GA" section="wastelands.sub.border.sub.floor8"></div>
<<case '3A9'>> <!-- Mad Fighter (1000) -->
<div class="button big-circular-button" onclick="FGF_enterFight('FWC')">
<div class="FIGHT_successRate" data-fightId="FWC">yo</div>
<img class="icon4" src="ressources/icons/13A3.webp">
</div>
<script>
FGF_checkFoSuccessIndicator();
</script>
<<case '3A10'>> <!-- GA3 -->
<div class="GSIS_mainCont GSIS_mainCont-GA" section="wastelands.sub.border.sub.floor10"></div>
<<case '3A11'>> <!-- GAT4 -->
<div class="GSIS_mainCont GSIS_mainCont-GA" section="wastelands.sub.border.sub.floor11"></div>
<<case '3A12'>> <!-- GAL4 -->
<div class="GSIS_mainCont GSIS_mainCont-GA" section="wastelands.sub.border.sub.floor12"></div>
<<case '3A13'>>
<div class="GSIS_mainCont GSIS_mainCont-GA" section="wastelands.sub.border.sub.floor13"></div>
<div class="button big-circular-button" onclick="FGF_enterFight('FBA')">
<div class="FIGHT_successRate" data-fightId="FBA">yo</div>
<img class="icon4" src="ressources/icons/13A3.webp">
</div>
<script>
FGF_checkFoSuccessIndicator();
</script>
<!-- style>
#arrow-right:active {
background-color: red; /* end button */
}
</style -->
<</switch>>
</div>
<<nextBorder _isLast>>
</div>
<div class="image-container">
<img src="ressources/icons/3A7.webp">
<div>0 %</div>
</div>
<script>
var passageEl = document.querySelector('.passage');
setBackground('ressources/backgrounds/WA.webm'); /* Border */
playAudio("music", "wastelandsTheborder");
SV.gui_interface.angelaButtonEnable = true;
SV.gui_interface.inventoryButtonEnable = true;
/* end button css */
var nextPassageExist = SugarCube.Story.has(`3A${ST.key + 1}`);
if (nextPassageExist === false) {
var styleEl = document.createElement('style');
styleEl.innerHTML = '#arrow-right:hover { background-color: red; }';
passageEl.appendChild(styleEl);
}
/* floor seen tracker */
if (SV.specpass.lastFloorSeen_WastelandsBorder < ST.key) {
SV.specpass.lastFloorSeen_WastelandsBorder = ST.key;
}
/* Ambush */
var baseAmbushChance = 3; /* 3% */
var firstBlocImunity = firstBlocImunity ?? true; /* true if undefined */
var fightId = "";
if (ST.key >= 1 && ST.key <= 6) fightId = "FW0"; /* MAD Dummy */
else if (ST.key >= 7 && ST.key <= 9) fightId = "FWB"; /* MAD Trainee */
else if (ST.key >= 10) fightId = "FWC"; /* MAD Fighter */
if (SV.wastelandsAmbushChance === undefined) SV.wastelandsAmbushChance = baseAmbushChance;
document.querySelector('.image-container > div').innerHTML = `${SV.wastelandsAmbushChance} %`;
(() => {
if (firstBlocImunity === true) { /* cant be ambushed on the first bloc */
firstBlocImunity = false;
return;
}
if (random(1,100) > SV.wastelandsAmbushChance) return;
if (SV.prologue.isExploring === true) return;
SV.wastelandsAmbushChance = baseAmbushChance; /* reset ambush chance */
firstBlocImunity = true; /* reset imunity */
FGF_enterFight(fightId, {winReturnIsPrev: true, lossReturnIsPrev: true});
})();
function nextBloc() {
if (ST.isLast) { /* last passage (13) */
const sceneId = document.querySelector('.DPS_discoveryPortalCont').getAttribute('sceneId');
const sceneDyn = SV.scenes.list[sceneId];
const sceneSta = gameData.scenes.list[sceneId];
if (!sceneId || !sceneDyn || !sceneSta) throw new Error('invalid sceneId, DPS_discoveryPortalCont, nextBloc()');
if (ST.pass) {
if (sceneDyn.seen !== true) playPassage(sceneId);
else playPassage(sceneSta.winReturnPassage);
}
else appendNotReadyWarning();
}
else if (nextPassageExist === false) appendWipWarning();
else if (ST.pass) {
SV.wastelandsAmbushChance += 3; /* +3% at each move */
playPassage(`3A${ST.key + 1}`);
}
else appendNotReadyWarning();
}
function previousBloc() {
if (ST.key == 1) {
SV.wastelandsAmbushChance = baseAmbushChance; /* reset ambush chance */
firstBlocImunity = true; /* reset imunity */
playPassage('WASTELAND MAP');
}
else playPassage(`3A${ST.key - 1}`);
}
</script>
<</widget>>
<<widget greenMaster>>
<<set _key = Number(passageId.splice(0,2))>>
<!-- <set _dangerlevel = 3 * _key> -->
<<set _pass = $specpass[`THREEB${_key}`] is 1 || ndef $specpass[`THREEB${_key}`]>>
<<set _isLast = _key == 13>>
<<GREENMAP>>
<div class="container">
<<previousBorder>>
<div class="main-buttons-wastelands">
<<mainButtonsGreen>>
<<switch passageId>>
<<case '3B1'>> <!-- Scavenging 2-->
<div class="button big-circular-button" onclick="playPassage('6C')">
<img class="icon4" src="ressources/icons/3A8.webp">
</div>
<<case '3B2'>> <!-- Gabbie Camp 2-->
<div class="button big-circular-button" onclick="playPassage('3BGE')">
<img class="icon4" src="ressources/icons/3A10.webp" style="max-width: 70%;">
</div>
<<case '3B3'>> <!-- Mad Fighter (1) -->
<div class="button big-circular-button" onclick="FGF_enterFight('FWD')">
<div class="FIGHT_successRate" data-fightId="FWD">yo</div>
<img class="icon4" src="ressources/icons/13A3.webp">
</div>
<script>
FGF_checkFoSuccessIndicator();
</script>
<</switch>>
</div>
<<nextGreen _isLast>>
</div>
<div class="image-container">
<img src="ressources/icons/3A7.webp">
<div>0 %</div>
</div>
/* ¯\_(ツ)_/¯ */
<script>
var passageEl = document.querySelector('.passage');
setBackground('ressources/backgrounds/WB.webm'); /* Green */
playAudio("music", "wastelandsGreenzone");
SV.gui_interface.angelaButtonEnable = true;
SV.gui_interface.inventoryButtonEnable = true;
/* end button css */
var nextPassageExist = SugarCube.Story.has(`3B${ST.key + 1}`);
if (nextPassageExist === false) {
var styleEl = document.createElement('style');
styleEl.innerHTML = '#arrow-right:hover { background-color: red; }';
passageEl.appendChild(styleEl);
}
/* floor seen tracker */
if (SV.specpass.lastFloorSeen_WastelandsGreen < ST.key) {
SV.specpass.lastFloorSeen_WastelandsGreen = ST.key;
}
/* Ambush */
var baseAmbushChance = 3; /* 3% */
var firstBlocImunity = firstBlocImunity ?? true; /* true if undefined */
var fightId = "";
if (ST.key >= 1 && ST.key <= 6) fightId = "FWC"; /* MAD Fighter */
else if (ST.key >= 7 && ST.key <= 9) fightId = "FWD"; /* MAD Warrior */
else if (ST.key >= 10) fightId = "FWE"; /* MAD Knight */
if (SV.wastelandsAmbushChance === undefined) SV.wastelandsAmbushChance = baseAmbushChance;
document.querySelector('.image-container > div').innerHTML = `${SV.wastelandsAmbushChance} %`;
(() => {
if (firstBlocImunity === true) { /* cant be ambushed on the first bloc */
firstBlocImunity = false;
return;
}
if (random(1,100) > SV.wastelandsAmbushChance) return;
if (SV.prologue.isExploring === true) return;
SV.wastelandsAmbushChance = baseAmbushChance; /* reset ambush chance */
firstBlocImunity = true; /* reset imunity */
FGF_enterFight(fightId, {winReturnIsPrev: true, lossReturnIsPrev: true});
})();
function nextBloc() {
if (ST.isLast) { /* last passage (13) */
if (ST.pass) {
} else appendNotReadyWarning();
}
else if (nextPassageExist === false) appendWipWarning();
else if (ST.pass) {
SV.wastelandsAmbushChance += 3; /* +3% at each move */
playPassage(`3B${ST.key + 1}`);
}
else appendNotReadyWarning();
}
function previousBloc() {
if (ST.key == 1) {
SV.wastelandsAmbushChance = baseAmbushChance; /* reset ambush chance */
firstBlocImunity = true; /* reset imunity */
playPassage('WASTELAND MAP');
}
else playPassage(`3B${ST.key - 1}`);
}
</script>
<</widget>>
<<widget roomStyle>>
<style>
body {
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
background-position: center;
background-size: cover;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
width: 100%;
max-width: 100%;
margin: 0;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
font-family: 'Roboto', sans-serif;
}
.centerbox {
z-index: 0;
position: fixed;
width: 100%;
height: 100%;
top: 0;
}
.title {
font-weight: bold;
margin-bottom: 20px;
margin-top: 2vw;
display: block;
width: 45%;
display: inline-block;
}
.title:first-child {
margin-top: 3vw;
}
.close-button {
position: absolute;
top: -50px;
left: -50px;
cursor: pointer;
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
border-radius: 50%;
z-index: 2;
font-size: 48px;
transition: transform 0.3s ease, background-color 0.3s ease;
}
.close-button:hover {
transform: scale(1.1);
background-color: gray;
}
.infoopen {
width: 42vw;
height: 70vh;
position: absolute;
transform: translate(-50%, -50%);
z-index: 2000;
padding: 0.5vw;
border-radius: 2vw;
display: none;
opacity: 0;
transform: scale(0.5);
transform-origin: top left;
transition: all 0.3s ease;
left: 35%;
top: 13%;
}
.info-button {
position: absolute;
width: 7vmin;
height: 7vmin;
border-radius: 50%;
display: flex;
top: 0;
margin-top: 3vh;
margin-left: 27vh;
align-items: center;
justify-content: center;
cursor: pointer;
transition: transform 0.3s ease, background-color 0.3s ease; /* Add smooth transitions */
text-align: center;
color: #ede8ed;
}
.info-button:hover {
transform: scale(1.1); /* Apply scale on hover */
background-color: gray;
}
.info-button img {
max-width: 80%;
max-height: 80%;
}
.informations_info {
margin: 4vh;
font-size: 2vh;
}
.girlicon {
height: 0;
}
.girlicon img {
width: 5vw;
height: 5vw;
transform: translate(150%, -250%);
border-radius: 5vw;
outline: 1vmin solid #2e6ca4;
pointer-events: none;
}
.iconcontainer {
position: absolute;
margin-top: auto;
margin: 4vmin;
bottom: 0;
}
.column {
width: 100%;
text-align: center;
}
.bgvideo {
z-index: 0;
position: fixed;
width: 100%;
}
.imgvid1 {
position: absolute;
pointer-events: none;
width: 100%;
background-size: cover;
}
.button {
display: inline-block;
background-color: #0000002e;
color: white;
padding: 8px;
cursor: pointer;
margin: 0 2px;
width: calc(20% - 4px);
border: 0.2vw solid white;
border-radius: 0.5vw;
text-align: center;
transition: transform 0.3s ease, background-color 0.3s ease;
}
.button:hover {
background-color: gray;
}
.button.disabled {
background-color: grey;
cursor: not-allowed;
}
.button-container {
display: flex;
flex-direction: column;
align-items: flex-end;
justify-content: center;
margin: 20px;
flex-grow: 1;
margin-top: 16vh;
}
.circle-button {
width: 20vmin;
height: 20vmin;
border-radius: 50%;
margin: 2vmin;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: transform 0.3s ease, background-color 0.3s ease;
text-align: center;
}
.circle-button:hover {
transform: scale(1.1);
background-color: gray;
}
.circle-button img {
max-width: 80%;
max-height: 80%;
}
</style>\
<</widget>><<widget SLEEP>>
<<set _link = `SA${random(1,10)}`>>
<<goto _link>>
<</widget>>
<<widget MASTURBATE>>
<<if $stats.virus lte 24>>
<<switch random(1,4)>>
<<case 1>>
<<goto "SB1">>
<<case 2>>
<<goto "SB2">>
<<case 3>>
<<goto "SB3">>
<<case 4>>
<<goto "SB4">>
<</switch>>
<</if>>
<<if $stats.virus gte 25 and $stats.virus lte 49>>
<<switch random(1,4)>>
<<case 1>>
<<goto "SB5">>
<<case 2>>
<<goto "SB6">>
<<case 3>>
<<goto "SB7">>
<<case 4>>
<<goto "SB8">>
<</switch>>
<</if>>
<<if $stats.virus gte 50 and $stats.virus lte 74>>
<<switch random(1,4)>>
<<case 1>>
<<goto "SB9">>
<<case 2>>
<<goto "SB10">>
<<case 3>>
<<goto "SB11">>
<<case 4>>
<<goto "SB12">>
<</switch>>
<</if>>
<<if $stats.virus gte 75>>
<<switch random(1,4)>>
<<case 1>>
<<goto "SB13">>
<<case 2>>
<<goto "SB14">>
<<case 3>>
<<goto "SB15">>
<<case 4>>
<<goto "SB16">>
<</switch>>
<</if>>
<</widget>>
<<widget WATCH>>
<<switch random(1,8)>>
<<case 1>>
<<goto "SW1">>
<<case 2>>
<<goto "SW2">>
<<case 3>>
<<goto "SW3">>
<<case 4>>
<<goto "SW4">>
<<case 5>>
<<goto "SW5">>
<<case 6>>
<<goto "SW6">>
<<case 7>>
<<goto "SW7">>
<<case 8>>
<<goto "SW8">>
<</switch>>
<</widget>>
<<widget FAINT>>
<<set _link = `SS${random(1,4)}`>>
<<goto _link>>
<</widget>>
<<widget STARVE>>
<<set _link = `SH${random(1,4)}`>>
<<goto _link>>
<</widget>>
<<widget VIRUS>>
<<set _link = `SV${random(1,3)}`>>
<<goto _link>>
<</widget>>
<<widget FISH>>
<<set _fishrandomizer to random(1, 1000)>>
<<set _fishes to gameData.fishing[passageId]>>
<<for _i, _fish range _fishes>>
<<if _fishrandomizer gte _fish.prob>>
<<set $fish = _fish.type>>
<<goto "5B">>
<<break>>
<</if>>
<</for>>
<</widget>>
<<widget TREES>>
<<for _i = 1; _i <= 7; _i++>>
<<set _tree = ST[`tree${ST.i}`] = {}>>
<<set _tree.id = `tree${ST.i}`>>
<<set _tree.dmg = 0>>
<<set _tree.status = 0>>
<<set _j = random(1,7)>>
<<if _j < 5>>
<<set _tree.size = 'small'>>
<<set _tree.class = `tree tree${_i*3-2}`>>
<<elseif _j < 7>>
<<set _tree.size = 'medium'>>
<<set _tree.class = `tree tree${_i*3-1}`>>
<<else>>
<<set _tree.size = 'large'>>
<<set _tree.class = `tree tree${_i*3}`>>
<</if>>
<</for>>
<</widget>>
<<widget WOODCUTTING>>
<<set _tree = _trees[_args[0].size]>>
<<if _args[0].dmg < _tree.hp[2]>>
<<set _args[0].dmg += _axepower>>
<<run playAudio("sfx", "4A.mp3")>>
<<if _args[0].dmg >= _tree.hp[0] && _args[0].status < 1>>
<<run addWood(_tree.wood[0])>>
<</if>>
<<if _args[0].dmg >= _tree.hp[1] && _args[0].status < 2>>
<<run addWood(_tree.wood[1])>>
<</if>>
<<if _args[0].dmg >= _tree.hp[2] && _args[0].status < 3>>
<<run addWood(_tree.wood[2])>>
<</if>>
<<if _args[0].dmg >= _tree.hp[2]>>
<<if _args[0].status < 3>>
<<set _args[0].status = 3>>
<<set _endgame++>>
<<run document.getElementById(_args[0].id).src=`ressources/icons/${_tree.img[3]}.webp`>>
<<run playAudio("sfx", "4B.mp3")>>
<</if>>
<<elseif _args[0].dmg >= _tree.hp[1]>>
<<if _args[0].status < 2>>
<<set _args[0].status = 2>>
<<run document.getElementById(_args[0].id).src=`ressources/icons/${_tree.img[2]}.webp`>>
<<run playAudio("sfx", "4B.mp3")>>
<</if>>
<<elseif _args[0].dmg >= _tree.hp[0]>>
<<if _args[0].status < 1>>
<<set _args[0].status = 1>>
<<run document.getElementById(_args[0].id).src=`ressources/icons/${_tree.img[1]}.webp`>>
<<run playAudio("sfx", "4B.mp3")>>
<</if>>
<</if>>
<</if>>
<</widget>>
<<widget TUTORIALMENU>>
<div class="vertical-line">
<div class="side-button" onclick="showMap()">
<img class="sbimg" src="ressources/maingui/ui/description.webp" alt="Image 1">
<p class="button-text">Description</p>
</div>
<div class="side-button" onclick="showUIHelp()">
<img class="sbimg" src="ressources/maingui/ui/ui-eye.webp" alt="Image 1">
<p class="button-text">UI Help</p>
</div>
<div class="side-button" onclick="showMechanism()">
<img class="sbimg" src="ressources/maingui/ui/mechanism.webp" alt="Image 1">
<p class="button-text">Mechanism</p>
</div>
<div class="side-button" onclick="showGoals()">
<img class="sbimg" src="ressources/maingui/ui/exit.webp" alt="Image 1">
<p class="button-text">Goals</p>
</div>
</div>
<</widget>>
<<widget PEACEWOODMAP>>
<div id="peacewood-container">
<div class="peacewood-line"></div>
<div class="peacewood-circle" loc="2A1">
<img src="ressources/icons/2B.webp">
</div>
<div class="peacewood-circle" loc="2A2">
<img src="ressources/icons/3A3.webp">
</div>
<div class="peacewood-circle" loc="2A3">
<img src="ressources/icons/2D.webp">
</div>
<div class="peacewood-circle" loc="2A4">
<img src="ressources/maingui/attributes/trust_icon.webp" id="trulus">
</div>
<div class="peacewood-circle" loc="2A5">
<img src="ressources/maingui/attributes/lust_icon.webp" id="trulus">
</div>
<div class="peacewood-circle" loc="2A6">
<img src="ressources/icons/2D.webp">
</div>
<div class="peacewood-circle" loc="2A7">
<img src="ressources/maingui/attributes/trust_icon.webp" id="trulus">
</div>
<div class="peacewood-circle" loc="2A8">
<img src="ressources/maingui/attributes/lust_icon.webp" id="trulus">
</div>
<div class="peacewood-circle" loc="2A9">
<img src="ressources/icons/2E.webp">
</div>
<div class="peacewood-circle" loc="2A10">
<img src="ressources/icons/2D.webp">
</div>
<div class="peacewood-circle" loc="2A11">
<img src="ressources/maingui/attributes/trust_icon.webp" id="trulus">
</div>
<div class="peacewood-circle" loc="2A12">
<img src="ressources/maingui/attributes/lust_icon.webp" id="trulus">
</div>
<div class="peacewood-circle" loc="2A13">
<img src="ressources/icons/2D.webp">
</div>
<div class="peacewood-circle" loc="2A14">
<img src="ressources/maingui/attributes/trust_icon.webp" id="trulus">
</div>
<div class="peacewood-circle" loc="2A15">
<img src="ressources/maingui/attributes/lust_icon.webp" id="trulus">
</div>
</div>
<!--
.passage { /* YC.webm - green lightly shat blue */
--floor-color: #121821;
--floor-color2: #191E2A;
--floor-color-filter: brightness(0) saturate(100%) invert(8%) sepia(23%) saturate(1011%) hue-rotate(185deg) brightness(98%) contrast(92%);
}
.passage { /* YB.webm - pink color */
--floor-color: #B64F7C;
--floor-color2: #DF7DAB;
--floor-color-filter: brightness(0) saturate(100%) invert(78%) sepia(12%) saturate(5019%) hue-rotate(289deg) brightness(96%) contrast(82%);
}
-->
<style>
.passage { /* YA.webm */
--floor-color: #2ECC71;
--floor-color2: #2ecc71;
--floor-color-filter: invert(63%) sepia(77%) saturate(466%) hue-rotate(91deg) brightness(94%) contrast(79%);
}
body {
/* font-size: 0.9vw; */
overflow: hidden;
}
#story {
max-height: 100vh;
}
#passages {
width: 100%;
max-width: 100%;
margin: 0;
height: 100vh;
}
.passage {
position: relative;
}
.button {
position: relative;
cursor: pointer;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); /* Adjusted opacity */
}
.container {
display: flex;
align-items: center;
justify-content: space-around;
max-width: 100vw;
margin: auto;
height: 90vh;
}
.main-buttons-forest {
display: flex;
align-items: center
}
/* .rectangular-button {
border: 0.7vh solid #2ecc71;
} */
/* .chevron-arrow-left {
max-height: 60%;
filter: invert(63%) sepia(77%) saturate(466%) hue-rotate(91deg) brightness(94%) contrast(79%);
transition: transform 0.3s ease-out;
} */
/* .chevron-arrow-right {
max-height: 60%;
filter: invert(63%) sepia(77%) saturate(466%) hue-rotate(91deg) brightness(94%) contrast(79%);
transition: transform 0.3s ease-out;
} */
/* .dropdown-rectangle {
color: #2ecc71;
border: 0.7vh solid #2ecc71;
} */
/* .circular-button {
border: 0.7vh solid #2ecc71;
} */
/* .big-circular-button {
border: 0.7vh solid #2ecc71;
} */
/* b {
margin-top: 10%;
} */
/* .icon1 {
max-width: 60%;
filter: brightness(0) saturate(100%) invert(64%) sepia(57%) saturate(602%) hue-rotate(92deg) brightness(95%) contrast(79%);
}
.icon2 {
max-width: 65%;
filter: brightness(0) saturate(100%) invert(64%) sepia(57%) saturate(602%) hue-rotate(92deg) brightness(95%) contrast(79%);
}
.icon3 {
max-width: 70%;
filter: brightness(0) saturate(100%) invert(64%) sepia(57%) saturate(602%) hue-rotate(92deg) brightness(95%) contrast(79%);
}
.icon4 {
max-width: 60%;
}
.icon5 {
max-width: 75%;
filter: brightness(0) saturate(100%) invert(64%) sepia(57%) saturate(602%) hue-rotate(92deg) brightness(95%) contrast(79%);
} */
</style>
<script>
(() => {
const circles = document.getElementById('peacewood-container').querySelectorAll('.peacewood-circle');
for (circle of circles) {
if (circle.getAttribute('loc') === passageId) {
circle.classList.add('peacewood-large');
break;
} else {
circle.classList.add('peacewood-active');
}
}
})();
</script>
<</widget>>
<<widget BORDERMAP>>
<div id="border-container">
<div class="border-line"></div>
<div class="border-circle" loc="3A1">
<img src="ressources/icons/3A2.webp">
</div>
<div class="border-circle" loc="3A2">
<img src="ressources/icons/3A3.webp">
</div>
<div class="border-circle" loc="3A3">
<img src="ressources/icons/2D.webp">
</div>
<div class="border-circle" loc="3A4">
<img src="ressources/maingui/attributes/trust_icon.webp" id="trulus">
</div>
<div class="border-circle" loc="3A5">
<img src="ressources/maingui/attributes/lust_icon.webp" id="trulus">
</div>
<div class="border-circle" loc="3A6">
<img src="ressources/icons/2D.webp">
</div>
<div class="border-circle" loc="3A7">
<img src="ressources/maingui/attributes/trust_icon.webp" id="trulus">
</div>
<div class="border-circle" loc="3A8">
<img src="ressources/maingui/attributes/lust_icon.webp" id="trulus">
</div>
<div class="border-circle" loc="3A9">
<img src="ressources/icons/2D.webp">
</div>
<div class="border-circle" loc="3A10">
<img src="ressources/icons/2E.webp">
</div>
<div class="border-circle" loc="3A11">
<img src="ressources/maingui/attributes/trust_icon.webp" id="trulus">
</div>
<div class="border-circle" loc="3A12">
<img src="ressources/maingui/attributes/lust_icon.webp" id="trulus">
</div>
<div class="border-circle" loc="3A13">
<img src="ressources/icons/2D.webp">
</div>
</div>
<!--
.passage { /* WA.webm - orange burnt */
--floor-color: #DF6D3F;
--floor-color2: #BF672A;
--floor-color-filter: brightness(0) saturate(100%) invert(43%) sepia(85%) saturate(466%) hue-rotate(342deg) brightness(91%) contrast(87%);
}
.passage { /* WB.webm - green dark */
--floor-color: #111313;
--floor-color2: #121512;
--floor-color-filter: brightness(0) saturate(100%) invert(5%) sepia(5%) saturate(1901%) hue-rotate(71deg) brightness(99%) contrast(93%);
}
.passage { /* WC.webm - blue dark */
--floor-color: #7DB8D8;
--floor-color2: #97C7EA;
--floor-color-filter: brightness(0) saturate(100%) invert(73%) sepia(49%) saturate(267%) hue-rotate(166deg) brightness(99%) contrast(86%);
}
-->
<style>
/* .passage {
--floor-color: red;
--floor-color2: #e9693a;
--floor-color-filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
} */
.passage { /* WA.webm - orange burnt */
--floor-color: #DF6D3F;
--floor-color2: #BF672A;
--floor-color-filter: brightness(0) saturate(100%) invert(43%) sepia(85%) saturate(466%) hue-rotate(342deg) brightness(91%) contrast(87%);
}
body {
/* font-size: 0.9vw; */
overflow: hidden;
}
#story {
max-height: 100vh;
}
#passages {
width: 100%;
max-width: 100%;
margin: 0;
height: 100vh;
}
.passage {
position: relative;
}
/* b {
margin-top: 10%;
} */
.container {
display: flex;
align-items: center;
justify-content: space-around;
max-width: 100vw;
margin: auto;
height: 90vh;
}
.main-buttons-wastelands {
display: flex;
align-items: center
}
.button {
position: relative;
cursor: pointer;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
/* .rectangular-button {
border: 0.7vh solid red;
} */
/* .chevron-arrow-left {
max-height: 60%;
filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
transition: transform 0.3s ease-out;
} */
/* .chevron-arrow-right {
max-height: 60%;
filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
transition: transform 0.3s ease-out;
} */
/* .dropdown-rectangle {
color: #df6d3f;
border: 0.7vh solid red;
} */
/* .circular-button {
border: 0.7vh solid red;
} */
/* .big-circular-button {
border: 0.7vh solid red;
} */
/* .icon1 {
max-width: 70%;
filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
} */
/* .icon2 {
max-width: 70%;
filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
} */
/* .icon3 {
max-width: 70%;
filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
} */
.icon4 {
max-width: 60%;
}
.icon5 {
max-width: 70%;
filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
}
</style>
<script>
(() => {
const circles = document.getElementById('border-container').querySelectorAll('.border-circle');
for (circle of circles) {
if (circle.getAttribute('loc') === passageId) {
circle.classList.add('border-large');
break;
} else {
circle.classList.add('border-active');
}
}
})();
</script>
<</widget>>
<<widget GREENMAP>>
<div id="border-container">
<div class="border-line"></div>
<div class="border-circle" loc="3B1">
<img src="ressources/icons/3A2.webp">
</div>
<div class="border-circle" loc="3B2">
<img src="ressources/icons/3A3.webp">
</div>
<div class="border-circle" loc="3B3">
<img src="ressources/icons/2D.webp">
</div>
<div class="border-circle" loc="3B4">
<img src="ressources/maingui/attributes/trust_icon.webp" id="trulus">
</div>
<div class="border-circle" loc="3B5">
<img src="ressources/maingui/attributes/lust_icon.webp" id="trulus">
</div>
<div class="border-circle" loc="3B6">
<img src="ressources/icons/2D.webp">
</div>
<div class="border-circle" loc="3B7">
<img src="ressources/maingui/attributes/trust_icon.webp" id="trulus">
</div>
<div class="border-circle" loc="3B8">
<img src="ressources/maingui/attributes/lust_icon.webp" id="trulus">
</div>
<div class="border-circle" loc="3B9">
<img src="ressources/icons/2D.webp">
</div>
<div class="border-circle" loc="3B10">
<img src="ressources/icons/2E.webp">
</div>
<div class="border-circle" loc="3B11">
<img src="ressources/maingui/attributes/trust_icon.webp" id="trulus">
</div>
<div class="border-circle" loc="3B12">
<img src="ressources/maingui/attributes/lust_icon.webp" id="trulus">
</div>
<div class="border-circle" loc="3B13">
<img src="ressources/icons/2D.webp">
</div>
</div>
<!--
.passage { /* WA.webm - orange burnt */
--floor-color: #DF6D3F;
--floor-color2: #BF672A;
--floor-color-filter: brightness(0) saturate(100%) invert(43%) sepia(85%) saturate(466%) hue-rotate(342deg) brightness(91%) contrast(87%);
}
.passage { /* WB.webm - green dark */
--floor-color: #111313;
--floor-color2: #121512;
--floor-color-filter: brightness(0) saturate(100%) invert(5%) sepia(5%) saturate(1901%) hue-rotate(71deg) brightness(99%) contrast(93%);
}
.passage { /* WC.webm - blue dark */
--floor-color: #7DB8D8;
--floor-color2: #97C7EA;
--floor-color-filter: brightness(0) saturate(100%) invert(73%) sepia(49%) saturate(267%) hue-rotate(166deg) brightness(99%) contrast(86%);
}
-->
<style>
/* .passage {
--floor-color: red;
--floor-color2: #e9693a;
--floor-color-filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
} */
.passage { /* WB.webm - green dark */
--floor-color: #111313;
--floor-color2: #121512;
--floor-color-filter: brightness(0) saturate(100%) invert(5%) sepia(5%) saturate(1901%) hue-rotate(71deg) brightness(99%) contrast(93%);
}
body {
/* font-size: 0.9vw; */
overflow: hidden;
}
#story {
max-height: 100vh;
}
#passages {
width: 100%;
max-width: 100%;
margin: 0;
height: 100vh;
}
.passage {
position: relative;
}
/* b {
margin-top: 10%;
} */
.container {
display: flex;
align-items: center;
justify-content: space-around;
max-width: 100vw;
margin: auto;
height: 90vh;
}
.main-buttons-wastelands {
display: flex;
align-items: center
}
.button {
position: relative;
cursor: pointer;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
/* .rectangular-button {
border: 0.7vh solid red;
} */
/* .chevron-arrow-left {
max-height: 60%;
filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
transition: transform 0.3s ease-out;
} */
/* .chevron-arrow-right {
max-height: 60%;
filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
transition: transform 0.3s ease-out;
} */
/* .dropdown-rectangle {
color: #df6d3f;
border: 0.7vh solid red;
} */
/* .circular-button {
border: 0.7vh solid red;
} */
/* .big-circular-button {
border: 0.7vh solid red;
} */
/* .icon1 {
max-width: 70%;
filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
} */
/* .icon2 {
max-width: 70%;
filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
} */
/* .icon3 {
max-width: 70%;
filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
} */
.icon4 {
max-width: 60%;
}
.icon5 {
max-width: 70%;
filter: invert(60%) sepia(67%) saturate(2729%) hue-rotate(335deg) brightness(93%) contrast(87%);
}
</style>
<script>
(() => {
const circles = document.getElementById('border-container').querySelectorAll('.border-circle');
for (circle of circles) {
if (circle.getAttribute('loc') === passageId) {
circle.classList.add('border-large');
break;
} else {
circle.classList.add('border-active');
}
}
})();
</script>
<</widget>><<widget SAY container>>
<<switch _args[0]>>
<<case undefined>>
<div class="DIAS_message centered">
<div class="DIAS_text">
_contents
</div>
</div>
<<case 'Image'>>
<div class="DIAS_message centered">
<img class="DIAS_image clickable-media" @src="`ressources/scenes/${ST.contents.trim()}.webp`">
</div>
<<case 'Video'>>
<div class="DIAS_message centered">
<video class="DIAS_video clickable-media" preload="metadata">
<source @src="`ressources/scenes/${ST.contents.trim()}.webm`" type="video/webm">
Your browser does not support the video tag.
</video>
</div>
<<case 'Mc'>>
<div class="DIAS_message right">
<img character="mc" class="DIAS_avatar">
<div class="DIAS_text">
<name>$characters.mc.name</name>
_contents
</div>
</div>
<<case 'Cherie'>>
<div class="DIAS_message left">
<img character="cherie" class="DIAS_avatar">
<div class="DIAS_text">
<name>$characters.cherie.name</name>
_contents
</div>
</div>
<<case 'Elfie'>>
<div class="DIAS_message left">
<img character="elfie" class="DIAS_avatar">
<div class="DIAS_text">
<name>$characters.elfie.name</name>
_contents
</div>
</div>
<<case 'Lana'>>
<div class="DIAS_message left">
<img character="lana" class="DIAS_avatar">
<div class="DIAS_text">
<name>$characters.lana.name</name>
_contents
</div>
</div>
<<case 'Mad Dummy'>>
<div class="DIAS_message left">
<img character="mad_dummy" class="DIAS_avatar">
<div class="DIAS_text">
<name>_args[0]</name>
_contents
</div>
</div>
<<case 'Mysterious woman'>>
<div class="DIAS_message left">
<img character="gabbie" class="DIAS_avatar">
<div class="DIAS_text">
<name>_args[0]</name>
_contents
</div>
</div>
<<case 'Gabbie'>>
<div class="DIAS_message left">
<img character="gabbie" class="DIAS_avatar">
<div class="DIAS_text">
<name>_args[0]</name>
_contents
</div>
</div>
<<case 'Angela'>>
<div class="DIAS_message left">
<img character="angela" class="DIAS_avatar">
<div class="DIAS_text">
<name>_args[0]</name>
_contents
</div>
</div>
<<case 'D.Va'>>
<div class="DIAS_message left">
<img src="ressources/icons/SS1.webp" class="DIAS_avatar">
<div class="DIAS_text">
<name>_args[0]</name>
_contents
</div>
</div>
<<case 'Chun-li'>>
<div class="DIAS_message left">
<img src="ressources/icons/SS2.webp" class="DIAS_avatar">
<div class="DIAS_text">
<name>_args[0]</name>
_contents
</div>
</div>
<<case 'Cammy'>>
<div class="DIAS_message left">
<img src="ressources/icons/SS2.webp" class="DIAS_avatar">
<div class="DIAS_text">
<name>_args[0]</name>
_contents
</div>
</div>
<<case 'Velma'>>
<div class="DIAS_message left">
<img src="ressources/icons/SS3.webp" class="DIAS_avatar">
<div class="DIAS_text">
<name>_args[0]</name>
_contents
</div>
</div>
<<case 'Helen'>>
<div class="DIAS_message left">
<img src="ressources/icons/SS4.webp" class="DIAS_avatar">
<div class="DIAS_text">
<name>_args[0]</name>
_contents
</div>
</div>
<<case 'Makima'>>
<div class="DIAS_message left">
<img src="ressources/icons/SV1.webp" class="DIAS_avatar">
<div class="DIAS_text">
<name>_args[0]</name>
_contents
</div>
</div>
<<case 'Miss Fortune'>>
<div class="DIAS_message left">
<img src="ressources/icons/SV2.webp" class="DIAS_avatar">
<div class="DIAS_text">
<name>_args[0]</name>
_contents
</div>
</div>
<<case 'Peach'>>
<div class="DIAS_message left">
<img src="ressources/icons/SV3.webp" class="DIAS_avatar">
<div class="DIAS_text">
<name>_args[0]</name>
_contents
</div>
</div>
<</switch>>
<</widget>><<nobr>>
<div class="mainCont" style="top: 0; width: 100%; height: 100%;">
<video muted loop id="videobg1" class="videoback" preload="auto" poster="ressources/backgrounds/BA_ss.webp">
<source src="ressources/backgrounds/BA.webm" type="video/webm">
Your browser does not support the video tag.
</video>
<video muted loop id="videobg2" class="videofront" preload="auto" poster="ressources/backgrounds/BA2_ss.webp">
<source src="ressources/backgrounds/BA2.webm" type="video/webm">
Your browser does not support the video tag.
</video>
<div class="text active" unclickable>
<div class="thetext">
<h1>Welcome</h1>
<p style="text-align: center;"><b>PLEASE NOTE: THIS GAME IS IN EARLY ALPHA</b></p><br>
<p>Dear adventurer, come warm yourself by the fire.</p><br>
<p>We,</p>
<p><img class="texticon3" src="ressources/maingui/logos/fapmat.webp">FapMat : Creator and Writer<br>
<img class="texticon3" src="ressources/maingui/logos/faplaf.webp">FapLaf : Designer and Coder<br>
<img class="texticon3" src="ressources/maingui/logos/fixfap.webp">FixFap : Lead Coder and R&D<br>
<img class="texticon3" src="ressources/maingui/logos/paqfap.webp">˚₊‧✩𝓒𝓻𝔂𝓼𝓽𝓪𝓵𝓵𝓲𝓪✩‧₊˚ : Community Driver
</p>
<p>Welcome you to this post-apocalyptic world that will become your epic tale.</p>
<p>This game is made to be played with just one hand, leaving the other free to...pet your cat.</p>
<p>We encourage you to join our <a class="textgroupicon" href="https://discord.gg/jEpjVQdXkX" target="_blank">Discord <img class="texticon2" src="ressources/maingui/medias/discord.webp"></a> community and help shape the dawn of The Fapocalypse.</p>
<p>Please support us on <a class="textgroupicon" href="https://subscribestar.adult/fap-online-creation" target="_blank">Subscribestar <img class="texticon2" src="ressources/maingui/medias/ko-fi.webp"></a> or <a class="textgroupicon" href="https://www.patreon.com/FOCGames807" target="_blank">Patreon <img class="texticon2" src="ressources/maingui/medias/patreon.webp"></a> so together we can mold this new world to your liking.</p>
<p style="text-align: center; padding-top: 1vh;">Press Enter <img class="texticon" src="ressources/icons/BA1.webp"> / Click <img class="texticon" src="ressources/icons/7B.webp"> to continue</p>
</div>
</div>
<div class="text">
<div class="thetext">
<h1>What to expect?</h1>
<p>If you're new here, let us summarize the essence of the game for you.</p>
<p>This is a survival game in which you are the last man standing on earth following the arrival of a powerful, sexual virus.</p>
<p>You are taken to a mysterious, remote island that serves as a confinement site where strange events and interesting encounters await you.</p>
<p>It will be your role to care for the women dear to you and build yourself a harem worthy of the name.</p>
<p>Also, it will be essential to defend yourself against and uncover the secrets surrounding this virus and the mysterious evil organization "the MAD."</p>
<p>Masturbation and prosperity, my friends!</p>
<p style="text-align: center; padding-top: 1vh;">Press Enter <img class="texticon" src="ressources/icons/BA1.webp"> / Click <img class="texticon" src="ressources/icons/7B.webp"> to continue</p>
</div>
</div>
<div class="text">
<div class="thetext">
<h1>Let's dive in</h1>
<p>It's now time for you to take the big leap and join the world of The Fapocalypse.</p>
<p>Get ready for a hardcore RPG with battles, items, attributes, epic locations and of course, relationships.</p>
<p>Before you start your adventure, would you like to play the prologue or skip it? (We recommend playing the prologue on your first playthrough so you don't miss context).</p>
<br>
<!-- div class="neon-button-container">
<div class="neon-button2 prevent-default"
onclick="playPassage('1SA')">
Skip the Prologue
</div>
<div class="neon-button2 prevent-default" onclick="playPassage('BB1')">
Play the Prologue
</div>
</div -->
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('1SA')"> Skip the Prologue </div>
<div class="DIAS_button" onclick="playPassage('BB1')"> Play the Prologue </div>
</div>
</div>
</div>
</div>
<</nobr>>\
<style>
#story {
overflow: hidden;
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
max-width: 100%;
font-size: 0.9vw;
line-height: 0.2vw;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
font-family: 'Roboto', sans-serif;
}
.videofront {
width: 100%;
height: 100%;
position: absolute;
object-fit: cover;
z-index: 3;
pointer-events: none;
}
.videoback {
width: 100%;
height: 100%;
position: absolute;
object-fit: cover;
z-index: 1;
transform: scale(1.3);
}
.mainCont {
position: relative;
display: flex;
align-content: center;
justify-content: center;
flex-wrap: wrap;
}
.text {
width: 60%;
top: 50%;
position: absolute;
transform: translate(-50%, -60%);
left: 50%;
z-index: 2;
background-color: rgba(0, 0, 0, 0.8);
transition: transform 1s ease-in-out, background 1s ease-in-out, color 1s ease-in-out, box-shadow 0.3s ease;
box-shadow: 0 0 0.25vw var(--neon-color), 0 0 0.5vw var(--neon-color), inset 0 0 0.25vw var(--neon-color), inset 0 0 0.5vw var(--neon-color);
/* margin: auto; */
border-radius: 1vw;
pointer-events: none;
font-size: 2.5vh;
}
.text:hover {
box-shadow:
0 0 0.5vw var(--neon-color-hover),
0 0 1.5vw var(--neon-color-hover),
inset 0 0 0.5vw var(--neon-color-hover),
inset 0 0 1.5vw var(--neon-color-hover);
background-color: rgba(0, 0, 0, 0.9);
}
.text {
opacity: 0;
transform: translateX(100%) rotateY(90deg);
/* Initialize off-screen with a 3D rotation */
transform-style: preserve-3d;
perspective: 1000px;
}
.text.active {
animation: slideInFromRight 1s forwards;
opacity: 1;
transition: box-shadow 0.3s ease;
pointer-events: auto;
}
.text.out {
animation: slideOutToLeft 1s forwards;
opacity: 1;
transition: box-shadow 0.3s ease;
}
@keyframes slideInFromRight {
0% {transform: translate(100%, -60%);}
to {transform: translate(-50%, -60%);}
}
@keyframes slideOutToLeft {
0% {transform: translate(-50%, -60%);}
to {transform: translate(-200%, -60%);}
}
.thetext {
padding: 2vw;
text-align: left;
}
.thetext p {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.thetext h1 {
margin-top: 0;
font-size: 1.5em;
text-align: center;
}
.texticon {
width: 1em;
filter: invert(100%) sepia(100%) saturate(0%) hue-rotate(188deg) brightness(102%) contrast(105%);
}
.texticon2 {
height: 0.25em;
transform: scale(4);
padding-left: 0.7vw;
padding-right: 0.7vw;
margin: auto;
margin-bottom: 0.2em;
}
.texticon3 {
width: 1.6em;
border-radius: 50%;
padding: 0.5vh;
margin-bottom: -0.4em;
}
.textgroupicon {
transition: 0.3s ease all;
}
.textgroupicon:hover {
opacity: 0.7;
cursor: pointer;
}
.DIAS_buttonCont {
display: flex;
flex-direction: row;
justify-content: space-evenly;
opacity: 1;
width: 100%;
margin-bottom: 0;
}
.DIAS_button {
min-width: 40%;
font-size: 1em;
}
</style>\
<script>
(() => {
UIBar.stow(true);
SV.gui_interface.angelaButtonEnable = false;
SV.gui_interface.inventoryButtonEnable = false;
const nextPassageName = 'BB1';
const currentPassage = document.querySelector('.passage');
//=== background videos ===
const videobg1 = document.getElementById('videobg1');
const videobg2 = document.getElementById('videobg2');
let video1Ready = false;
let video2Ready = false;
function tryPlayVideos() {
if (video1Ready && video2Ready) {
videobg1.play();
videobg2.play();
}
}
videobg1.oncanplaythrough = function() {
video1Ready = true;
tryPlayVideos();
};
videobg2.oncanplaythrough = function() {
video2Ready = true;
tryPlayVideos();
};
videobg1.onended = function() {
videobg1.currentTime = 0;
videobg2.currentTime = 0;
tryPlayVideos();
};
videobg2.onended = function() {
videobg1.currentTime = 0;
videobg2.currentTime = 0;
tryPlayVideos();
};
//=== messages ===
const messages = currentPassage.querySelectorAll('.text');
const cooldownDuration = 2000;
let callCount = 0;
let cooldownActive = false;
function showNextMessageIntro(event) {
if (cooldownActive) return;
if (callCount >= messages.length - 1) return;
// click condition
const message = event.target.closest('.text');
if (message?.hasAttribute('unclickable')) return;
cooldownActive = true;
setTimeout(() => {
cooldownActive = false;
}, cooldownDuration);
messages[callCount].classList.add('out'); //slide out
callCount++;
setTimeout((callCount) => {
messages[callCount].classList.add('active'); //slide in
}, 1000, callCount); // This should match the duration of the slide-out animation
}
function handleKeyDown(event) {
if (event.key === "Enter") {
showNextMessageIntro(event);
}
}
currentPassage.addEventListener('click', showNextMessageIntro);
document.addEventListener('keydown', handleKeyDown);
$(document).one(':passageinit', e => {
currentPassage.removeEventListener('click', showNextMessageIntro);
document.removeEventListener('keydown', handleKeyDown);
});
})();
</script><<nobr>>
<<set _BB2 = hasVisited('BB2'), _BB3 = hasVisited('BB3'), _BB4 = hasVisited('BB4'), _BB5 = _BB2 && _BB3 && _BB4>>
<div id="responsive-polygon-base">
<<if !_BB2>>
<div style="bottom: 83%; left: 20%"><pguider><img src="ressources/icons/13A11.webp"></pguider></div> <!-- John and Cherie -->
<</if>>
<<if !_BB3>>
<div style="bottom: 86%; left: 84%"><pguider><img src="ressources/icons/13A11.webp"></pguider></div> <!-- Lana room -->
<</if>>
<<if !_BB4>>
<div style="bottom: 82%; left: 62%"><pguider><img src="ressources/icons/13A11.webp"></pguider></div> <!-- Elfie room -->
<</if>>
<<if _BB5>>
<div style="bottom: 30%; left: 19%"><pguider><img src="ressources/icons/13A11.webp"></pguider></div> <!-- living room -->
<</if>>
</div>
<div id="responsive-polygon" onclick="playPassage('BB7')" class="resize"></div> <!-- kitchen -->
<<if _BB5>>
<div id="responsive-polygon2" onclick="playPassage('BB13')" class="resize"></div> <!-- living room -->
<<else>>
<div id="responsive-polygon2" onclick="playPassage('BB5')" class="resize"></div> <!-- living room -->
<</if>>
<<if _BB4>>
<div id="responsive-polygon3" onclick="playPassage('BB11')" class="resize"></div> <!-- Elfie room -->
<<else>>
<div id="responsive-polygon3" onclick="playPassage('BB4')" class="resize"></div> <!-- Elfie room -->
<</if>>
<<if _BB2>>
<div id="responsive-polygon4" onclick="playPassage('BB9')" class="resize"></div> <!-- John and Cherie -->
<<else>>
<div id="responsive-polygon4" onclick="playPassage('BB2')" class="resize"></div> <!-- John and Cherie -->
<</if>>
<div id="responsive-polygon5" onclick="playPassage('BB8')" class="resize"></div> <!-- Abella room -->
<div id="responsive-polygon6" onclick="playPassage('BB6')" class="resize"></div> <!-- bathroom -->
<<if _BB3>>
<div id="responsive-polygon7" onclick="playPassage('BB10')" class="resize"></div> <!-- Lana room -->
<<else>>
<div id="responsive-polygon7" onclick="playPassage('BB3')" class="resize"></div> <!-- Lana room -->
<</if>>
<div id="responsive-polygon8" onclick="playPassage('BB12')" class="resize"></div> <!-- your room -->
<</nobr>>\
<style>
body {
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
color: white; /*MAYBEE*/
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
background-color: #1d1d1d;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
}
#responsive-polygon-base {
height: 80vh;
position: relative;
width: calc(80vh * 1.193);
transition: background-color 0.3s ease; /* Smooth transition for hover effect */
background-image: url('ressources/maingui/maps/prologue/oldhouse.webp');
background-size: cover;
}
#responsive-polygon-base > div {
position: absolute;
}
.resize {
opacity: 0;
background-image: url('ressources/maingui/maps/prologue/hover.webp');
background-size: cover;
height: 80vh;
position: absolute;
width: calc(80vh * 1.193);
transition: all 0.3s ease; /* Smooth transition for hover effect */
cursor: pointer;
}
.resize:hover {
opacity: 1;
}
#responsive-polygon {
clip-path: polygon(32.5% 89.5%, 32.5% 98.5%, 53.5% 98.5%, 53.5% 89%, 84% 89%, 84% 71.5%, 62% 71.5%, 62% 45.5%, 54% 45.5%, 54% 32%, 35% 32%, 35% 89.5%);
}
#responsive-polygon2 {
clip-path: polygon(10.5% 89%, 34.25% 89%, 34.25% 32%, 10.5% 32%);
}
#responsive-polygon3 {
clip-path: polygon(54.5% 2%, 77% 2%, 77% 23%, 54.5% 23%);
}
#responsive-polygon4 {
clip-path: polygon(10.25% 2%, 10.25% 31.75%, 34.25% 31.75%, 34.25% 2%);
}
#responsive-polygon5 {
clip-path: polygon(83.5% 71%, 83.5% 45.5%, 62.5% 45.5%, 62.5% 71%);
}
#responsive-polygon6 {
clip-path: polygon(35% 2%, 54% 2%, 54% 31.75%, 35% 31.75%);
}
#responsive-polygon7 {
clip-path: polygon(77.25% 2%, 98.75% 2%, 98.75% 45%, 77.25% 45%);
}
#responsive-polygon8 {
clip-path: polygon(54.5% 23.5%, 77% 23.5%, 77% 45%, 54.5% 45%);
}
/* pguider - see: main_style.css */
</style>\
<script>
playAudio("music", "prologue_BB2");
</script><<nobr>>
<video class="bgvid" autoplay loop src="ressources/backgrounds/BB1.webm" poster="ressources/backgrounds/BB1_ss.webp"></video>
<<set $hidegirls to 1>>
<div class="DIAS_container">
<<SAY>>
<p>You wake up in your bedroom, blinking your eyes open as sunlight streams in through the window. Looking around, you take in the familiar surroundings - the messy desk covered in books and papers, the poster of your favorite band on the wall, the pile of clothes in the corner waiting to be washed.</p>
<</SAY>>
<<SAY>>
<p>You are a 20 year old man who just finished college.</p>
<</SAY>>
<<SAY>>
<p style="text-align: center;">Enter your name here:
<div class="input-group DIAS_anticlick">
<input type="text" id="playerName" value="Alex" maxlength="20">
</div>
</p>
<</SAY>>
<<SAY Mc>>
<action>Glance at the clock on your nightstand</action>
<inner>Oh no, I can't believe I slept in this late!</inner>
<p>I'm going to be so late for Lawn mowing. Cherie is going to kill me this time. Wait a minute, I can hear the rain pouring down outside.</p>
<</SAY>>
<<SAY Mc>>
<action>Sighs in relief</action>
<p>At least I won't have to mow the lawn in this weather. Cherie can't get mad at me for that.</p>
<</SAY>>
<<SAY>>
<p>As you try to sit up, a wave of dizziness washes over you. You put a hand to your throbbing forehead and squint against the bright light, which seems to stab at your eyes. This is the third time in the past month you've woken up feeling like this - head foggy, vision blurry, body heavy and sluggish.</p>
<</SAY>>
<<SAY Mc>>
<action>Wince and rub temples</action>
<inner>Ugh, what is going on with me lately?</inner>
<p>This is getting worse. I really need to talk to Cherie about this.</p>
<</SAY>>
<<SAY>>
<p>With some effort, you manage to haul yourself into a sitting position. As you do, you become aware of the massive erection tenting your pajama pants. Looking down, you're shocked at just how huge it seems - much bigger than you remember being normal.</p>
<</SAY>>
<<SAY Mc>>
<action>Stare wide-eyed at the bulge</action>
<inner>Whoa, when did that start happening?</inner>
<p>Is it normal for it to continue growing and get this big at 20? Man, I really hope this isn't going to be a regular thing now. Definitely not mentioning this one to Cherie.</p>
<</SAY>>
<<SAY>>
<p>You know there's no way it's going to subside anytime soon, so you get dressed in your tightest jeans to try and conceal it. As uncomfortable as that feels, it's better than the alternative. You take a deep breath and head for the bedroom door, ready to face Cherie and the others.</p>
<</SAY>>
<<SAY>>
<p>You remember your dad and Abella left for some kind of biology conference. You've never really cared about their work in the field. But at least you don't have to deal with them this morning on top of everything else.</p>
<</SAY>>
<<SAY>>
<p>Time to start the day.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('PROLOGUE MAP')"> Leave the room </div>
</div>
</div>
<</nobr>>\
<style>
.input-group input {
text-align: center;
}
.input-group {
margin-bottom: 0;
}
</style>\
<script>
DIAF_initDialogPassage(passageId);
document.getElementById('playerName').addEventListener('input', function () {
SV.characters.mc.name = this.value;
});
</script><<nobr>>
<video class="bgvid" autoplay loop src="ressources/backgrounds/BB2.webm" poster="ressources/backgrounds/BB2_ss.webp"></video>
<div class="DIAS_container">
<<SAY>>
<p>You enter Cherie and Johny's bedroom. Compared to your room, the view outside is beautiful and quite sunny,the weather seems to split right in the middle of the house. Cherie is lying on the bed, and her face lights up with a mix of joy at seeing you and disappointment that you've woken up so late again.</p>
<</SAY>>
<<SAY Mc>>
<action>Scratching your head sheepishly</action>
<inner>I really should start getting up earlier</inner>
<p>"Morning, Cherie."</p>
<</SAY>>
<<SAY Cherie>>
<action>Sits up with a concerned look</action>
<p>"Good morning, sweetheart. Are you feeling alright? You look a little dizzy."</p>
<</SAY>>
<<SAY Image>>
BB2A
<</SAY>>
<<SAY Mc>>
<action>Swaying slightly as the room spins</action>
<inner>Ugh, not this again</inner>
<p>"I'm okay. I just got up too fast. I've been feeling kind of foggy and lightheaded lately, but it's no big deal."</p>
<</SAY>>
<<SAY Cherie>>
<p>"If you didn't sleep in so late, you wouldn't feel dizzy getting up. You need to start going to bed earlier."</p>
<</SAY>>
<<SAY Mc>>
<p>"Cherie, I've grown up now. You don't need to worry so much about me. I can handle things on my own."</p>
<</SAY>>
<<SAY>>
<p>Cherie is a mature (40 years old), authoritative woman with a kind heart. She is tall and fit with long blonde hair, blue eyes, and a shapely rear end. She is the matriach of the household and a medical doctor.</p>
<</SAY>>
<<SAY Image>>
BB2B
<</SAY>>
<<SAY>>
<p style="text-align: center;">Enter Cherie's relationship to you:
<div class="input-group DIAS_anticlick">
<input class="labelnames" type="text" id="labelMother" value="Landlady" maxlength="20">
</div>
</p>
<</SAY>>
<<SAY>>
<p style="text-align: center;">Enter your relationship to Cherie:
<div class="input-group DIAS_anticlick">
<input class="labelnames" type="text" id="labelMother-2" value="Tennant" maxlength="20">
</div>
</p>
<</SAY>>
<<SAY Cherie>>
<p>"I know, sweetheart. But I can't help feeling concerned. And being a doctor, I must check that you're healthy and well. I've always been a bit of a mother hen!"</p>
<</SAY>>
<<SAY Mc>>
<p>"I know, I know, and I appreciate you looking out for me."</p>
<</SAY>>
<<SAY Cherie>>
<action>Puts her hands on your shoulders</action>
<p>"But nevermind that now. I made your favorite breakfast if you're hungry!"</p>
<</SAY>>
<<SAY Mc>>
<p>"Hell yeah, you won't have to ask me twice, your cooking sounds great!"</p>
<</SAY>>
<<SAY Cherie>>
<p>"No matter how big you get, you'll always be my precious boy."</p>
<action>Pulls you into a tight hug</action>
<</SAY>>
<<SAY Mc>>
<action>Hugs Cherie back, feeling your erection press against her</action>
<inner>Whoa, what the...I shouldn't be getting turned on right now!</inner>
<action>Pulls back abruptly, embarrassed</action>
<p>"Um, I gotta use the bathroom."</p>
<action>Hurries out of the room</action>
<</SAY>>
<<SAY Cherie>>
<action>Watches you leave with confusion</action>
<inner>Young men, always so moody and awkward.</inner>
<action>Shakes her head and chuckles</action>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('PROLOGUE MAP')">Leave</div>
</div>
</div>
<</nobr>>\
<style>
.input-group input {
text-align: center;
}
.input-group {
margin-bottom: 0;
}
</style>\
<script>
playAudio("music", "prologue_BB2");
DIAF_initDialogPassage(passageId);
(() => {
const cherie = SV.characters.cherie;
document.getElementById('labelMother').addEventListener('input', function () {
cherie.role = this.value;
});
document.getElementById('labelMother-2').addEventListener('input', function () {
cherie.player_role = this.value;
});
})();
</script><<nobr>>
<video class="bgvid" autoplay loop src="ressources/backgrounds/BB3.webm" poster="ressources/backgrounds/BB3_ss.webp"></video>
<div class="DIAS_container">
<<SAY>>
<p>You enter Lana's room. A darker view of the other side of the city lurks in the background. The weather seems to be messy here. Lana is sitting there, sweating, having clearly just finished one of her daily home workouts. She looks at you with an annoyed expression and asks what you want.</p>
<</SAY>>
<<SAY Image>>
BB3A
<</SAY>>
<<SAY Mc>>
<action>Smiling kindly</action>
<p>"I just wanted to say good morning and see how you're doing today."</p>
<</SAY>>
<<SAY Lana>>
<action>Scoffs dismissively</action>
<p>"It's not morning anymore and it's not by waking up this late that you'll accomplish anything."</p>
<</SAY>>
<<SAY Mc>>
<inner>She's as abrasive as always</inner>
<p>"Well, I was up late last night and..."</p>
<</SAY>>
<<SAY>>
<p>Before you can finish, you stumble slightly. Lana reaches out and catches you, steadying you on your feet with a hint of concern on her face - rare for her. It's clear she noticed you didn't just trip clumsily, but are very dizzy and blurry-eyed.</p>
<</SAY>>
<<SAY Mc>>
<action>Regaining composure</action>
<p>"I'm fine, don't worry about me."</p>
<</SAY>>
<<SAY Lana>>
<action>Rolling her eyes</action>
<p>"You're just a weak kid and you've always needed my protection."</p>
<action>Puts hand on hip condescendingly</action>
<p>"Isn't that right, little dweeb?"</p>
<</SAY>>
<<SAY>>
<p>Lana is a 24 year old professional fighter and ex-army. She has dark brown hair and piercing blue eyes. Physically she is very athletic with a toned, muscular yet feminine body. Personality-wise, Lana is tough, dominant, and bratty. She is the eldest daughter of Cherie.</p>
<</SAY>>
<<SAY Image>>
BB3B
<</SAY>>
<<SAY>>
<p style="text-align: center;">Enter Lana's relationship to you:
<div class="input-group DIAS_anticlick">
<input class="labelnames" type="text" id="labelSister1" value="Older Friend" maxlength="20">
</div>
</p>
<</SAY>>
<<SAY>>
<p style="text-align: center;">Enter your relationship to Lana:
<div class="input-group DIAS_anticlick">
<input class="labelnames" type="text" id="labelSister1-2" value="Friend" maxlength="20">
</div>
</p>
<</SAY>>
<<SAY Mc>>
<action>Scowling</action>
<p>"There's more to life than physical strength. Brains matter too."</p>
<action>Pointing at her</action>
<</SAY>>
<<SAY Lana>>
<p>"Even in brains, Abella leaves you in the dust. We all know dad favors her for a reason."</p>
<</SAY>>
<<SAY Mc>>
<p>"You underestimate me, Lana. There's more to intellect than book smarts. Mental toughness and emotional intelligence matter too."</p>
<</SAY>>
<<SAY Lana>>
<action>Laughs mockingly</action>
<p>"My mental toughness is leagues beyond yours. I've survived and thrived in situations that would crush you."</p>
<</SAY>>
<<SAY Mc>>
<action>Trying to shove her</action>
<p>"Oh yeah? We'll see about..."</p>
<</SAY>>
<<SAY>>
<p>At that moment, Lana notices your prominent erection straining against your tight jeans. She swiftly pins you to the ground.</p>
<</SAY>>
<<SAY Lana>>
<action>Angry and disgusted</action>
<p>"What the hell do you think you're doing? You pervert! What have you stuffed down there?"</p>
<</SAY>>
<<SAY>>
<p>Utterly embarrassed, still dizzy and defeated, you hurriedly leave the room.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('PROLOGUE MAP')">Leave the room</div>
</div>
</div>
<</nobr>>\
<style>
.input-group input {
text-align: center;
}
.input-group {
margin-bottom: 0;
}
</style>\
<script>
DIAF_initDialogPassage(passageId);
(() => {
const lana = SV.characters.lana;
document.getElementById('labelSister1').addEventListener('input', function () {
lana.role = this.value;
});
document.getElementById('labelSister1-2').addEventListener('input', function () {
lana.player_role = this.value;
});
})();
</script><<nobr>>
<video class="bgvid" autoplay muted loop src="ressources/backgrounds/BB4.webm" poster="ressources/backgrounds/BB4_ss.webp"></video>
<div class="DIAS_container">
<<SAY>>
<p>You enter Elfie's room and find her lying on her bed, completely absorbed in reading one of her fantasy novels. Her room is filled with bookshelves lined with novels, manga, and stacks of video games. Posters of anime characters and fantastical landscapes cover the walls. Her eyes light up when she sees you and she excitedly motions for you to come sit with her.</p>
<</SAY>>
<<SAY Image>>
BB4A
<</SAY>>
<<SAY Mc>>
<action>Smiling as you sit next to her</action>
<p>"Good morning Elfie! What are you reading today?"</p>
<</SAY>>
<<SAY Elfie>>
<action>Bounces eagerly as she shows you the cover</action>
<p>"It's the new book in the Dragonlance series! I've been dying to get my hands on it."</p>
<</SAY>>
<<SAY>>
<p>You notice the book is titled 'The haunting of Palmer house' and depicts a seemingly normal family with a very shady house.</p>
<</SAY>>
<<SAY Elfie>>
<action>Giggles</action>
<p>"I know the covers look a little dull, but the story and relationships are amazing! Here, let me read you a passage..."</p>
<</SAY>>
<<SAY>>
<p>As Elfie enthusiastically narrates a steamy scene between the main characters, you feel your manhood beginning to swell even more. Flustered, you subtly adjust your pants to hide your erection.</p>
<</SAY>>
<<SAY>>
<p>Elfie is an 18-year-old enthusiastic, innocent, and naive girl. She is quite nerdy and geeky, and makes a little money by streaming when she is gaming. Physically she has pale hair, pale eyes, and a very delicate, pure look. She is Cherie's youngest daughter.</p>
<</SAY>>
<<SAY Image>>
BB4B
<</SAY>>
<<SAY>>
<p style="text-align: center;">Enter Elfie's relationship to you:
<div class="input-group DIAS_anticlick">
<input class="labelnames" type="text" id="labelSister2" value="Younger Friend" maxlength="20">
</div>
</p>
<</SAY>>
<<SAY>>
<p style="text-align: center;">Enter your relationship to Elfie:
<div class="input-group DIAS_anticlick">
<input class="labelnames" type="text" id="labelSister2-2" value="Friend" maxlength="20">
</div>
</p>
<</SAY>>
<<SAY Mc>>
<inner>What is wrong with me? It's Elfie, why am I getting aroused listening to her read a novel? I shouldn't be feeling this way. Ugh, I feel so dizzy and confused right now.</inner>
<action>Ashamed</action>
<</SAY>>
<<SAY>>
<p>Oblivious as always, Elfie continues reading the suggestive material out loud. You squirm uncomfortably next to her, arousal and shame conflicting within you.</p>
<</SAY>>
<<SAY Elfie>>
<action>Notices your odd behavior</action>
<p>"What's wrong? Are you not feeling well?"</p>
<</SAY>>
<<SAY Mc>>
<action>Averting your eyes</action>
<p>"N-no, I'm fine! Just got a bit dizzy for a second hehe..."</p>
<</SAY>>
<<SAY Elfie>>
<action>Concerned</action>
<p>"Hmm, you do look kind of flushed. Here, let me feel your forehead to check for a fever."</p>
<</SAY>>
<<SAY>>
<p>She innocently reaches for your head. Panicked, you jump up from the bed.</p>
<</SAY>>
<<SAY Mc>>
<p>"I-I just remembered I have to help Cherie with something! See you later!"</p>
<</SAY>>
<<SAY>>
<p>Before Elfie can respond, you hurriedly leave the room, willing your shameful erection to subside.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('PROLOGUE MAP')"> Done </div>
</div>
</div>
<</nobr>>\
<style>
.input-group input {
text-align: center;
}
.input-group {
margin-bottom: 0;
}
</style>\
<script>
playAudio("music", "prologue_BB4");
DIAF_initDialogPassage(passageId);
(() => {
const elfie = SV.characters.elfie;
document.getElementById('labelSister2').addEventListener('input', function () {
elfie.role = this.value;
});
document.getElementById('labelSister2-2').addEventListener('input', function () {
elfie.player_role = this.value;
});
})();
</script><<nobr>>
<video class="bgvid" muted autoplay loop src="ressources/backgrounds/BB13.webm" poster="ressources/backgrounds/BB13_ss.webp"></video>
<div class="DIAS_container">
<<SAY>>
<p>You enter the living room. The TV is on, tuned to a news channel. The female reporter is talking about a new, potentially alarming virus discovered in a lab. You think to yourself that this would probably interest your father and Abella, but you don't pay it much mind.</p>
<</SAY>>
<<SAY Mc>>
<action>Glancing at the TV as you walk by</action>
<inner>Hmm, dad would want to hear about this.</inner>
<action>Turning away from the TV and heading for the doorway</action>
<inner>But I've got more important things to do right now.</inner>
<</SAY>>
<<SAY>>
<p>You leave the room, intent on finding the girls to have a chat. The news report drones on faintly behind you as you make your way down the hall.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('PROLOGUE MAP')"> Leave the room </div>
</div>
</div>
<</nobr>>\
<script>
playAudio("music", "prologue_BB13_1");
DIAF_initDialogPassage(passageId);
</script><<nobr>>
<video class="bgvid" autoplay loop src="ressources/backgrounds/BB6.webm" poster="ressources/backgrounds/BB6_ss.webp"></video>
<div class="DIAS_container">
<<SAY>>
<p>You enter the bathroom, determined to empty your full bladder from the night. As you go to pull down your pants, you remember they are tightly belted and much too tight given your massive erection.</p>
<</SAY>>
<<SAY Mc>>
<action>Looks down at the tented front of your pants and sighs</action>
<inner>There's no way I'm getting these off easily like this. I'll have to wait until I've calmed down.</inner>
<p>I guess it's not an emergency. I'll take care of it after I've talked to the girls.</p>
<</SAY>>
<<SAY>>
<p>You turn and look in the mirror, taking in your disheveled hair and flushed face. The pressure in your bladder combined with the morning wood arousal makes it hard to focus.</p>
<</SAY>>
<<SAY Mc>>
<action>Splashes some cold water on your face</action>
<inner>Get it together. Just relax and think of something else.</inner>
<</SAY>>
<<SAY>>
<p>Leaning on the counter, you take some deep breaths. But the sound of running water only makes you more aware of your urgent need for both type of release. You shift your stance, thighs pressed together.</p>
<</SAY>>
<<SAY Mc>>
<action>Crosses legs and bounces slightly</action>
<inner>Ugh, I really have to go. But with this thing at full mast, my pants are not budging.</inner>
<p>Calm down already! The girls are waiting.</p>
<</SAY>>
<<SAY>>
<p>Despite your best efforts at distraction, your erection remains rigid. The tight confines of your pants provide some pressure and stimulation. You let out an exasperated groan. This is going to be a difficult morning.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('PROLOGUE MAP')"> Leave the room </div>
</div>
</div>
<</nobr>>\
<script>
DIAF_initDialogPassage(passageId);
</script><<nobr>>
<video class="bgvid" autoplay loop src="ressources/backgrounds/BB7.webm" poster="ressources/backgrounds/BB7_ss.webp"></video>
<div class="DIAS_container">
<<SAY>>
<p>You enter the kitchen, momentarily confused as to why you came in here. As you look around at the counters, appliances, and sink, you remember this is traditionally seen as the domain of women.</p>
<</SAY>>
<<SAY Mc>>
<action>Chuckles and shakes head</action>
<p>What was I thinking coming in here? The kitchen is no place for a man like me.</p>
<</SAY>>
<<SAY>>
<p>You spot an apron hanging by the pantry, presumably for the woman of the house to wear while cooking and cleaning. The frilly trim and floral pattern emphasize that this is not your territory.</p>
<</SAY>>
<<SAY Mc>>
<action>Laughs louder</action>
<p>Can you imagine me wearing that thing? I'd look ridiculous!</p>
<</SAY>>
<<SAY>>
<p>As you turn to leave, a lingering aroma of freshly baked bread reminds you of the breakfast the girls are surely preparing. Your stomach rumbles, eager to fill up on their homemade cooking.</p>
<</SAY>>
<<SAY Mc>>
<p>Mmm, something sure smells good. I'd better get out of here and let them work their magic. This is Cherie's workshop afterall.</p>
<</SAY>>
<<SAY>>
<p>With one last amused look around the space, you head for the door. The kitchen is a comfortable domain for the fairer sex, not a brute like yourself. You jokingly make a mental note to wait in the dining room for your meal like a proper gentleman.</p>
<</SAY>>
<<SAY Mc>>
<action>Shakes head and chuckles as he exits</action>
<inner>But first, I need to go talk to girls</inner>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('PROLOGUE MAP')"> Leave the room </div>
</div>
</div>
<</nobr>>\
<script>
DIAF_initDialogPassage(passageId);
</script><<nobr>>
<video class="bgvid" autoplay loop src="ressources/backgrounds/BB8.webm" poster="ressources/backgrounds/BB8_ss.webp"></video>
<div class="DIAS_container">
<<SAY>>
<p>You open the door to your twin sister Abella's room. The weather is similar to Cherie's room, what a weird phenomenon, you hope it doesn't mean bad luck. As expected, everything is tidy and organized. You shake your head slightly.</p>
<</SAY>>
<<SAY Mc>>
<action>Looks around and sighs</action>
<p>We may share the same face, Abella, but we are nothing alike.</p>
<</SAY>>
<<SAY>>
<p>You pick up a science trophy from her shelf, running your fingers over the engraving. Abella, always the perfect student. Another award to make Dad proud.</p>
<</SAY>>
<<SAY Mc>>
<action>Replaces the trophy gently</action>
<p>You excel at academics, while my interests lie elsewhere. But each of us has our strengths.</p>
<</SAY>>
<<SAY>>
<p>You pace slowly around the room, glancing at the books and memorabilia representing Abella's achievements. She works hard, you'll give her that much. But you know in your heart your talents surpass hers.</p>
<</SAY>>
<<SAY Mc>>
<action>Stops and smiles confidently</action>
<p>One day Father will recognize my potential. Until then, I'll let Abella have the spotlight. It's only a matter of time before I eclipse her.</p>
<</SAY>>
<<SAY>>
<p>With a final assured nod, you turn and exit the room, leaving everything undisturbed. You have no need for jealousy or anger. Soon, your time will come to shine even brighter than perfect Abella. For you know deep down you are destined for greatness.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('PROLOGUE MAP')"> Leave the room </div>
</div>
</div>
<</nobr>>\
<script>
DIAF_initDialogPassage(passageId);
</script><<nobr>>
<video muted class="bgvid" autoplay loop src="ressources/backgrounds/BB2.webm" poster="ressources/backgrounds/BB2_ss.webp"></video>
<div class="DIAS_container">
<<SAY>>
<p>You enter Cherie's room again. She looks up at you and asks if you're feeling any better.</p>
<</SAY>>
<<SAY Mc>>
<action>Nodding</action>
<p>Yes, much better now, thank you.</p>
<</SAY>>
<<SAY Cherie>>
<action>Looking relieved</action>
<p>I'm so glad to hear that. You really had me worried earlier. I'd like to examine you more thoroughly later to make sure you're okay, but I just got an urgent call that I need to take right now.</p>
<</SAY>>
<<SAY Mc>>
<action>Waving your hand dismissively</action>
<p>Of course, I understand. Don't worry about me, I'm fine now. Go take your call.</p>
<</SAY>>
<<SAY Cherie>>
<action>Smiling gratefully</action>
<p>Thanks for understanding. Why don't you go chat with the girls for a bit, and meet me in the living room when I'm done with this call?</p>
<</SAY>>
<<SAY Mc>>
<action>Nodding in agreement</action>
<p>Sounds good, I'll see you in a little while then.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('PROLOGUE MAP')">Leave the room</div>
</div>
</div>
<</nobr>>\
<script>
playAudio("music", "prologue_BB2");
DIAF_initDialogPassage(passageId);
</script><<nobr>>
<video class="bgvid" autoplay loop src="ressources/backgrounds/BB3.webm" poster="ressources/backgrounds/BB3_ss.webp"></video>
<div class="DIAS_container">
<<SAY>>
<p>You enter Lana's room. She's doing push-ups on the floor and doesn't even look up at you when you walk in.</p>
<</SAY>>
<<SAY Mc>>
<p>Hey Lana.</p>
<</SAY>>
<<SAY Lana>>
<action>Continuing her push-ups without missing a beat</action>
<p>What do you want?</p>
<</SAY>>
<<SAY Mc>>
<p>Just wanted to see how you're doing.</p>
<</SAY>>
<<SAY Lana>>
<action>Annoyed</action>
<p>I'm busy right now. I need to finish this workout.</p>
<</SAY>>
<<SAY Mc>>
<p>Oh okay. Want me to come back later?</p>
<</SAY>>
<<SAY Lana>>
<action>Curtly</action>
<p>I'll join you later in the living room, go talk to Cherie and Elfie.</p>
<</SAY>>
<<SAY Mc>>
<p>Got it. See you there, don't forget.</p>
<</SAY>>
<<SAY Lana>>
<action>Impatiently</action>
<p>Whatever. Just close the door on your way out kiddo.</p>
<</SAY>>
<<SAY Mc>>
<inner>Wow, she really has an attitude problem. The same as always.</inner>
<p>Alright, see you later Lana.</p>
<action>You leave the room, closing the door behind you.</action>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('PROLOGUE MAP')"> Leave the room </div>
</div>
</div>
<</nobr>>\
<script>
DIAF_initDialogPassage(passageId);
</script><<nobr>>
<video class="bgvid" autoplay muted loop src="ressources/backgrounds/BB4.webm" poster="ressources/backgrounds/BB4_ss.webp"></video>
<div class="DIAS_container">
<<SAY>>
<p>You enter Elfie's room. She is sitting on her bed, completely absorbed in the novel she is reading.</p>
<</SAY>>
<<SAY Mc>>
<p>Hey Elfie.</p>
<</SAY>>
<<SAY Elfie>>
<inner>Distracted</inner>
<p>Oh, hi.</p>
<</SAY>>
<<SAY>>
<p>She continues reading, barely acknowledging your presence.</p>
<</SAY>>
<<SAY Elfie>>
<action>Looking up</action>
<p>Sorry about that. I'm just at a really good part in my book. What's up?</p>
<</SAY>>
<<SAY Mc>>
<p>Nothing much, I just wanted to see what you were up to. I'll let you get back to your book. See you in the living room later?</p>
<</SAY>>
<<SAY Elfie>>
<action>Nodding</action>
<p>Yeah for sure. I'll head out there when I'm done with this chapter. See ya!</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('PROLOGUE MAP')"> Leave the room </div>
</div>
</div>
<</nobr>>\
<script>
playAudio("music", "prologue_BB4");
DIAF_initDialogPassage(passageId);
</script><<nobr>>
<video class="bgvid" autoplay loop src="ressources/backgrounds/BB1.webm" poster="ressources/backgrounds/BB1_ss.webp"></video>
<div class="DIAS_container">
<<SAY>>
<p>You enter your bedroom, closing the door behind you. Looking around, you realize you don't really have anything to do in here. The thought of masturbating briefly crosses your mind, but you remember you have a lot of stuff to do.</p>
<</SAY>>
<<SAY>>
<p>You glance over at your collection of Naruto manga sitting on the shelf. You've read through them all multiple times already. With a sigh, you decide you should probably just head out.</p>
<</SAY>>
<<SAY Image>>
BB12A
<</SAY>>
<<SAY Mc>>
<action>Glancing around the empty room</action>
<inner>I've got nothing to do in here anyway</inner>
<p>I should just go meet up with the girls. No point sticking around.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('PROLOGUE MAP')"> Leave the room </div>
</div>
</div>
<</nobr>>\
<script>
DIAF_initDialogPassage(passageId);
</script><<nobr>>
<video class="bgvid" muted autoplay loop src="ressources/backgrounds/BB13.webm" poster="ressources/backgrounds/BB13_ss.webp"></video>
<div class="DIAS_container">
<<SAY>>
<p>You walk into the living room and sit down on the couch. Noticing the terrible weather outside, with heavy rain, you feel increasingly dizzy and your headache intensifies. This is an ominous sign.</p>
<</SAY>>
<<SAY>>
<p>You decide to turn on the TV which is set to a news channel reporting on the severe weather making communications difficult.</p>
<</SAY>>
<<SAY>>
<p>Suddently, the TV goes into static and starts making a glitching sound..</p>
<</SAY>>
<<SAY Mc>>
<action>Confused</action>
<p>What the hell is going on?</p>
<</SAY>>
<<SAY Video>>
BB13A
<</SAY>>
<<SAY>>
<p>The girls rush into the room alerted by the alarm sound.</p>
<</SAY>>
<<SAY Cherie>>
<action>Looking concerned</action>
<p>What's all this about?</p>
<</SAY>>
<<SAY Elfie>>
<action>Frowning sadly</action>
<p>Oh no, I hope this is not serious matter, I wanted to finish my chapter.</p>
<</SAY>>
<<SAY Lana>>
<action>Scanning the room cautiously</action>
<p>An alarm? Is something wrong?</p>
<</SAY>>
<<SAY Video>>
BB13B
<</SAY>>
<<SAY Cherie>>
<trigger>trigger1</trigger>
<action>Gasping in shock</action>
<p>My god... could it be what Johny feared?</p>
<</SAY>>
<<SAY Lana>>
<action>Tensely</action>
<p>An outbreak? Here? This can't be happening...</p>
<</SAY>>
<<SAY Elfie>>
<action>Eyes wide with fear</action>
<p>But we're supposed to be safe at home, aren't we?</p>
<</SAY>>
<<SAY Video>>
BB13C
<</SAY>>
<<SAY Cherie>>
<trigger>trigger2</trigger>
<action>With a clinical concern</action>
<p>This is exactly what he was working on. We need to stay calm and follow the procedures.</p>
<</SAY>>
<<SAY Lana>>
<action>With a steely resolve</action>
<p>What the hell... We need to secure the house then. No one in or out until we know more.</p>
<</SAY>>
<<SAY Elfie>>
<action>With naive concern</action>
<p>But, what about everyone else outside? We have to help them, right?</p>
<</SAY>>
<<SAY Video>>
BB13D
<</SAY>>
<<SAY>>
<trigger>trigger3</trigger>
<p>The TV and lights abruptly shut off, power gone.</p>
<p>Elfie jumps, becoming upset. Lana wonders what the hell is going on. Cherie seems to understand what's happening.</p>
<</SAY>>
<<SAY Elfie>>
<action>Jumping in fright</action>
<p>Eek! The power...!</p>
<</SAY>>
<<SAY Image>>
BB13E
<</SAY>>
<<SAY Lana>>
<action>Looking around angrily</action>
<p>Dammit, now what's going on?</p>
<</SAY>>
<<SAY Mc>>
<action>Clutching your pounding head</action>
<inner>Everything's going fuzzy...</inner>
<p>Ch-Cherie, can you explain?</p>
<</SAY>>
<<SAY Cherie>>
<action>Speaking calmly and slowly</action>
<p>A few months ago, Johny told me about a dangerous lab-made sexual virus...with his expertise, he thought it could end the world.</p>
<</SAY>>
<<SAY Image>>
BB13F
<</SAY>>
<<SAY>>
<trigger>trigger4</trigger>
<p>You try to focus on her words but everything seems blurry and unintelligible. You gather that Johny's expertise in biology and genetics made him paranoid about a virus causing the end of the world. He registered the family for a rescue program in case it happened. It seems he was right.</p>
<</SAY>>
<<SAY Mc>>
<action>You struggle to follow Cherie's words as your vision blurs</action>
<inner>I can barely understand her...</inner>
<</SAY>>
<<SAY Cherie>>
<trigger>trigger5</trigger>
<p>He registered us for a protection program...in case this happened. I guess he was right to be so paranoid. </p>
<</SAY>>
<<SAY>>
<p>You struggle to listen but understand nothing. You hear Lana and Elfie talking too but it's all mixed up. At some point Cherie and the girls notice your distress and frantically ask if you're okay but you can't respond.</p>
<</SAY>>
<<SAY Lana>>
<action>Shouting worriedly</action>
<p>Hey! Are you alright? Say something!</p>
<</SAY>>
<<SAY Image>>
BB13G
<</SAY>>
<<SAY Elfie>>
<trigger>trigger6</trigger>
<action>On the verge of tears</action>
<p>Oh no, I think something's really wrong!</p>
<</SAY>>
<<SAY Cherie>>
<trigger>trigger7</trigger>
<p>Honey? Honey!!!</p>
<</SAY>>
<<SAY>>
<trigger>trigger8</trigger>
<p>Everything goes fuzzy and you hear a distant plane or helicopter approaching. Everything spirals into blackness.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="nextBloc()"> What's going on? </div>
</div>
</div>
<</nobr>>\
<style>
#story {
transition: all 0.5s ease;
margin: 0;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
.DIAS_text trigger {
display: none;
}
</style>\
<script>
UIBar.hide();
playAudio("music", "prologue_BB13_1");
DIAF_initDialogPassage(passageId);
(() => {
const $DIAS_container = $('.DIAS_container');
const style = document.getElementById('story').style;
const triggers = {
trigger1: () => {
style.boxShadow = 'inset 0 0 10vh 5vh black';
},
trigger2: () => {
style.boxShadow = 'inset 0 0 20vh 10vh black';
},
trigger3: () => {
style.boxShadow = 'inset 0 0 40vh 20vh black';
},
trigger4: () => {
style.boxShadow = 'inset 0 0 60vh 30vh black';
},
trigger5: () => {
style.boxShadow = 'inset 0 0 70vh 35vh black';
},
trigger6: () => {
style.boxShadow = 'inset 0 0 90vh 45vh black';
},
trigger7: () => {
style.boxShadow = 'inset 0 0 110vh 55vh black';
},
trigger8: () => {
style.boxShadow = 'inset 0 0 150vh 75vh black';
}
};
function handleClick(ev) {
const $message = $DIAS_container.children('.DIAS_active').last();
const trigger = $message.find('trigger').text();
if (trigger) {
triggers[trigger]();
}
}
function handleKeydown(ev) {
if (ev.key === 'Enter') {
handleClick(ev);
}
};
$(document).on('click', handleClick);
$(document).on('keydown', handleKeydown);
$(document).one(':passageinit', e => {
$(document).off('click', handleClick);
$(document).off('keydown', handleKeydown);
});
})();
function nextBloc() {
UIBar.show();
playPassage('BB14');
}
</script><<script>>
playAudio("music", "cave");
<</script>>\
<<nobr>>
<div class="DIAS_container">
<<SAY Mc>>
<action>Feeling yourself sinking deeper into darkness, the voices of Lana, Cherie, and Elfie fading away</action>
<inner>Where am I going? What's happening?</inner>
<</SAY>>
<<SAY>>
<p>The surroundings shift, morphing into a dimly lit cavern with a blue glow. Warmth spreads through your body as your head spins, comparable to being drunk. Heat concentrates heavily in your groin.</p>
<</SAY>>
<<SAY Mc>>
<action>Looking around the cavern, eyes struggling to focus</action>
<inner>Everything is so hazy, this feels so strange, yet somehow pleasant...</inner>
<</SAY>>
<<SAY>>
<p>The blue light of the cavern overstimulates your senses. Dizziness and confusion grip your mind tighter, but an underlying excitement grows.</p>
<</SAY>>
<<SAY Mc>>
<inner>I've never felt like this before...it's sexual arousal, but so intense!</inner>
<</SAY>>
<<SAY>>
<p>A certain power thrums through you.</p>
<</SAY>>
<<SAY>>
<p>Suddenly, a noise echoes from the small pond ahead. Still disoriented, you struggle to make out the source of the sound. Ripples spread across the surface of the water as a humanoid, blue-tinged figure rises from the depths.</p>
<</SAY>>
<<SAY>>
<p>She emerges predatorily from the pond. As your vision clarifies, a fiery surge rushes down to your groin. You tremble uncontrollably with exhilaration despite your perplexity. The raw sensations are almost too much to take.</p>
<</SAY>>
<<SAY Video>>
BB14A
<</SAY>>
<<SAY>>
<p>You stare in awe at the sight before you. Rising from the shimmering blue waters is a dark elf-like humanoid, her voluptuous form seeming to defy gravity. Luscious curves that could bring any man to his knees accentuate her ample bosom and hips. This must be a dream, you think to yourself with a sly smile. The raging horniness brought on by the virus makes you forget everything else - your body screams to give in to carnal urges and indulge in this vision of beauty.</p>
<</SAY>>
<<SAY Mc>>
<action>Trembling, hands shaking</action>
<inner>What's happening to me? I can't look away...</inner>
<</SAY>>
<<SAY>>
<p>As you open your mouth to speak, you realize no words escape you. The alluring creature emerges further, swaying her hips seductively. Her legendary posterior seems to call to you, begging you to bury yourself within it and never leave. Overwhelming sensations of power course through you, both sexual and physical. This euphoric intensity fuels your fever dream state.</p>
<</SAY>>
<<SAY Mc>>
<action>Backing away slightly</action>
<inner>I'm terrified...but so turned on. I want her, I need this!</inner>
<</SAY>>
<<SAY>>
<p>Your heart races as you watch her move, mesmerized by every curve and angle of her body.</p>
<</SAY>>
<<SAY Video>>
BB14B
<</SAY>>
<<SAY Mc>>
<inner>By the gods, she's the most beautiful creature I've ever laid eyes on!</inner>
<</SAY>>
<<SAY>>
<p>Her ample breasts bounce tantalizingly with each graceful movement, and you feel yourself growing hotter and more aroused by the second. It's as if there is no limit to the heights of lust this ethereal beauty can awaken within you.</p>
<</SAY>>
<<SAY>>
<p>She locks eyes with you, full ruby lips turned up in a sultry smile as she slowly approaches. With feline grace, she lifts her breasts toward you, an offering, and you reach out trembling hands to cup their soft warmth.</p>
<</SAY>>
<<SAY Mc>>
<action>Trembling</action>
<inner>I'm about to explode just looking at her!</inner>
<</SAY>>
<<SAY>>
<p>Then, in one fluid motion, she bends down and takes your aching manhood between her breasts. The sensation is indescribable, beyond any earthly pleasure. You are lost, drowned in bliss, as she begins to move upon you. Her skin is like cool silk, her caresses masterful.</p>
<</SAY>>
<<SAY Video>>
BB14C
<</SAY>>
<<SAY>>
<p>You stare down at the throbbing mass between your legs, its sheer size and girth unlike anything you've ever seen before. The creature's tentacles continue their relentless assault, caressing and squeezing every inch of your engorged manhood.</p>
<</SAY>>
<<SAY>>
<p>Your breaths come in ragged gasps as the pressure continues building within you, the creature skillfully edging you towards a climax of unimaginable proportions but somehow, you don't feel it coming. You clench your fists and throw back your head, utterly lost in the hypnotic rhythm of the creature's manipulations.</p>
<</SAY>>
<<SAY Mc>>
<action>Getting light-headed</action>
<inner>This is too much. I can't withstand much more of this.</inner>
<</SAY>>
<<SAY>>
<p>Just when you feel you can't possibly take any more stimulation, the creature opens its mouth wide and takes your swollen cock inside. Its mouth is searingly hot and overflowing with slick juices. Its tongue, long and dexterous, laps and twirls around your length as the creature bobs its head up and down. The suction is incredible, unlike anything a human mouth could replicate.</p>
<</SAY>>
<<SAY Video>>
BB14D
<</SAY>>
<<SAY>>
<p>The pleasure ratchets up to newer, more insane heights as the creature works you expertly with its mouth. This newfound power.</p>
<</SAY>>
<<SAY Mc>>
<inner>Holy shit! Her mouth feels so warm and wet. The way she's working her tongue is driving me wild.</inner>
<</SAY>>
<<SAY>>
<p>She bobs her head slowly, taking more of you in. The intense sucking sensation makes your toes curl. You feel your cock swelling even larger in her mouth.</p>
<</SAY>>
<<SAY Mc>>
<action>Sensing you are losing grip with reality</action>
<inner>Something isn't right. This feels too good. I'm losing control of my body! I have to stop this before it's too late...</inner>
<</SAY>>
<<SAY>>
<p>Just as you think you might break free from the spell, the woman changes her technique. Her head bobs faster, her tongue swirling as she sucks you with fervor. Your knees finally give out and you sink to the floor.</p>
<</SAY>>
<<SAY>>
<p>The mysterious woman mounts you, still latched onto your engorged cock. She lifts herself up and guides you inside her, enveloping your massive girth. A mind-blowing rush of pleasure hits you.</p>
<</SAY>>
<<SAY Video>>
BB14E
<</SAY>>
<<SAY>>
<p>You stare down at the curvaceous elf writhing in ecstasy on top of you. Her hips undulate rhythmically, grinding your swollen manhood deep inside her alien folds. Your mind swims in a haze of primal lust as waves of pleasure radiate through your body.</p>
<</SAY>>
<<SAY Mc>>
<inner>Fuck! She's so tight and wet! I can feel her squeezing every inch of my swollen cock.</inner>
<</SAY>>
<<SAY>>
<p>Shaking your head in an attempt to clear it, you meet the creature's hypnotic gaze. Her eyes seem to pierce your very soul, and you feel your resolve weakening once more. She smiles coyly, clearly sensing the effect she is having on you. With feline grace, she turns and presents her round, perfect ass to you.</p>
<</SAY>>
<<SAY Mc>>
<action>Vision blurring out but no orgasm in sight</action>
<inner>She's making this difficult! I must break free of her spell.</inner>
<</SAY>>
<<SAY>>
<p>Yet despite your inner misgivings, you cannot help but drink in the sight of her supple backside as she lowers herself onto you again. Your swollen manhood throbs almost painfully as it is enveloped by her tight, slick walls. She begins to bounce vigorously up and down, fucking you with abandon. The view of your enormous cock pistoning in and out of her dripping snatch is indecently arousing.</p>
<</SAY>>
<<SAY Video>>
BB14F
<</SAY>>
<<SAY>>
<p>You feel lightheaded and disoriented, your vision blurring at the edges. It is clear that too much blood has rushed to your groin, leaving your brain starved. This experience is becoming dangerous, but the creature seems intent on pushing you past the point of no return. You must act now if you hope to free yourself from her seductions.</p>
<</SAY>>
<<SAY>>
<p>She rises up and slams down over and over, she seems to be getting so high at times, yet you never slip out of her. A numbness spreads through your limbs as the elf rides you relentlessly. Your climax builds, but there's no telltale sign of its impending arrival. The sensation is incredible, yet something in you knows this isn't right.</p>
<</SAY>>
<<SAY Mc>>
<action>Summoning your strength, you flip the blue-skinned creature onto her back</action>
<inner>I have to take control. This feels too good to stop, but I know I shouldn't be here.</inner>
<</SAY>>
<<SAY>>
<p>With surprising ease, you lift her weightless body and begin thrusting into her with focused intensity. It's absolute ecstasy, but you know it's time to end this fever dream. As memories flash through your mind, you pick up the pace, driving toward orgasm.</p>
<</SAY>>
<<SAY Video>>
BB14G
<</SAY>>
<<SAY>>
<p>The creature slick walls grip you tightly as you pound into her. Her cries echo off the cave walls, spurring you onward.</p>
<</SAY>>
<<SAY Mc>>
<inner>I've got her under my control now, this feels incredible! I could stay here in this moment forever, but I must push onward.</inner>
<</SAY>>
<<SAY>>
<p>With great effort, you pull yourself away from the alluring darkness trying to keep you trapped in this realm.</p>
<</SAY>>
<<SAY Mc>>
<inner>I can't let it consume me, I have to break free!</inner>
<</SAY>>
<<SAY>>
<p>Your thrusts become more urgent as a powerful climax begins building within you. Gripping the elf tightly in all your limbs, the dreamy surroundings start to dissolve as your passion crests.</p>
<</SAY>>
<<SAY Mc>>
<inner>Just a little more! I'm so close!</inner>
<</SAY>>
<<SAY>>
<p>The pleasure becomes almost unbearable, your bodies fused together in writhing ecstasy. A blinding light envelops you both as the peak hits, an orgasm like you've never felt before ripping through every fiber of your being. You feel yourself hurtling forward, the light getting brighter and brighter until...</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('BB15')"> Open your eyes </div>
</div>
</div>
<</nobr>>\
<style>
body {
background-image: url('ressources/backgrounds/BB14.webp');
}
</style>\
<script>
DIAF_initDialogPassage(passageId);
</script><<script>>
playAudio("music", "river");
<</script>>\
<<nobr>>
<div class="DIAS_container">
<<SAY Mc>>
<action>Groggily opening your eyes, squinting at the dim light filtering through the dusty barn windows</action>
<inner>Ugh, my head is pounding...where am I?</inner>
<</SAY>>
<<SAY>>
<p>The old shed creaks and groans around you as you try to get your bearings. You're lying on a lumpy cot, covered only by a thin, stained sheet. The air is musty and you can barely make out stacks of tools and farming equipment lining the walls in the shadows.</p>
<</SAY>>
<<SAY Image>>
BB15A
<</SAY>>
<<SAY Cherie>>
<action>Bursting into the shed, her face lighting up</action>
<p>Oh my god! You're awake!</p>
<</SAY>>
<<SAY>>
<p>She rushes over and kneels by the cot, tears of joy and relief spilling down her cheeks. Her hands flutter over you anxiously like a mother hen.</p>
<</SAY>>
<<SAY Mc>>
<action>Confused, sitting up slowly</action>
<p>Cherie? What happened? Where are we?</p>
<</SAY>>
<<SAY Cherie>>
<action>Voice cracking</action>
<p>We almost lost you! You've been in a coma for six months...I can't believe you finally woke up!</p>
<</SAY>>
<<SAY>>
<p>As if on cue, the room's energy shifts, and Elfie, your $characters.elfie.role, dances into the room. Her presence is a burst of color against the sterile backdrop, her usual exuberance undimmed even here.</p>
<</SAY>>
<<SAY Image>>
BB15B
<</SAY>>
<<SAY Elfie>>
<action>Bounding onto the bed, her embrace all-encompassing</action>
<inner>She hasn't changed a bit.</inner>
<p>"You're back! You're really, really back!"</p>
<</SAY>>
<<SAY>>
<p>She jumps onto the cot and tackles you in a hug, sobbing happily.</p>
<</SAY>>
<<SAY>>
<p>The moment is punctuated by a squelching sound as Elfie shifts, a puzzled look crossing her face. She glances down at the now evidently wet sheets.</p>
<</SAY>>
<<SAY Elfie>>
<action>Making a face, pulling back to inspect the dampness</action>
<p>"What's this? Did you spill water or something? So goey..."</p>
<</SAY>>
<<SAY>>
<p>Before you have a chance to respond, Lana enters the room. She stands in stark contrast to Elfie, her demeanor cool and collected. Her eyes, however, betray a flicker of concern that she quickly masks with her usual indifference.</p>
<</SAY>>
<<SAY Image>>
BB15C
<</SAY>>
<<SAY Lana>>
<action>Following behind Elfie, trying to act nonchalant but unable to hide her relief completely</action>
<p>Took you long enough, dumbass. We thought you'd never wake up.</p>
<</SAY>>
<<SAY>>
<p>Her attempt at humor doesn't quite hide the relief that you detect in the slight upturn of her lips. Cherie, ever the peacemaker, steps in before the banter can escalate.</p>
<</SAY>>
<<SAY Cherie>>
<action>Swatting Lana's arm gently</action>
<p>Oh hush, don't pretend you weren't worried sick about him!</p>
<action>Turning attention back to you</action>
<p>How are you feeling sweetie? Are you in any pain?</p>
<</SAY>>
<<SAY>>
<p>She proceeds to do a medical examination, checking your pulse, eyes, and reflexes. As she moves the blanket, you both gasp as you notice your body.</p>
<</SAY>>
<<SAY Mc>>
<action>Staring down at your ripped, muscular physique</action>
<inner>Woah, I'm jacked! What the hell happened to me?</inner>
<</SAY>>
<<SAY Cherie>>
<p>"Everything seems normal, better than normal actually. How do you feel?"</p>
<</SAY>>
<<SAY Mc>>
<action>Feeling a suddent surge of energy and strenght, you throw off the sheet and stand up resolutely</action>
<p>Better than ever!</p>
<</SAY>>
<<SAY>>
<p>The girls gasp and blush at your sudden nakedness and the impressive size of your cock.</p>
<</SAY>>
<<SAY Mc>>
<action>Glancing sheepishly at the women</action>
<inner>Oh no, did I just flash them?</inner>
<</SAY>>
<<SAY Lana>>
<action>Her eyes dart down, then flash with anger, her fists clenching at her sides as she spins on her heel to leave the room, her voice laced with disgust</action>
<p>"You're unbelievable, such a perv!"</p>
<</SAY>>
<<SAY Mc>>
<action>Glancing sheepishly at the women</action>
<inner>Oh no, did I just flash them?</inner>
<</SAY>>
<<SAY Image>>
BB15D
<</SAY>>
<<SAY>>
<p>Lana storms out, the door slamming shut with a resounding echo that marks her departure, leaving a tense silence hanging in the air.</p>
<</SAY>>
<<SAY Elfie>>
<action>Covering her eyes with her hands, cheeks flushed with shock, she stumbles toward the exit, her voice a trembling mix of innocence and haste</action>
<p>"I should not see this."</p>
<</SAY>>
<<SAY Image>>
BB15E
<</SAY>>
<<SAY>>
<p>The sound of Elfie's hurried footsteps fades as she escapes the room, leaving you standing there, more exposed than ever.</p>
<</SAY>>
<<SAY Mc>>
<action>You glance down, the reality of your condition sinking in as you spot the undeniable evidence of your arousal</action>
<inner>Well, that's just great. Perfect timing.</inner>
<</SAY>>
<<SAY>>
<p>Cherie blinked in shock, her eyes drawn momentarily to your massive length before she composed herself. She picked up the soiled blanket, stepping forward to wrap it around your waist.</p>
<</SAY>>
<<SAY Image>>
BB15F
<</SAY>>
<<SAY Cherie>>
<action>She calmly offers you the damp sheet with a hint of a blush</action>
<inner>What in the world is that? I don't think it's supposed to get to that size</inner>
<p>"You should cover up."</p>
<</SAY>>
<<SAY Mc>>
<action>Blushing hard, wrapping the blanket around your waist, you turn to Cherie, changing the subject</action>
<p>"Cherie, what happened while I was out? Where are we and how did we get here?"</p>
<</SAY>>
<<SAY Cherie>>
<action>Her expression turns grave</action>
<p>"It's...it's a long story. The world has changed so much since you fell ill."</p>
<</SAY>>
<<SAY>>
<p>She motions for you to sit back down on the cot as she pulls up a stool. Her hands twist together in her lap as she gathers her thoughts.</p>
<</SAY>>
<<SAY Cherie>>
<p>"It started the day after your father and Abella left for that conference. There was an announcement on the news about a dangerous new virus called D-Pox that was spreading fast. It...it makes people go crazy with lust."</p>
<</SAY>>
<<SAY Mc>>
<p>Yeah, I kinda remember that announcement.</p>
<</SAY>>
<<SAY Cherie>>
<p>"Within minutes, civilization collapsed. Your father had warned me something like this might happen. He said he signed us up for an emergency evacuation called The MAD if disaster struck."</p>
<</SAY>>
<<SAY Mc>>
<action>Eyes widening</action>
<p>"The MAD? I think I remember Dad mentioning that once or twice over the years. But he always sounded half-serious about it, like it was all just speculation."</p>
<</SAY>>
<<SAY Cherie>>
<p>"I know, I thought so too at first. But he was right."</p>
<</SAY>>
<<SAY>>
<p>She goes on to explain how just as society crumbled around them, a private plane arrived to whisk them away to a secret island base run by The MAD. But when they arrived, it was not exactly the safe haven they hoped for.</p>
<</SAY>>
<<SAY Cherie>>
<p>"All the men rapidly deteriorated. Within days, they were all dead, except for you. The few women left were put to work, scavenging and building. Since you were the last, we had to hide you from the other girls."</p>
<</SAY>>
<<SAY Mc>>
<action>I took my seat, lending a keen ear to each measured verse</action>
<p>Wait what, the last?</p>
<</SAY>>
<<SAY Cherie>>
<p>"We were told this island has the only source of a rare compound called D-Root that can keep the virus at bay in women."</p>
<</SAY>>
<<SAY Mc>>
<action>Sitting on the cot, your head spinning as you try to process everything</action>
<p>"This virus...what exactly does it do?"</p>
<</SAY>>
<<SAY Cherie>>
<action>Hesitating</action>
<p>"Well, it affects people in different ways, but the core symptoms are the same. It sends the libido into overdrive, making people crazed with lust."</p>
<</SAY>>
<<SAY Cherie>>
<action>Blushing slightly</action>
<p>"In men, it causes the genitals to swell to extremes. The arousal is constant and unbearable, driving them mad. Most die from heart failure within days, as the virus pushes their bodies beyond the breaking point." </p>
<</SAY>>
<<SAY>>
<p>You shift uncomfortably as Cherie's description hits uncomfortably close to home, your own swollen length twitching under the blanket.</p>
<</SAY>>
<<SAY Cherie>>
<p>"For women, the effects manifest differently. Our desires grow steadily, and our bodies transform over time - enlarging the breasts, hips and backside. The sensitivity in those areas becomes unbearable."</p>
<action>Her breathing grows slightly heavier as she describes the changes, a bead of sweat trailing down her neck. She quickly composes herself before continuing.</action>
<</SAY>>
<<SAY Image>>
BB15G
<</SAY>>
<<SAY Cherie>>
<p>"Without the D-Root antidote, we eventually succumb to the madness just like the men. But it takes much longer, up to several months."</p>
<</SAY>>
<<SAY Mc>>
<action>Nodding slowly as you take it all in</action>
<p>"My god, it sounds horrific. I can't believe you all endured this."</p>
<</SAY>>
<<SAY Cherie>>
<p>"We had no choice. When society collapsed, it was follow The MAD or die. At least here in the wilderness we have some freedom, even if each day is a struggle."</p>
<</SAY>>
<<SAY Mc>>
<p>What do you mean some freedom? The new society of the MAD is not a free one?</p>
<</SAY>>
<<SAY>>
<p>You see Cherie's hands tremble and her eyes glisten with unshed tears as she recounts what they endured.</p>
<</SAY>>
<<SAY Cherie>>
<p>"The women who survived were put to work immediately by The MAD officers. They rule this place with an iron fist. We're slaves, forced to scavenge and toil day and night just to earn enough D-Root to live another day."</p>
<</SAY>>
<<SAY Mc>>
<action>Jaw tightening, fists clenching with rage</action>
<p>How did you escape these bastards?</p>
<</SAY>>
<<SAY Cherie>>
<p>"One night, we decided we'd rather take our chances in the wilderness than remain under The MAD's thumb. Lana, Elfie and I stole away into the forest with you. By some miracle, we made it here untouched."</p>
<</SAY>>
<<SAY Mc>>
<p>"But without the D-Root, how did you survive the virus?"</p>
<</SAY>>
<<SAY Cherie>>
<action>Blushing slightly</action>
<p>"Oddly enough, we found that we can keep the worst effects at bay by...taking matters into our own hands, so to speak."</p>
<</SAY>>
<<SAY Mc>>
<action>Eyes widening in realization</action>
<p>"You mean...?"</p>
<</SAY>>
<<SAY Cherie>>
<action>Nodding</action>
<p>"It's worked so far, though the urges are getting stronger. We may not last much longer without D-Root."</p>
<</SAY>>
<<SAY Mc>>
<action>A shiver runs down your spine as you process her words</action>
<inner>Wait... Dying... men are dying. Am I infected? Is that why my body feels so alien?</inner>
<p>"Am I... am I going to die, Cherie? Why am I alive?"</p>
<</SAY>>
<<SAY Cherie>>
<action>Her eyes are brimming with an unspoken emotion, but she maintains her composure</action>
<p>"No. That's the strangest part. You should have, by all accounts. But you're still here, and you're awake. And you're not just surviving, you seem to be... stronger."</p>
<</SAY>>
<<SAY Image>>
BB15H
<</SAY>>
<<SAY>>
<p>You fall silent, taking in the enormity of all she has revealed. This island is more dangerous than you could have imagined, but you know you will do whatever it takes to protect your family.</p>
<</SAY>>
<<SAY Mc>>
<action>Sickened, reaching out to squeeze Cherie's hand</action>
<p>"My god, I can't believe you all went through that. I'm so sorry I wasn't there to protect you."</p>
<</SAY>>
<<SAY Cherie>>
<action>Shaking her head</action>
<p>"You were fighting your own battle, we're just thankful to have you back now. Out here, we don't have D-Root, but somehow we've survived. I don't know how much longer we can last though."</p>
<</SAY>>
<<SAY Mc>>
<action>Jaw clenching with determination</action>
<p>"I promise you, I'm going to fix this. We're going to find Dad, Abella, and get off this damned island. Just point me where to start."</p>
<</SAY>>
<<SAY Cherie>>
<action>Jumping up from her seat, reaching out to grab your arm</action>
<p>"Wait! You can't just rush out there. It's too dangerous without knowing what you're getting into."</p>
<</SAY>>
<<SAY Mc>>
<action>Pausing, turning back to face Cherie</action>
<p>"What do you mean? What's out there?"</p>
<</SAY>>
<<SAY Cherie>>
<action>Letting out a weary sigh, her eyes filled with concern</action>
<p>"The wastelands. A barren, lifeless landscape as far as the eye can see. We're on the very edge of it here." </p>
<</SAY>>
<<SAY>>
<p>She moves to the small window, peering out at the bleak vista beyond. You join her, gazing out on a desert of cracked earth and dust, broken only by jagged rock formations jutting at odd angles. In the distance, strange wisps of colored smoke curl into the air.</p>
<</SAY>>
<<SAY Image>>
BB15I
<</SAY>>
<<SAY Cherie>>
<p>"The MAD dumped us out there when we first arrived. It's their domain, where they send the women to scavenge and toil. It's too dangerous..."</p>
<</SAY>>
<<SAY Mc>>
<action>Squeezing her shoulder reassuringly</action>
<p>"I understand but I must see. Tell me what I'm up against out there."</p>
<</SAY>>
<<SAY Cherie>>
<action>Nodding</action>
<p>"The MAD army is vast, and their soldiers are cruel. They wield a terrible power - seduction through pheromones. None can resist their charms for long. The more virus they withstand without breaking, the more sexually dominant they are, which created a hierarchy in the new MAD society."</p>
<</SAY>>
<<SAY>>
<p>You see a haunted look in her eyes and know she speaks from experience. Your fists clench with rage at the thought.</p>
<</SAY>>
<<SAY Cherie>>
<p>"Let's just say their depravity knows no bounds. They feed off the suffering of others. So promise me, promise you won't take any unnecessary risks out there."</p>
<</SAY>>
<<SAY Mc>>
<action>Pulling Cherie into a fierce, protective hug</action>
<p>"I promise I'll be careful. And I swear to you, someday we'll make them pay for what they've done."</p>
<</SAY>>
<<SAY>>
<p>You stride toward the shed door, your footfalls echoing off the bare wood walls. As your hand touches the doorknob, you pause and look back at Cherie. She sits wringing her hands, equal parts gratitude and worry etched on her face.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('BB16')"> Go outside </div>
</div>
</div>
<</nobr>>\
<script>
DIAF_initDialogPassage(passageId);
</script><<nobr>>
<video class="bgvid" autoplay loop src="ressources/backgrounds/BB16.webm" poster="ressources/backgrounds/BB16_ss.webp"></video>
<div class="DIAS_container">
<<include "BB16a">>
</div>
<</nobr>>\
<script>
DIAF_initDialogPassage(passageId);
function option0(event) {
if (ST.BB16lana == 1 && ST.BB16elfie == 1) {
prologueStartExplore(true);
} else {
$('.DIAS_container').empty().wiki('<<include "BB16a">>');
DIAF_initDialogPassage(passageId);
setCharaterImageInPassage();
}
}
function option1(event) {
$('.DIAS_container').empty().wiki('<<include "BB17">>');
DIAF_initDialogPassage('BB17');
setCharaterImageInPassage();
}
function option2(event) {
$('.DIAS_container').empty().wiki('<<include "BB18">>');
DIAF_initDialogPassage('BB18');
setCharaterImageInPassage();
}
</script><<SAY>>
<p>As you step outside the old shed, the sunlight is almost blinding after months spent in darkness. You raise a hand to shield your eyes as they adjust. The sounds of birdsong and the breeze rustling through leaves fills your ears. As your vision clears, you gaze in wonder at the landscape before you.</p>
<</SAY>>
<<SAY>>
<p>A beautiful river flows past, its waters sparkling in the midday sun. On one bank is a lush, green forest, the trees dense with leaves of every shade. You can almost smell the earthy richness from where you stand. On the other side of the river are barren wastelands, scrubby vegetation dotting the rocky terrain and mountains as far as you can see.</p>
<</SAY>>
<<SAY>>
<p>Beyond the wastelands, you spot buildings, it must be the MAD new society, the part behind the shed is the district where you want to build the new shelter and utilitaries. The contrast is stark on either side of the winding river—abundant life and depleted earth side by side. You find yourself drawn to the water's edge, a cool breeze kissing your skin. You breathe in the sweet air, feeling truly alive for the first time in months as you take in the view. The beauty of this place soothes your soul after so long spent in darkness. You are overwhelmed with gratitude for the simple gifts of nature laid out before you.</p>
<</SAY>>
<!-- option buttons -->
<div class="DIAS_buttonCont">
<<if _BB16lana>>
<div class="DIAS_button" id="lanabutton">
<img class="DIAS_image" src="ressources/icons/13A10.webp">
</div>
<<else>>
<div class="DIAS_button" id="lanabutton" onclick="option1(event)">
<img class="DIAS_image" src="ressources/icons/13A11.webp">
</div>
<</if>>
<<if _BB16elfie>>
<div class="DIAS_button" id="elfiebutton">
<img class="DIAS_image" src="ressources/icons/13A10.webp">
</div>
<<else>>
<div class="DIAS_button" id="elfiebutton" onclick="option2(event)">
<img class="DIAS_image" src="ressources/icons/13A11.webp">
</div>
<</if>>
</div>
<style>
.DIAS_buttonCont {
flex-direction: row;
}
.DIAS_button {
height: 20vh;
width: 20vh;
min-width: 0;
margin: 5vh;
border-radius: 50%;
}
.DIAS_button:hover {
opacity: 0.7;
}
#lanabutton {
background-image: url('ressources/icons/9.webp');
background-size: cover;
}
#elfiebutton {
background-image: url('ressources/icons/10.webp');
background-size: cover;
}
.DIAS_buttonCont img {
width: 30%;
opacity: 0.7;
margin-left: 10vh;
margin-bottom: 10vh;
}
</style>\<<set _BB16lana = true>>
<<SAY>>
<p>You look around, taking in your lush green surroundings. The trees tower over you, branches rustling gently in the breeze. In the distance, you can hear the calls of exotic birds.</p>
<</SAY>>
<<SAY>>
<p>Your eyes settle on Lana, who is leaning against a tree, sharpening a dagger. Even in this new world, she still carries herself with a quiet strength and confidence.</p>
<</SAY>>
<<SAY Mc>>
<action>Stepping outside the shed, breathing in the fresh forest air</action>
<inner>Time to get some answers</inner>
<p>"Hey Lana, got a minute?"</p>
<</SAY>>
<<SAY Lana>>
<action>Leaning against a tree, arms crossed</action>
<p>"What do you want?"</p>
<</SAY>>
<<SAY Image>>
BB17A
<</SAY>>
<<SAY Mc>>
<action>Walking over casually</action>
<p>"I was hoping you could tell me more about this place. Cherie mentioned the forest is dangerous?"</p>
<</SAY>>
<<SAY Lana>>
<action>Scowling</action>
<p>"Tch, that's putting it lightly. The deeper you go, the weirder it gets."</p>
<</SAY>>
<<SAY>>
<p>You gaze towards the treeline, a cool breeze rustling the leaves. There's a palpable energy in the air, both alluring and foreboding.</p>
<</SAY>>
<<SAY Lana>>
<action>Crosses her arms, her biceps bulging slightly, the setting sun casting her face in shadow</action>
<p>"We don't know much about it, but there's something in there that makes the virus worse. People get feverish, paranoid...like it's messing with their heads."</p>
<</SAY>>
<<SAY Mc>>
<action>Nodding</action>
<p>"Right, Cherie said even you haven't gone far in?"</p>
<</SAY>>
<<SAY Lana>>
<action>Steps closer, the intensity in her gaze never faltering</action>
<p>"No, too dangerous, plants that move, almost think. They react to the virus, to us. And there's an energy in the air—thick, almost tangible. It heightens the virus's effects, makes the symptoms... unpredictable."</p>
<</SAY>>
<<SAY>>
<p>She pauses, her jaw clenching as she recalls the past.</p>
<</SAY>>
<<SAY Lana>>
<p>"Before we escaped, I saw what it did to the others in that damned city. The virus drove them mad, turned them into animals. They'd tear each other apart for a hit of D-Root just to take the edge off."</p>
<</SAY>>
<<SAY Mc>>
<action>Eyes widening</action>
<p>"D-Root?"</p>
<</SAY>>
<<SAY Lana>>
<action>Nods</action>
<p>"It's some kind of plant extract the MAD higher-ups controlled. Seemed to counteract the virus, at least for a while. But it was never enough. The pitiful wretches sold their souls just to get their next fix."</p>
<</SAY>>
<<SAY>>
<p>She spits on the ground in disgust.</p>
<</SAY>>
<<SAY Mc>>
<action>Nod solemnly, the gravity of her words weighing heavily</action>
<inner>This is no ordinary mission. It's a battle against the very nature of this place.</inner>
<p>"Thanks, Lana. I'll keep my guard up."</p>
<</SAY>>
<<SAY Lana>>
<action>Gives a rare, tight-lipped smile, her fierce demeanor softening just slightly</action>
<p>"Good. And remember, the virus might make you feel powerful at times, but don't let it fool you. It's a predator, and we're all prey."</p>
<</SAY>>
<<SAY Image>>
BB17B
<</SAY>>
<<SAY>>
<p>You watch her for a moment, her words echoing in your mind as you turn to face the darkening woods. The Forest, with its mysterious energy and virus-induced dangers, waits silently for you to enter.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="option0(event)"> Go back </div>
</div><<set _BB16elfie = true>>
<<SAY Mc>>
<action>Leaning against the Shed, the texture of aged wood against your back</action>
<p>"Quite the view, huh, Elfie?"</p>
<</SAY>>
<<SAY>>
<p>Elfie's silhouette is framed by the fading light, her youthful gaze bright with an unwavering sense of hope.</p>
<</SAY>>
<<SAY Image>>
BB18A
<</SAY>>
<<SAY Elfie>>
<action>With a soft smile</action>
<p>"It's perfect. A fresh start, right?"</p>
<</SAY>>
<<SAY>>
<p>As you discuss the future, her optimism is infectious.</p>
<</SAY>>
<<SAY Mc>>
<action>Eyes on a nearby clearing</action>
<p>"That could be our new district. A place to call home."</p>
<</SAY>>
<<SAY Elfie>>
<action>Pointing towards the forest</action>
<p>"And with the fish from the ponds, we won't go hungry."</p>
<</SAY>>
<<SAY Mc>>
<p>"Food is the priority. But we need to think about storage too, or we will have to fish day to day."</p>
<</SAY>>
<<SAY>>
<p>Elfie's energy is a stark contrast to the Shed's somber tone, her readiness to face the new world's challenges evident.</p>
<</SAY>>
<<SAY Elfie>>
<action>Nodding with confidence</action>
<p>"We could use the wasteland's scraps—metals and plastics to build something lasting."</p>
<</SAY>>
<<SAY Mc>>
<action>Heartened by her practicality</action>
<p>"And the forest has strong trees. We can handle the work."</p>
<</SAY>>
<<SAY>>
<p>Laughter echoes, a defiant sound against the uncertainty of the world.</p>
<</SAY>>
<<SAY Mc>>
<action>Resolved</action>
<p>"We can make a home, Elfie. A real one."</p>
<</SAY>>
<<SAY Elfie>>
<action>Stepping closer, her smile unwavering</action>
<p>"With you? Everything's possible."</p>
<</SAY>>
<<SAY Image>>
BB18B
<</SAY>>
<<SAY>>
<p>You smile as you get ready for the challenge ahead.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="option0(event)"> Go back </div>
</div><<nobr>>
<div class="DIAS_container">
<<SAY Mc>>
<action>Walking through the Wastelands, scavenging for materials</action>
<inner>I need to find anything useful to improve our shelter...</inner>
<</SAY>>
<<SAY>>
<p>Suddenly, you hear a noise behind you and turn around quickly. Standing there is a woman dressed in a tight black latex suit, a mask covering her face. She seems startled to see you.</p>
<</SAY>>
<<SAY 'Mad Dummy'>>
<p>A...a man? I haven't seen a man in months!</p>
<</SAY>>
<<SAY Image>>
BB19A
<</SAY>>
<<SAY Mc>>
<action>Raising your hands cautiously</action>
<p>Easy there. I'm not looking for any trouble.</p>
<</SAY>>
<<SAY 'Mad Dummy'>>
<action>Moving closer, eyeing you hungrily</action>
<p>Mmm I've missed men so much. Come with me back to the MAD headquarters, I'm sure the Queens would love to meet you.</p>
<</SAY>>
<<SAY Mc>>
<action>Backing up slowly</action>
<inner>Crap, Cherie warned me about women like this!</inner>
<p>Thanks but no thanks, I should really get going.</p>
<</SAY>>
<<SAY 'Mad Dummy'>>
<action>Lunging forward suddenly, grabbing your arm</action>
<p>I insist! We must bring you in.</p>
<</SAY>>
<<SAY Mc>>
<action>Struggling against her grip</action>
<inner>She's stronger than she looks!</inner>
<p>Let me go!</p>
<</SAY>>
<<SAY>>
<p>The Mad Dummy tightens her grip, squeezing your muscular arm. She breathes heavily, her eyes filled with lust behind her mask.</p>
<</SAY>>
<<SAY 'Mad Dummy'>>
<p>Don't fight me boy. Just relax and let me take you to the Queens. I'm sure we can come to an... arrangement.</p>
<</SAY>>
<<SAY Image>>
BB19B
<</SAY>>
<<SAY>>
<p>Her other hand reaches down and grabs your crotch firmly. You gasp at the sudden intimate contact. She starts to rub and massage you through your pants.</p>
<p>As the Mad Dummy tightens her grip on your arm, you can feel the intensity of the virus surging through her. Her lustful aura envelops you, heightening your own viral urges.</p>
<</SAY>>
<<SAY Mc>>
<action>Moaning involuntarily</action>
<inner>No! I can't let her take control!</inner>
<p>I can play this game too!</p>
<</SAY>>
<<SAY>>
<p>Mustering your willpower, you focus your mind and let your own viral energy flow, magnifying your sexual power. You feel your dominance rising to match hers.</p>
<p>Making direct eye contact, you project your intensified virile energy towards the Mad Dummy. Caught off guard, she loosens her grip in surprise. Seizing the moment, you grab her forcefully and pin her against a wall, asserting your control.</p>
<</SAY>>
<<SAY 'Mad Dummy'>>
<action>Smirk, visibly excited</action>
<p>This is about to get interesting.</p>
<</SAY>>
<<SAY Image>>
BB19C
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="nextBloc()"> Let the dominance game begin </div>
</div>
</div>
<</nobr>>\
<script>
DIAF_initDialogPassage(passageId);
setBackground('ressources/backgrounds/WA.webm');
function nextBloc() {
let fightOptions = {
wheelType: "demo",
winReturnPassage: "6B",
lossReturnPassage: "6B",
noRewards: true,
noNextPartOfDay: true,
};
if (SCAV_gameStateInit == false) {
fightOptions.winReturnPassage = "3A1";
fightOptions.lossReturnPassage = "3A1";
}
FGF_enterFight("FWA", fightOptions);
}
</script><<script>>
playAudio("music", "river");
<</script>>\
<<nobr>>
<div class="DIAS_container">
<<SAY Mc>>
<action>Walking along the riverbank, shirtless and glistening with sweat</action>
<inner>That was some hard work building the shelter and storage, but it'll be worth it to see the girls' faces when they find out</inner>
<</SAY>>
<<SAY>>
<p>The sun beats down intensely as you make your way back from completing construction on the new shelter and storage area. The physical exertion has left your muscular torso dripping with sweat. You can't wait to tell the girls the good news.</p>
<</SAY>>
<<SAY>>
<p>As you approach the shed near the river, you spot Cherie, Lana and Elfie heading your way.</p>
<</SAY>>
<<SAY Cherie>>
<action>Rushing over with a look of concern</action>
<p>Oh honey, are you alright? We were so worried when we didn't see you for hours!</p>
<</SAY>>
<<SAY Image>>
BB20A
<</SAY>>
<<SAY Mc>>
<action>Grinning with pride</action>
<p>Everything's great, don't worry! I got the shelter and storage built all by myself. And that's not all - I defeated a MAD Dummy in combat on the way back too. I'm feeling stronger than ever!</p>
<</SAY>>
<<SAY Lana>>
<action>Rolling her eyes sarcastically</action>
<p>A MAD Dummy? Right...and I suppose you built the Taj Mahal while you were at it too?</p>
<</SAY>>
<<SAY Elfie>>
<action>Jumping up and down eagerly</action>
<p>Wow really?? You finished the whole shelter? I wanna see it now! Did you really fight a MAD Dummy too? That's amazing!</p>
<</SAY>>
<<SAY Image>>
BB20B
<</SAY>>
<<SAY Lana>>
<action>Scoffing</action>
<p>Come on Elfie, you can't actually believe he did all that in one day. He's obviously exaggerating.</p>
<</SAY>>
<<SAY Mc>>
<action>Flexing your biceps with a sly grin</action>
<p>It's all true. This MAD Dummy was no match for my newfound strength. And just wait until you see the shelter!</p>
<</SAY>>
<<SAY Cherie>>
<action>Studying you with concern</action>
<p>I don't know dear, it does seem hard to believe. But you do look different somehow - so strong and vibrant! Still, don't overexert yourself, okay?</p>
<</SAY>>
<<SAY Elfie>>
<action>Bouncing excitedly</action>
<p>Pleeease can we go see the shelter now? I wanna see if he really did finish it! This is so cool!</p>
<</SAY>>
<<SAY Lana>>
<action>Rolling her eyes again</action>
<p>Fine, let's go check out this "magical shelter" then. I'm sure it's just a pile of sticks.</p>
<</SAY>>
<<SAY Image>>
BB20C
<</SAY>>
<<SAY Mc>>
<action>Catching her gaze, the truth of your achievements glinting in your eyes</action>
<p>"Believe it or not, it happened. And I'm eager to show you the fruits of today's labor."</p>
<</SAY>>
<<SAY>>
<p>Still stunned, the girls follow as you lead them towards the amazing shelter you somehow managed to build in record time. Lana steals glances at your bare, muscular back and finds herself admiring, she shakes her head and tell herself you are still just a weak kid. Elfie skips happily along, her innocence blending with curious surprise at your transformation. Cherie follows protectively behind, relief washing over her at seeing you awake and better than ever.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('BB21')"> Go to the Shelter </div>
</div>
</div>
<</nobr>>\
<script>
SV.gui_interface.angelaButtonEnable = false;
DIAF_initDialogPassage(passageId);
</script><<script>>
playAudio("music", "shelter");
<</script>>\
<<nobr>>
<<set $hidegirls to 0>>
<div class="DIAS_container">
<<SAY Mc>>
<action>Leading the way to my room, the first stop on the tour</action>
<inner>They have no idea what's in store for them.</inner>
<p>"Welcome to the heart of our new sanctuary."</p>
<</SAY>>
<<SAY>>
<p>The door creaks open to reveal a spacious chamber, bathed in serene blue, the wooden walls giving it an earthy warmth. Sunlight dances through the open window, casting a welcoming glow over everything.</p>
<</SAY>>
<<SAY>>
<p>Cherie, Lana, and Elfie, Their eyes widen, taking in the grandeur of the space, each reacting in their own unique way.</p>
<</SAY>>
<<SAY Cherie>>
<action>Her hand covers her mouth, tears glistening at the edge of her eyes</action>
<p>"Oh my... it's beautiful."</p>
<</SAY>>
<<SAY Elfie>>
<action>Bouncing on the balls of her feet, barely able to contain her excitement</action>
<p>"I can't believe this is ours!"</p>
<</SAY>>
<<SAY Lana>>
<action>Crossing her arms, her gaze sweeping the room, a subtle softness in her eyes she tries to hide, she's moved, but she'd never admit it outright.</action>
<inner>Wow, can't believe it was not a lie.</inner>
<</SAY>>
<<SAY Mc>>
<action>Smiling at their reactions, then gesturing towards the next destination</action>
<p>"Cherie, your room awaits."</p>
<</SAY>>
<div id="stopper1" class="DIAS_buttonCont DIAS_stopper">
<div id="bedroom-cherie" class="DIAS_button">
<img class="arrowbackground" src="ressources/maingui/ui/chevron-arrow2.webp">
<!-- right arrow icon -->
</div>
</div>
<<SAY>>
<p>Cherie's room emerges in a palette of warm, reddish hues, a stark contrast to the cool tranquility of the hallway. She steps inside, the soft carpet caressing her feet, and the room seems to embrace her.</p>
<</SAY>>
<<SAY Image>>
BB21A
<</SAY>>
<<SAY Cherie>>
<action>Her voice trembles with emotion</action>
<p>"I never dreamed of having something like this again."</p>
<</SAY>>
<<SAY>>
<p>Moving along, the anticipation buzzes through the air as Elfie practically skips towards her room.</p>
<</SAY>>
<div id="stopper2" class="DIAS_buttonCont DIAS_stopper">
<div id="bedroom-elfie" class="DIAS_button">
<img class="arrowbackground" src="ressources/maingui/ui/chevron-arrow2.webp">
<!-- right arrow icon -->
</div>
</div>
<<SAY>>
<p>The door swings open to a pink paradise, a reflection of her youthful exuberance.</p>
<</SAY>>
<<SAY Elfie>>
<action>Her eyes sparkle with unshed tears of joy as she explores every nook and cranny</action>
<p>"It's perfect!"</p>
<action>She launches into your arms</action>
<p>"Thank you, thank you!"</p>
<</SAY>>
<<SAY Image>>
BB21B
<</SAY>>
<<SAY Mc>>
<action>Hugging her back, a sense of pride swelling within</action>
<inner>I'm glad they're happy. This is what it's all for.</inner>
<</SAY>>
<<SAY Cherie>>
<action>Beaming at you, a look of admiration clear on her face</action>
<p>"You've done so well."</p>
<</SAY>>
<<SAY>>
<p>Lana's room is next.</p>
<</SAY>>
<div id="stopper3" class="DIAS_buttonCont DIAS_stopper">
<div id="bedroom-lana" class="DIAS_button">
<img class="arrowbackground" src="ressources/maingui/ui/chevron-arrow2.webp">
<!-- right arrow icon -->
</div>
</div>
<<SAY>>
<p>A mysterious purple enclave, both dark and inviting. She steps over the threshold, the ambiance aligning with her enigmatic aura.</p>
<</SAY>>
<<SAY Lana>>
<action>Her voice is steady, betraying none of her inner delight</action>
<p>"I suppose it's suitable."</p>
<</SAY>>
<<SAY>>
<p>The slight twitch of her lips, however, betrays her true feelings. She tours her domain, touching the fabric of her new reality.</p>
<</SAY>>
<<SAY Image>>
BB21C
<</SAY>>
<<SAY Lana>>
<action>With a dry humor that lightens the mood</action>
<p>"It'll do, for now."</p>
<</SAY>>
<<SAY>>
<p>Laughter bubbles up from the group, the tension melting away into genuine affection.</p>
<p>The final stop is the bathroom.</p>
<</SAY>>
<div id="stopper4" class="DIAS_buttonCont DIAS_stopper">
<div id="bathroom" class="DIAS_button">
<img class="arrowbackground" src="ressources/maingui/ui/chevron-arrow2.webp">
<!-- right arrow icon -->
</div>
</div>
<<SAY>>
<p>A pristine white oasis that seems alien after so long without such luxuries. They wander through, already dreaming of the comfort it promises.</p>
<</SAY>>
<<SAY Mc>>
<action>Noticing the time, feeling the weight of the day's work</action>
<inner>I could use a break.</inner>
<p>"I'm going to rest for a bit, but make yourselves at home. There's more to come."</p>
<</SAY>>
<<SAY>>
<p>They nod, understanding the need for solitude after the excitement.</p>
<</SAY>>
<<SAY Elfie>>
<action>Her smile is as bright as the light filtering through the windows</action>
<p>"I can't wait to see what's next!"</p>
<</SAY>>
<<SAY>>
<p>With farewells exchanged, you retreat to your room, the door closing with a soft click behind you, leaving you alone with your thoughts and the satisfaction of a new beginning.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="nextBloc()"> The Fapocalypse Begins </div>
</div>
</div>
<</nobr>>\
<style>
.DIAS_button {
margin-bottom: 2vh;
}
.DIAS_button img {
width: 5vh;
padding: 1vh;
filter: invert(9%) sepia(92%) saturate(6754%) hue-rotate(7deg) brightness(84%) contrast(98%);
}
</style>\
<script>
(() => {
DIAF_initDialogPassage(passageId);
const backgrounds = [
{ selector: 'bedroom-cherie', id: 'stopper1' },
{ selector: 'bedroom-elfie', id: 'stopper2' },
{ selector: 'bedroom-lana', id: 'stopper3' },
{ selector: 'bathroom', id: 'stopper4' }
];
function changeBackground(className, id) {
document.body.className = className;
document.getElementById(id).classList.remove('DIAS_stopper');
}
backgrounds.forEach(({ selector, id }) => {
document.getElementById(selector).addEventListener('click', (e) => {
changeBackground(selector, id);
DIAF_MessageClick({target: document.body}); //fake event target
}, { once: true });
});
})();
function nextBloc() {
SV.newGame = 2;
SV.gui_interface.angelaButtonEnable = true;
playPassage('1SA');
}
</script><<script>>
/* resetTracksTime("music"); */
playAudio("music", "overallMap");
UIBar.unstow(); /* meh */
SV.gui_interface.angelaButtonEnable = true;
SV.gui_interface.inventoryButtonEnable = true;
<</script>>\
<<nobr>>
<div class="MS_mainContainer">
<img class="MS_mainImage" src="ressources/maingui/maps/map.webp">
<!-- hover images -->
<img class="MS_hoverImage" type="district" src="ressources/maingui/maps/map_city.webp">
<img class="MS_hoverImage" type="wasteland" src="ressources/maingui/maps/map_wasteland.webp">
<img class="MS_hoverImage" type="forest" src="ressources/maingui/maps/map_forest.webp">
<!-- triggers -->
<img class="MS_triggerImage" src="ressources/maingui/maps/map_blank.webp"
type="district" onclick="playPassage('DISTRICT MAP')"
style="clip-path: polygon(56.0% 5.1%, 57.6% 20.3%, 59.8% 34.7%, 62.5% 47.5%, 66.3% 60.9%, 61.4% 54.4%, 56.1% 49.4%, 50.9% 45.8%, 45.2% 43.2%, 39.5% 41.8%, 34.0% 42.6%, 29.5% 45.5%, 24.8% 52.1%, 21.9% 57.9%, 19.1% 64.6%, 16.0% 72.3%, 12.3% 79.3%, 8.8% 79.5%, 4.2% 75.1%, 2.9% 69.8%, 3.8% 67.1%, 3.2% 61.4%, 3.6% 56.6%, 11.1% 49.4%, 12.0% 47.1%, 12.3% 41.9%, 17.7% 28.1%, 20.9% 22.3%, 22.1% 19.4%, 23.7% 18.1%, 25.8% 19.3%, 35.1% 9.1%, 41.4% 6.3%, 41.4% 3.1%, 43.8% 2.9%, 44.2% 5.8%, 46.5% 6.1%, 46.5% 3.3%, 48.6% 3.1%, 49.7% 5.6%);">
<img class="MS_triggerImage" src="ressources/maingui/maps/map_blank.webp"
type="wasteland" onclick="playPassage('WASTELAND MAP')"
style="clip-path: polygon(14.6% 79.6%, 17.1% 74.3%, 20.0% 67.3%, 23.7% 58.4%, 27.6% 51.5%, 31.8% 46.8%, 35.5% 44.9%, 38.8% 44.4%, 43.9% 45.6%, 49.7% 48.1%, 55.9% 52.4%, 61.4% 58.0%, 65.5% 63.6%, 69.5% 69.8%, 73.4% 77.2%, 76.0% 81.8%, 79.2% 86.2%, 71.9% 92.3%, 67.3% 94.1%, 61.8% 94.1%, 57.6% 93.4%, 50.9% 95.3%, 42.9% 90.9%, 34.7% 86.0%, 19.5% 79.4%);">
<img class="MS_triggerImage" src="ressources/maingui/maps/map_blank.webp"
type="forest" onclick="playPassage('FOREST MAP')"
style="clip-path: polygon(58.0% 5.2%, 74.1% 4.7%, 81.0% 3.3%, 84.6% 5.6%, 87.9% 15.7%, 89.1% 19.6%, 89.9% 21.2%, 93.6% 27.0%, 96.0% 34.1%, 95.8% 47.6%, 97.0% 64.7%, 96.1% 70.8%, 93.4% 75.4%, 88.3% 81.2%, 81.1% 84.6%, 76.8% 78.6%, 72.2% 70.5%, 68.1% 60.0%, 64.3% 47.6%, 60.9% 30.5%, 59.0% 16.3%);">
<div class="eventButton">
<img src="ressources/icons/pumpkin.webp" onclick="playPassage('XHH1')">
</div>
<div class="eventDeco">
<img src="ressources/icons/skeleton.webp" onclick="playPassage('XHH2')">
</div>
<!-- girl location indicator -->
<<if $hidegirls is 0>>
<div class="MS_divAreasCont">
<div class="GLMS_markerCont" section="district" style="bottom: 61%; left: 31%; width: 25%">
<!-- <div class="GLMS_marker"><img src="ressources/icons/10.webp"></div>
<div class="GLMS_marker"><img src="ressources/icons/8.webp"></div> -->
</div>
<div class="GLMS_markerCont" section="wastelands" style="top: 55%; left: 25%; width: 45%"></div>
<div class="GLMS_markerCont" section="forest" style="top: 26%; left: 65%; width: 31%"></div>
</div>
<</if>>
</div>
<</nobr>>\
<style>
body {
overflow: hidden;
background-color: rgb(6, 123, 169);
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
font-family: 'Roboto', sans-serif;
}
</style>\
<script>
(() => {
setCurrentSection({name: "World Map"});
var trigerZones = document.querySelectorAll('.MS_triggerImage');
trigerZones.forEach(function(zone) {
let type = zone.getAttribute('type');
let hoverImage = document.querySelector(`.MS_hoverImage[type='${type}']`);
if (!hoverImage) return;
zone.addEventListener('mouseover', function() {
hoverImage.style.opacity = 1;
});
zone.addEventListener('mouseout', function() {
hoverImage.style.opacity = 0;
});
});
// make the 2nd halloween event visible when AUA1, GUA1 and DUA1 are seen.
let gabbieScene = SV.scenes.list.GUA1;
let angelaScene = SV.scenes.list.AUA1;
let miaSeen = SV.scenes.list.DUA1;
if (gabbieScene.seen && angelaScene.seen && miaSeen.seen === true) {
let eventDeco = document.querySelector('.eventDeco');
eventDeco.style.display = 'flex';
}
})();
</script><<script>>
/* resetTracksTime("music"); */
playAudio("music", "overallMap");
SV.gui_interface.angelaButtonEnable = true;
/*SV.gui_interface.mapButtonEnable = true;*/
SV.gui_interface.inventoryButtonEnable = true;
<</script>>\
<<nobr>>
<div class="previousmap">[["MAIN MAP"|MAIN MAP]]</div>
<div id="MS_mapContainer">
<img class="MS_mainImage" src="ressources/maingui/maps/city/city.webp">
<img section="workshop" class="IMGa lockedmap" src="ressources/maingui/maps/city/city_workshop_locked.webp">
<img section="workshop" class="IMGa unlockedmap" src="ressources/maingui/maps/city/city_workshop_bought.webp">
<img section="workshop" class="IMGa hoverInfo" src="ressources/maingui/maps/city/city_workshop.webp">
<img section="shelter" class="IMGa lockedmap" src="ressources/maingui/maps/city/city_shelter_locked.webp">
<!--img section="shelter" class="IMGa unlockedmap" src="ressources/maingui/maps/city/city_shelter_bought.webp"--> <!-- unlocked from the start -->
<img section="shelter" class="IMGa hoverInfo" src="ressources/maingui/maps/city/city_shelter.webp">
<img section="greenhouse" class="IMGa lockedmap" src="ressources/maingui/maps/city/city_greenhouse_locked.webp">
<img section="greenhouse" class="IMGa unlockedmap" src="ressources/maingui/maps/city/city_greenhouse_bought.webp">
<img section="greenhouse" class="IMGa hoverInfo" src="ressources/maingui/maps/city/city_greenhouse.webp">
<img section="storage" class="IMGa lockedmap" src="ressources/maingui/maps/city/city_storage_locked.webp">
<img section="storage" class="IMGa unlockedmap" src="ressources/maingui/maps/city/city_storage_bought.webp">
<img section="storage" class="IMGa hoverInfo" src="ressources/maingui/maps/city/city_storage.webp">
<img section="river" class="IMGa lockedmap" src="ressources/maingui/maps/city/city_river_locked.webp">
<img section="river" class="IMGa unlockedmap" src="ressources/maingui/maps/city/city_river_bought.webp">
<img section="river" class="IMGa hoverInfo" src="ressources/maingui/maps/city/city_river.webp">
<img section="prison" class="IMGa lockedmap" src="ressources/maingui/maps/city/city_prison_locked.webp">
<img section="prison" class="IMGa unlockedmap" src="ressources/maingui/maps/city/city_prison_bought.webp">
<img section="prison" class="IMGa hoverInfo" src="ressources/maingui/maps/city/city_prison.webp">
<img section="gates" class="IMGa lockedmap" src="ressources/maingui/maps/city/city_gates_locked.webp">
<img section="gates" class="IMGa unlockedmap" src="ressources/maingui/maps/city/city_gates_bought.webp">
<img section="gates" class="IMGa hoverInfo" src="ressources/maingui/maps/city/city_gates.webp">
<!-- hover Triggers -->
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/city/city_blank.webp"
section="workshop" style="clip-path: polygon(0.0% 0.0%, 49.7% 0.0%, 49.7% 23.5%, 46.5% 24.4%, 44.0% 25.6%, 41.8% 27.9%, 39.8% 30.9%, 0.0% 30.7%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/city/city_blank.webp"
section="shelter" style="clip-path: polygon(0.0% 31.7%, 39.2% 31.7%, 36.8% 37.7%, 35.8% 42.2%, 35.1% 48.7%, 35.4% 55.8%, 36.8% 62.5%, 39.2% 68.0%, 0.0% 68.0%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/city/city_blank.webp"
section="greenhouse" style="clip-path: polygon(0.0% 69.0%, 39.7% 69.0%, 41.8% 71.8%, 44.2% 74.3%, 46.8% 75.8%, 49.7% 76.3%, 49.7% 100.0%, 0.0% 100.0%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/city/city_blank.webp"
section="storage" style="clip-path: polygon(49.9% 24.2%, 45.6% 25.4%, 42.3% 28.5%, 40.0% 31.7%, 38.0% 35.9%, 36.3% 41.8%, 35.6% 48.5%, 36.0% 55.2%, 37.3% 61.9%, 39.8% 67.6%, 42.7% 71.9%, 46.1% 74.5%, 49.9% 75.5%, 53.6% 74.8%, 56.7% 72.6%, 59.3% 69.6%, 61.3% 65.8%, 63.1% 60.4%, 64.2% 54.1%, 64.3% 47.8%, 63.6% 41.7%, 62.2% 36.1%, 60.0% 31.7%, 57.6% 28.3%, 54.2% 25.2%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/city/city_blank.webp"
section="river" style="clip-path: polygon(50.2% 0.0%, 100.0% 0.0%, 100.0% 30.7%, 60.1% 30.7%, 58.2% 28.1%, 56.1% 25.8%, 53.2% 24.0%, 50.2% 23.5%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/city/city_blank.webp"
section="prison" style="clip-path: polygon(60.6% 31.6%, 100.0% 31.6%, 100.0% 68.0%, 60.8% 68.0%, 62.7% 63.9%, 63.9% 59.1%, 64.7% 53.1%, 64.8% 47.1%, 64.0% 41.6%, 62.9% 36.5%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/city/city_blank.webp"
section="gates" style="clip-path: polygon(60.2% 68.8%, 100.0% 69.0%, 100.0% 100.0%, 50.2% 100.0%, 50.2% 76.3%, 52.6% 76.1%, 55.3% 74.7%, 57.8% 72.4%);">
<!-- girl location indicator -->
<<if $hidegirls is 0>>
<div class="MS_divAreasCont">
<div class="GLMS_markerCont" section="district.sub.workshop" style="bottom: 70%; left: 1%; width: 40%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter" style="bottom: 35%; left: 1%; width: 35%"></div>
<div class="GLMS_markerCont" section="district.sub.greenhouse" style="bottom: 1%; left: 1%; width: 45%"></div>
<div class="GLMS_markerCont" section="district.sub.storage" style="bottom: 40%; left: 40%; width: 20%"></div>
<div class="GLMS_markerCont" section="district.sub.river" style="bottom: 70%; right: 1%; max-width: 40%"></div>
<div class="GLMS_markerCont" section="district.sub.prison" style="bottom: 35%; right: 1%; max-width: 35%"></div>
<div class="GLMS_markerCont" section="district.sub.gates" style="bottom: 1%; right: 1%; max-width: 45%"></div>
</div>
<</if>>
</div>
<div id="MS_popupOverlayCont"></div>
<</nobr>>\
<style>
body {
background-color: rgb(20,20,20);
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
display: flex;
justify-content: center;
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
position: relative;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: white;
font-family: 'Roboto', sans-serif;
}
img.IMGa.hoverInfo {
z-index: 2;
pointer-events: none;
}
</style>\
<script>
setCurrentSection({keys: "district"});
MS_init();
</script><<script>>playAudio("music", "shelter")<</script>>\
<<nobr>>
<div class="exit-button" onclick="playPassage('DISTRICT MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="GSIS_mainCont" section="district.sub.storage"></div>
<div class="button-container">
<div class="circle-button" onclick='accessInventory("storage")'>
<img src="ressources/icons/IDK1.webp" width="70%">
</div>
<div class="circle-button" onclick='accessInventory("fridge")'>
<img src="ressources/icons/IDK2.webp" width="70%">
</div>
<div class="circle-button" onclick='accessInventory("furnace")'>
<img src="ressources/icons/IDK3.webp" width="70%" style="margin-right:-18%;">
</div>
</div>
<</nobr>>\
<<roomStyle>>
<style>
#story {
background-image: url('ressources/backgrounds/1B.webp');
}
.circle-button {
background-color: #404040;
border: 2vmin solid #c1500a;
color: #c1500a;
}
.exit-button {
background-color: #404040;
border: 2vmin solid #c1500a;
}
.exit-button img,
.circle-button img {
filter: invert(32%) sepia(96%) saturate(3486%) hue-rotate(19deg) brightness(93%) contrast(92%);
}
</style>\
<script>
</script><<script>>
playAudio("music", "shelter");
SV.gui_interface.angelaButtonEnable = true;
/*SV.gui_interface.mapButtonEnable = true;*/
SV.gui_interface.inventoryButtonEnable = true;
<</script>>\
<<nobr>>
<div class="previousmap previousmap_fixed">[["DISTRICT MAP"|DISTRICT MAP]]</div>
<div id="MS_mapContainer">
<img class="MS_mainImage" src="ressources/maingui/maps/shelter/shelter.webp">
<!--img class="image-main" src="ressources/maingui/maps/shelter/shelter-night.webp"-->
<img section="bedroomMc" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_mcroom_hover.webp">
<img section="bedroomElfie" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_younger_hover.webp">
<img section="bedroomLana" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_older_hover.webp">
<img section="bathroom1" class="IMGa unlockedmap" src="./ressources/maingui/maps/shelter/shelter_bathroom.webp">
<img section="bathroom1" class="IMGa hoverInfo" src="./ressources/maingui/maps/shelter/shelter_bathroom_hover.webp">
<img section="bedroomCherie" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_mom_hover.webp">
<img section="gym" class="IMGa unlockedmap" src="ressources/maingui/maps/shelter/shelter_gym.webp">
<img section="gym" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_gym_hover.webp">
<img section="kitchen" class="IMGa unlockedmap" src="ressources/maingui/maps/shelter/shelter_kitchen.webp">
<img section="kitchen" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_kitchen_hover.webp">
<img section="livingroom" class="IMGa unlockedmap" src="ressources/maingui/maps/shelter/shelter_livingroom.webp">
<img section="livingroom" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_livingroom_hover.webp">
<img section="bathroom2" class="IMGa unlockedmap" src="ressources/maingui/maps/shelter/shelter_bathroom2.webp">
<img section="bathroom2" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_bathroom2_hover.webp">
<img section="backyard" class="IMGa unlockedmap" src="ressources/maingui/maps/shelter/shelter_backyard.webp">
<img section="backyard" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_backyard_hover.webp">
<img section="pool" class="IMGa unlockedmap" src="ressources/maingui/maps/shelter/shelter_pool.webp">
<img section="pool" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_pool_hover.webp">
<img section="spa" class="IMGa unlockedmap" src="ressources/maingui/maps/shelter/shelter_spa.webp">
<img section="spa" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_spa_hover.webp">
<img section="guestroom1" class="IMGa unlockedmap" src="ressources/maingui/maps/shelter/shelter_guestroom1.webp">
<img section="guestroom1" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_guestroom1_hover.webp">
<img section="guestroom2" class="IMGa unlockedmap" src="ressources/maingui/maps/shelter/shelter_guestroom2.webp">
<img section="guestroom2" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_guestroom2_hover.webp">
<img section="guestroom3" class="IMGa unlockedmap" src="ressources/maingui/maps/shelter/shelter_guestroom3.webp">
<img section="guestroom3" class="IMGa hoverInfo" src="ressources/maingui/maps/shelter/shelter_guestroom3_hover.webp">
<!-- hover Triggers -->
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="bedroomMc" style="clip-path: polygon(59.2% 12.9%, 25.9% 22.7%, 74.1% 22.6%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="bedroomElfie" style="clip-path: polygon(25.6% 24.6%, 25.9% 36.9%, 50.1% 36.8%, 50.0% 24.4%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="bedroomLana" style="clip-path: polygon(51.3% 24.5%, 72.8% 24.5%, 72.8% 36.8%, 51.1% 36.8%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="bathroom1" style="clip-path: polygon(26.1% 38.5%, 26.4% 50.2%, 50.2% 50.1%, 50.1% 38.7%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="bedroomCherie" style="clip-path: polygon(51.1% 38.8%, 50.9% 50.0%, 72.9% 50.0%, 72.9% 39.0%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="gym" style="clip-path: polygon(5.1% 51.9%, 25.5% 52.0%, 25.4% 63.3%, 5.2% 62.9%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="kitchen" style="clip-path: polygon(26.1% 52.3%, 50.0% 52.3%, 49.9% 62.8%, 26.1% 63.1%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="livingroom" style="clip-path: polygon(50.8% 52.3%, 72.8% 52.2%, 72.9% 63.2%, 50.9% 62.5%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="bathroom2" style="clip-path: polygon(73.4% 52.0%, 93.8% 52.0%, 93.6% 63.1%, 73.5% 63.3%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="backyard" style="clip-path: polygon(0.0% 33.6%, 26.4% 33.6%, 26.5% 50.5%, 0.0% 50.5%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="pool" style="clip-path: polygon(73.4% 33.5%, 100.0% 33.5%, 100.0% 50.5%, 73.4% 50.4%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="spa" style="clip-path: polygon(5.2% 64.8%, 25.4% 65.0%, 25.1% 76.4%, 5.3% 76.2%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="guestroom1" style="clip-path: polygon(26.1% 64.6%, 49.9% 64.8%, 49.7% 76.1%, 25.9% 76.4%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="guestroom2" style="clip-path: polygon(50.7% 64.9%, 72.4% 65.0%, 72.6% 75.8%, 50.7% 76.1%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/shelter/shelter_blank.webp"
section="guestroom3" style="clip-path: polygon(73.6% 65.0%, 93.7% 64.8%, 93.7% 76.2%, 73.6% 76.5%);">
<<if $hidegirls is 0>>
<div class="MS_divAreasCont">
<div class="GLMS_markerCont" section="district.sub.shelter.sub.bedroomMc" style="bottom: 77%; left: 35%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.bedroomElfie" style="bottom: 63.3%; left: 26%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.bedroomLana" style="bottom: 63.2%; left: 51%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.bathroom1" style="bottom: 50%; left: 26.3%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.bedroomCherie" style="bottom: 50.2%; left: 51%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.backyard" style="bottom: 49.8%; left: 0"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.pool" style="bottom: 49.8%; left: 73.8%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.gym" style="bottom: 37.2%; left: 5.3%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.kitchen" style="bottom: 37.2%; left: 26%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.livingroom" style="bottom: 37.5%; left: 51%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.bathroom2" style="bottom: 36.9%; left: 73.8%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.spa" style="bottom: 24%; left: 5.3%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.guestroom1" style="bottom: 24%; left: 26%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.guestroom2" style="bottom: 24%; left: 50.8%"></div>
<div class="GLMS_markerCont" section="district.sub.shelter.sub.guestroom3" style="bottom: 24%; left: 73.8%"></div>
</div>
<</if>>
</div>
<div id="MS_popupOverlayCont"></div>
<</nobr>>\
<style>
body {
background-color: rgb(20,20,20);
/*overflow: hidden;*/
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
/* #story * {
box-sizing: unset;
} */
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
display: flex;
justify-content: center;
margin: 0;
max-width: 100%;
}
.passage {
position: relative;
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
/*overflow: hidden;*/
margin: 0;
/*padding: 0;*/
/*height: 100vh;*/
width: 100%;
/* display: flex;
flex-direction: column;
justify-content: center;
align-items: center; */
color: white;
font-family: 'Roboto', sans-serif;
}
.previousmap {
font-size: 1.6em;
}
</style>\
<script>
(() => {
setCurrentSection({keys: "district.sub.shelter"});
MS_init();
const MS_mainImage = MS_mapContainer.querySelector('.MS_mainImage');
if (isNightTime()) {
MS_mainImage.src = "ressources/maingui/maps/shelter/shelter-night.webp";
} else {
MS_mainImage.src = "ressources/maingui/maps/shelter/shelter.webp";
}
})();
</script><!--River-->\
<<script>>playAudio("music", "river")<</script>>\
<<nobr>>
<div class="exit-button" onclick="playPassage('DISTRICT MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="MRS_backgroundImagesCont">
<img class="MRS_base" src="ressources/backgrounds/1R.webp"> <!-- base -->
<img class="MRS_clip" src="ressources/backgrounds/1R.webp" onclick="playPassage('1RS')"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/1R1.webp"> <!-- hover -->
</div>
<div class="GSIS_mainCont" section="district.sub.river"></div>
<</nobr>>\
<<roomStyle>>
<style>
.exit-button {
background-color: #0f7bea;
border: 2vmin solid #7bce51;
}
.exit-button img {
filter: invert(72%) sepia(93%) saturate(305%) hue-rotate(47deg) brightness(86%) contrast(91%);
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(24.7% 73.0%, 26.4% 51.1%, 25.2% 51.5%, 25.0% 50.3%, 33.9% 30.4%, 43.8% 27.0%, 54.3% 22.2%, 58.7% 35.5%, 63.7% 47.7%, 63.2% 48.7%, 62.0% 48.7%, 61.9% 50.0%, 61.6% 51.1%, 61.2% 70.6%, 42.2% 73.4%);
}
</style>\
<script>
</script><!--Shed-->\
<<script>>playAudio("music", "river")<</script>>\
<<nobr>>
<div class="centerbox"></div>
<div class="exit-button" onclick="playPassage('1R')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="GSIS_mainCont" section="district.sub.river.sub.shed"></div>
<</nobr>>\
<<roomStyle>>
<style>
.exit-button {
background-color: #9b3b25;
border: 2vmin solid #f5d192;
}
.exit-button img {
filter: invert(88%) sepia(21%) saturate(839%) hue-rotate(334deg) brightness(101%) contrast(92%);
}
</style>\
<script>
</script><div class="exit-button" onclick="playPassage('DISTRICT MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="GSIS_mainCont" section="district.sub.gates"></div>
<<roomStyle>>
<style>
body {
background-image: url("ressources/backgrounds/1G.webp");
background-position-y: bottom;
}
#passages {
margin: 0 0;
}
</style><div class="exit-button" onclick="playPassage('DISTRICT MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<<roomStyle>>
<style>
body {
background-image: url("ressources/backgrounds/1P.webp");
background-position-y: bottom;
}
#passages {
margin: 0 0;
}
</style><div class="exit-button" onclick="playPassage('DISTRICT MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<<roomStyle>>
<style>
body {
background-image: url("ressources/backgrounds/1W.webp");
background-position-y: bottom;
}
#passages {
margin: 0 0;
}
</style><div class="exit-button" onclick="playPassage('DISTRICT MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<<roomStyle>>
<style>
body {
background-image: url("ressources/backgrounds/1H1.webp");
background-position-y: bottom;
}
#passages {
margin: 0 0;
}
</style><!--PlayerRoom-->\
<<script>>
playAudio("music", "shelter");
SV.gui_interface.angelaButtonEnable = true;
SV.gui_interface.inventoryButtonEnable = true;
<</script>>\
<<nobr>>
<<if $newGame>>
<div id="startboxCont">
<div id="startbox">
<div class="thetext">
<<if $newGame is 1>>
<h1>Before you start</h1>
<h2>Choose your name and relationships with the characters:</h2>
<div id="nameModal">
<div class="input-group">
<input type="text" id="playerName" value="Alex" maxlength="20">
</div>
<div class="input-group">
<input class="labelnames" type="text" id="labelMother" value="Landlady" maxlength="20">
Cherie
<input class="labelnames" type="text" id="labelMother-2" value="Tennant" maxlength="20">
You
</div>
<div class="input-group">
<input class="labelnames" type="text" id="labelSister1" value="Older Friend" maxlength="20">
Lana
<input class="labelnames" type="text" id="labelSister1-2" value="Friend" maxlength="20">
You
</div>
<div class="input-group">
<input class="labelnames" type="text" id="labelSister2" value="Younger Friend" maxlength="20">
Elfie
<input class="labelnames" type="text" id="labelSister2-2" value="Friend" maxlength="20">
You
</div>
</div>
<h2>Also, before you dive into the chaos, here's what you need to know:</h2>
<<elseif $newGame is 2>>
<h1>Before you dive into the chaos, here's what you need to know:</h1>
<</if>>
<h3 style="color: red;">Sidebar (Left Side):</h3>
- <b>Dominance Value:</b> Your sexual power level. <p></p>
- <b>Virus Value:</b> Keep this below 100% to avoid a fatal outcome.<p></p>
- <b>Sleepyness:</b> Rest is crucial, don't let fatigue take over.<p></p>
- <b>Food:</b> Monitor your fridge! Keep some in the storage to prevent starvation for you and the girls.<p></p>
- <b>Time & Location:</b> Track the time of day (Morning, Afternoon, Evening, Night) and your current location.<p></p>
- <b>Inventory:</b> All collected (not-stored) items are here. Equip gear to enhance your strength.<p></p>
<h3 style="color: red; padding-top: 2vh;">Top-Right Menu:</h3>
- <b>Options:</b> Access cheats, view the gallery, settings and more.
<h3 style="color: red; padding-top: 2vh;">Bottom-Right Map:</h3>
- <b>Navigate through the game's zones:</b> district areas, wastelands, or the forest.<p></p>
- <b>Combat & Scenes:</b> Get ready for action, interesting scenes and adventures.<p></p>
- <b>Main Scenes Indicators:</b> Red exclamation (!) for Trust, Purple for Lust, and Yellow for Lore.
<h3 style="color: red; padding-top: 2vh;">Relationship Metrics:</h3>
- <b>Trust:</b> Gauge of love and romance with the girls.<p></p>
- <b>Lust:</b> Level of sexuality and depravity.
<h3 style="color: red; padding-top: 2vh;">Dangers:</h3>
- <b>Virus:</b> If your virus level reaches 100, you will die. Masturbate in your room accordingly.<p></p>
- <b>Food:</b> If you run out of food, you and the girls will die. Make sure you place food in the fridge, at the Storage.<p></p>
- <b>Fights:</b> If you lose a fight, you will lose all your items and gain a lot of virus.<p></p>
- <b>Zones:</b> The Wastelands are full of danger and the Forest will make virus management a real challenge.<p></p>
<p></p>
Ready to take on the world and build your harem? Your journey awaits!
<p></p>
<div class="DIAS_button" onclick="closeStart()">Start Playing</div>
</div>
</div>
</div>
<</if>>
<!-- div class="centerbox">
<div class="bed" id="bed" onclick="$.wiki('<<SLEEP>>')"></div>
</div -->
<div class="MRS_backgroundImagesCont">
<img class="MRS_base" src="ressources/backgrounds/1SA.webp"> <!-- base -->
<img class="MRS_clip" src="ressources/backgrounds/1SA.webp" onclick="$.wiki('<<SLEEP>>')"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/1SA1.webp"> <!-- hover -->
</div>
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="mainboutondiv">
<div class="boutondiv_topright">
<div class="placeholder_right"></div>
<div id="mainButton_topright" onmouseover="removeSmall()" onclick="$.wiki('<<WATCH>>')">
<img src='ressources/maingui/sexuals/tease.webp' alt='Icon'>
<span>Watch porn</span>
</div>
</div>
<div class="boutondiv_topright">
<div class="placeholder_right"></div>
<div id="mainButton_topright" onmouseover="removeSmall()" onclick="$.wiki('<<MASTURBATE>>')">
<img src='ressources/icons/1SA4.webp' alt='Icon'>
<span>Masturbate</span>
</div>
</div>
<!-- div class="boutondiv_bottomright_elfie">
<div class="placeholder_right_elfie"></div>
<div id="mainButton_bottomright_elfie">
<p class="textNAelfie"></p>
</div>
</div -->
</div>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.bedroomMc"></div>
<</nobr>>\
<<roomStyle>>
<style>
@media (min-aspect-ratio: 1800/1200) { /* image resolution */
.MRS_backgroundImagesCont img {
/* horizontal block */
height: auto;
width: 100%;
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(27.9% 21.8%, 71.7% 22.3%, 73.2% 24.1%, 72.6% 25.2%, 73.3% 27.0%, 71.9% 29.0%, 70.8% 29.0%, 70.3% 29.7%, 70.6% 69.5%, 71.3% 70.5%, 71.8% 70.6%, 71.8% 82.1%, 70.1% 82.1%, 69.6% 83.8%, 68.3% 83.4%, 67.9% 82.5%, 66.0% 82.4%, 65.8% 83.3%, 61.2% 82.0%, 38.9% 82.0%, 34.5% 83.3%, 33.4% 82.5%, 31.7% 82.7%, 31.1% 84.0%, 29.9% 84.0%, 29.0% 82.4%, 27.7% 82.1%, 27.8% 71.2%, 29.4% 69.8%, 29.7% 29.8%, 28.9% 28.8%, 27.6% 29.2%, 26.9% 27.0%, 27.4% 25.6%, 26.8% 24.3%);
}
span {
color: #d7a103;
}
.exit-button {
background-color: #203864;
border: 2vmin solid #d7a103;
}
.exit-button img {
filter: invert(62%) sepia(30%) saturate(1791%) hue-rotate(10deg) brightness(96%) contrast(98%);
}
#startboxCont {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.8);
z-index: 10000;
display: flex;
justify-content: center;
align-items: center;
}
#startbox {
width: 75vh;
max-width: 100%;
height: 85%;
border: 3px solid rgba(255, 0, 0, 0.4);
box-shadow:
inset 0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 1vw rgba(255, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.9);
background-image: none;
transition: all ease 0.3s;
padding: 3vh;
border-radius: 5vh;
overflow-y: auto;
}
#startbox:hover {
box-shadow:
inset 0 0 1vw rgba(255, 0, 0, 0.6),
0 0 0.5vw rgba(255, 0, 0, 0.6),
0 0 1vw rgba(255, 0, 0, 0.6),
0 0 2vw rgba(255, 0, 0, 0.6);
}
.thetext h1 {
margin-top: 0;
font-size: 1.5em;
text-align: center;
}
.DIAS_button {
width: 20vh;
margin-top: 2vh;
margin-left: auto;
margin-right: auto;
}
::-webkit-scrollbar {
width: 2vw;
}
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
width: 2vw;
}
::-webkit-scrollbar-thumb {
-webkit-box-shadow: inset 0 0 6px rgb(214, 211, 211);
border-radius: 10px;
}
input[type=text] {
min-width: 11em;
}
#labelMother-2 {
margin-left: 3vh;
}
#labelSister1-2 {
margin-left: 4.05vh;
}
#labelSister2-2 {
margin-left: 4.4vh;
}
</style>\
<script>
setCurrentSection({keys: "district.sub.shelter.sub.bedroomMc"});
(() => {
const currentPassage = document.querySelector('.passage');
let isButtonsRightVisible = false; // State to track visibility
function toggleButtons() {
const smallButtonsRight = document.getElementById('smallButtons_right');
const buttonsRight = Array.from(smallButtonsRight.children);
if (!isButtonsRightVisible) {
smallButtonsRight.style.opacity = '1';
buttonsRight.forEach((button) => {
button.classList.remove('animate-out');
button.classList.add('animate-in');
});
} else {
buttonsRight.forEach((button) => {
button.classList.remove('animate-in');
button.classList.add('animate-out');
});
// Set a timeout to match the duration of the animations plus the delay of the last button
setTimeout(() => {
smallButtonsRight.style.opacity = '0';
}, (buttonsRight.length - 1) * 1.33 + 4); // 0.3s is the duration of the animation
}
isButtonsRightVisible = !isButtonsRightVisible;
}
function removeSmall() {
const smallButtonsRight = document.querySelectorAll('.small-button_right');
smallButtonsRight.forEach((button) => {
button.classList.remove('animate-in');
button.classList.add('animate-out');
});
isButtonsRightVisible = !isButtonsRightVisible;
}
currentPassage.addEventListener('click', function (event) {
var mainButtonRight = document.getElementById('mainButton_right');
var smallButtonsRight = document.getElementById('smallButtons_right');
// Check if the elements exist before trying to use them
if (mainButtonRight && smallButtonsRight) {
// Check if the click is outside the main button and small buttons
if (!mainButtonRight.contains(event.target) &&
!smallButtonsRight.contains(event.target) &&
isButtonsRightVisible) {
toggleButtons();
}
}
});
if (document.getElementById('playerName')) {
document.getElementById('playerName').addEventListener('input', function () {
SV.characters.mc.name = this.value;
});
const cherie = SV.characters.cherie;
document.getElementById('labelMother').addEventListener('input', function () {
cherie.role = this.value;
});
document.getElementById('labelMother-2').addEventListener('input', function () {
cherie.player_role = this.value;
});
const lana = SV.characters.lana;
document.getElementById('labelSister1').addEventListener('input', function () {
lana.role = this.value;
});
document.getElementById('labelSister1-2').addEventListener('input', function () {
lana.player_role = this.value;
});
const elfie = SV.characters.elfie;
document.getElementById('labelSister2').addEventListener('input', function () {
elfie.role = this.value;
});
document.getElementById('labelSister2-2').addEventListener('input', function () {
elfie.player_role = this.value;
});
}
window.removeSmall = removeSmall;
})();
function closeStart() {
document.getElementById('startboxCont')?.remove();
SV.newGame = 0;
}
</script><!--BathRoom-->\
<<script>>playAudio("music", "shelter")<</script>>\
<<nobr>>
<div class="MRS_backgroundImagesCont">
<img class="MRS_base" src="ressources/backgrounds/1SB.webp"> <!-- base -->
<img class="MRS_clip" src="ressources/backgrounds/1SB.webp"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/1SB3.webp"> <!-- hover -->
</div>
<div class="girlscontainer">
<img class="girlsimages" id="imgcheriebutton" src="ressources/icons/8.webp" onclick="GLMF_gotoSecondaryScene('CCB');">
<img class="girlsimages" id="imglanabutton" src="ressources/icons/9.webp" onclick="GLMF_gotoSecondaryScene('LCB');">
<img class="girlsimages" id="imgelfiebutton" src="ressources/icons/10.webp" onclick="GLMF_gotoSecondaryScene('ECB');">
<<if SugarCube.State.variables.scenes.list.DUA1?.seen === true>>
<img class="girlsimages" id="imgmiabutton" src="ressources/icons/16.webp" onclick="GLMF_gotoSecondaryScene('DCB');">
<</if>>
</div>
</div>
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.bathroom1"></div>
<</nobr>>\
<<roomStyle>>
<style>
@media (min-aspect-ratio: 3239/1440) { /* image resolution */
.MRS_backgroundImagesCont img {
/* horizontal block */
height: auto;
width: 100%;
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(36.6% 71.5%, 38.7% 71.0%, 38.7% 70.0%, 40.9% 69.8%, 40.9% 68.8%, 41.9% 68.3%, 41.9% 66.6%, 42.3% 65.4%, 48.1% 64.7%, 48.9% 67.6%, 48.2% 68.3%, 48.5% 70.5%, 53.0% 70.5%, 57.9% 71.2%, 58.4% 56.5%, 56.8% 55.3%, 57.5% 52.8%, 58.7% 52.2%, 61.0% 52.6%, 62.2% 55.0%, 62.8% 59.4%, 62.7% 63.7%, 61.8% 66.6%, 60.4% 67.6%, 59.8% 90.6%, 60.7% 92.2%, 53.9% 92.2%, 53.8% 90.3%, 48.7% 90.8%, 43.2% 90.3%, 43.1% 92.0%, 40.7% 92.2%, 40.4% 89.6%, 40.0% 89.3%, 38.0% 81.8%);
}
.exit-button {
background-color: #d0cece;
border: 2vmin solid #2e6ca4;
}
.exit-button img {
filter: invert(34%) sepia(90%) saturate(396%) hue-rotate(167deg) brightness(92%) contrast(94%);
}
.girlsimages {
border: 1vh solid #d0cece;
}
.girlsimages:hover {
outline: 1vh solid #2e6ca4;
}
</style>\
<script>
//-------MULTIPLE OPTIONS BUTTON-------//
var bed = document.querySelector('.MRS_backgroundImagesCont > .MRS_clip');
var girlsContainer = document.querySelector('.girlscontainer');
var girlsImages = document.querySelectorAll('.girlsimages');
var animationRunning = false;
var imagesVisible = false;
bed.addEventListener('click', function() {
if (!animationRunning) {
if (!imagesVisible) {
animationRunning = true;
girlsContainer.style.pointerEvents = 'auto'; // Enable pointer events on the girls container
girlsImages.forEach(function(image, index) {
setTimeout(function() {
image.style.opacity = '1';
image.style.transform = 'scale(1)';
if (index === girlsImages.length - 1) {
animationRunning = false;
imagesVisible = true;
}
}, index * 200); // Adjust the delay between each image appearance (in milliseconds)
});
} else {
girlsImages.forEach(function(image) {
image.style.opacity = '0';
image.style.transform = 'scale(0)';
});
girlsContainer.style.pointerEvents = 'none'; // Disable pointer events on the girls container
imagesVisible = false;
}
}
});
document.addEventListener('click', function(event) {
if (!girlsContainer.contains(event.target) && event.target !== bed) {
girlsImages.forEach(function(image) {
image.style.opacity = '0';
image.style.transform = 'scale(0)';
});
girlsContainer.style.pointerEvents = 'none'; // Disable pointer events on the girls container
imagesVisible = false;
}
});
</script><!--CherieRoom-->\
<<script>>playAudio("music", "shelter")<</script>>\
<<nobr>>
<div class="MRS_backgroundImagesCont">
<img class="MRS_base" src="ressources/backgrounds/1SC_1.webp"> <!-- base -->
<img class="MRS_clip" src="ressources/backgrounds/1SC_1.webp" onclick="GLMF_gotoSecondaryScene('CCA')"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/1SC1.webp"> <!-- hover -->
</div>
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="mainboutondiv">
<div class="boutondiv_topright_cherie">
<div class="placeholder_topright_cherie"></div>
<div id="mainButton_topright_cherie" onclick="accessLustGame('cherie');">
<img src='ressources/maingui/attributes/lust_icon.webp' alt='Icon'>
<span>Practice Lust</span>
</div>
</div>
<div class="boutondiv_topright_cherie">
<div class="placeholder_topright_cherie"></div>
<div id="mainButton_topright_cherie" onclick="accessTrustGame('cherie');">
<img src='ressources/maingui/attributes/trust_icon.webp' alt='Icon'>
<span>Practice Trust</span>
</div>
</div>
<div class="boutondiv_topright_cherie bouton_bonusScenes">
<div class="placeholder_topright_cherie"></div>
<div id="mainButton_topright_cherie" onclick="BSB_show('cherie');">
<img id="bonusImg" src='ressources/icons/2K.webp' alt='Icon'>
<span><b>BONUS SCENES</b></span>
</div>
</div>
</div>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.bedroomCherie"></div>
<</nobr>>\
<<roomStyle>>
<style>
span {
color: #d7a103;
}
@media (min-aspect-ratio: 2880/1440) { /* image resolution */
.MRS_backgroundImagesCont img {
/* horizontal block */
height: auto;
width: 100%;
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(39.8% 50.4%, 64.5% 50.4%, 63.5% 68.6%, 65.3% 68.0%, 68.1% 68.8%, 68.1% 70.3%, 69.3% 70.6%, 70.8% 81.0%, 70.7% 85.1%, 70.0% 87.9%, 69.0% 85.8%, 68.8% 89.9%, 67.5% 89.7%, 67.3% 90.5%, 60.6% 90.5%, 60.2% 90.1%, 60.6% 90.5%, 43.8% 89.9%, 43.6% 90.8%, 36.5% 90.5%, 36.3% 89.9%, 35.7% 89.9%, 35.2% 85.3%, 34.8% 87.1%, 34.2% 88.1%, 33.3% 86.0%, 32.9% 83.4%, 35.0% 71.6%, 35.9% 71.2%, 36.5% 69.9%, 40.6% 69.0%);
}
.exit-button {
background-color: #bf0000;
border: 2vmin solid #ede8ed;
}
.exit-button img {
filter: invert(97%) sepia(9%) saturate(182%) hue-rotate(237deg) brightness(92%) contrast(102%);
}
.bouton_bonusScenes img {
filter: brightness(0) saturate(100%) invert(97%) sepia(9%) saturate(182%) hue-rotate(237deg) brightness(92%) contrast(102%);
}
</style>\
<script>
</script><!--ElfieRoom-->\
<<script>>playAudio("music", "shelter")<</script>>\
<<nobr>>
<div class="MRS_backgroundImagesCont">
<img class="MRS_base" src="ressources/backgrounds/1SE.webp"> <!-- base -->
<img class="MRS_clip" src="ressources/backgrounds/1SE.webp" onclick="GLMF_gotoSecondaryScene('ECA')"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/1SE2.webp"> <!-- hover -->
</div>
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="mainboutondiv">
<div class="boutondiv_topright_elfie">
<div class="placeholder_topright_elfie"></div>
<div id="mainButton_topright_elfie" onclick="accessLustGame('elfie');">
<img src='ressources/maingui/attributes/lust_icon.webp' alt='Icon'>
<span>Practice Lust</span>
</div>
</div>
<div class="boutondiv_topright_elfie">
<div class="placeholder_topright_elfie"></div>
<div id="mainButton_topright_elfie" onclick="accessTrustGame('elfie');">
<img src='ressources/maingui/attributes/trust_icon.webp' alt='Icon'>
<span>Practice Trust</span>
</div>
</div>
<div class="boutondiv_topright_elfie bouton_bonusScenes">
<div class="placeholder_topright_elfie"></div>
<div id="mainButton_topright_elfie" onclick="BSB_show('elfie');">
<img id="bonusImg" src='ressources/icons/2K.webp' alt='Icon'>
<span><b>BONUS SCENES</b></span>
</div>
</div>
</div>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.bedroomElfie"></div>
<</nobr>>\
<<roomStyle>>
<style>
@media (min-aspect-ratio: 2400/1080) { /* image resolution */
.MRS_backgroundImagesCont img {
/* horizontal block */
height: auto;
width: 100%;
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(38.7% 56.8%, 62.0% 57.0%, 61.8% 75.8%, 66.9% 79.4%, 68.1% 93.5%, 66.6% 91.6%, 67.4% 94.4%, 69.6% 94.4%, 71.8% 97.1%, 67.6% 96.4%, 63.9% 97.3%, 63.3% 95.9%, 60.1% 94.9%, 38.5% 95.5%, 38.5% 96.1%, 36.6% 95.9%, 36.5% 95.2%, 35.3% 94.9%, 35.0% 90.6%, 33.5% 92.3%, 32.3% 87.0%, 34.2% 78.2%, 35.7% 78.0%, 38.1% 74.2%, 39.2% 74.6%);
}
.exit-button {
background-color: #7030a0;
border: 2vmin solid #deb04c;
}
.exit-button img {
filter: invert(93%) sepia(98%) saturate(4513%) hue-rotate(316deg) brightness(90%) contrast(92%);
}
.bouton_bonusScenes img {
filter: brightness(0) saturate(100%) invert(93%) sepia(98%) saturate(4513%) hue-rotate(316deg) brightness(90%) contrast(92%);
}
</style>\
<script>
</script><!--Kitchen-->\
<<script>>playAudio("music", "shelter")<</script>>\
<<nobr>>
<div class="MRS_backgroundImagesCont">
<img src="ressources/backgrounds/1SK.webp"> <!-- base -->
<img class="MRS_base" src="ressources/backgrounds/1SK4.webp"> <!-- base (table) -->
<img class="MRS_clip" src="ressources/backgrounds/1SK.webp" onclick="playPassage('CCD')"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/1SK3.webp"> <!-- hover (table) -->
</div>
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.kitchen"></div>
<</nobr>>\
<<roomStyle>>
<style>
@media (min-aspect-ratio: 2942/1440) { /* image resolution */
.MRS_backgroundImagesCont img {
/* horizontal block */
height: auto;
width: 100%;
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(6.5% 100.0%, 6.1% 91.0%, 5.2% 86.1%, 21.3% 78.3%, 60.3% 77.8%, 60.8% 76.9%, 65.1% 76.3%, 65.5% 77.4%, 67.7% 76.5%, 71.3% 77.8%, 82.2% 77.4%, 95.9% 86.1%, 94.9% 94.7%, 94.8% 100.0%);
}
.MRS_backgroundImagesCont img.MRS_base,
.MRS_backgroundImagesCont img.MRS_hover {
z-index: 15;
}
.table {
width: 100%;
height: 100%;
position: absolute;
z-index: 15;
background-image: url('ressources/backgrounds/1SK4.webp');
background-size: cover;
pointer-events: none;
background-position: center;
}
.exit-button {
background-color: #5e3e3e;
border: 2vmin solid #f2a36e;
}
.exit-button img {
filter: invert(64%) sepia(91%) saturate(336%) hue-rotate(329deg) brightness(101%) contrast(90%);
}
</style>\
<script>
</script><!--LanaRoom-->\
<<script>>playAudio("music", "shelter")<</script>>\
<<nobr>>
<div class="MRS_backgroundImagesCont">
<img class="MRS_base" src="ressources/backgrounds/1SL.webp"> <!-- base -->
<img class="MRS_clip" src="ressources/backgrounds/1SL.webp" onclick="GLMF_gotoSecondaryScene('LCA')"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/1SL1.webp"> <!-- hover -->
</div>
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="mainboutondiv">
<div class="boutondiv_topright_lana">
<div class="placeholder_topright_lana"></div>
<div id="mainButton_topright_lana" onclick="accessLustGame('lana');">
<img src='ressources/maingui/attributes/lust_icon.webp' alt='Icon'>
<span>Practice Lust</span>
</div>
</div>
<div class="boutondiv_topright_lana">
<div class="placeholder_topright_lana"></div>
<div id="mainButton_topright_lana" onclick="accessTrustGame('lana');">
<img src='ressources/maingui/attributes/trust_icon.webp' alt='Icon'>
<span>Practice Trust</span>
</div>
</div>
<div class="boutondiv_topright_lana bouton_bonusScenes">
<div class="placeholder_topright_lana"></div>
<div id="mainButton_topright_lana" onclick="BSB_show('lana');">
<img id="bonusImg" src='ressources/icons/2K.webp' alt='Icon'>
<span><b>BONUS SCENES</b></span>
</div>
</div>
</div>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.bedroomLana"></div>
<</nobr>>\
<<roomStyle>>
<style>
@media (min-aspect-ratio: 2000/888) { /* image resolution */
.MRS_backgroundImagesCont img {
/* horizontal block */
height: auto;
width: 100%;
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(30.2% 76.2%, 29.8% 61.6%, 37.3% 61.8%, 38.5% 61.0%, 40.2% 61.6%, 45.6% 61.3%, 45.6% 54.5%, 46.3% 55.1%, 46.3% 52.1%, 48.1% 52.1%, 48.1% 55.3%, 48.8% 54.5%, 49.5% 51.4%, 49.6% 49.4%, 53.7% 51.1%, 59.0% 49.7%, 58.9% 52.1%, 61.5% 53.0%, 61.5% 50.5%, 63.4% 50.7%, 63.3% 58.9%, 61.2% 59.1%, 61.2% 60.4%, 61.8% 60.6%, 61.7% 75.6%, 61.0% 75.6%, 60.9% 83.0%, 29.3% 82.3%, 29.3% 76.2%);
}
.exit-button {
background-color: #012060;
border: 2vmin solid #be3ae8;
}
.exit-button img {
filter: invert(39%) sepia(83%) saturate(3602%) hue-rotate(265deg) brightness(90%) contrast(102%);
}
.bouton_bonusScenes img {
filter: brightness(0) saturate(100%) invert(39%) sepia(83%) saturate(3602%) hue-rotate(265deg) brightness(90%) contrast(102%);
}
</style>\
<script>
</script><!--LivingRoom-->\
<<script>>playAudio("music", "shelter")<</script>>\
<<nobr>>
<div class="MRS_backgroundImagesCont">
<img class="MRS_base" src="ressources/backgrounds/1SR.webp"> <!-- base -->
<img class="MRS_clip" src="ressources/backgrounds/1SR.webp"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/1SR2.webp"> <!-- hover -->
</div>
<div class="girlscontainer">
<img class="girlsimages" id="imgcheriebutton" src="ressources/icons/8.webp" onclick="GLMF_gotoSecondaryScene('CCC');">
<img class="girlsimages" id="imglanabutton" src="ressources/icons/9.webp" onclick="GLMF_gotoSecondaryScene('LCC');">
<img class="girlsimages" id="imgelfiebutton" src="ressources/icons/10.webp" onclick="GLMF_gotoSecondaryScene('ECC');">
<<if SugarCube.State.variables.scenes.list.DUA1?.seen === true>>
<img class="girlsimages" id="imgmiabutton" src="ressources/icons/16.webp" onclick="GLMF_gotoSecondaryScene('DCC');">
<</if>>
</div>
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.livingroom"></div>
<</nobr>>\
<<roomStyle>>
<style>
.exit-button {
background-color: #333f50;
border: 2vmin solid #4472c4;
}
.exit-button img {
filter: invert(48%) sepia(15%) saturate(2805%) hue-rotate(183deg) brightness(83%) contrast(81%);
}
@media (min-aspect-ratio: 1380/690) { /* image resolution */
.MRS_backgroundImagesCont img {
/* horizontal block */
height: auto;
width: 100%;
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(33.0% 63.3%, 39.7% 64.3%, 49.6% 64.8%, 59.3% 64.5%, 66.4% 63.5%, 69.1% 66.7%, 68.7% 72.3%, 72.2% 77.4%, 71.2% 84.9%, 69.3% 89.3%, 69.7% 92.9%, 69.1% 93.0%, 68.2% 88.8%, 59.7% 91.0%, 49.7% 91.6%, 40.3% 90.7%, 31.1% 88.4%, 30.5% 92.6%, 30.0% 92.6%, 30.3% 88.4%, 29.0% 86.4%, 27.8% 81.7%, 27.3% 77.2%, 30.7% 72.5%, 30.2% 67.0%);
}
.girlsimages {
border: 1vh solid #333f50;
}
.girlsimages:hover {
outline: 1vh solid #4472c4;
}
</style>\
<script>
//-------MULTIPLE OPTIONS BUTTON-------//
var bed = document.querySelector('.MRS_backgroundImagesCont > .MRS_clip');
var girlsContainer = document.querySelector('.girlscontainer');
var girlsImages = document.querySelectorAll('.girlsimages');
var animationRunning = false;
var imagesVisible = false;
bed.addEventListener('click', function() {
if (!animationRunning) {
if (!imagesVisible) {
animationRunning = true;
girlsContainer.style.pointerEvents = 'auto'; // Enable pointer events on the girls container
girlsImages.forEach(function(image, index) {
setTimeout(function() {
image.style.opacity = '1';
image.style.transform = 'scale(1)';
if (index === girlsImages.length - 1) {
animationRunning = false;
imagesVisible = true;
}
}, index * 200); // Adjust the delay between each image appearance (in milliseconds)
});
} else {
girlsImages.forEach(function(image) {
image.style.opacity = '0';
image.style.transform = 'scale(0)';
});
girlsContainer.style.pointerEvents = 'none'; // Disable pointer events on the girls container
imagesVisible = false;
}
}
});
document.addEventListener('click', function(event) {
if (!girlsContainer.contains(event.target) && event.target !== bed) {
girlsImages.forEach(function(image) {
image.style.opacity = '0';
image.style.transform = 'scale(0)';
});
girlsContainer.style.pointerEvents = 'none'; // Disable pointer events on the girls container
imagesVisible = false;
}
});
</script>
</script><!--Bathroom2-->
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.bathroom2"></div>
<<roomStyle>>
<style>
body {
background-image: url("ressources/backgrounds/1SD.webp");
background-position-y: bottom;
}
#passages {
margin: 0 0;
}
</style><!--Gym-->
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.gym"></div>
<<roomStyle>>
<style>
body {
background-image: url("ressources/backgrounds/1SG.webp");
background-position-y: bottom;
}
#passages {
margin: 0 0;
}
</style><<script>>playAudio("music", "shelter")<</script>>\
<<nobr>>
<!--GuestRoom1-->
<div class="MRS_backgroundImagesCont">
<img class="MRS_base" src="ressources/backgrounds/1SM.webp"> <!-- base -->
<<if SugarCube.State.variables.scenes.list.DUA1?.seen === true>>
<img class="MRS_clip" src="ressources/backgrounds/1SM.webp" onclick="GLMF_gotoSecondaryScene('DCA')"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/1SM1.webp"> <!-- hover -->
<</if>>
</div>
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<<if SugarCube.State.variables.scenes.list.DUA1?.seen === true>>
<div class="mainboutondiv">
<div class="boutondiv_topright_mia">
<div class="placeholder_topright_mia"></div>
<div id="mainButton_topright_mia" onclick="accessLustGame('mia');">
<img src='ressources/maingui/attributes/lust_icon.webp' alt='Icon'>
<span>Practice Lust</span>
</div>
</div>
<div class="boutondiv_topright_mia">
<div class="placeholder_topright_mia"></div>
<div id="mainButton_topright_mia" onclick="accessTrustGame('mia');">
<img src='ressources/maingui/attributes/trust_icon.webp' alt='Icon'>
<span>Practice Trust</span>
</div>
</div>
<div class="boutondiv_topright_mia bouton_bonusScenes">
<div class="placeholder_topright_mia"></div>
<div id="mainButton_topright_mia" onclick="BSB_show('mia');">
<img id="bonusImg" src='ressources/icons/2K.webp' alt='Icon'>
<span><b>BONUS SCENES</b></span>
</div>
</div>
</div>
<</if>>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.guestroom1"></div>
<</nobr>>\
<<roomStyle>>\
<style>
body {
overflow: hidden;
}
#passages {
margin: 0 0;
}
@media (min-aspect-ratio: 2540/1440) { /* image resolution */
.MRS_backgroundImagesCont img {
/* horizontal block */
height: auto;
width: 100%;
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(49% 68%, 50% 40%, 50% 39%, 52% 29%, 29% 27%, 3% 35%, 3% 37%, 3% 45%, 4% 53%, 4% 60%, 3% 66%, 4% 67%, 4% 68%, 6% 68%, 5% 69%, 4% 73%, 4% 75%, 3% 82%, 3% 84%, 3% 85%, 4% 86%, 4% 91%, 8% 92%, 9% 90%, 24% 90%, 24% 91%, 51% 92%, 51% 77%, 50% 76%, 50% 73%, 50% 71%);
}
.exit-button {
background-color: #5e3e3e;
border: 2vmin solid #f2a36e;
}
.exit-button img {
filter: invert(64%) sepia(91%) saturate(336%) hue-rotate(329deg) brightness(101%) contrast(90%);
}
.bouton_bonusScenes img {
filter: brightness(0) saturate(100%) invert(64%) sepia(91%) saturate(336%) hue-rotate(329deg) brightness(101%) contrast(90%);
}
</style><!--Guestroom2-->
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.guestroom2"></div>
<<roomStyle>>
<style>
body {
background-image: url("ressources/backgrounds/1SN.webp");
}
#passages {
margin: 0 0;
}
</style><!--Guestroom3-->\
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.guestroom3"></div>
<<roomStyle>>
<style>
body {
background-image: url("ressources/backgrounds/1SO.webp");
background-position-y: bottom;
}
#passages {
margin: 0 0;
}
</style><!--Pool-->\
<<script>>playAudio("music", "shelter")<</script>>\
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.pool"></div>
<<roomStyle>>
<style>
@media (min-aspect-ratio: 1698/960) { /* image resolution */
.MRS_backgroundImagesCont img {
/* horizontal block */
height: auto;
width: 100%;
}
}
.exit-button {
background-color: #5e3e3e;
border: 2vmin solid #f2a36e;
}
.exit-button img {
filter: invert(64%) sepia(91%) saturate(336%) hue-rotate(329deg) brightness(101%) contrast(90%);
}
</style>\
<script>
/*background selection */
if (window.isNightTime()) {
setBackground('ressources/backgrounds/1SP2.webp');
} else {
setBackground('ressources/backgrounds/1SP1.webp');
}
</script><!--Spa-->\
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<<roomStyle>>
<style>
body {
background-image: url("ressources/backgrounds/1SS.webp");
background-position-y: bottom;
}
#passages {
margin: 0 0;
}
</style><!--Backyard-->\
<<script>>playAudio("music", "shelter")<</script>>\
<div class="exit-button" onclick="playPassage('SHELTER MAP')">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="GSIS_mainCont" section="district.sub.shelter.sub.backyard"></div>
<<roomStyle>>
<style>
.exit-button {
background-color: #5e3e3e;
border: 2vmin solid #f2a36e;
}
.exit-button img {
filter: invert(64%) sepia(91%) saturate(336%) hue-rotate(329deg) brightness(101%) contrast(90%);
}
</style>\
<script>
/*background selection */
if (window.isNightTime()) {
setBackground('ressources/backgrounds/1SX2.webp');
} else {
setBackground('ressources/backgrounds/1SX1.webp');
}
</script><<script>>
playAudio("music", "forestPeacewood");
SV.gui_interface.angelaButtonEnable = true;
/*SV.gui_interface.mapButtonEnable = true;*/
SV.gui_interface.inventoryButtonEnable = true;
<</script>>\
<<nobr>>
<div class="previousmap">[["MAIN MAP"|MAIN MAP]]</div>
<div id="MS_mapContainer">
<img class="MS_mainImage" src="ressources/maingui/maps/forest/forest.webp">
<img section="peacewood" class="IMGa lockedmap" src="ressources/maingui/maps/forest/forest_peacewoods_locked.webp">
<img section="peacewood" class="IMGa hoverInfo" src="ressources/maingui/maps/forest/forest_peacewoods.webp">
<img section="crimsonwood" class="IMGa lockedmap" src="ressources/maingui/maps/forest/forest_crimsonwoods_locked.webp">
<img section="crimsonwood" class="IMGa hoverInfo" src="ressources/maingui/maps/forest/forest_crimsonwoods.webp">
<img section="deepwood" class="IMGa lockedmap" src="ressources/maingui/maps/forest/forest_deepwoods_locked.webp">
<img section="deepwood" class="IMGa hoverInfo" src="ressources/maingui/maps/forest/forest_deepwoods.webp">
<!-- hover Triggers -->
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/forest/forest_blank.webp"
section="peacewood" style="clip-path: polygon(0.0% 0.0%, 53.8% 0.0%, 53.8% 12.2%, 52.9% 21.4%, 49.3% 30.0%, 44.0% 37.5%, 34.0% 38.4%, 25.7% 52.8%, 15.8% 56.2%, 11.9% 58.6%, 5.5% 59.4%, 0.0% 58.6%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/forest/forest_blank.webp"
section="crimsonwood" style="clip-path: polygon(0.0% 59.6%, 5.3% 60.3%, 12.0% 59.4%, 16.0% 57.1%, 25.9% 53.5%, 34.2% 39.2%, 41.6% 38.6%, 51.2% 66.8%, 56.2% 70.6%, 59.1% 78.4%, 56.2% 86.6%, 56.3% 100.0%, 0.0% 100.0%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/forest/forest_blank.webp"
section="deepwood" style="clip-path: polygon(54.3% 0.0%, 80.1% 0.0%, 89.2% 2.2%, 100.0% 6.8%, 100.0% 54.0%, 98.6% 58.7%, 98.8% 74.0%, 97.6% 85.3%, 95.5% 90.4%, 88.1% 98.7%, 77.9% 100.0%, 56.8% 100.0%, 56.8% 86.7%, 59.6% 78.6%, 56.6% 70.0%, 51.5% 66.1%, 42.2% 38.8%, 44.1% 38.3%, 49.7% 30.7%, 53.3% 21.7%, 54.3% 11.8%);">
<!-- girl location indicator -->
<div class="MS_divAreasCont">
<div class="GLMS_markerCont" section="forest.sub.peacewood" style="bottom: 68%; left: 16%; width: 30%;"></div>
<div class="GLMS_markerCont" section="forest.sub.crimsonwood" style="bottom: 8%; left: 5%; width: 45%"></div>
<div class="GLMS_markerCont" section="forest.sub.deepwood" style="top: 26%; left: 65%; width: 31%"></div>
</div>
</div>
<div id="MS_popupOverlayCont"></div>
<</nobr>>\
<style>
body {
background-color: rgb(20,20,20);
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
display: flex;
justify-content: center;
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
position: relative;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: white;
font-family: 'Roboto', sans-serif;
}
</style>\
<script>
setCurrentSection({keys: "forest"});
MS_init();
</script><<peacewoodMaster>>\
<style>
.half {
position: absolute;
width: 100%;
height: 50%;
transition: all 0.6s ease;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
z-index: 1; /* Start with a base z-index */
}
.half:hover {
height: 100%;
border-radius: 100%;
z-index: 5;
}
.top-half {
top: 0;
border-top-right-radius: 100% 200%;
border-top-left-radius: 100% 200%;
background-color: #666; /* Slightly lighter gray */
}
.bottom-half {
bottom: 0;
border-bottom-right-radius: 100% 200%;
border-bottom-left-radius: 100% 200%;
background-color: #666; /* Slightly lighter gray */
}
.half img {
max-width: 70%;
max-height: 70%;
transition: all 0.3s ease;
}
.half:hover img {
max-width: 70%;
max-height: 70%;
}
.horizontal-line {
position: absolute;
top: 50%;
left: 0;
width: 100%;
height: 0.8vh;
background-color: #2ecc71;
transform: translateY(-50%);
z-index: 2;
}
</style>\<<peacewoodMaster>>\<<peacewoodMaster>>\<<peacewoodMaster>>\<<peacewoodMaster>>\<<peacewoodMaster>>\<<peacewoodMaster>>\<<peacewoodMaster>>\<<peacewoodMaster>>\<<peacewoodMaster>>\<<peacewoodMaster>>\<<peacewoodMaster>>\<<peacewoodMaster>>\<<peacewoodMaster>>\<<peacewoodMaster>>\<<script>>playAudio("music", "forestPeacewood")<</script>>\
<<nobr>>
<<if $specpass.TWOA2 is 0>>
<<goto "AUA1">>
<</if>>
<div class="MRS_backgroundImagesCont">
<video class="MRS_base" muted autoplay loop src="ressources/backgrounds/2ACE.webm" poster="ressources/backgrounds/2ACE_ss.webp"> <!-- base video -->
Your browser does not support the video tag.
</video>
<img class="MRS_base" src="ressources/backgrounds/2ACE1.webp">
<img class="MRS_clip" src="ressources/backgrounds/2ACE1.webp" onclick="toggleBed()"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/2ACE2.webp"> <!-- hover -->
<img class="MRS_base" src="ressources/backgrounds/2ACE3.webp">
<img class="MRS_clip_2" src="ressources/backgrounds/2ACE3.webp" onclick="GLMF_gotoSecondaryScene('ACA')"> <!-- clip path -->
<img class="MRS_hover_2" src="ressources/backgrounds/2ACE4.webp"> <!-- hover -->
</div>
<div class="exit-button" onclick="previousBloc()">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<</nobr>>\
<<roomStyle>>
<style>
.passage {
position: relative;
}
.MRS_backgroundImagesCont img,
.MRS_backgroundImagesCont video {
left: 0;
transform: translate(0, -50%);
}
@media (min-aspect-ratio: 1920/1080) {
.MRS_backgroundImagesCont img,
.MRS_backgroundImagesCont video {
height: auto;
width: 117%; /* not 100% to conpensate sidebar */
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(40.1% 54.3%, 40.3% 44.7%, 40.9% 34.8%, 45.6% 18.5%, 58.8% 11.3%, 58.6% 5.7%, 58.0% 4.8%, 60.4% 2.9%, 62.1% 4.6%, 62.1% 5.4%, 61.8% 5.6%, 61.6% 10.0%, 64.2% 8.4%, 72.2% 43.3%, 70.2% 44.7%, 70.6% 52.3%, 68.7% 54.3%, 68.0% 53.9%, 68.1% 71.0%, 65.2% 71.0%, 64.5% 68.9%, 58.9% 67.4%, 56.6% 64.7%, 54.0% 64.9%, 53.3% 66.5%, 52.8% 65.1%, 48.5% 64.5%, 48.2% 63.4%, 48.8% 62.9%, 48.1% 60.6%, 43.8% 59.0%, 42.1% 60.0%, 40.7% 60.9%, 40.7% 54.3%);
}
.MRS_backgroundImagesCont img.MRS_clip_2 {
clip-path: polygon(0.0% 26.2%, 2.2% 27.1%, 3.9% 30.6%, 5.0% 30.2%, 4.2% 27.1%, 4.7% 23.9%, 3.8% 19.2%, 8.9% 11.9%, 13.4% 8.4%, 16.6% 12.2%, 17.2% 18.5%, 18.3% 19.9%, 21.1% 14.2%, 25.5% 19.5%, 25.6% 23.0%, 26.9% 22.6%, 29.3% 31.8%, 30.3% 30.7%, 30.9% 32.9%, 30.1% 40.1%, 28.1% 43.5%, 28.2% 49.3%, 30.1% 51.0%, 31.1% 53.9%, 30.8% 57.1%, 31.4% 59.5%, 33.0% 61.3%, 33.9% 65.1%, 33.3% 68.3%, 33.2% 71.8%, 30.4% 72.1%, 30.3% 74.4%, 28.3% 75.0%, 28.2% 78.1%, 25.9% 76.4%, 24.9% 78.2%, 24.5% 82.1%, 22.9% 82.3%, 20.7% 76.0%, 20.0% 76.0%, 18.3% 76.4%, 13.5% 71.6%, 9.1% 69.9%, 8.0% 71.2%, 5.5% 70.6%, 0.0% 66.7%);
}
.exit-button {
background-color: #9ec82f;
border: 2vmin solid #43311b;
}
.exit-button img {
filter: brightness(0) saturate(100%) invert(15%) sepia(42%) saturate(750%) hue-rotate(353deg) brightness(89%) contrast(85%);
}
</style>\
<script>
//-------PASSAGE CHANGE TOGGLES-------//
function toggleBed() {
playPassage('2ACI');
}
function previousBloc() {
playPassage('2A2');
}
</script><!--AngelaRoom-->\
<<script>>playAudio("music", "forestPeacewood")<</script>>\
<<nobr>>
<div class="MRS_backgroundImagesCont">
<video class="MRS_base" muted autoplay loop src="ressources/backgrounds/2ACI.webm" poster="ressources/backgrounds/2ACI_ss.webp"> <!-- base 1 -->
Your browser does not support the video tag.
</video>
<img class="MRS_base" src="ressources/backgrounds/2ACI1.webp"> <!-- base 2 -->
<img class="MRS_clip" src="ressources/backgrounds/2ACI1.webp" onclick="GLMF_gotoSecondaryScene('ACB')"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/2ACI2.webp"> <!-- hover -->
</div>
<div class="exit-button" onclick="previousBloc()">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="mainboutondiv">
<div class="boutondiv_topright_angela">
<div class="placeholder_topright_angela"></div>
<div id="mainButton_topright_angela" onclick="accessLustGame('angela');">
<img src='ressources/maingui/attributes/lust_icon.webp' alt='Icon'>
<span>Practice Lust</span>
</div>
</div>
<div class="boutondiv_topright_angela">
<div class="placeholder_topright_angela"></div>
<div id="mainButton_topright_angela" onclick="accessTrustGame('angela');">
<img src='ressources/maingui/attributes/trust_icon.webp' alt='Icon'>
<span>Practice Trust</span>
</div>
</div>
<div class="boutondiv_topright_angela bouton_bonusScenes">
<div id="mainButton_topright_angela" onclick="BSB_show('angela');">
<img id="bonusImg" src='ressources/icons/2K.webp' alt='Icon'>
<span><b>BONUS SCENES</b></span>
</div>
</div>
</div>
<</nobr>>\
<<roomStyle>>
<style>
.passage {
position: relative;
}
.MRS_backgroundImagesCont img,
.MRS_backgroundImagesCont video {
left: 0;
transform: translate(0, -50%);
}
@media (min-aspect-ratio: 1920/1080) { /* image resolution */
.MRS_backgroundImagesCont img,
.MRS_backgroundImagesCont video {
/* horizontal block */
height: auto;
width: 117%; /* not 100% to conpensate sidebar */
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(0.0% 65.8%, 2.9% 62.0%, 5.4% 60.0%, 12.2% 59.4%, 14.6% 57.5%, 21.0% 60.2%, 25.5% 64.4%, 27.1% 66.5%, 34.9% 65.3%, 35.3% 64.5%, 41.5% 65.1%, 42.3% 66.5%, 51.9% 70.3%, 52.7% 81.3%, 52.1% 82.5%, 50.1% 83.1%, 47.4% 87.4%, 45.2% 88.1%, 33.6% 93.7%, 17.0% 100.0%, 0.0% 100.0%);
}
.exit-button {
background-color: #f9d642;
border: 2vmin solid #4e5d2c;
}
.exit-button img {
filter: invert(32%) sepia(18%) saturate(1122%) hue-rotate(37deg) brightness(96%) contrast(89%);
}
.bouton_bonusScenes img {
filter: brightness(0) saturate(100%) invert(32%) sepia(18%) saturate(1122%) hue-rotate(37deg) brightness(96%) contrast(89%);
}
</style>\
<script>
function previousBloc() {
playPassage('2ACE');
}
</script><<script>>
playAudio("music", "wastelandsTheborder");
SV.gui_interface.angelaButtonEnable = true;
/*SV.gui_interface.mapButtonEnable = true;*/
SV.gui_interface.inventoryButtonEnable = true;
<</script>>\
<<nobr>>
<div class="previousmap">[["MAIN MAP"|MAIN MAP]]</div>
<div id="MS_mapContainer">
<img class="MS_mainImage" src="ressources/maingui/maps/wastelands/wastelands.webp">
<img section="border" class="IMGa lockedmap" src="ressources/maingui/maps/wastelands/wastelands_border_locked.webp">
<img section="border" class="IMGa hoverInfo" src="ressources/maingui/maps/wastelands/wastelands_border.webp">
<img section="green" class="IMGa lockedmap" src="ressources/maingui/maps/wastelands/wastelands_green_locked.webp">
<img section="green" class="IMGa hoverInfo" src="ressources/maingui/maps/wastelands/wastelands_green.webp">
<img section="blue" class="IMGa lockedmap" src="ressources/maingui/maps/wastelands/wastelands_blue_locked.webp">
<img section="blue" class="IMGa hoverInfo" src="ressources/maingui/maps/wastelands/wastelands_blue.webp">
<img section="red" class="IMGa lockedmap" src="ressources/maingui/maps/wastelands/wastelands_red_locked.webp">
<img section="red" class="IMGa hoverInfo" src="ressources/maingui/maps/wastelands/wastelands_red.webp">
<img section="black" class="IMGa lockedmap" src="ressources/maingui/maps/wastelands/wastelands_black_locked.webp">
<img section="black" class="IMGa hoverInfo" src="ressources/maingui/maps/wastelands/wastelands_black.webp">
<!-- hover Triggers -->
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/wastelands/wastelands_blank.webp"
section="border" style="clip-path: polygon(0.0% 0.0%, 34.0% 0.0%, 31.0% 11.3%, 29.4% 11.7%, 22.4% 15.1%, 21.6% 16.7%, 19.8% 13.4%, 18.4% 16.4%, 17.3% 17.8%, 17.3% 23.2%, 17.8% 23.7%, 16.7% 25.3%, 17.7% 32.0%, 12.9% 36.2%, 10.9% 37.2%, 6.1% 38.3%, 0.0% 37.0%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/wastelands/wastelands_blank.webp"
section="green" style="clip-path: polygon(0.0% 37.1%, 5.9% 38.6%, 10.2% 37.6%, 12.9% 36.4%, 18.1% 32.1%, 17.1% 25.5%, 17.9% 23.5%, 19.8% 25.3%, 20.6% 24.6%, 22.7% 26.2%, 23.5% 25.1%, 21.7% 23.6%, 22.5% 22.8%, 22.5% 17.3%, 21.7% 16.7%, 22.2% 15.6%, 29.6% 11.5%, 31.5% 11.6%, 33.0% 4.5%, 33.5% 4.7%, 35.8% 20.1%, 38.0% 24.2%, 40.2% 26.7%, 40.5% 36.6%, 38.6% 45.5%, 26.8% 53.5%, 27.1% 59.2%, 23.9% 62.2%, 26.4% 64.3%, 25.2% 66.0%, 22.5% 63.8%, 19.0% 67.3%, 18.1% 66.6%, 16.3% 77.7%, 16.9% 83.4%, 19.7% 89.8%, 21.9% 95.0%, 21.7% 100.0%, 0.0% 100.0%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/wastelands/wastelands_blank.webp"
section="blue" style="clip-path: polygon(38.8% 45.2%, 55.0% 56.4%, 58.8% 63.9%, 61.0% 76.3%, 61.6% 76.1%, 63.9% 77.8%, 64.0% 84.1%, 60.8% 87.2%, 63.4% 89.4%, 62.1% 90.9%, 59.5% 88.7%, 57.1% 91.2%, 55.6% 94.6%, 55.6% 100.0%, 21.6% 100.0%, 21.5% 94.6%, 16.7% 83.3%, 16.2% 77.6%, 18.0% 66.1%, 18.9% 67.1%, 22.3% 63.6%, 25.0% 65.7%, 26.2% 64.4%, 23.6% 62.3%, 26.9% 59.1%, 26.9% 53.5%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/wastelands/wastelands_blank.webp"
section="red" style="clip-path: polygon(55.6% 100.0%, 55.6% 94.2%, 56.9% 91.0%, 59.4% 88.5%, 62.0% 90.7%, 63.2% 89.3%, 60.6% 87.2%, 64.0% 83.8%, 63.9% 77.9%, 61.6% 75.9%, 60.7% 76.5%, 58.9% 64.1%, 54.7% 56.5%, 65.9% 58.7%, 70.3% 55.3%, 69.3% 54.2%, 69.4% 49.3%, 70.0% 47.7%, 70.4% 48.1%, 70.4% 49.2%, 71.5% 48.1%, 71.5% 42.0%, 72.9% 40.4%, 74.4% 37.0%, 76.0% 40.4%, 77.0% 41.6%, 77.6% 40.4%, 79.8% 42.4%, 79.8% 44.2%, 80.2% 43.5%, 90.1% 39.9%, 100.0% 39.9%, 100.0% 100.0%);">
<img class="IMGa hoverTrigger" src="ressources/maingui/maps/wastelands/wastelands_blank.webp"
section="black" style="clip-path: polygon(47.6% 0.0%, 46.4% 1.6%, 43.0% 14.5%, 43.0% 31.6%, 46.2% 45.1%, 54.6% 56.9%, 66.2% 58.7%, 70.4% 55.3%, 69.5% 54.2%, 69.5% 49.2%, 70.1% 47.9%, 70.5% 48.3%, 70.4% 49.3%, 71.5% 48.3%, 71.6% 42.2%, 72.9% 40.6%, 74.4% 37.2%, 75.9% 40.6%, 77.2% 41.9%, 77.2% 40.9%, 77.6% 40.4%, 79.9% 42.5%, 79.9% 44.2%, 80.3% 43.5%, 90.3% 39.9%, 100.0% 40.2%, 100.0% 6.8%, 90.2% 6.8%, 80.1% 2.9%, 78.0% 0.0%);">
<!-- girl location indicator -->
<div class="MS_divAreasCont">
<div class="GLMS_markerCont" section="wastelands.sub.border" style="top: 4%;left: 1%;width: 25%"></div>
<div class="GLMS_markerCont" section="wastelands.sub.green" style="top: 40%;left: 2%;width: 30%;"></div>
<div class="GLMS_markerCont" section="wastelands.sub.blue" style="bottom: 15%;left: 20%;width: 35%;"></div>
<div class="GLMS_markerCont" section="wastelands.sub.red" style="bottom: 15%;left: 65%;width: 31%"></div>
<div class="GLMS_markerCont" section="wastelands.sub.black" style="top: 15%;left: 50%;width: 35%;"></div>
</div>
</div>
<div id="MS_popupOverlayCont"></div>
<</nobr>>\
<style>
body {
background-color: rgb(20,20,20);
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
position: relative;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: white;
font-family: 'Roboto', sans-serif;
}
#passages {
display: flex;
justify-content: center;
margin: 0;
max-width: 100%;
}
</style>\
<script>
setCurrentSection({keys: "wastelands"});
MS_init();
</script><<borderMaster>>\<<borderMaster>>\<<borderMaster>>\<<borderMaster>>\<<borderMaster>>\<<borderMaster>>\<<borderMaster>>\<<borderMaster>>\<<borderMaster>>\<<borderMaster>>\<<borderMaster>>\<<borderMaster>>\<<borderMaster>>\<<script>>playAudio("music", "wastelandsTheborder")<</script>>\
<<nobr>>
<<if $specpass.THREEA2 is 0>>
<<goto "GUA1">>
<</if>>
<div class="MRS_backgroundImagesCont">
<video class="MRS_base" muted autoplay loop src="ressources/backgrounds/3AGE.webm" poster="ressources/backgrounds/3AGE_ss.webp"> <!-- base video -->
Your browser does not support the video tag.
</video>
<img class="MRS_base" src="ressources/backgrounds/3AGE1.webp">
<img class="MRS_clip" src="ressources/backgrounds/3AGE1.webp" onclick="toggleBed()"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/3AGE2.webp"> <!-- hover -->
<img class="MRS_base" src="ressources/backgrounds/3AGE3.webp">
<img class="MRS_clip_2" src="ressources/backgrounds/3AGE3.webp" onclick="GLMF_gotoSecondaryScene('GCA')"> <!-- clip path -->
<img class="MRS_hover_2" src="ressources/backgrounds/3AGE4.webp"> <!-- hover -->
</div>
<div class="exit-button" onclick="previousBloc()">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<</nobr>>\
<<roomStyle>>
<style>
.passage {
position: relative;
}
.MRS_backgroundImagesCont img,
.MRS_backgroundImagesCont video {
left: 0;
transform: translate(0, -50%);
}
@media (min-aspect-ratio: 1920/1080) {
.MRS_backgroundImagesCont img,
.MRS_backgroundImagesCont video {
height: auto;
width: 117%; /* not 100% to conpensate sidebar */
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(9.7% 39.4%, 23.4% 43.0%, 22.8% 61.1%, 12.4% 60.9%, 11.5% 58.8%, 10.4% 59.2%, 10.3% 59.8%, 8.9% 59.8%);
}
.MRS_backgroundImagesCont img.MRS_clip_2 {
clip-path: polygon(36.7% 40.1%, 42.6% 49.1%, 42.3% 50.8%, 41.0% 49.3%, 40.8% 60.0%, 37.5% 59.8%, 37.6% 58.6%, 34.4% 59.2%, 33.5% 54.8%, 32.4% 54.3%, 32.8% 43.1%, 33.8% 42.2%, 33.3% 41.5%, 34.3% 41.1%, 35.3% 43.1%, 36.2% 41.5%, 35.8% 40.5%);
}
.exit-button {
background-color: #f6c5a4;
border: 2vmin solid #452121;
}
.exit-button img {
filter: brightness(0) saturate(100%) invert(11%) sepia(24%) saturate(1547%) hue-rotate(314deg) brightness(104%) contrast(88%);
}
</style>\
<script>
//-------PASSAGE CHANGE TOGGLES-------//
function toggleBed() {
playPassage('3AGI');
}
function previousBloc() {
playPassage('3A2');
}
</script><!--GabbieRoom-->\
<<script>>playAudio("music", "wastelandsTheborder")<</script>>\
<<nobr>>
<div class="MRS_backgroundImagesCont">
<video class="MRS_base" muted autoplay loop src="ressources/backgrounds/3AGI.webm" poster="ressources/backgrounds/3AGI_ss.webp"> <!-- base 1 -->
Your browser does not support the video tag.
</video>
<img class="MRS_base" src="ressources/backgrounds/3AGI1.webp"> <!-- base 2 -->
<img class="MRS_clip" src="ressources/backgrounds/3AGI1.webp" onclick="GLMF_gotoSecondaryScene('GCB')"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/3AGI2.webp"> <!-- hover -->
</div>
<div class="exit-button" onclick="previousBloc()">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="mainboutondiv">
<div class="boutondiv_topright_gabbie">
<div class="placeholder_topright_gabbie"></div>
<div id="mainButton_topright_gabbie" onclick="accessLustGame('gabbie');">
<img src='ressources/maingui/attributes/lust_icon.webp' alt='Icon'>
<span>Practice Lust</span>
</div>
</div>
<div class="boutondiv_topright_gabbie">
<div class="placeholder_topright_gabbie"></div>
<div id="mainButton_topright_gabbie" onclick="accessTrustGame('gabbie');">
<img src='ressources/maingui/attributes/trust_icon.webp' alt='Icon'>
<span>Practice Trust</span>
</div>
</div>
<div class="boutondiv_topright_gabbie bouton_bonusScenes">
<div id="mainButton_topright_gabbie" onclick="BSB_show('gabbie');">
<img id="bonusImg" src='ressources/icons/2K.webp' alt='Icon'>
<span><b>BONUS SCENES</b></span>
</div>
</div>
</div>
<</nobr>>\
<<roomStyle>>
<style>
@media (min-aspect-ratio: 1920/1080) { /* image resolution */
.MRS_backgroundImagesCont img,
.MRS_backgroundImagesCont video {
/* horizontal block */
height: auto;
width: 100%;
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(44.5% 50.7%, 63.6% 51.9%, 64.4% 43.1%, 62.6% 35.3%, 60.9% 33.0%, 61.4% 30.1%, 49.4% 28.2%, 48.3% 30.1%, 48.3% 33.0%, 47.3% 33.5%, 44.7% 38.7%, 44.0% 45.0%);
}
.exit-button {
background-color: #6d322c;
border: 2vmin solid #deb23f;
}
.exit-button img {
filter: invert(81%) sepia(57%) saturate(652%) hue-rotate(338deg) brightness(97%) contrast(79%);
}
.bouton_bonusScenes img {
filter: brightness(0) saturate(100%) invert(81%) sepia(57%) saturate(652%) hue-rotate(338deg) brightness(97%) contrast(79%);
}
</style>\
<script>
function previousBloc() {
playPassage('3AGE');
}
</script><<script>>playAudio("music", "wastelandsGreenzone")<</script>>\
<<nobr>>
<div class="MRS_backgroundImagesCont">
<video class="MRS_base" muted autoplay loop src="ressources/backgrounds/3AGE.webm" poster="ressources/backgrounds/3AGE_ss.webp"> <!-- base video -->
Your browser does not support the video tag.
</video>
<img class="MRS_base" src="ressources/backgrounds/3AGE1.webp">
<img class="MRS_clip" src="ressources/backgrounds/3AGE1.webp" onclick="toggleBed()"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/3AGE2.webp"> <!-- hover -->
<img class="MRS_base" src="ressources/backgrounds/3AGE3.webp">
<img class="MRS_clip_2" src="ressources/backgrounds/3AGE3.webp" onclick="GLMF_gotoSecondaryScene('GCA')"> <!-- clip path -->
<img class="MRS_hover_2" src="ressources/backgrounds/3AGE4.webp"> <!-- hover -->
</div>
<div class="exit-button" onclick="previousBloc()">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<</nobr>>\
<<roomStyle>>
<style>
.passage {
position: relative;
}
.MRS_backgroundImagesCont img,
.MRS_backgroundImagesCont video {
left: 0;
transform: translate(0, -50%);
}
@media (min-aspect-ratio: 1920/1080) {
.MRS_backgroundImagesCont img,
.MRS_backgroundImagesCont video {
height: auto;
width: 117%; /* not 100% to conpensate sidebar */
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(9.7% 39.4%, 23.4% 43.0%, 22.8% 61.1%, 12.4% 60.9%, 11.5% 58.8%, 10.4% 59.2%, 10.3% 59.8%, 8.9% 59.8%);
}
.MRS_backgroundImagesCont img.MRS_clip_2 {
clip-path: polygon(36.7% 40.1%, 42.6% 49.1%, 42.3% 50.8%, 41.0% 49.3%, 40.8% 60.0%, 37.5% 59.8%, 37.6% 58.6%, 34.4% 59.2%, 33.5% 54.8%, 32.4% 54.3%, 32.8% 43.1%, 33.8% 42.2%, 33.3% 41.5%, 34.3% 41.1%, 35.3% 43.1%, 36.2% 41.5%, 35.8% 40.5%);
}
.exit-button {
background-color: #f6c5a4;
border: 2vmin solid #452121;
}
.exit-button img {
filter: brightness(0) saturate(100%) invert(11%) sepia(24%) saturate(1547%) hue-rotate(314deg) brightness(104%) contrast(88%);
}
</style>\
<script>
//-------PASSAGE CHANGE TOGGLES-------//
function toggleBed() {
playPassage('3BGI');
}
function previousBloc() {
playPassage('3B2');
}
</script><!--GabbieRoom-->\
<<script>>playAudio("music", "wastelandsGreenzone")<</script>>\
<<nobr>>
<div class="MRS_backgroundImagesCont">
<video class="MRS_base" muted autoplay loop src="ressources/backgrounds/3AGI.webm" poster="ressources/backgrounds/3AGI_ss.webp"> <!-- base 1 -->
Your browser does not support the video tag.
</video>
<img class="MRS_base" src="ressources/backgrounds/3AGI1.webp"> <!-- base 2 -->
<img class="MRS_clip" src="ressources/backgrounds/3AGI1.webp" onclick="GLMF_gotoSecondaryScene('GCB')"> <!-- clip path -->
<img class="MRS_hover" src="ressources/backgrounds/3AGI2.webp"> <!-- hover -->
</div>
<div class="exit-button" onclick="previousBloc()">
<img src="ressources/maingui/ui/exit.webp" alt="Exit Button">
</div>
<div class="mainboutondiv">
<div class="boutondiv_topright_gabbie">
<div class="placeholder_topright_gabbie"></div>
<div id="mainButton_topright_gabbie" onclick="accessLustGame('gabbie');">
<img src='ressources/maingui/attributes/lust_icon.webp' alt='Icon'>
<span>Practice Lust</span>
</div>
</div>
<div class="boutondiv_topright_gabbie">
<div class="placeholder_topright_gabbie"></div>
<div id="mainButton_topright_gabbie" onclick="accessTrustGame('gabbie');">
<img src='ressources/maingui/attributes/trust_icon.webp' alt='Icon'>
<span>Practice Trust</span>
</div>
</div>
<div class="boutondiv_topright_gabbie bouton_bonusScenes">
<div id="mainButton_topright_gabbie" onclick="BSB_show('gabbie');">
<img id="bonusImg" src='ressources/icons/2K.webp' alt='Icon'>
<span><b>BONUS SCENES</b></span>
</div>
</div>
</div>
<</nobr>>\
<<roomStyle>>
<style>
@media (min-aspect-ratio: 1920/1080) { /* image resolution */
.MRS_backgroundImagesCont img,
.MRS_backgroundImagesCont video {
/* horizontal block */
height: auto;
width: 100%;
}
}
.MRS_backgroundImagesCont img.MRS_clip {
clip-path: polygon(44.5% 50.7%, 63.6% 51.9%, 64.4% 43.1%, 62.6% 35.3%, 60.9% 33.0%, 61.4% 30.1%, 49.4% 28.2%, 48.3% 30.1%, 48.3% 33.0%, 47.3% 33.5%, 44.7% 38.7%, 44.0% 45.0%);
}
.exit-button {
background-color: #6d322c;
border: 2vmin solid #deb23f;
}
.exit-button img {
filter: invert(81%) sepia(57%) saturate(652%) hue-rotate(338deg) brightness(97%) contrast(79%);
}
.bouton_bonusScenes img {
filter: brightness(0) saturate(100%) invert(81%) sepia(57%) saturate(652%) hue-rotate(338deg) brightness(97%) contrast(79%);
}
</style>\
<script>
function previousBloc() {
playPassage('3BGE');
}
</script><<greenMaster>>\<<greenMaster>>\<<greenMaster>>\<<nobr>>
<div class="FS_main">
<div class="FS_finish-overlay FS_hidden"> <!-- finish screen -->
<div class="FS_contentCont DIAS_container_ParentScrollable">
<div class="FS_content DIAS_container">
</div>
</div>
<div class="FS_exit">
<div class="DIAS_button">Done</div>
</div>
</div>
<div class="FS_choose-overlay FS_hidden"> <!-- choose popup -->
<div>
<top>Lorem, ipsum dolor sit amet consectetur adipisicing elit.</top>
<hr>
<bottom>
<div class="FS_button">Let her do her things</div>
<div class="FS_button">Run away</div>
</bottom>
</div>
</div>
<div class="FS_wheel-overlay FS_hidden"> <!-- wheel game -->
<div class="FS_wheel-pin">
<img src="ressources/icons/7C.webp">
</div>
<canvas id="FS_wheel"></canvas> <!-- width="1000" height="1000" -->
<div class="FS_wheel-overlay__center-button " onmousedown="FGF_wheel_fightButton();"></div>
<div class="FS_wheel-stats">
<table>
</table>
</div>
</div>
<div class="FS_top"> <!-- main fight -->
<div class="FS_top__scene FS_shadow">
<!-- img -->
</div>
<div class="FS_top__scene op-tag FS_shadow">
<!-- img -->
</div>
</div>
<div class="FS_middle">
<div class="FS_middle__dial FS_shadow">
<div class="FS_middle__dial__text"></div>
<img src="">
</div>
<div class="FS_middle__current-move FS_shadow" onclick="FGF_wheel_appearOverlay();">
<img src="ressources/maingui/sexuals/beginning.webp">
</div>
<div class="FS_middle__dial op-tag FS_shadow">
<img src="">
<div class="FS_middle__dial__text"></div>
<!-- div class="FS_middle__dial__boxShadow"></div -->
</div>
</div>
<div class="FS_bottom">
<div class="FS_bottom__mc">
<div class="FS_bottom__x__imgCont">
<img class="FS_shadow" src="">
</div>
<div class="FS_bottom__x__name">George</div>
</div>
<div class="FS_bottom__progress">
<div class="FS_bottom__progress__mc">
<div class="FS_bottom__progress__bar">
<div class="FS_bottom__progress__bar-start"></div>
<div class="FS_bottom__progress__bar-end">
<img src="ressources/icons/7E.webp">
</div>
</div>
<div class="FS_bottom__progress__overlay">
<img class="FS_shadow" src="">
</div>
</div>
<div class="FS_bottom__progress__state">
<!-- <div class="FS_shadow"><img src="ressources/maingui/sexuals/beginning.webp"></div> -->
<!-- -->
</div>
<div class="FS_bottom__progress__op">
<div class="FS_bottom__progress__bar FS_op-color">
<div class="FS_bottom__progress__bar-start FS_op-color"></div>
<div class="FS_bottom__progress__bar-end op-tag FS_op-color">
<img src="ressources/icons/7E.webp">
</div>
</div>
<div class="FS_bottom__progress__overlay op-tag">
<img class="FS_shadow" src="">
</div>
</div>
</div>
<div class="FS_bottom__op">
<div class="FS_bottom__x__imgCont">
<img class="FS_shadow" src="">
<!-- video src="./ressources/maingui/others/ringOfFire.webm" autoplay loop muted></video -->
</div>
<div class="FS_bottom__x__name">Name here yup</div>
</div>
</div>
</div>
<</nobr>>\
<style>
body {
/*overflow: hidden; /*MAYBEE*/
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
/*font-family: 'Century Gothic', sans-serif; /*MAYBEE*/
color: white; /*MAYBEE*/
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
}
</style>\
<script>
FGF_reloadFight();
</script><<nobr>>
<div class="TGS_exit">EXIT</div>
<div class="TGS_background"></div>
<div class="TGS_container">
<div class="left">
<div class="inventoryCont">
<div class="inventoryItems"><!-- js --></div>
</div>
</div>
<div class="middle">
<div class="itemSlot"></div>
<img src="ressources/maingui/ui/giftBox.webp">
<div class="itemSlotButton">GIVE</div>
</div>
<div class="right">
<div class="TGS_meterCont">
<div class="left">
<div class="nextPhase"><img src="ressources/maingui/sexuals/tease.webp"></div>
<div class="meter">
<div class="meterCurrentCont">
<div class="meterCurrent">
</div>
</div>
<div class="meterSectionsCont">
<!-- js -->
<!-- ex: <div class="meterSection" style="bottom: 40%">5<line></line></div> -->
</div>
</div>
<div class="currentPhase"><img src="ressources/maingui/sexuals/beginning.webp"></div>
</div>
<div class="right">
<img src="ressources/maingui/attributes/trust_icon.webp">
<qty>10 ?</qty>
</div>
</div>
</div>
</div>
<div class="TGS_contentCont">
<div class="TGS_content">
<img>
<text>Lorem ipsum dolor sit amet consectetur </text>
</div>
<div class="TGS_contentExit">EXIT</div>
</div>
<</nobr>>\
<style>
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
height: 100vh;
font-size: 1.75vh;
}
#ui-bar.stowed {
left: -26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
width: 100%;
max-width: 100%;
margin: 0;
height: 100vh;
}
.passage {
height: 100%;
width: 100%;
overflow: hidden;
font-size: 1.25vh;
position: relative;
}
.TGS_exit {
position: absolute;
z-index: 5;
top: 2vh;
right: 21vh;
font-size: 2em;
min-width: 7em;
text-align: center;
border-radius: 0.4em;
background-color: rgba(0, 0, 0, 0.7);
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow:
0 0 1vh rgba(255, 0, 0, 0.4),
0 0 1.5vh rgba(255, 0, 0, 0.4),
0 0 2vh rgba(255, 0, 0, 0.4);
box-shadow:
inset 0 0 0.5vh rgba(255, 0, 0, 0.4),
0 0 0.5vh rgba(255, 0, 0, 0.4),
0 0 1vh rgba(255, 0, 0, 0.4);
cursor: pointer;
transition: transform 0.2s ease, text-shadow 0.2s ease, box-shadow 0.2s ease;
}
.TGS_exit:hover {
transform: scale(1.05);
box-shadow:
inset 0 0 0.5vh rgba(255, 0, 0, 0.6),
0 0 0.5vh rgba(255, 0, 0, 0.6),
0 0 1vh rgba(255, 0, 0, 0.6);
text-shadow:
0 0 1vh rgba(255, 0, 0, 0.6),
0 0 1.5vh rgba(255, 0, 0, 0.6),
0 0 2vh rgba(255, 0, 0, 0.6);
}
.TGS_background {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
.TGS_background > img,
.TGS_background > video {
height: 100%;
width: 100%;
object-fit: cover;
}
.TGS_container {
display: flex;
justify-content: space-between;
align-items: center;
padding-left: 2.5em; /* idk a better way to do this */
width: 100%;
height: 100%;
font-size: 1.25vh;
font-family: 'Century Gothic', sans-serif;
}
.TGS_container > .left { /* inventory */
position: relative;
z-index: 1;
flex: 1;
height: 100%;
padding: 1em;
display: flex;
align-items: center;
justify-content: center;
}
.TGS_container > .left > .inventoryCont {
height: 50%;
aspect-ratio: 1;
filter: drop-shadow(0 0 0.5em #ffffff);
}
.TGS_container > .left > .inventoryCont > .inventoryTitle {
background-color: rgba(0, 0, 0, 0.265);
border: solid 0.1em #000000;
border-radius: 0.7em;
}
.TGS_container > .left > .inventoryCont > .inventoryItems {
background-color: rgba(0, 0, 0, 0.265);
border: solid 0.1em #000000;
border-radius: 0.7em;
width: 100%;
aspect-ratio: 1;
display: flex;
flex-wrap: wrap;
align-content: flex-start;
overflow-Y: auto;
scrollbar-width: thin;
}
.TGS_container > .middle { /* item gift slot */
position: relative;
z-index: 1;
width: 23vh;
min-width: 10vh;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.TGS_container > .middle > img {
position: absolute;
z-index: -1;
width: 100%;
margin-top: -30%;
filter: drop-shadow(0 0 1em #000000) drop-shadow(0 0 1em #000000) ;
}
.TGS_container > .middle > .itemSlot {
position: relative;
width: 100%;
aspect-ratio: 1;
display: flex;
align-items: center;
justify-content: center;
background: radial-gradient(ellipse, rgba(00, 00, 00, 0.7), rgba(0, 0, 0, 0) 70%);
filter: drop-shadow(0 0 0.5em #ffffff);
}
.TGS_container > .middle > .itemSlot > img {
width: 60%;
animation: TGS_container_img_animation 0.7s ease-in forwards;
}
@keyframes TGS_container_img_animation {
0% {opacity: 0}
to {opacity: 1}
}
.TGS_container > .middle > .itemSlotButton {
position: absolute;
z-index: 1;
font-size: 1.4em;
font-weight: bold;
top: 65%;
min-width: 100%;
padding: 0.5em 0;
background-color: rgba(0, 0, 0, 0.5);
border: solid 0.05em #000000;
border-radius: 0.7em;
text-align: center;
cursor: pointer;
filter: drop-shadow(0 0 0.5em #ffffff);
transition: transform 0.2s ease;
}
.TGS_container > .middle > .itemSlotButton:hover {
transform: scale(1.05);
}
.TGS_container > .right { /* meter */
position : relative;
z-index: 0;
flex: 1;
max-width: 80vh;
height: 100%;
}
.TGS_meterCont {
position: relative;
margin: 0 auto;
height: 100%;
max-width: 40vh;
display: flex;
align-items: center;
justify-content: center;
}
.TGS_meterCont > .left {
height: 100%;
width: 10vh;
margin-left: 5vh; /* for section indicators */
display: flex;
flex-direction: column;
justify-content: center;
}
.TGS_meterCont > .left > .meter {
position: relative;
height: 60%;
width: 100%;
/* background-image: linear-gradient(to top, #C22727 30%, rgba(0, 0, 0, 0.5) 30%); */
border: solid 0.3em #000000;
border-radius: 0.7em;
margin: 1em 0;
}
.TGS_meterCont > .left > .meter > .meterCurrentCont {
position: relative;
width: 100%;
height: 100%;
border-radius: 0.4em; /* 0.7 - 0.3 */
overflow: hidden;
}
.TGS_meterCont > .left > .meter > .meterCurrentCont > .meterCurrent {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 100%; /* 100 is empty, 0 is full */
background-color: #C22727;
transition: top 0.7s ease;
}
.TGS_meterCont > .left > .meter > .meterSectionsCont {
position: absolute;
width: 50%;
height: 100%;
top: 0;
right: 100%;
}
.TGS_meterCont > .left > .meter > .meterSectionsCont > .meterSection {
position: absolute;
width: 100%;
height: 0;
display: flex;
align-items: center;
justify-content: flex-end;
font-weight: bold;
filter: drop-shadow(0 0 0.2em #000000) drop-shadow(0 0 0.2em #000000) drop-shadow(0 0 0.3em #000000) drop-shadow(0 0 0.5em #000000);
}
.TGS_meterCont > .left > .meter > .meterSectionsCont > .meterSection > line {
margin: 0 0.5em;
width: 1em;
height: 2px;
background-color: #ffffff;
}
.TGS_meterCont > .left > .nextPhase,
.TGS_meterCont > .left > .currentPhase {
width: 100%;
aspect-ratio: 1;
background-color: rgba(0, 0, 0, 0.8);
border: solid 0.3em #000000;
border-radius: 50%;
overflow: clip;
display: flex;
align-items: center;
justify-content: center;
}
.TGS_meterCont > .left > .nextPhase > img,
.TGS_meterCont > .left > .currentPhase > img {
width: 80%;
aspect-ratio: 1;
/* border-radius: 50%; */
}
.TGS_meterCont > .right {
height: 100%;
width: 20vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
filter: drop-shadow(0 0 0.5em #000000) drop-shadow(0 0 0.5em #000000) drop-shadow(0 0 0.5em #000000);
}
.TGS_meterCont > .right > img {
width: 80%;
aspect-ratio: 1;
}
.TGS_meterCont > .right > qty {
font-size: 1.5em;
margin: 0.5em;
font-weight: bold;
color: #ffffff;
}
.TGS_contentCont {
position: absolute;
z-index: 100;
top: 0;
left: 0;
width: 100%;
height: 100%;
--TGV_clr: #7a0808;
background-color: rgba(0, 0, 0, 0.7);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
opacity: 0;
pointer-events: none;
transition: opacity 0.5s ease;
}
.TGS_contentCont > .TGS_content {
height: 90vh;
aspect-ratio: 1.3;
max-width: 100%;
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow:
0 0 1vh rgba(255, 0, 0, 0.4),
0 0 1.5vh rgba(255, 0, 0, 0.4),
0 0 2vh rgba(255, 0, 0, 0.4);
box-shadow:
inset 0 0 0.5vh rgba(255, 0, 0, 0.4),
0 0 0.5vh rgba(255, 0, 0, 0.4),
0 0 1vh rgba(255, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.7);
border-radius: 2em;
padding: 1em;
display: flex;
flex-direction: column;
}
.TGS_contentCont > .TGS_content > img {
width: 100%;
height: 0; /* overcomed by flex */
flex: 1;
object-fit: contain;
filter:
drop-shadow(0 3px 0 var(--TGV_clr))
drop-shadow(0 -3px 0 var(--TGV_clr))
drop-shadow(3px 0 0 var(--TGV_clr))
drop-shadow(-3px 0 0 var(--TGV_clr))
drop-shadow(0 0 1vh var(--TGV_clr))
drop-shadow(0 0 1.5vh var(--TGV_clr));
}
.TGS_contentCont > .TGS_content > text {
/* height: 30%; */
margin-top: 0.5em;
min-height: 15%;
max-height: 30%;
width: 100%;
font-size: 2em;
border-top: solid 0.1em var(--TGV_clr);
padding: 0.3em;
overflow: auto;
scrollbar-width: thin;
}
.TGS_contentCont > .TGS_contentExit {
font-size: 2em;
font-weight: bold;
margin: 0.3em;
padding: 0.5em 1em;
min-width: 10em;
text-align: center;
background-color: rgba(0, 0, 0, 0.5);
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow:
0px 0px 8px rgba(255, 0, 0, 0.4),
0px 0px 16px rgba(255, 0, 0, 0.4),
0px 0px 24px rgba(255, 0, 0, 0.4);
box-shadow:
inset 0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 1vw rgba(255, 0, 0, 0.4);
border-radius: 0.7em;
cursor: pointer;
pointer-events: auto;
transition: transform 0.2s ease, text-shadow 0.2s ease, box-shadow 0.2s ease;
}
.TGS_contentCont > .TGS_contentExit:hover {
transform: scale(1.05);
box-shadow:
inset 0 0 0.5vh rgba(255, 0, 0, 0.6),
0 0 0.5vh rgba(255, 0, 0, 0.6),
0 0 1vh rgba(255, 0, 0, 0.6);
text-shadow:
0 0 1vh rgba(255, 0, 0, 0.6),
0 0 1.5vh rgba(255, 0, 0, 0.6),
0 0 2vh rgba(255, 0, 0, 0.6);
}
</style>\
<script>
(function main_trustGame() { // main call
// Local Variables
let TGV_chosenItemKey = null; // obj of the chosen item in the inventory
/* let TGV_characterSign = {
angela: 'A',
cherie: 'C',
elfie: 'E',
lana: 'L',
gabbie: 'G',
} */
let TGV_background = {
angela: ['video', '2ACI.webm'],
cherie: ['image', '1SC3.webp'],
elfie: ['image', '1SE1.webp'],
lana: ['image', '1SL.webp'],
gabbie: ['video', '3AGI.webm'],
mia: ['image', '1SM.webp'],
}
/* let TGV_progress = { //TODO, integrate this in the SCv xD
beginning: {
startValue: 0,
endValue: 100,
sections: {
0: {}, // Main scene 1, Tier 1 Items
10: {}, // Main scene 2, Tier 1 Items
20: {}, // Main scene 3, Tier 1 Items
30: {}, // Main scene 4, Tier 1 Items
40: {}, // Main scene 5, Tier 1 Items
50: {}, // Main scene 6, Tier 1 Items
60: {}, // Main scene 7, Tier 2 Items
70: {}, // Main scene 8, Tier 2 Items
80: {}, // Main scene 9, Tier 2 Items
100: {}, // Main scene 10, Tier 3 Items
}
},
tease: {
startValue: 100,
endValue: 250,
sections: {
110: {}, // Main scene 11, Tier 3 Items
120: {}, // Main scene 12, Tier 3 Items
130: {}, // Main scene 13, Tier 3 Items
140: {}, // Main scene 14, Tier 3 Items
155: {}, // Main scene 15, Tier 3 Items
170: {}, // Main scene 16, Tier 4 Items
185: {}, // Main scene 17, Tier 4 Items
200: {}, // Main scene 18, Tier 4 Items
220: {}, // Main scene 19, Tier 4 Items
250: {}, // Main scene 20, Tier 5 Items
}
},
}; */
// now in the gameData.mainScenes.progress.cherie_lust.progressValues if defined. if not defined, gameData.mainScenes.generalProgressValues. (both array)
let TGV_content = {
characters : {
angela: { // (A) (T)
accept: { // (A)
1: { // Tier 1 (1)
//no default
0: { // Common (A)
text: "A Grey Book, simple yet captivating. Every bit of knowledge is a gift. Thank you.",
image: "ressources/scenes/ATA1A1.webp",
},
1: { // Uncommon (B)
text: "A Green Book, full of intriguing tales! I cherish this gift, thank you.",
image: "ressources/scenes/ATA1B1.webp",
},
2: { // Rare (C)
text: "This Blue Book is a treasure. Its wisdom enlightens me. My sincerest thanks.",
image: "ressources/scenes/ATA1C1.webp",
},
3: { // Epic (D)
text: "The Purple Book! Every page is a step closer to the truth. I'm deeply thankful.",
image: "ressources/scenes/ATA1D1.webp",
},
4: { // Legendary (E)
text: "The Yellow Book, a beacon of ancient wisdom! Thank you for this honor.",
image: "ressources/scenes/ATA1E1.webp",
},
5: { // Mythical (F)
text: "Ah, the Red Book! My heart swells with gratitude. Such knowledge is priceless.",
image: "ressources/scenes/ATA1F1.webp",
},
},
// Tier 2 here.
},
refuse: { // (R)
default: {
text: "I'm sorry, I can't accept this.",
image: "ressources/scenes/ATR1.webp",
},
equipment: { // (E)
text: "I'm afraid this equipment doesn't serve my purpose. Please, have it back.",
},
food: { // (F)
text: "I appreciate the offer, but I'm not in the mood for food right now. Maybe later?",
},
material: { // (M)
text: "Thank you, but this material isn't something I need. Perhaps hold onto it for now?",
},
},
},
cherie : { // (C)
accept: { // (A)
1: { // Tier 1 (1)
0: { // Common (A)
text: "Oh, darling, even the simplest grey amulet from you means the world to me. Thank you.",
image: "ressources/scenes/CTA1A1.webp",
},
1: { // Uncommon (B)
text: "A green amulet? How thoughtful of you, my dear. It's just as nurturing as your heart.",
image: "ressources/scenes/CTA1B1.webp",
},
2: { // Rare (C)
text: "You've given me a blue amulet? This is incredibly rare, just like your kindness. I appreciate it deeply.",
image: "ressources/scenes/CTA1C1.webp",
},
3: { // Epic (D)
text: "My, my, a purple amulet... It symbolizes such a deep connection. You've made me feel very cherished.",
image: "ressources/scenes/CTA1D1.webp",
},
4: { // Legendary (E)
text: "The yellow amulet! It’s legendary... I’m overwhelmed by your generosity, my boy. This is a treasure, indeed.",
image: "ressources/scenes/CTA1E1.webp",
},
5: { // Mythical (F)
text: "A mythical red amulet, really? It's as rare and beautiful as the love I have for you. I'm so honored, thank you.",
image: "ressources/scenes/CTA1F1.webp",
},
},
// Tier 2 here.
},
refuse: { // (R)
default: {
text: "I'm sorry, I can't accept this.",
image: "ressources/scenes/CTR1.webp",
},
equipment: { // (E)
text: "Oh, sweetie, why would I need such a piece of equipment? My place is here, making sure you're all safe and healthy. You keep it; you're the one braving the wilds.",
},
food: { // (F)
text: "No thank you, dear. I'm not quite in the mood for that food right now. Why don't you keep it for yourself? You need your strength out there.",
},
material: { // (M)
text: "Oh, darling, it's kind of you to offer, but I really don't need this material. Let's save it for when it's truly needed, alright?",
},
},
},
elfie: { // (E)
accept: { // (A)
1: { // Tier 1 (1)
0: { // Common (A)
text: "A Grey Teddybear! It's so soft and cuddly. It makes me feel like I'm not alone on this adventure.",
image: "ressources/scenes/ETA1A1.webp",
},
1: { // Uncommon (B)
text: "I love this Green Teddybear! Its playfulness is just what I needed. It's so cute!",
image: "ressources/scenes/ETA1B1.webp",
},
2: { // Rare (C)
text: "This Blue Teddybear, with its lovely satin bow, is so comforting. It's like having a constant hug.",
image: "ressources/scenes/ETA1C1.webp",
},
3: { // Epic (D)
text: "The velvet fur on this Purple Teddybear is so luxurious. It's like a little piece of magic in my hands!",
image: "ressources/scenes/ETA1D1.webp",
},
4: { // Legendary (E)
text: "This Yellow Teddybear is like a ray of sunshine, a golden treasure just for me. Thank you so much!",
image: "ressources/scenes/ETA1E1.webp",
},
5: { // Mythical (F)
text: "Oh wow, this Red Teddybear is absolutely magical! I can feel the courage surging within me already!",
image: "ressources/scenes/ETA1F1.webp",
},
},
// Tier 2 here.
},
refuse: { // (R)
default: {
text: "I'm sorry, I can't accept this.",
image: "ressources/scenes/ETR1.webp",
},
equipment: { // (E)
text: "Why would I need equipment? I'm not exactly going out fighting monsters or anything. I think this should go to someone who really needs it.",
},
food: { // (F)
text: "Ugh, I really don't want to eat this. Can't we find something else? I'm just not in the mood for this.",
},
material: { // (M)
text: "I appreciate it, but I don't really need this material. Maybe we should save it for when it's truly necessary.",
},
},
},
gabbie: { // (G)
accept: { // (A)
1: { // Tier 1 (1)
0: { // Common (A)
text: "Even this Grey Flower has its own unique charm. It's a gentle reminder of the beauty that can be found in the most unexpected places.",
image: "ressources/scenes/GTA1A1.webp",
},
1: { // Uncommon (B)
text: "Such a vibrant Green Flower! It's a refreshing splash of nature amid the desolate wastelands.",
image: "ressources/scenes/GTA1B1.webp",
},
2: { // Rare (C)
text: "The Blue Flower's tranquil beauty is so calming. It truly is a rare treasure, just like the moments we share.",
image: "ressources/scenes/GTA1C1.webp",
},
3: { // Epic (D)
text: "Oh, the fragrance of this Purple Flower is simply enchanting. It's mysterious, just like the world around us.",
image: "ressources/scenes/GTA1D1.webp",
},
4: { // Legendary (E)
text: "This Yellow Flower is stunning, it's like holding a piece of the sun itself. You always know how to brighten my day.",
image: "ressources/scenes/GTA1E1.webp",
},
5: { // Mythical (F)
text: "Wow, this Red Flower is incredible! I can feel the energy coursing through me just by holding it. Thank you so much!",
image: "ressources/scenes/GTA1F1.webp",
},
},
// Tier 2 here.
},
refuse: { // (R)
default: {
text: "I'm sorry, I can't accept this.",
image: "ressources/scenes/GTR1.webp",
},
equipment: { // (E)
text: "Why would I need this equipment? My survival skills have gotten me this far without it. Let's save it for when we really need it, okay?",
},
food: { // (F)
text: "I'm not really in the mood for this kind of food right now. Maybe we could find something else?",
},
material: { // (M)
text: "I don't really need this material right now, you should probably hang on to it or give it to someone who could make better use of it.",
},
},
},
lana: { // (L)
accept: { // (A)
1: { // Tier 1 (1)
0: { // Common (A)
text: "A black machete? Simple and reliable, just like old times. Thanks.",
image: "ressources/scenes/LTA1A1.webp",
},
1: { // Uncommon (B)
text: "A green machete, huh? Not bad at all, I appreciate it.",
image: "ressources/scenes/LTA1B1.webp",
},
2: { // Rare (C)
text: "This blue machete is remarkable, and so is your thoughtfulness for giving it to me.",
image: "ressources/scenes/LTA1C1.webp",
},
3: { // Epic (D)
text: "I can feel the power in this blade... Thank you, this means a lot to me.",
image: "ressources/scenes/LTA1D1.webp",
},
4: { // Legendary (E)
text: "A yellow machete? It's definitely unique... such power... I'll give you that. Thanks.",
image: "ressources/scenes/LTA1E1.webp",
},
5: { // Mythical (F)
text: "Wow, a red machete! It's fiery, just like my spirit. Thanks!",
image: "ressources/scenes/LTA1F1.webp",
},
},
// Tier 2 here.
},
refuse: { // (R)
default: {
text: "I'm sorry, I can't accept this.",
image: "ressources/scenes/LTR1.webp",
},
equipment: { // (E)
text: "Why would I need this? I can handle myself just fine without extra gear.",
},
food: { // (F)
text: "I appreciate the offer, but I don't eat just to fill my stomach. That's not what I need right now.",
},
material: { // (M)
text: "I don't need this. My focus is on survival, not collecting junk.",
},
},
},
mia: { // (D)
accept: { // (A)
1: { // Tier 1 (1)
0: { // Common (A)
text: "A Common Crown, but it’s far from ordinary to me. Its simple elegance is captivating, and I’m so grateful for it. Every gift from you is special. Thank you!",
image: "ressources/scenes/DTA1A1.webp",
},
1: { // Uncommon (B)
text: "An Uncommon Crown, full of charm and mystery! I adore this beautiful piece, and I’ll cherish every moment wearing it. You always know what I’ll love—thank you so much!",
image: "ressources/scenes/DTA1B1.webp",
},
2: { // Rare (C)
text: "This Rare Crown is truly a treasure. Its brilliance lights up my world, and I feel like a queen wearing it. My deepest thanks for this incredible gift!",
image: "ressources/scenes/DTA1C1.webp",
},
3: { // Epic (D)
text: "The Epic Crown! Every detail is a masterpiece, every gem a piece of the truth I’ve been seeking. I’m so thankful for this stunning gift. You know just how to make my day!",
image: "ressources/scenes/DTA1D1.webp",
},
4: { // Legendary (E)
text: "The Legendary Crown, a symbol of ancient power and unmatched beauty! Wearing this is like stepping into a dream. I’m beyond honored. You’ve outdone yourself!",
image: "ressources/scenes/DTA1E1.webp",
},
5: { // Mythical (F)
text: "Ah, the Mythical Crown! I can’t believe it’s mine! Every jewel, every curve—it’s absolutely priceless. You really know how to spoil a girl. Thank you!",
image: "ressources/scenes/DTA1F1.webp",
},
},
// Tier 2 here.
},
refuse: { // (R)
default: {
text: "I'm sorry, I can't accept this.",
image: "ressources/scenes/DTR1.webp",
},
equipment: { // (E)
text: "Hmm, this equipment is cool, but it’s not really what I need. You should take it back and maybe find someone who can use it better.",
},
food: { // (F)
text: "Aww, you’re sweet, but I’m just not feeling hungry right now. Maybe later, though?",
},
material: { // (M)
text: "Thanks, but this material doesn’t really fit my vibe. Maybe hang onto it for now? Someone else might need it.",
},
},
},
},
};
let TGV_itemValue = { // trust value
1 : { // Tier 1 (1)
0: 1, // (A) Common
1: 2, // (B) Uncommon
2: 3, // (C) Rare
3: 5, // (D) Epic
4: 10, // (E) Legendary
5: 20, // (F) Mythical
},
2 : { // Tier 2 (2)
0: 1, // (A) Common
1: 3, // (B) Uncommon
2: 4, // (C) Rare
3: 7, // (D) Epic
4: 14, // (E) Legendary
5: 28, // (F) Mythical
},
3 : { // Tier 3 (3)
0: 2, // (A) Common
1: 4, // (B) Uncommon
2: 6, // (C) Rare
3: 10, // (D) Epic
4: 19, // (E) Legendary
5: 39, // (F) Mythical
},
4 : { // Tier 4 (4)
0: 3, // (A) Common
1: 5, // (B) Uncommon
2: 8, // (C) Rare
3: 13, // (D) Epic
4: 27, // (E) Legendary
5: 54, // (F) Mythical
},
5 : { // Tier 5 (5)
0: 4, // (A) Common
1: 7, // (B) Uncommon
2: 11, // (C) Rare
3: 19, // (D) Epic
4: 37, // (E) Legendary
5: 75, // (F) Mythical
},
6 : { // Tier 6 (6)
0: 5, // (A) Common
1: 10, // (B) Uncommon
2: 16, // (C) Rare
3: 26, // (D) Epic
4: 52, // (E) Legendary
5: 104, // (F) Mythical
},
7 : { // Tier 7 (7)
0: 7, // (A) Common
1: 14, // (B) Uncommon
2: 22, // (C) Rare
3: 36, // (D) Epic
4: 72, // (E) Legendary
5: 144, // (F) Mythical
},
8 : { // Tier 8 (8)
0: 10, // (A) Common
1: 20, // (B) Uncommon
2: 30, // (C) Rare
3: 50, // (D) Epic
4: 100, // (E) Legendary
5: 200, // (F) Mythical
},
9 : { // Tier 9 (9)
0: 14, // (A) Common
1: 28, // (B) Uncommon
2: 42, // (C) Rare
3: 69, // (D) Epic
4: 139, // (E) Legendary
5: 278, // (F) Mythical
},
10 : { // Tier 10 (10)
0: 19, // (A) Common
1: 39, // (B) Uncommon
2: 58, // (C) Rare
3: 97, // (D) Epic
4: 193, // (E) Legendary
5: 386, // (F) Mythical
},
11 : { // Tier 11 (11)
0: 27, // (A) Common
1: 54, // (B) Uncommon
2: 80, // (C) Rare
3: 134, // (D) Epic
4: 268, // (E) Legendary
5: 537, // (F) Mythical
},
12 : { // Tier 12 (12)
0: 37, // (A) Common
1: 75, // (B) Uncommon
2: 112, // (C) Rare
3: 186, // (D) Epic
4: 373, // (E) Legendary
5: 746, // (F) Mythical
},
13 : { // Tier 13 (13)
0: 52, // (A) Common
1: 104, // (B) Uncommon
2: 155, // (C) Rare
3: 259, // (D) Epic
4: 518, // (E) Legendary
5: 1036, // (F) Mythical
},
14 : { // Tier 14 (14)
0: 72, // (A) Common
1: 144, // (B) Uncommon
2: 216, // (C) Rare
3: 360, // (D) Epic
4: 720, // (E) Legendary
5: 1440, // (F) Mythical
},
15 : { // Tier 15 (15)
0: 100, // (A) Common
1: 200, // (B) Uncommon
2: 300, // (C) Rare
3: 500, // (D) Epic
4: 1000, // (E) Legendary
5: 2000, // (F) Mythical
},
}
// Main Functions
if(window.TGV_CurrentCharacter === undefined) {
console.log("TGV_CurrentCharacter is undefined!!!", "set to default");
window.TGV_CurrentCharacter = 'elfie';
}
function TGF_setBackground() {
let background = document.querySelector('.TGS_background');
let backgroundSign = TGV_background[window.TGV_CurrentCharacter];
if (backgroundSign[0] === 'image') {
let img = document.createElement('img');
img.src = `ressources/backgrounds/${backgroundSign[1]}`;
background.appendChild(img);
} else if (backgroundSign[0] === 'video') {
let video = document.createElement('video');
video.src = `ressources/backgrounds/${backgroundSign[1]}`;
video.autoplay = true;
video.loop = true;
video.muted = true;
background.appendChild(video);
}
}
function TGF_setExit() {
let exit = document.querySelector('.TGS_exit');
exit.addEventListener('click', function() {
exitTrustGame();
});
}
// Inventory
function TGF_inventory_updateItems() {
let itemStaListObj = gameData.inventory.items;
let inventoryItemsCont = document.querySelector('.TGS_container > .left .inventoryItems');
inventoryItemsCont.innerHTML = ""; // clear the inventory
let keyList = Object.keys(itemStaListObj);
// filter 0 qty items
keyList = keyList.filter((key) => {
if (INVF_getQty(key) > 0) return true;
return false;
});
// sort by rarity
keyList.sort((a, b) => {
let rarityA = itemStaListObj[a].rarity;
let rarityB = itemStaListObj[b].rarity;
return rarityA - rarityB;
});
// sort by tier
keyList.sort((a, b) => {
let tierA = itemStaListObj[a].tier;
let tierB = itemStaListObj[b].tier;
return tierA - tierB;
});
//sort by type1
keyList.sort((a, b) => {
let typeA = itemStaListObj[a].type1;
//let typeB = itemStaListObj[b].type1;
if (typeA === "material") return -1; // put equipment first
return 0;
});
//sort by type2
keyList.sort((a, b) => {
let typeA = itemStaListObj[a].type2;
//let typeB = itemStaListObj[b].type2;
if (typeA === "gift") return -1; // put gifts first
return 0;
});
//sort by type3
keyList.sort((a, b) => {
let typeA = itemStaListObj[a].type3;
//let typeB = itemStaListObj[b].type3;
if (typeA === window.TGV_CurrentCharacter) return -1; // put character gifts first
return 0;
});
// append all
keyList.forEach((key) => {
let itemStaObj = itemStaListObj[key];
let itemDynObj = INVF_getObj(key);
let item_div = TGF_inventory_createItem(itemStaObj, itemDynObj);
TGF_inventory_addItemEvent(key, item_div);
inventoryItemsCont.appendChild(item_div);
});
}
function TGF_inventory_createItem(itemStaObj, itemDynObj) {
var item_div = document.createElement('item');
var item_icon = document.createElement('img');
item_icon.draggable = false; // disable dragging of the image
var item_icon_desc = document.createElement('div');
var item_icon_qty = document.createElement('INVS_qty');
var item_icon_tier = document.createElement('INVS_tier');
var item_icon_tier_img = document.createElement('img');
item_icon_tier.appendChild(item_icon_tier_img);
let tier = itemStaObj.tier;
//item_icon_tier.innerHTML = gameData.illustration.tier[tier].name;
item_icon_tier_img.src = gameData.illustration.tier[tier].image;
item_icon.src = itemStaObj.image;
item_icon.classList.add('INVS_item_img');
item_div.classList.add('INVS_inventory_item_div');
item_icon_desc.classList.add('INVS_item_text');
item_icon_desc.innerHTML = itemStaObj.name;
item_icon_qty.innerHTML = num_abreviation(itemDynObj.qty)
item_div.appendChild(item_icon);
item_div.appendChild(item_icon_desc);
item_div.appendChild(item_icon_qty);
item_div.appendChild(item_icon_tier);
return item_div;
}
function TGF_inventory_addItemEvent(itemKey, item_div) {
item_div.addEventListener('click', function() {
TGF_itemSlot_addItem(itemKey);
TGV_chosenItemKey = itemKey;
});
}
// Item Slot
function TGF_itemSlot_addItem(itemKey) {
TGF_itemSlot_removeItem(); // remove previous item
let itemSlot = document.querySelector('.TGS_container > .middle > .itemSlot');
let item_div = TGF_itemSlot_createItem(itemKey);
TGF_itemSlot_addItemEvent(itemKey, item_div);
itemSlot.appendChild(item_div);
}
function TGF_itemSlot_removeItem() {
let itemSlot = document.querySelector('.TGS_container > .middle > .itemSlot');
itemSlot.innerHTML = "";
TGV_chosenItemKey = null;
}
function TGF_itemSlot_createItem(itemKey) {
var item_icon = document.createElement('img');
item_icon.draggable = false; // disable dragging of the image
let itemStaObj = gameData.inventory.items[itemKey];
let tier = itemStaObj.tier;
item_icon.src = itemStaObj.image;
return item_icon;
}
function TGF_itemSlot_addItemEvent(itemKey, item_div) {
item_div.addEventListener('click', function() {
TGF_itemSlot_removeItem();
});
}
// Meter
function TGF_meter_updateMeter() {
let meterCont = document.querySelector('.TGS_meterCont > .left');
let meter = meterCont.querySelector('.meter');
let meterSectionsCont = meter.querySelector('.meterSectionsCont');
let meterCurrent = meter.querySelector('.meterCurrentCont > .meterCurrent');
meterSectionsCont.innerHTML = ""; // clear the meter
// find the progress key (min and max to)
let progressData = gameData.mainScenes.progress[`${window.TGV_CurrentCharacter}_trust`];
/*if (!progressData) {
throw new Error("gameData.mainScenes.progress[] is undefined for: ", window.TGV_CurrentCharacter);
}*/
let progressionValues = progressData.progressValues; // might be undefined for most characters
if (!progressionValues) {
progressionValues = gameData.mainScenes.generalProgressValues;
}
let progressValue = SV.characters[window.TGV_CurrentCharacter].stats.trust;
let progressMinValue = gameData.mainScenes.getTransitionPhaseMinValue(progressValue);
let progressMaxValue = gameData.mainScenes.getTransitionPhaseMaxValue(progressValue);
let progressSubSections = progressionValues.filter(value => value >= progressMinValue && value <= progressMaxValue);
//let progressKey = gameData.mainScenes.getTransitionValue(progressValue);
let progressKey = gameData.mainScenes.transitionDicByValue[progressMaxValue];
// create the meter sections
for (let i = 0; i < progressSubSections.length; i++) {
//let section = progressSections[progressSubSections[i]];
let sectionValue = progressSubSections[i];
let sectionValuePlacement = (sectionValue - progressMinValue) / (progressMaxValue - progressMinValue) * 100; // (value - min) / (max - min) * 100
let sectionDiv = TGF_meter_createSection(sectionValue, sectionValuePlacement);
meterSectionsCont.appendChild(sectionDiv);
}
// update the meter background
let progressValuePlacement = (progressValue - progressMinValue) / (progressMaxValue - progressMinValue) * 100;
progressValuePlacement = Math.min(100, Math.max(0, progressValuePlacement)); // clamp between 0 and 100
setTimeout(() => {
if (!meterCurrent) return;
meterCurrent.style.top = `${100 - progressValuePlacement}%`;
}, 300);
// update nextPhase and currentPhase
let nextPhaseImg = meterCont.querySelector('.nextPhase > img');
let currentPhaseImg = meterCont.querySelector('.currentPhase > img');
let phasesData = gameData.illustration.phase;
let phasesDataKeys = Object.keys(phasesData);
let currentPhaseIndex = phasesDataKeys.findIndex(key => key === progressKey);
if (currentPhaseIndex === -1) {
throw new Error("currentPhaseIndex is -1");
} else if (currentPhaseIndex === phasesDataKeys.length - 1) {
console.warn("currentPhaseIndex is the last phase");
currentPhaseIndex -= 1;
}
let nextProgressKey = phasesDataKeys[currentPhaseIndex + 1];
currentPhaseImg.src = phasesData[progressKey].image;
nextPhaseImg.src = phasesData[nextProgressKey].image;
// update trust value
let trustValue = document.querySelector('.TGS_meterCont > .right > qty');
trustValue.innerHTML = SV.characters[window.TGV_CurrentCharacter].stats.trust;
}
function TGF_meter_createSection(sectionValue, sectionValuePlacement) {
let sectionDiv = document.createElement('div');
sectionDiv.classList.add('meterSection');
sectionDiv.style.bottom = `${sectionValuePlacement}%`;
sectionDiv.innerHTML = sectionValue;
let line = document.createElement('line');
sectionDiv.appendChild(line);
return sectionDiv;
}
// Item Slot Button
function TGF_itemSlotButton_setup() {
let itemSlotButton = document.querySelector('.TGS_container > .middle > .itemSlotButton');
itemSlotButton.addEventListener('click', function() {
TGF_itemSlotButton_click();
});
}
function TGF_itemSlotButton_click() {
if (TGV_chosenItemKey === null) return;
let itemKey = TGV_chosenItemKey;
let qty = INVF_getQty(itemKey);
if (qty <= 0) return; // fail safe
TGF_itemGiven(itemKey);
}
function TGF_itemGiven(itemKey) {
// this function will decide what content to display based on the item given
let itemStaObj = gameData.inventory.items[itemKey];
let characterContent = TGV_content.characters[window.TGV_CurrentCharacter];
if (!characterContent) return; // fail safe
let content = null;
let defaultContent = characterContent.refuse.default;
function randGiftRefusalTextAddition(characterKey) {
let characterName = SV.characters[characterKey]?.name;
if (!characterName) return "";
let randNum = random(3); // 0, 1, 2, 3
if (randNum === 0) return ` I'm sure ${characterName} would appreciate it more.`;
else if (randNum === 1) return ` I'm not sure what to do with this, maybe ${characterName} would know.`;
else if (randNum === 2) return ` I think ${characterName} would love this!`;
else if (randNum === 3) return ` I'm not really into this, but I bet ${characterName} would be!`;
}
let additionalText = "";
//debugger;
switch (itemStaObj.type) { // equipment, food, material
case 'equipment': {
content = characterContent.refuse['equipment'];
break;
}
case 'food': {
content = characterContent.refuse['food'];
break;
}
case 'material': {
if (itemStaObj.type2 === 'gift') {
if (itemStaObj.type3 === window.TGV_CurrentCharacter) { // character's gift
//let itemTier = itemStaObj.tier; // ex: 1, 2, 3, 4, 5
let itemTier = 1; // permanent tier 1
let itemRarity = itemStaObj.rarity; // ex: 0, 1, 2, 3, 4, 5
content = characterContent.accept[itemTier]?.[itemRarity]; // optional chaining
TGF_consumeItem(itemKey);
} else {
//content = characterContent.refuse['type2'][item.type3]; // wrong gift
additionalText = randGiftRefusalTextAddition(itemStaObj.type3);
}
} else {
content = characterContent.refuse['material'];
}
break;
}
}
let combinedContent = {
text: content?.text ?? defaultContent?.text, // optional chaining
image: content?.image ?? defaultContent?.image,
}
combinedContent.text += additionalText;
TGF_content_displayContent(combinedContent);
}
function TGF_consumeItem(itemKey) {
let itemStaObj = gameData.inventory.items[itemKey];
let value = TGV_itemValue[itemStaObj.tier]?.[itemStaObj.rarity];
if (value === undefined) {
return console.error("value is undefined");
}
//SV.characters[window.TGV_CurrentCharacter].stats.trust += value;
modVariable("add", "girl_stat", `${window.TGV_CurrentCharacter}.trust`, value);
//item.qty -= 1;
INVF_addQty(itemKey, -1);
TGF_itemSlot_removeItem();
TGF_inventory_updateItems();
//TGF_meter_updateMeter(); //update on exit for cool effect
}
// Content
function TGF_content_setup() {
let contentCont = document.querySelector('.TGS_contentCont');
//let exitButton = contentCont.querySelector('.TGS_contentExit');
//exitButton.addEventListener('click', function() {
// TGF_content_exit();
//});
contentCont.addEventListener('click', function(e) {
if (e.target.closest('.TGS_content')) return; // if clicked inside the content, do nothing
TGF_content_exit();
});
}
function TGF_content_displayContent(content) {
let contentCont = document.querySelector('.TGS_contentCont');
let contentText = contentCont.querySelector('text');
let contentImage = contentCont.querySelector('img');
contentText.innerHTML = content.text;
contentImage.src = content.image;
contentCont.style.opacity = 1;
contentCont.style.pointerEvents = 'all';
}
function TGF_content_exit() {
let contentCont = document.querySelector('.TGS_contentCont');
contentCont.style.opacity = 0;
contentCont.style.pointerEvents = 'none';
TGF_meter_updateMeter(); // update meter on exit for cool effect
}
// main calls
TGF_setBackground();
TGF_setExit();
TGF_inventory_updateItems(); // inventory initial update
TGF_meter_updateMeter(); // meter initial update
TGF_itemSlotButton_setup();
TGF_content_setup();
})();
</script><script>
var SGV_lastPassage;
var SGV_sectionId; // wastelands or forest
var SGV_zoneId; // A, B, C, D (border, green, blue, ...) (peacewood, crimsonwood, deepwood, ...)
var SGV_floorId; // 1, 2, 3, ...
function SGF_setBackground() {
if (SGV_sectionId === "wastelands" && SGV_zoneId === 'A') {
setBackground('ressources/backgrounds/WA.webm'); /* Border */
} else if (SGV_sectionId === "wastelands" & SGV_zoneId === 'B') {
setBackground('ressources/backgrounds/WB.webm'); /* Green */
} else if (SGV_sectionId === "wastelands" & SGV_zoneId === 'C') {
setBackground('ressources/backgrounds/WC.webm'); /* Blue */
} else if (SGV_sectionId === "wastelands" & SGV_zoneId === 'D') {
setBackground('ressources/backgrounds/WD.webm'); /* red */
} else if (SGV_sectionId === "wastelands" & SGV_zoneId === 'E') {
setBackground('ressources/backgrounds/WE.webm'); /* black */
} else if (SGV_sectionId === "forest" & SGV_zoneId === 'A') {
setBackground('ressources/backgrounds/YA.webm'); /* Peacewoods */
} else if (SGV_sectionId === "forest" & SGV_zoneId === 'B') {
setBackground('ressources/backgrounds/YB.webm'); /* Crimsonwoods */
} else if (SGV_sectionId === "forest" & SGV_zoneId === 'C') {
setBackground('ressources/backgrounds/YC.webm'); /* Deepwoods */
}
else {
return;
}
}
function SGF_updateContent() {
let dialog = gameData.specialGame.list[SGV_sectionId]?.[SGV_zoneId]?.[SGV_floorId]?.dialogue;
if (!dialog) {
playPassage(SGV_lastPassage);
throw new Error(`Contact devs please. no dialog found for this combination: ${SGV_sectionId}, ${SGV_zoneId}, ${SGV_floorId}`);
return;
}
SV.gui_interface.GLMV_lastPassage = SGV_lastPassage; // little hack so the parser can return to the right passage :) (see DIAF_exitDialogPassage)
DIAF_parseBuildAppend(dialog, undefined, {ressourcePath: 'ressources/minigames/'});
}
SGV_lastPassage = SV.specialGame.lastPassage;
SGV_sectionId = SV.specialGame.sectionId;
SGV_zoneId = SV.specialGame.zoneId;
SGV_floorId = SV.specialGame.floorId;
console.log(`SPECIAL GAME: ${SGV_sectionId} ${SGV_zoneId} ${SGV_floorId}`);
SGF_setBackground();
SGF_updateContent();
</script><<script>>playAudio("music", "wastelandsTheborder");
<</script>>\
<<nobr>>
<<if $tutorial.tutoscavenging is 1>>
<<goto "6B">>
<</if>>
<<set $tutorial.tutoscavenging to 1>>
<div class="tutorial" id="tutorial">
<div class="map" id="map-section">
<div class="containerbox2">
<h1>Scavenging Game Tutorial</h1>
<div class="spacerui"></div>
<div class="textui">
Welcome to the Scavenging Game, an adventurous mini-game where your goal is to <u>collect valuable resources</u> while navigating through various levels. Each level is filled with chests containing metal and plastic that you can gather while progressing.
<br>
<br>
The game features <u>six levels</u> spread across three different map. Be wary of the MAD Dummies that roam the maps. If you collide with one, you <u>could end up fighting</u>! Victory means you can continue your scavenging, but defeat will affect your virus radicaly.
<br>
<br>
With each completed level, you'll have the opportunity to <u>claim your rewards or push forward</u> to increase your bounty. So, stay alert, strategize your moves, and happy scavenging!
<br>
<br>
<img class="image-ui" style="position: relative; left: 2vh; border-radius: 1vh;" src="ressources/icons/13C29.webp" alt="Image 1">
</div>
<<TUTORIALMENU>>
</div>
</div>
<div class="uihelp" id="uihelp-section">
<div class="containerbox2">
<h1>Scavenging Game Tutorial</h1>
<div class="spacerui"></div>
<div class="textui">
<img class="img-ui" style="width: 19vh; height: 6vh; border-radius: 1vh;" src="ressources/icons/13C20.webp">
<br>
➀ <b>Score</b>: There are three types of trees you can chop: small, medium, and large. Each tree icon varies in style and size to represent its type.
<br>
<br>
<img class="img-ui" style="width: 15vh; height: 6vh; border-radius: 1vh;" src="ressources/icons/13C21.webp">
<br>
➁ <b>Level</b>: Located at the bottom-left of the screen, the level you're currently in is displayed on the screen. Progress through 6 levels, with escalating difficulty and rewards.
<br>
<br>
<img class="img-ui" style="width: 6vh; height: 6vh; border: none;" src="ressources/icons/6B.webp">
<img class="img-ui" style="width: 6vh; height: 6vh; border: none;" src="ressources/icons/6E.webp">
<img class="img-ui" style="width: 6vh; height: 6vh; border: none;" src="ressources/icons/6C.webp">
<br>
➂ <b> Chests </b>: Watch for chest icons scattered throughout the levels. These contain the valuable resources you're after, metal and plastic.
<br>
<br>
<img class="img-ui" style="width: 6vh; height: 6vh; border: none; border-radius: 50%;" src="ressources/icons/FWA.webp">
<br>
➃ <b>MAD Dummies</b>: Keep an eye out for the MAD Dummies that roam the map, they are looking to hinder your progress!
</div>
<<TUTORIALMENU>>
</div>
</div>
<div class="mechanism" id="mechanism-section">
<div class="containerbox2">
<h1>Scavenging Game Tutorial</h1>
<div class="spacerui"></div>
<div class="textui scavyone">
<b>Controls</b>:
<br>
Use the <u>arrow keys</u> to move your character around the map. Press the <u>spacebar</u> to pause or unpause the game.
<br>
<br>
<img class="mech-ui" style="width: 15vh; border: none; position: relative; left: 23vh;" src="ressources/icons/13C22.webp">
<br>
<b>Levels</b>:
<br>
There are six levels in total, starting at level 1, two MAD Dummies are trying to prevent you from collecting ressources.
<br>
1 MAD Dummy is added for each level and each one go faster, making it harder to collect ressources.
<br>
After every level you can choose to claim your ressources or continue to the next level.
<br>
<img class="img-ui" style="width: 25vh; border: none; border-radius: 0.5vh; position: relative; left: 18vh;" src="ressources/icons/13C24.webp">
<br>
<b>Score</b>:
<br>
The score is added when collecting chests.
<br>
It directly effects the amount of ressources you get when claiming your ressources.
<br>
Each level a popup will show you how much ressources you could get if choosing to claim.
<br>
<img class="img-ui" style="width: 20vh; border: none; border-radius: 1vh; position: relative; left: 20.5vh;" src="ressources/icons/13C23.webp">
<br>
<b>Fights</b>:
<br>
When colliding with a MAD Dummy, a popup appears giving the choice to flee or fight the MAD Dummy.
<br>
Choosing to flee will result in a loosing the game and the collected ressources while choosing fight will start a fight against the MAD Dummy.
<br>
<br>
<img class="img-ui" style="width: 25vh; border: none; border-radius: 0.5vh; position: relative; left: 18vh;" src="ressources/icons/13C25.webp">
<br>
<br>
If the fight is won, the MAD Dummy vanishes and the level continue.
<br>
Losing the fight will result in losing the game and the items in your inventory.
<br>
<br>
<b>Chests</b>:
<br>
There are 3 types of chests: common, epic and legendary, each giving a different amount of score.
Common chests give 500 score, epic chests give 1000 score and legendary chests give 1500 score.
there are 3 chests per level.
<br>
<br>
<img class="img-ui" style="width: 10vh; border: none; border-radius: 0.5vh; position: relative; left: 14vh;" src="ressources/icons/6B.webp">
<img class="img-ui" style="width: 10vh; border: none; border-radius: 0.5vh; position: relative; left: 15vh;" src="ressources/icons/6E.webp">
<img class="img-ui" style="width: 10vh; border: none; border-radius: 0.5vh; position: relative; left: 17vh;" src="ressources/icons/6C.webp">
</div>
<<TUTORIALMENU>>
</div>
</div>
<div class="goals" id="goals-section">
<div class="containerbox2">
<h1>Scavenging Game Tutorial</h1>
<div class="spacerui"></div>
<div class="textui">
<b>Resource Gathering</b>:
<br>
The primary goal is to gather as much metal and plastic as possible. Which is achieved by surviving while collecting chests.
<br>
<br>
<b>Strategic Gameplay</b>:
<br>
Some chests are placed in hard to reach areas, so you'll need to plan your route carefully to avoid the MAD Dummies and collect the chests.
</div>
<<TUTORIALMENU>>
</div>
</div>
<div class="enter-button" onclick="playPassage('6B')">Understood</div>
</div>
<</nobr>>\
<style>
body {
font-size: 0.9vw;
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif; /*MAYBEE*/
color: white; /*MAYBEE*/
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
}
b {
margin-top: 10%;
}
.side-button:hover {
background-color: #3d0101;
}
.scavyone {
font-size: 1.6vh;
}
</style>\
<script>
setBackground('ressources/backgrounds/WA.webm');
function openTuto() {
document.getElementById('tutorial').style.display = "block";
}
function showSection(sectionId) {
const sections = ['map-section', 'uihelp-section', 'mechanism-section', 'goals-section'];
sections.forEach(id => {
document.getElementById(id).style.display = (id === sectionId) ? 'block' : 'none';
});
}
function showMap() {
showSection('map-section');
}
function showUIHelp() {
showSection('uihelp-section');
}
function showMechanism() {
showSection('mechanism-section');
}
function showGoals() {
showSection('goals-section');
}
</script><<script>>
/* playAudio("music", "wastelandsTheborder"); */
stopAudio("music");
<</script>>\
<<nobr>>
<div class="treasure-counters" onclick="matchSize()">
<div class="treasure-counter">
<img src="ressources/icons/6B.webp" alt="Common Treasure">
<span id="common-counter">$scavengingGame.treasurecountercom </span>
</div>
<div class="treasure-counter">
<img src="ressources/icons/6E.webp" alt="Epic Treasure">
<span id="epic-counter">$scavengingGame.treasurecounterepi </span>
</div>
<div class="treasure-counter" onclick="matchSize()">
<img src="ressources/icons/6C.webp" alt="Legendary Treasure">
<span id="legendary-counter">$scavengingGame.treasurecounterleg </span>
</div>
</div>
<div class="scavenging_container">
<div onclick="backButton();" id="scavenging_back_button">BACK</div>
</div>
<div id="pacman">
<canvas id="fakecanvas"></canvas>
<div id="popup"></div>
</div>
<</nobr>>\
<style>
body {
/* background-image: url('ressources/backgrounds/3B.webp'); */
font-size: 0.9vw;
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
background-repeat: no-repeat;
background-size: auto 100%;
background-position: center;
}
.treasure-counters {
position: absolute;
display: flex;
justify-content: center;
align-items: center;
padding: 1vh;
background-color: #eeae57;
outline: 1vh solid #c55142;
top: 5vh;
font-weight: bold;
border-radius: 2vh 2vh 0 0;
}
.treasure-counter {
margin: 0 10px;
text-align: center;
}
.treasure-counter img {
width: 30px; /* Adjust size as needed */
height: auto;
display: block;
margin: 0 auto;
margin-bottom: 1vh;
}
.treasure-counter span {
color: #c55142;
font-size: 1em; /* Adjust size as needed */
}
#pacman {
height: 80vh;
border-radius: 5px;
/*margin-top: 8vh;*/
display: flex;
align-content: center;
align-items: center;
position: relative;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
}
#pacman canvas {
height: 100%;
max-width: 70vw;
position: absolute ;
top: -2.5vh;
outline: 1vh solid #c55142;
color: #c55142;
background-color: #ffb855;
background-image: url('ressources/icons/scavengingtest.webp');
}
#fakecanvas {
position: absolute;
z-index: 1;
top: -2.5vh;
outline: 1vh solid #c55142;
color: #c55142;
background-color: #ffb855;
background-image: url('ressources/icons/scavengingtest.webp');
opacity: 0;
transition: ease 1s;
}
.button {
height: 6vh;
width: 20vh;
background-color: #eeae57;
border: solid 0.5vh #c55142;
color: #4e7757;
border-radius: 1vh;
padding-top: 0.2vh;
padding: 1vh;
margin-bottom: 2vh;
margin-left: 1vh;
cursor: pointer;
font-size: 3vh;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
transition: box-shadow, transform;
transition-duration: 0.2s;
transition-timing-function: ease-in-out;
}
#scavenging_back_button {
height: 9vh;
width: 24vh;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
background-color: #eeae57;
border: solid 1vh #c55142;
border-radius: 2vh;
cursor: pointer;
position: relative;
left: 10vh;
font-size: 4vh;
color: #4e7757;
font-weight: bold;
}
#scavenging_back_button:hover {
transform: translate(0.3vh, -0.3vh);
box-shadow: -0.5vh 0.5vh 0.5vh rgba(255, 255, 255, 0.5);
}
.scavenging_container {
height: 10vh;
width: 100%;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: flex-start;
position: relative;
}
#popup { /* was .popup for case:'claim_continue' */
position: relative;
height: 100%;
max-width: 70vw;
/*aspect-ratio: 1/1;*/ /* set via js */
top: -2.5vh;
display: flex;
justify-content: center;
align-items: center;
z-index: 1;
border-radius: 2vh;
user-select: none;
opacity: 0;
transition: all ease 1s;
font-weight: bold;
}
#popup > .popupText {
position: absolute;
top: 10vh;
width: 40vh;
background-color:#eeae57;
outline: 1vh solid #c55142;
color: #4e7757;
font-size: 2.5vh;
text-align: center;
z-index: 1;
padding: 1vh;
border-radius: 10px;
pointer-events: none;
}
#popup > button {
border: unset;
}
/* case:'potential_rewards' */
#popup > .potential_rewards {
width: 100%;
display: flex;
justify-content: center;
}
#popup > .potential_rewards > div {
width: 50%;
display: flex;
flex-direction: column;
align-items: center;
}
#popup > .potential_rewards > div > img {
width: 60%;
aspect-ratio: 1/1;
object-fit: contain;
}
#popup > .potential_rewards > div > div {
font-size: 6vh;
color: #c55142;
text-align: center;
}
/* case:'claim_continue' */
#popup > .buttonCLAIM {
height: 80vh;
width: 316.8px;
background: linear-gradient(to left, rgba(78, 119, 87, 1) 0%, rgba(78, 119, 87, 1) 25%, rgba(0, 0, 0, 0) 100%);
color: #c55142;
text-shadow: 0 0 10px #ffb855, 0 0 10px #ffb855;
font-size: 2vh;
cursor: pointer;
font-size: 3.5vh;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
transition: all ease 0.5s;
opacity: 0.5;
margin-left: 0;
}
#popup > .buttonCLAIM:hover {
opacity: 1;
font-size: 4.5vh;
}
#popup > .buttonCONTINUE {
height: 80vh;
width: 316.8px;
background: linear-gradient(to right, rgba(197, 81, 66, 1) 0%, rgba(197, 81, 66, 1) 25%, rgba(0, 0, 0, 0) 100%);
color: #4e7757;
text-shadow: 0 0 10px #ffb855, 0 0 10px #ffb855;
cursor: pointer;
font-size: 3.5vh;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
opacity: 0.5;
transition: ease 1s;
}
#popup > .buttonCONTINUE:hover {
opacity: 1;
font-size: 4.5vh;
}
/* case:'caught' */
#popup > .buttonFLEE {
height: 80vh;
width: 316.8px;
background: linear-gradient(to left, rgba(78, 119, 87, 1) 0%, rgba(78, 119, 87, 1) 25%, rgba(0, 0, 0, 0) 100%);
color: #c55142;
text-shadow: 0 0 10px #ffb855, 0 0 10px #ffb855;
font-size: 2vh;
cursor: pointer;
font-size: 3.5vh;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
transition: all ease 0.5s;
opacity: 0.5;
}
#popup > .buttonFLEE:hover {
opacity: 1;
font-size: 4.5vh;
}
#popup > .buttonFIGHT {
height: 80vh;
width: 316.8px;
background: linear-gradient(to right, rgba(197, 81, 66, 1) 0%, rgba(197, 81, 66, 1) 25%, rgba(0, 0, 0, 0) 100%);
color: #4e7757;
text-shadow: 0 0 10px #ffb855, 0 0 10px #ffb855;
cursor: pointer;
font-size: 3.5vh;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
opacity: 0.5;
transition: ease 1s;
}
#popup > .buttonFIGHT:hover {
opacity: 1;
font-size: 4.5vh;
}
</style>\
<script>
setBackground('ressources/backgrounds/WA.webm');
if (!window.SCAV_gameStateInit) {
window.SCAV_gameStateInit = false;
}
var popupfade = document.getElementById('popup');
var fakecanvas = document.getElementById('fakecanvas');
//let ScavPassageEl = document.querySelector('.passage'); // 0.1.8b fix
function preventEnterKey(event) {
if (SCAV_gameStateInit === false) {
document.removeEventListener('keydown', preventEnterKey);
}
if (event.keyCode === KEY.ENTER) { // 13 is the keyCode for Enter
event.preventDefault();
event.stopPropagation();
}
}
window.updateCommonDisplay = function() {
$('#common-counter').text(SV.scavengingGame.treasurecountercom);
};
window.updateEpicDisplay = function() {
$('#epic-counter').text(SV.scavengingGame.treasurecounterepi);
};
window.updateLegendaryDisplay = function() {
$('#legendary-counter').text(SV.scavengingGame.treasurecounterleg);
};
if (!SCAV_gameStateInit) {
const scavengePassages = ['6B', 'NEW FIGHT', 'BB19']
window.mapsArr = Object.keys(maps);
window.randMap = mapsArr[Math.floor(Math.random() * mapsArr.length)];
/*var randMap = mapsArr[0];*/
window.NONE = 4,
UP = 3,
LEFT = 2,
DOWN = 1,
RIGHT = 11,
WAITING = 5,
PAUSE = 6,
PLAYING = 7,
COUNTDOWN = 8,
EATEN_PAUSE = 9,
DYING = 10,
Pacman = {};
Pacman.FPS = 30;
Pacman.Ghost = function (game, map, colour, ghostImageSrc) {
// colour not used
var position = null,
direction = null,
eatable = null,
eaten = null,
due = null,
baseSpeed = 1.5; // default speed
function getSpeed() {
var currentLevel = game.getLevel(); // Use the getLevel method from game object
var speed = 0;
if (currentLevel == 1) {
speed = baseSpeed;
}
else {
// increase speed by 0.5 for each level
speed = baseSpeed + (0.10 * (currentLevel - 1));
}
return speed;
}
function getNewCoord(dir, current) {
var speed = getSpeed(); // Retrieve dynamic speed based on level
var xSpeed = (dir === LEFT && -speed || dir === RIGHT && speed || 0),
ySpeed = (dir === DOWN && speed || dir === UP && -speed || 0);
return {
"x": addBounded(current.x, xSpeed),
"y": addBounded(current.y, ySpeed)
};
};
function addBounded(x1, x2) {
var rem = x1 % 10,
result = rem + x2;
if (rem !== 0 && result > 10) {
return x1 + (10 - rem);
} else if (rem > 0 && result < 0) {
return x1 - rem;
}
return x1 + x2;
};
function isVunerable() {
return eatable !== null;
};
function isDangerous() {
return eaten === null;
};
function isHidden() {
return eatable === null && eaten !== null;
};
function getRandomDirection() {
var moves = (direction === LEFT || direction === RIGHT)
? [UP, DOWN, direction] : [LEFT, RIGHT, direction];
if (Math.random() <= 0.05) {
return oppositeDirection(direction);
}
// Shuffle the moves array to ensure randomness
moves = moves.sort(() => Math.random() - 0.5);
for (var i = 0; i < moves.length; i++) {
var newDirection = moves[i];
var newPos = getNewCoord(newDirection, position);
let y = pointToCoord(nextSquare(newPos.y, newDirection));
let x = pointToCoord(nextSquare(newPos.x, newDirection));
// Check if the new position is a safe zone for the user
var currentBlock = map.block({ //find map coord with pointToCoord for x and y
"y": y,
"x": x
})
if (currentBlock === Pacman.EXIT || currentBlock === Pacman.SAFE) {
continue;
}
// If there's no wall in the new direction, return it
if (map.isFloorSpace({
"y": y,
"x": x
})) {
return newDirection;
}
}
// If no other moves are available, allow a 180-degree turn
return oppositeDirection(direction);
}
function reset() {
eaten = null;
eatable = null;
if (maps[randMap].ghostsPosition[game.index]) {
position = maps[randMap].ghostsPosition[game.index];
} else {
position = maps[randMap].ghostsPosition[0];
}
direction = getRandomDirection;
due = getRandomDirection();
};
/*function resetghosts() {
position = { "x": 90, "y": 80 };
};*/
function onWholeSquare(x) {
return x % 10 === 0;
};
function oppositeDirection(dir) {
return dir === LEFT && RIGHT ||
dir === RIGHT && LEFT ||
dir === UP && DOWN || UP;
};
function makeEatable() {
direction = oppositeDirection(direction);
eatable = game.getTick();
};
function eat() {
eatable = null;
eaten = game.getTick();
};
function pointToCoord(x) {
return Math.round(x / 10);
};
function nextSquare(x, dir) {
var rem = x % 10;
if (rem === 0) {
return x;
} else if (dir === RIGHT || dir === DOWN) {
return x + (10 - rem);
} else {
return x - rem;
}
};
function onGridSquare(pos) {
return onWholeSquare(pos.y) && onWholeSquare(pos.x);
};
function secondsAgo(tick) {
return (game.getTick() - tick) / Pacman.FPS;
};
function getColour() {
if (eatable) {
if (secondsAgo(eatable) > 5) {
return game.getTick() % 20 > 10 ? "#FFFFFF" : "#0000BB";
} else {
return "#0000BB";
}
} else if (eaten) {
return "#222";
}
return colour;
};
var ghostImage = new Image();
ghostImage.src = ghostImageSrc; // Set the source to your image
function draw(ctx) {
var s = map.blockSize,
top = (position.y / 10) * s,
left = (position.x / 10) * s,
centerX = left + s / 2,
centerY = top + s / 2,
radius = s / (maps[randMap].ghostSizeDivider); // Radius is half of the block size, so the diameter is 's'
if (eatable && secondsAgo(eatable) > 8) {
eatable = null;
}
if (eaten && secondsAgo(eaten) > 3) {
eaten = null;
}
ctx.fillStyle = getColour();
ctx.beginPath();
// Draw the circular body of the ghost
ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);
ctx.closePath();
ctx.fill();
// Clip to the circle
ctx.save(); // Save the current context state
ctx.beginPath();
ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);
ctx.clip(); // Clip to the circle
// Draw the image inside the circle
if (ghostImage && ghostImage.complete) { // Check if the image is loaded
// Center the image inside the circle
var imageX = centerX - radius; // Adjust X position
var imageY = centerY - radius; // Adjust Y position
ctx.drawImage(ghostImage, imageX, imageY, radius * 2, radius * 2);
}
ctx.restore(); // Restore the context to its original state
}
function pane(pos) {
if (pos.y === 100 && pos.x >= 190 && direction === RIGHT) {
return { "y": 100, "x": -10 };
}
if (pos.y === 100 && pos.x <= -10 && direction === LEFT) {
return position = { "y": 100, "x": 190 };
}
return false;
};
/*
function move(ctx) {
var oldPos = position,
var npos;
if (due !== direction) {
// Check if directions are opposite, same or different axis
if (isOppositeDirection(due, direction)) {
npos = getNewCoord(due, position);
} else if (isOnSameAxis(due, direction)) {
npos = getNewCoord(due, position);
} else if (isOnDifferentAxis(due, direction)) {
npos = getNewCoord(due, position);
}
// Check if new position is free
if (npos && isSpaceFree(npos, due)) {
direction = due;
}
}
if (!npos) {
npos = getNewCoord(direction, position);
}
// Original position check
if (isWallSpace(npos, direction)) {
due = getRandomDirection();
return move(ctx);
}
// Set to new position
position = npos;
// Update due direction
due = getRandomDirection();
return {
"new" : position,
"old" : oldPos
};
}
// Helper functions
function isOppositeDirection(dir1, dir2) {
return (dir1 === LEFT && dir2 === RIGHT) ||
(dir1 === RIGHT && dir2 === LEFT) ||
(dir1 === UP && dir2 === DOWN) ||
(dir1 === DOWN && dir2 === UP);
}
function isOnSameAxis(dir1, dir2) {
return (dir1 === LEFT || dir1 === RIGHT) &&
(dir2 === LEFT || dir2 === RIGHT) ||
(dir1 === UP || dir1 === DOWN) &&
(dir2 === UP || dir2 === DOWN);
}
function isOnDifferentAxis(dir1, dir2) {
return !isOnSameAxis(dir1, dir2);
}
function isSpaceFree(pos, dir) {
// Check map if space is free
}
*/
function move(ctx) {
var speed = getSpeed();
var oldPos = position,
onGrid = onGridSquare(position),
npos = null;
if (maps[randMap].teleport == "map3") {
// if position is { x: 10, y: 20 } and direction is LEFT, teleport to { x: 190, y: 190 } direction RIGHT
if (position.y == 20 && position.x == 10 && direction === LEFT) {
position = { "y": 190, "x": 190 };
direction = LEFT;
}
}
if (maps[randMap].teleport == "map1") {
// if position is { x: 190, y: 190 } and direction is RIGHT, teleport to { x: 10, y: 20 } direction LEFT
if (position.y == 90 && position.x == 0 && direction === RIGHT) {
position = { "y": 90, "x": 180 };
direction = RIGHT;
}
}
if (due !== direction) {
npos = getNewCoord(due, position);
if (onGrid &&
map.isFloorSpace({
"y": pointToCoord(nextSquare(npos.y, due)),
"x": pointToCoord(nextSquare(npos.x, due)),
})) {
direction = due;
} else {
npos = null;
}
}
if (npos === null) {
npos = getNewCoord(direction, position);
}
if (onGrid &&
map.isWallSpace({
"y": pointToCoord(nextSquare(npos.y, direction)),
"x": pointToCoord(nextSquare(npos.x, direction))
})) {
due = getRandomDirection();
return move(ctx);
}
position = npos;
var tmp = pane(position);
if (tmp) {
position = tmp;
}
due = getRandomDirection();
return {
"new": position,
"old": oldPos
};
};
return {
"eat": eat,
"isVunerable": isVunerable,
"isDangerous": isDangerous,
"makeEatable": makeEatable,
"reset": reset,
"move": move,
"draw": draw,
getSpeed: getSpeed
};
};
Pacman.User = function (game, map, userImageSrc) {
var position = null,
direction = null,
eaten = null,
due = null,
score = 0,
userImage = 'ressources/maingui/ui/mcicon2.webp',
userImageSrc = userImage,
keyMap = {};
keyMap[KEY.ARROW_LEFT] = LEFT;
keyMap[KEY.ARROW_UP] = UP;
keyMap[KEY.ARROW_RIGHT] = RIGHT;
keyMap[KEY.ARROW_DOWN] = DOWN;
function addScore(nScore) {
score += nScore;
};
function theScore() {
return score;
};
function resetScore() {
score = 0;
};
function convertScore(type) {
// 500 score = 2 metal, 1 plastic.
var metal = Math.floor(score / 500) * 2;
var plastic = Math.floor(score / 500);
if (type == "metal") {
return metal;
}
else if (type == "plastic") {
return plastic;
}
}
function initUser() {
resetPosition();
score = 5;
};
function drawScore(text, position) {
ctx.fillStyle = "#c55142";
ctx.font = "bold 20px Century Gothic";
var width = ctx.measureText(text).width,
x = ((map.width * map.blockSize) - width) / 2;
ctx.fillText(text, x, (map.height * 10) + 8);
};
function newLevel() {
resetPosition();
eaten = 0;
};
function resetPosition() {
// Find the start position on the map
for (var i = 0; i < map.height; i++) {
for (var j = 0; j < map.width; j++) {
if (map.block({ x: j, y: i }) === Pacman.START) {
position = { x: j * 10, y: i * 10 };
direction = maps[randMap].startingDirection;
due = maps[randMap].startingDirection;
break;
}
}
}
};
function reset() {
resetPosition();
};
function keyDown(e) {
if (keyMap[e.keyCode] !== undefined) {
due = keyMap[e.keyCode];
e.preventDefault();
e.stopPropagation();
return false;
}
return true;
};
function getNewCoord(dir, current) {
return {
"x": current.x + (dir === LEFT && -2 || dir === RIGHT && 2 || 0),
"y": current.y + (dir === DOWN && 2 || dir === UP && -2 || 0)
};
};
function onWholeSquare(x) {
return x % 10 === 0;
};
function pointToCoord(x) {
return Math.round(x / 10);
};
function nextSquare(x, dir) {
var rem = x % 10;
if (rem === 0) {
return x;
} else if (dir === RIGHT || dir === DOWN) {
return x + (10 - rem);
} else {
return x - rem;
}
};
function next(pos, dir) {
return {
"y": pointToCoord(nextSquare(pos.y, dir)),
"x": pointToCoord(nextSquare(pos.x, dir)),
};
};
function onGridSquare(pos) {
return onWholeSquare(pos.y) && onWholeSquare(pos.x);
};
function isOnSamePlane(due, dir) {
return ((due === LEFT || due === RIGHT) &&
(dir === LEFT || dir === RIGHT)) ||
((due === UP || due === DOWN) &&
(dir === UP || dir === DOWN));
};
function move(ctx) {
var npos = null,
nextWhole = null,
oldPosition = position,
block = null;
if (due !== direction) {
npos = getNewCoord(due, position);
if (isOnSamePlane(due, direction) ||
(onGridSquare(position) &&
map.isFloorSpace(next(npos, due)))) {
direction = due;
} else {
npos = null;
}
}
if (npos === null) {
npos = getNewCoord(direction, position);
}
if (onGridSquare(position) && map.isWallSpace(next(npos, direction))) {
direction = NONE;
}
if (direction === NONE) {
return { "new": position, "old": position };
}
if (npos.y === 100 && npos.x >= 190 && direction === RIGHT) {
game.completedLevel();
/*winDialog("YOU WON");
function winDialog(text) {
ctx.fillStyle = "white";
ctx.font = "bold 20px Century Gothic";
var width = ctx.measureText(text).width,
x = ((map.width * map.blockSize) - width) / 2;
ctx.fillText(text, x, (map.height * 10) + 8);
}*/
}
if (npos.y === 100 && npos.x <= 0 && direction === LEFT) {
npos.x = 0;
}
position = npos;
nextWhole = next(position, direction);
block = map.block(nextWhole);
if (block === Pacman.EXIT) {
game.completedLevel();
}
if ((isMidSquare(position.y) || isMidSquare(position.x)) &&
block === Pacman.DOT || block === Pacman.TREASURE) {
map.setBlock(nextWhole, Pacman.EMPTY);
eaten += 1;
if (block === Pacman.TREASURE) {
game.eatenTREASURE();
}
}
return {
"new": position,
"old": oldPosition
};
};
function isMidSquare(x) {
var rem = x % 10;
return rem > 3 || rem < 7;
};
function calcAngle(dir, pos) {
if (dir == RIGHT && (pos.x % 10 < 5)) {
return { "start": 0.25, "end": 1.75, "direction": false };
} else if (dir === DOWN && (pos.y % 10 < 5)) {
return { "start": 0.75, "end": 2.25, "direction": false };
} else if (dir === UP && (pos.y % 10 < 5)) {
return { "start": 1.25, "end": 1.75, "direction": true };
} else if (dir === LEFT && (pos.x % 10 < 5)) {
return { "start": 0.75, "end": 1.25, "direction": true };
}
return { "start": 0, "end": 2, "direction": false };
};
/*function drawDead(ctx, amount) {
var size = map.blockSize,
half = size / 2,
top = (position.y / 10) * s,
left = (position.x / 10) * s,
centerX = left + s / 2,
centerY = top + s / 2,
radius = s / (maps[randMap].ghostSizeDivider); // Radius is half of the block size, so the diameter is 's'
if (amount >= 1) {
return;
}
// this determines the color of the pacman when he dies
ctx.fillStyle = "rgba(0,255,0,0)";
ctx.beginPath();
ctx.moveTo(((position.x / 10) * size) + half,
((position.y / 10) * size) + half);
ctx.arc(((position.x / 10) * size) + half,
((position.y / 10) * size) + half,
half, 0, Math.PI * 2 * amount, true);
ctx.fill();
ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);
if (userImage && userImage.complete) { // Check if the image is loaded
// Center the image inside the circle
var imageX = centerX - radius; // Adjust X position
var imageY = centerY - radius; // Adjust Y position
ctx.drawImage(userImage, imageX, imageY, radius * 2, radius * 2);
}
};*/
userImage = new Image();
userImage.src = userImageSrc;
function draw(ctx) {
var s = map.blockSize,
angle = calcAngle(direction, position),
top = (position.y / 10) * s,
left = (position.x / 10) * s,
centerX = left + s / 2,
centerY = top + s / 2,
radius = s / maps[randMap].ghostSizeDivider; // Radius is half of the block size, so the diameter is 's'
// this determines the color of the pacman
ctx.fillStyle = "rgba(0,255,0,0)";
ctx.beginPath();
ctx.moveTo(((position.x / 10) * s) + s / 2,
((position.y / 10) * s) + s / 2);
ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);
/*ctx.arc(((position.x / 10) * s) + s / 2,
((position.y / 10) * s) + s / 2,
s / 2, Math.PI * angle.start,
Math.PI * angle.end, angle.direction);*/
ctx.fill();
// Draw the image inside the circle
if (userImage && userImage.complete) { // Check if the image is loaded
// Center the image inside the circle
var imageX = centerX - radius; // Adjust X position
var imageY = centerY - radius; // Adjust Y position
ctx.drawImage(userImage, imageX, imageY, radius * 2, radius * 2);
}
};
return {
"score": score,
"addScore": addScore,
"theScore": theScore,
"resetScore": resetScore,
"convertScore": convertScore,
"draw": draw,
/*"drawDead": drawDead,*/
"keyDown": keyDown,
"move": move,
"newLevel": newLevel,
"reset": reset,
"resetPosition": resetPosition
};
};
Pacman.Map = function (game, size) {
var height = null,
width = null,
blockSize = size,
TREASURESize = 0,
map = null;
var treasurePositions = [];
function placeTreasures() {
// Define the four possible positions for treasures
var treasureType;
if (game.getLevel() <= 2) {
treasureType = 'common';
} else if (game.getLevel() <= 4) {
treasureType = 'epic';
} else {
treasureType = 'legendary';
}
// Place the treasures on the map
var possiblePositions = maps[randMap].treasurePositions;
/*[
{ x: 1, y: 1 },
{ x: 17, y: 18 },
{ x: 17, y: 20 },
{ x: 17, y: 1 }
];*/
treasurePositions = possiblePositions.sort(function () {
return 0.5 - Math.random();
}).slice(0, 3);
// Place the treasure in the map
treasurePositions.forEach(function (pos) {
map[pos.y][pos.x] = Pacman.TREASURE;
});
}
function possibleExits() {
var possibleExits = maps[randMap].possibleExits;
/*[
{ x: 1, y: 1 },
{ x: 17, y: 18 },
{ x: 17, y: 20 },
{ x: 17, y: 1 }
];*/
possibleExits = possibleExits.sort(function () {
return 0.5 - Math.random();
}).slice(0, 1);
// Place the Exit in the map
possibleExits.forEach(function (pos) {
map[pos.y][pos.x] = Pacman.EXIT;
});
}
function withinBounds(y, x) {
return y >= 0 && y < height && x >= 0 && x < width;
}
function isWall(pos) {
return withinBounds(pos.y, pos.x) && map[pos.y][pos.x] === Pacman.WALL;
}
function isFloorSpace(pos) {
if (!withinBounds(pos.y, pos.x)) {
return false;
}
var peice = map[pos.y][pos.x];
return peice === Pacman.EMPTY ||
peice === Pacman.DOT ||
peice === Pacman.TREASURE ||
peice === Pacman.EXIT ||
peice === Pacman.SAFE;
}
function drawWall(ctx) {
var i, j, p, line;
ctx.clearRect(0, 0, width * blockSize, height * blockSize);
// this determines the color of the walls
ctx.strokeStyle = "#4e7757";
ctx.lineWidth = blockSize / 8;
ctx.lineCap = "round";
for (i = 0; i < Pacman.WALLS.length; i += 1) {
line = Pacman.WALLS[i];
ctx.beginPath();
for (j = 0; j < line.length; j += 1) {
p = line[j];
if (p.move) {
ctx.moveTo(p.move[0] * blockSize, p.move[1] * blockSize);
} else if (p.line) {
ctx.lineTo(p.line[0] * blockSize, p.line[1] * blockSize);
} else if (p.curve) {
ctx.quadraticCurveTo(p.curve[0] * blockSize,
p.curve[1] * blockSize,
p.curve[2] * blockSize,
p.curve[3] * blockSize);
}
}
ctx.stroke();
}
}
function reset() {
/*map = Pacman.MAP.clone();*/
map = deepCloneArray(maps[randMap].MAP);
height = map.length;
width = map[0].length;
placeTreasures();
possibleExits();
};
function block(pos) {
if (!withinBounds(pos.y, pos.x)) {
return null; // or some other value indicating an invalid position
}
return map[pos.y][pos.x];
}
function setBlock(pos, type) {
map[pos.y][pos.x] = type;
};
function getLevel() {
return level;
}
function drawTREASUREs(ctx) {
var treasureType;
if (game.getLevel() <= 2) {
treasureType = 'common';
} else if (game.getLevel() <= 4) {
treasureType = 'epic';
} else {
treasureType = 'legendary';
}
var treasureImg = new Image();
treasureImg.src = Pacman.TREASURES[treasureType].imgSrc;
treasurePositions.forEach(function (pos) {
if (map[pos.y][pos.x] === Pacman.TREASURE) {
ctx.drawImage(treasureImg, pos.x * blockSize, pos.y * blockSize, blockSize, blockSize);
}
});
};
// function that seperates the 3 treasures types
function getTreasureType() {
var level = game.getLevel(); // Get the current level
var treasureType = null;
if (level <= 2) {
treasureType = "common";
}
else if (level <= 4) {
treasureType = "epic";
}
else if (level <= 6) {
treasureType = "legendary";
}
return treasureType;
treasureTypeImg = {
common: {
image: new Image(),
/*src: 'ressources/icons/7B.webp'*/
src: 'ressources/icons/7B.webp'
},
epic: {
image: new Image(),
/*src: 'ressources/icons/7E.webp'*/
src: 'ressources/icons/7E.webp'
},
legendary: {
image: new Image(),
/*src: 'ressources/icons/7C.webp'*/
src: 'ressources/icons/7C.webp'
},
};
};
function draw(ctx) {
var i, j, size = blockSize;
// this determines the color of the background of the walls
ctx.fillStyle = "transparent";
ctx.fillRect(0, 0, width * size, height * size);
drawWall(ctx);
for (i = 0; i < height; i += 1) {
for (j = 0; j < width; j += 1) {
drawBlock(i, j, ctx);
}
}
};
function drawBlock(y, x, ctx) {
var layout = map[y][x];
if (layout === Pacman.TREASURE) {
return;
}
ctx.beginPath();
if (layout === Pacman.EMPTY || layout === Pacman.BLOCK ||
layout === Pacman.DOT || layout === Pacman.EXIT) {
// this determines the color of the background of the empty blocks
ctx.fillStyle = "transparent";
ctx.fillRect((x * blockSize), (y * blockSize),
blockSize, blockSize);
if (layout === Pacman.DOT) {
// this determines the color of the DOTs
ctx.fillStyle = "yellow";
ctx.fillRect((x * blockSize) + (blockSize / 2.5),
(y * blockSize) + (blockSize / 2.5),
blockSize / 6, blockSize / 6);
}
else if (layout === Pacman.EXIT) {
// this determines the color of the EXIT
ctx.fillStyle = "green";
ctx.fillRect((x * blockSize) + (blockSize / 2.5),
(y * blockSize) + (blockSize / 2.5),
blockSize / 3, blockSize / 3);
}
}
ctx.closePath();
};
reset();
return {
"draw": draw,
"drawBlock": drawBlock,
"drawTREASUREs": drawTREASUREs,
"block": block,
"setBlock": setBlock,
"reset": reset,
"isWallSpace": isWall,
"isFloorSpace": isFloorSpace,
"height": height,
"width": width,
"blockSize": blockSize,
"getTreasureType": getTreasureType,
};
};
Pacman.Audio = function (game) {
var files = [],
endEvents = [],
progressEvents = [],
playing = [];
function load(name, path, cb) {
var f = files[name] = document.createElement('audio');
progressEvents[name] = function (event) { progress(event, name, cb); };
f.addEventListener('canplaythrough', progressEvents[name], true);
f.setAttribute('preload', "true");
f.setAttribute('autobuffer', "true");
f.setAttribute('src', path);
f.pause();
};
function progress(event, name, callback) {
if (event.loaded === event.total && typeof callback === "function") {
callback();
files[name].removeEventListener('canplaythrough',
progressEvents[name], true);
}
};
function disableSound() {
for (var i = 0; i < playing.length; i++) {
files[playing[i]].pause();
files[playing[i]].currentTime = 0;
}
playing = [];
};
function ended(name) {
var i, tmp = [], found = false;
files[name].removeEventListener('ended', endEvents[name], true);
for (i = 0; i < playing.length; i++) {
if (!found && playing[i]) {
found = true;
} else {
tmp.push(playing[i]);
}
}
playing = tmp;
};
function play(name) {
if (!game.soundDisabled()) {
endEvents[name] = function () { ended(name); };
playing.push(name);
files[name].volume = SugarCube.settings.sfx; //bugfix audio scavenging
files[name].addEventListener('ended', endEvents[name], true);
files[name].play();
}
};
function pause() {
PopupManager.fadein();
for (var i = 0; i < playing.length; i++) {
files[playing[i]].pause();
}
};
function resume() {
for (var i = 0; i < playing.length; i++) {
files[playing[i]].play();
}
};
return {
"disableSound": disableSound,
"load": load,
"play": play,
"pause": pause,
"resume": resume
};
};
window.PACMAN = (function () {
var state = WAITING,
audio = null,
ghosts = [],
// this determines the color of the ghosts
ghostSpecs = ["rgba(0,255,0,0)", "rgba(0,255,0,0)", "rgba(0,255,0,0)", "rgba(0,255,0,0)", "rgba(0,255,0,0)", "rgba(0,255,0,0)", "rgba(0,255,0,0)", "rgba(0,255,0,0)"],
/*ghostImage = ["ressources/icons/8.webp",
"ressources/icons/9.webp",
"ressources/icons/10.webp",
"ressources/icons/11.webp",
"ressources/icons/12.webp",
"ressources/icons/16.webp",
"ressources/icons/17.webp",
"ressources/icons/18.webp"],*/
ghostImage = ["ressources/icons/FWA.webp",
"ressources/icons/FWA.webp",
"ressources/icons/FWA.webp",
"ressources/icons/FWA.webp",
"ressources/icons/FWA.webp",
"ressources/icons/FWA.webp",
"ressources/icons/FWA.webp",
"ressources/icons/FWA.webp"],
eatenCount = 0,
level = 0,
tick = 0,
ghostPos, userPos,
stateChanged = true,
timerStart = null,
lastTime = 0,
ctx = null,
timer = null,
map = null,
user = null,
stored = null;
var PopupManager = {
popupElement: null, // same as popupfade
init: function (parentElementId) {
this.popupElement = document.getElementById("popup");
this.popupElement.setAttribute('id', "popup");
//this.popupElement.classList.add('popup');
//document.getElementById(parentElementId)?.appendChild(this.popupElement);
},
//show: function (content, buttons, additionalClass) {
show: function (type) {
this.reset(); // Reset the popup and remove any additional classes
let popupText = document.createElement('div');
popupText.classList.add('popupText');
this.popupElement?.appendChild(popupText);
switch (type) {
case 'potential_rewards': {
popupText.innerHTML = 'Potential rewards: ';
let potential_rewards = document.createElement('div');
potential_rewards.classList.add('potential_rewards');
let left = document.createElement('div');
let metalImg = new Image();
metalImg.src = "ressources/icons/I1MA2.webp";
left.appendChild(metalImg);
let metalText = document.createElement('div');
metalText.innerHTML = user.convertScore("metal"); // window.PACMAN scoped
left.appendChild(metalText);
potential_rewards.appendChild(left);
let right = document.createElement('div');
let plasticImg = new Image();
plasticImg.src = "ressources/icons/I1MA3.webp";
right.appendChild(plasticImg);
let plasticText = document.createElement('div');
plasticText.innerHTML = user.convertScore("plastic"); // window.PACMAN scoped
right.appendChild(plasticText);
potential_rewards.appendChild(right);
this.popupElement?.appendChild(potential_rewards);
break;
}
case 'claim_continue': {
popupText.innerHTML = 'Level Complete! Would you like to claim your rewards or continue to the next level?';
let claim_button = document.createElement('button');
claim_button.classList.add('buttonCLAIM');
claim_button.textContent = 'CLAIM';
claim_button.onclick = function () {
PopupManager.fadeout();
PopupManager.hide();
claimRewards(); // window.PACMAN scoped
playPassage('3A1');
window.SCAV_gameStateInit = false;
};
this.popupElement?.appendChild(claim_button);
let continue_button = document.createElement('button');
continue_button.classList.add('buttonCONTINUE');
continue_button.textContent = 'NEXT LEVEL';
continue_button.onclick = function () {
PopupManager.fadeout();
user.newLevel(); // window.PACMAN scoped
startLevel(); // window.PACMAN scoped
};
this.popupElement?.appendChild(continue_button);
break;
}
case 'last_claim': {
popupText.innerHTML = 'Congratulations! You have completed all levels! You can claim your rewards.';
let claim_button = document.createElement('button');
claim_button.classList.add('buttonCLAIM');
claim_button.textContent = 'CLAIM';
claim_button.onclick = function () {
PopupManager.fadeout();
PopupManager.hide();
claimRewards();
playPassage('3A1');
window.SCAV_gameStateInit = false;
};
this.popupElement?.appendChild(claim_button);
break;
}
case 'caught': {
popupText.innerHTML = 'MAD Dummy has caught you!';
let flee_button = document.createElement('button');
flee_button.classList.add('buttonFLEE');
flee_button.textContent = 'FLEE';
flee_button.onclick = function () {
PopupManager.fadeout();
PopupManager.hide();
startNewGame();
SV.scavengingGame.treasurecountercom=0;
SV.scavengingGame.treasurecounterepi=0;
SV.scavengingGame.treasurecounterleg=0;
updateCommonDisplay();
updateEpicDisplay();
updateLegendaryDisplay();
};
this.popupElement?.appendChild(flee_button);
let fight_button = document.createElement('button');
fight_button.classList.add('buttonFIGHT');
fight_button.textContent = 'FIGHT';
fight_button.onclick = function () {
PopupManager.fadeout();
PopupManager.hide();
setState(PAUSE);
/* playPassage('FIGHT FWA scavenging'); */
FGF_enterFight("FW0", {winReturnPassage: "6B"});
};
this.popupElement?.appendChild(fight_button);
break;
}
default: {
break;
}
}
},
hide: function () {
this.reset(); // Reset the popup when hiding
},
reset: function () {
this.popupElement.innerHTML = "";
this.popupElement.classList = "";
},
fadeout: function() {
document.removeEventListener('keydown', preventEnterKey);
this.popupElement.style.opacity = "0";
this.popupElement.style.pointerEvents = "none";
},
fadein: function() {
this.popupElement.style.opacity = "1";
this.popupElement.style.pointerEvents = "auto";
}
};
var ScavPassageEl = null;
function deleteGhost(index) {
ghosts.splice(index, 1);
}
function getLevel() {
return level;
}
function getTick() {
return tick;
};
function getState() {
return state;
};
function dialog(text) {
// this determines the color of the text
ctx.fillStyle = "#c55142";
ctx.font = "bold 20px Century Gothic";
var width = ctx.measureText(text).width,
x = ((map.width * map.blockSize) - width) / 2;
ctx.fillText(text, x, (map.height * 10) + 0);
}
function soundDisabled() {
return localStorage["soundDisabled"] === "true";
};
function startLevel() {
fakecanvas.style.opacity = "0";
user.reset();
ghosts = []; // Clear existing ghosts array
var numberOfGhosts = 2 + level - 1; // Start with 2 ghosts, add 1 for each level
for (var i = 0; i < numberOfGhosts; i++) {
var ghostColour = ghostSpecs[i % ghostSpecs.length]; // Repeat colors if necessary
var ghostImageSrc = ghostImage[i % ghostImage.length]; // Repeat images if necessary
var ghost = new Pacman.Ghost({
"getTick": getTick,
"getLevel": getLevel,
"index": i,
}, map, ghostColour, ghostImageSrc);
ghosts.push(ghost);
}
for (var i = 0; i < ghosts.length; i++) {
ghosts[i].reset();
}
/*setState(WAITING);*/
timerStart = tick;
setState(COUNTDOWN);
}
function resumeLevel() {
/*setState(WAITING);*/
timerStart = tick;
setState(COUNTDOWN);
}
function startNewGame() {
setState(WAITING);
level = 1;
user.reset();
map.reset();
map.draw(ctx);
startLevel();
user.resetScore();
}
function claimRewards() {
PopupManager.fadeout();
var metal = user.convertScore("metal");
var plastic = user.convertScore("plastic");
//user.resetScore();
//return { metal: metal, plastic: plastic };
var realReturnMetal = modVariable("add", "item", "metal", metal) // add metal
var realReturnPlastic = modVariable("add", "item", "plastic", plastic) // add plastic
}
function keyDown(e) {
if (document.contains(ScavPassageEl) === false) { // 0.1.8b fix
//document.addEventListener('keydown', keyDown, true);
document.removeEventListener('keydown', keyDown);
return;
}
if (e.keyCode === KEY.ENTER) {
if (PACMAN.getState() === WAITING) { // Check if the state is WAITING
startNewGame(); // Start a new game only if in WAITING state
}
} else if (e.keyCode === KEY.S) {
audio.disableSound();
localStorage["soundDisabled"] = !soundDisabled();
} else if (e.keyCode === KEY.SPACEBAR && state === PAUSE) {
audio.resume();
map.draw(ctx);
setState(PLAYING);
/* } else if (e.keyCode === KEY.SPACEBAR) {
stored = state;
setState(PAUSE);
audio.pause();
map.draw(ctx); */
} else if (state !== PAUSE && state !== WAITING) { // Prevent direction keys from affecting the game when paused or waiting
return user.keyDown(e);
}
return true;
}
function setState(nState) {
state = nState;
stateChanged = true;
};
function collided(user, ghost) {
return (Math.sqrt(Math.pow(ghost.x - user.x, 2) +
Math.pow(ghost.y - user.y, 2))) < 10;
};
function drawFooter() {
ctx.clearRect(0, (map.height * map.blockSize), (map.width * map.blockSize), 30);
var topLeft = (map.height * map.blockSize),
textBase = topLeft + 17;
// this determines the color of the footer
ctx.fillStyle = "transparent";
ctx.fillRect(0, topLeft, (map.width * map.blockSize), 30);
// this determines the color of the footer
ctx.fillStyle = "black";
/*for (var i = 0, len = user.getreplaces(); i < len; i++) {
// this determines the color of the replaces
ctx.fillStyle = "white";
ctx.beginPath();
ctx.moveTo(150 + (25 * i) + map.blockSize / 2,
(topLeft + 1) + map.blockSize / 2);
ctx.arc(150 + (25 * i) + map.blockSize / 2,
(topLeft + 1) + map.blockSize / 2,
map.blockSize / 2, Math.PI * 0.25, Math.PI * 1.75, false);
ctx.fill();
}*/
// this determines the color of the text
//ctx.fillText("♪", 10, textBase);
// this determines the color of the text
ctx.fillStyle = "#c55142";
ctx.font = "bold 20px Century Gothic";
ctx.fillText(`Level: ${level}`, 25, textBase);
/*ctx.fillText(`Rewards : ${user}`. (function rewards display) 100, textBase);*/
}
function redrawBlock(pos) {
map.drawBlock(Math.floor(pos.y / 10), Math.floor(pos.x / 10), ctx); // floor because we want to redraw the block the user is leaving
map.drawBlock(Math.ceil(pos.y / 10), Math.ceil(pos.x / 10), ctx); // ceil because we want to redraw the block the user is entering
}
//redrawBlock but modded. redraw 9 blocks instead of 2
/*function redrawBlock(pos) {
var leavingBlockPos = [Math.ceil(pos.y/10), Math.ceil(pos.x/10)];
var allAroundBlockPos = [];
for (var i = -1; i < 2; i++) {
for (var j = -1; j < 2; j++) {
allAroundBlockPos.push([leavingBlockPos[0] + i, leavingBlockPos[1] + j]);
}
}
//detect out of bounds
// TODO
allAroundBlockPos.push(leavingBlockPos);
for (var i = 0; i < allAroundBlockPos.length; i++) {
map.drawBlock(allAroundBlockPos[i][0], allAroundBlockPos[i][1], ctx);
}
}*/
function mainDraw() {
var diff, u, i, len;
ghostPos = [];
for (i = 0, len = ghosts.length; i < len; i += 1) {
ghostPos.push(ghosts[i].move(ctx));
}
u = user.move(ctx);
for (i = 0, len = ghosts.length; i < len; i += 1) {
redrawBlock(ghostPos[i].old);
}
redrawBlock(u.old);
for (i = 0, len = ghosts.length; i < len; i += 1) {
ghosts[i].draw(ctx);
}
user.draw(ctx);
userPos = u["new"];
// will serve for the collision (fights)
/*for (i = 0, len = ghosts.length; i < len; i += 1) {
if (collided(userPos, ghostPos[i]["new"])) {
audio.play("die");
saveGameState();
setState(DYING);
timerStart = tick;
}
}
};*/
for (i = 0, len = ghosts.length; i < len; i += 1) {
collisionInfo = collided(userPos, ghostPos[i]["new"]);
if (collisionInfo) {
audio.play("die");
setState(DYING);
PACMAN.deleteGhost(i);
fakecanvas.style.opacity = "1";
setTimeout(function () {
popupFight();
}, 1000);
timerStart = tick;
// Save the collided ghost data in the gameState object
SCAV_gameStateInit.collidedGhost = collisionInfo.ghost;
break; // No need to keep checking after a collision is found
}
}
};
function mainLoop() {
var diff;
if (state !== WAITING && state !== COUNTDOWN) {
map.draw(ctx);
}
if (state !== PAUSE) {
++tick;
}
if (state === PAUSE) {
for (var i = 0; i < ghosts.length; i++) {
ghosts[i].draw(ctx);
dialog("Press SPACEBAR to resume");
}
// Draw the player
user.draw(ctx);
}
if (state === PLAYING) {
mainDraw();
map.drawTREASUREs(ctx);
} else if (state === WAITING && stateChanged) {
stateChanged = false;
map.draw(ctx);
dialog("Press ENTER to start");
} else if (state === EATEN_PAUSE &&
(tick - timerStart) > (Pacman.FPS / 3)) {
map.draw(ctx);
setState(PLAYING);
} else if (state === DYING) {
if (tick - timerStart > (Pacman.FPS * 2)) {
} else {
redrawBlock(userPos);
for (i = 0, len = ghosts.length; i < len; i += 1) {
redrawBlock(ghostPos[i].old);
ghostPos.push(ghosts[i].draw(ctx));
}
/* user.drawDead(ctx, (tick - timerStart) / (Pacman.FPS * 2));*/
}
} else if (state === COUNTDOWN) {
diff = 5 + Math.floor((timerStart - tick) / Pacman.FPS);
audio.play("start");
if (diff === 0) {
map.draw(ctx);
setState(PLAYING);
} else {
if (diff !== lastTime) {
lastTime = diff;
map.draw(ctx);
dialog(`Starting in: ${diff}`);
}
}
}
drawFooter();
detectGamestateInit();
}
function eatenTREASURE() {
var treasureType;
if (level <= 2) {
treasureType = 'common';
SV.scavengingGame.treasurecountercom+=1;
updateCommonDisplay();
} else if (level <= 4) {
treasureType = 'epic';
SV.scavengingGame.treasurecounterepi+=1;
updateEpicDisplay();
} else {
treasureType = 'legendary';
SV.scavengingGame.treasurecounterleg+=1;
updateLegendaryDisplay();
}
audio.play("eatTREASURE");
timerStart = tick;
eatenCount = 0;
// Add score based on treasure type if
user.addScore(Pacman.TREASURES[treasureType].score);
}
function completedLevel() {
fakecanvas.style.opacity = "1";
if (level < 6) {
setState(WAITING);
level += 1;
setTimeout(function () {
popupRewards();
}, 1000);
setTimeout(function () {
popuplvlcomplete();
}, 4000);
map.reset();
}
else {
setState(WAITING);
SV.achievements.eventTrigger.scavengersSummit_1 = true;
popupRewards();
if (SV.scavengingGame.treasurecountercom === 6
&& SV.scavengingGame.treasurecounterepi === 6
&& SV.scavengingGame.treasurecounterleg === 6) {
SV.achievements.eventTrigger.scrapSavant_1 = true;
}
setTimeout(function () {
popupGameEnd();
}, 2000);
}
//startLevel();
};
function popuplvlcomplete() {
fakecanvas.style.opacity = "1";
setState(PAUSE);
PopupManager.show('claim_continue');
}
function popupGameEnd() {
fakecanvas.style.opacity = "1";
PopupManager.show('last_claim');
}
function popupFight() {
fakecanvas.style.opacity = "1";
PopupManager.fadein();
PopupManager.show('caught');
// Directly add another class to the popup element if it's accessible
var fightElement = document.querySelector('.fight');
if (fightElement) {
fightElement.classList.add('rewards_container');
}
}
function popupRewards() {
fakecanvas.style.opacity = "1";
setState(PAUSE);
PopupManager.fadein();
PopupManager.show('potential_rewards');
}
function keyPress(e) {
if (state !== WAITING && state !== PAUSE) {
e.preventDefault();
e.stopPropagation();
}
};
function soft_init(wrapper, root) {
var blockSize = 30;
var canvas = document.createElement('canvas');
let width = blockSize * maps[randMap].blockwidth;
let height = blockSize * maps[randMap].blockheight + 50;
let ratio = width / height;
canvas.setAttribute('width', `${width}px`);
canvas.setAttribute('height', `${height}px`);
fakecanvas.setAttribute('width', `${width}px`);
fakecanvas.setAttribute('height', `${height}px`);
canvas.setAttribute('background-color', "black");
popupfade.style.aspectRatio = ratio;
PopupManager.init(); //Bugfix: Now in soft init
wrapper?.appendChild(canvas);
ctx = canvas.getContext('2d');
ScavPassageEl = document.querySelector('.passage'); // 0.1.8b fix
document.addEventListener('keydown', keyDown, true);
}
function hard_init(wrapper, root) {
var i, len, ghost;
//var blockSize = wrapper.offsetWidth / 28,
var blockSize = 30;
SV.scavengingGame.treasurecountercom=0;
SV.scavengingGame.treasurecounterepi=0;
SV.scavengingGame.treasurecounterleg=0;
updateCommonDisplay();
updateEpicDisplay();
updateLegendaryDisplay();
audio = new Pacman.Audio({ "soundDisabled": soundDisabled });
map = new Pacman.Map(
{
"getTick": getTick,
"getLevel": getLevel
}, blockSize);
user = new Pacman.User({
"completedLevel": completedLevel,
"eatenTREASURE": eatenTREASURE
}, map);
for (let i = 0, len = ghostSpecs.length; i < len; i += 1) {
ghost = new Pacman.Ghost({
"getTick": getTick,
"getLevel": getLevel,
"index": i,
}, map, ghostSpecs[i], ghostImage[i]);
ghosts.push(ghost);
}
map.draw(ctx);
dialog("Loading ...");
//PopupManager.init("pacman");
//var extension = Modernizr.audio.ogg ? 'ogg' : 'mp3';
var extension = 'mp3'; //hard codded to that
var audio_files = [
["start", `${root}opening_song.mp3`],
["die", `${root}die.mp3`],
["eatghost", `${root}eatghost.mp3`],
["eatTREASURE", `${root}eatpill.mp3`],
["eating", `${root}eating.short.mp3`],
["eating2", `${root}eating.short.mp3`]
];
load(audio_files, function () { loaded(); });
};
function load(arr, callback) {
if (arr.length === 0) {
callback();
} else {
var x = arr.pop();
audio.load(x[0], x[1], function () { load(arr, callback); });
//audio.volume = 0.1;
//console.log("volume SET")
}
};
function loaded() {
dialog("Press ENTER to start a New game");
//document.addEventListener('keydown', keyDown, true);
timer = setInterval(mainLoop, 1000 / Pacman.FPS);
//detect
};
function detectGamestateInit() {
if (!SCAV_gameStateInit || !scavengePassages.includes(passageId)) { //if false or undefined
//stop the timer
clearInterval(timer);
}
}
return {
//"init": init,
"soft_init": soft_init,
"hard_init": hard_init,
"getLevel": getLevel,
"getState": getState,
"setState": setState,
"deleteGhost": deleteGhost,
};
}());
/* Human readable keyCode index */
var KEY = { 'BACKSPACE': 8, 'TAB': 9, 'NUM_PAD_CLEAR': 12, 'ENTER': 13, 'SHIFT': 16, 'CTRL': 17, 'ALT': 18, 'PAUSE': 19, 'CAPS_LOCK': 20, 'ESCAPE': 27, 'SPACEBAR': 32, 'PAGE_UP': 33, 'PAGE_DOWN': 34, 'END': 35, 'HOME': 36, 'ARROW_LEFT': 37, 'ARROW_UP': 38, 'ARROW_RIGHT': 39, 'ARROW_DOWN': 40, 'PRINT_SCREEN': 44, 'INSERT': 45, 'DELETE': 46, 'SEMICOLON': 59, 'WINDOWS_LEFT': 91, 'WINDOWS_RIGHT': 92, 'SELECT': 93, 'NUM_PAD_ASTERISK': 106, 'NUM_PAD_PLUS_SIGN': 107, 'NUM_PAD_HYPHEN-MINUS': 109, 'NUM_PAD_FULL_STOP': 110, 'NUM_PAD_SOLIDUS': 111, 'NUM_LOCK': 144, 'SCROLL_LOCK': 145, 'SEMICOLON': 186, 'EQUALS_SIGN': 187, 'COMMA': 188, 'HYPHEN-MINUS': 189, 'FULL_STOP': 190, 'SOLIDUS': 191, 'GRAVE_ACCENT': 192, 'LEFT_SQUARE_BRACKET': 219, 'REVERSE_SOLIDUS': 220, 'RIGHT_SQUARE_BRACKET': 221, 'APOSTROPHE': 222 };
(function () {
/* 0 - 9 */
for (var i = 48; i <= 57; i++) {
KEY[`${i - 48}`] = i;
}
/* A - Z */
for (i = 65; i <= 90; i++) {
KEY[String.fromCharCode(i)] = i;
}
/* NUM_PAD_0 - NUM_PAD_9 */
for (i = 96; i <= 105; i++) {
KEY[`NUM_PAD_${i - 96}`] = i;
}
/* F1 - F12 */
for (i = 112; i <= 123; i++) {
KEY[`F${i - 112 + 1}`] = i;
}
})();
Pacman.WALL = 0;
Pacman.DOT = 1;
Pacman.EMPTY = 2;
Pacman.BLOCK = 3;
Pacman.TREASURE = 4;
Pacman.EXIT = 5;
Pacman.START = 6;
Pacman.SAFE = 7;
Pacman.TREASURES = {
'common': {
'name': 'Common',
/*'imgSrc': 'ressources/icons/6B.webp',*/
'imgSrc': 'ressources/icons/6B.webp',
'score': 500
},
'epic': {
'name': 'Epic',
/*'imgSrc': 'ressources/icons/6E.webp',*/
'imgSrc': 'ressources/icons/6E.webp',
'score': 1500
},
'legendary': {
'name': 'Legendary',
/*'imgSrc': 'ressources/icons/6C.webp',*/
'imgSrc': 'ressources/icons/6C.webp',
'score': 3000
}
}
Pacman.MAP = maps[randMap].MAP;
Pacman.WALLS = maps[randMap].WALLS;
}
$(function () {
var backbutton = document.getElementById('scavenging_back_button');
var el = document.getElementById('pacman');
if (!SCAV_gameStateInit) {
// Perform hard initialization on first run
window.SCAV_gameStateInit = true;
PACMAN.soft_init(el, "ressources/sounds/scavenging/"); //was code/script/pacman-master/
PACMAN.hard_init(el, "ressources/sounds/scavenging/"); //was code/script/pacman-master/
} else {
// Perform soft initialization on subsequent passage changes (HTML)
PACMAN.soft_init(el, "ressources/sounds/scavenging/"); //was code/script/pacman-master/
//PACMAN.soft_init(document.getElementById('pacman'), "code/script/pacman-master/");
}
});
function backButton() {
window.SCAV_gameStateInit = false;
playPassage('3A1');
}
function deepCloneArray(arr) {
return arr.map(item => Array.isArray(item) ? deepCloneArray(item) : item);
}
// Attach the event listener
document.addEventListener('keydown', preventEnterKey);
/*window.onload = function() {
var canvas = document.querySelector('canvas');
if (canvas) {
var ctx = canvas.getContext("2d");
// Save the current canvas content
var savedImageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
// Resize the canvas
var newWidth = 400; // Set this to your desired new width
var newHeight = 200; // Set this to your desired new height
canvas.width = newWidth;
canvas.height = newHeight;
// Put the saved content back onto the canvas
ctx.putImageData(savedImageData, 0, 0);
} else {
console.error('Canvas element not found!');
}
}*/
</script><<script>>
/* playAudio("music", "wastelandsTheborder"); */
stopAudio("music");
<</script>>\
<<nobr>>
<div class="treasure-counters" onclick="matchSize()">
<div class="treasure-counter">
<img src="ressources/icons/6B.webp" alt="Common Treasure">
<span id="common-counter">$scavengingGame.treasurecountercom </span>
</div>
<div class="treasure-counter">
<img src="ressources/icons/6E.webp" alt="Epic Treasure">
<span id="epic-counter">$scavengingGame.treasurecounterepi </span>
</div>
<div class="treasure-counter" onclick="matchSize()">
<img src="ressources/icons/6C.webp" alt="Legendary Treasure">
<span id="legendary-counter">$scavengingGame.treasurecounterleg </span>
</div>
</div>
<div class="scavenging_container">
<div onclick="backButton('3B1');" id="scavenging_back_button">BACK</div>
</div>
<div id="pacman">
<canvas id="fakecanvas"></canvas>
<div id="popup"></div>
</div>
<</nobr>>\
<style>
body {
font-size: 0.9vw;
overflow: hidden;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
background-repeat: no-repeat;
background-size: auto 100%;
background-position: center;
}
.treasure-counters {
position: absolute;
display: flex;
justify-content: center;
align-items: center;
padding: 1vh;
background-color: #013d00;
outline: 1vh solid #001400;
top: 5vh;
font-weight: bold;
border-radius: 2vh 2vh 0 0;
}
.treasure-counter {
margin: 0 10px;
text-align: center;
}
.treasure-counter img {
width: 30px; /* Adjust size as needed */
height: auto;
display: block;
margin: 0 auto;
margin-bottom: 1vh;
}
.treasure-counter span {
color: #001400;
font-size: 1em; /* Adjust size as needed */
}
#pacman {
height: 80vh;
border-radius: 5px;
/*margin-top: 8vh;*/
display: flex;
align-content: center;
align-items: center;
position: relative;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
}
#pacman canvas {
height: 100%;
max-width: 70vw;
position: absolute ;
top: -2.5vh;
outline: 1vh solid #001400;
color: #001400;
background-color: #013d00;
background-image: url('ressources/icons/scavengingtest.webp');
}
#fakecanvas {
position: absolute;
z-index: 1;
top: -2.5vh;
outline: 1vh solid #001400;
color: #001400;
background-color: #013d00;
background-image: url('ressources/icons/scavengingtest.webp');
opacity: 0;
transition: ease 1s;
}
.button {
height: 6vh;
width: 20vh;
background-color: #eeae57;
border: solid 0.5vh #c55142;
color: #4e7757;
border-radius: 1vh;
padding-top: 0.2vh;
padding: 1vh;
margin-bottom: 2vh;
margin-left: 1vh;
cursor: pointer;
font-size: 3vh;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
transition: box-shadow, transform;
transition-duration: 0.2s;
transition-timing-function: ease-in-out;
}
#scavenging_back_button {
height: 9vh;
width: 24vh;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
background-color: #013d00;
border: solid 1vh #001400;
border-radius: 2vh;
cursor: pointer;
position: relative;
left: 10vh;
font-size: 4vh;
color: #4e7757;
font-weight: bold;
}
#scavenging_back_button:hover {
transform: translate(0.3vh, -0.3vh);
box-shadow: -0.5vh 0.5vh 0.5vh rgba(255, 255, 255, 0.5);
}
.scavenging_container {
height: 10vh;
width: 100%;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: flex-start;
position: relative;
}
#popup { /* was .popup for case:'claim_continue' */
position: relative;
height: 100%;
max-width: 70vw;
/*aspect-ratio: 1/1;*/ /* set via js */
top: -2.5vh;
display: flex;
justify-content: center;
align-items: center;
z-index: 1;
border-radius: 2vh;
user-select: none;
opacity: 0;
transition: all ease 1s;
font-weight: bold;
}
#popup > .popupText {
position: absolute;
top: 10vh;
width: 40vh;
background-color:#013b00;
outline: 1vh solid #001400;
color: #001400;
font-size: 2.5vh;
text-align: center;
z-index: 1;
padding: 1vh;
border-radius: 10px;
pointer-events: none;
}
#popup > button {
border: unset;
}
/* case:'potential_rewards' */
#popup > .potential_rewards {
width: 100%;
display: flex;
justify-content: center;
}
#popup > .potential_rewards > div {
width: 50%;
display: flex;
flex-direction: column;
align-items: center;
}
#popup > .potential_rewards > div > img {
width: 60%;
aspect-ratio: 1/1;
object-fit: contain;
}
#popup > .potential_rewards > div > div {
font-size: 6vh;
color: #001400;
text-align: center;
}
/* case:'claim_continue' */
#popup > .buttonCLAIM {
height: 80vh;
width: 316.8px;
background: linear-gradient(to left, rgba(78, 119, 87, 1) 0%, rgba(78, 119, 87, 1) 25%, rgba(0, 0, 0, 0) 100%);
color: #c55142;
text-shadow: 0 0 10px #ffb855, 0 0 10px #ffb855;
font-size: 2vh;
cursor: pointer;
font-size: 3.5vh;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
transition: all ease 0.5s;
opacity: 0.5;
margin-left: 0;
}
#popup > .buttonCLAIM:hover {
opacity: 1;
font-size: 4.5vh;
}
#popup > .buttonCONTINUE {
height: 80vh;
width: 316.8px;
background: linear-gradient(to right, rgba(197, 81, 66, 1) 0%, rgba(197, 81, 66, 1) 25%, rgba(0, 0, 0, 0) 100%);
color: #4e7757;
text-shadow: 0 0 10px #ffb855, 0 0 10px #ffb855;
cursor: pointer;
font-size: 3.5vh;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
opacity: 0.5;
transition: ease 1s;
}
#popup > .buttonCONTINUE:hover {
opacity: 1;
font-size: 4.5vh;
}
/* case:'caught' */
#popup > .buttonFLEE {
height: 80vh;
width: 316.8px;
background: linear-gradient(to left, rgba(78, 119, 87, 1) 0%, rgba(78, 119, 87, 1) 25%, rgba(0, 0, 0, 0) 100%);
color: #c55142;
text-shadow: 0 0 10px #ffb855, 0 0 10px #ffb855;
font-size: 2vh;
cursor: pointer;
font-size: 3.5vh;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
transition: all ease 0.5s;
opacity: 0.5;
}
#popup > .buttonFLEE:hover {
opacity: 1;
font-size: 4.5vh;
}
#popup > .buttonFIGHT {
height: 80vh;
width: 316.8px;
background: linear-gradient(to right, rgba(197, 81, 66, 1) 0%, rgba(197, 81, 66, 1) 25%, rgba(0, 0, 0, 0) 100%);
color: #4e7757;
text-shadow: 0 0 10px #ffb855, 0 0 10px #ffb855;
cursor: pointer;
font-size: 3.5vh;
display: flex;
align-content: center;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
opacity: 0.5;
transition: ease 1s;
}
#popup > .buttonFIGHT:hover {
opacity: 1;
font-size: 4.5vh;
}
</style>\
<script>
setBackground('ressources/backgrounds/WB.webm'); /* Green */
/*console.log("bruh")*/
if (!window.SCAV_gameStateInit) {
window.SCAV_gameStateInit = false;
}
var popupfade = document.getElementById('popup');
var fakecanvas = document.getElementById('fakecanvas');
//let ScavPassageEl = document.querySelector('.passage'); // 0.1.8b fix
function preventEnterKey(event) {
if (SCAV_gameStateInit === false) {
document.removeEventListener('keydown', preventEnterKey);
}
if (event.keyCode === KEY.ENTER) { // 13 is the keyCode for Enter
event.preventDefault();
event.stopPropagation();
}
}
window.updateCommonDisplay = function() {
$('#common-counter').text(SV.scavengingGame.treasurecountercom);
};
window.updateEpicDisplay = function() {
$('#epic-counter').text(SV.scavengingGame.treasurecounterepi);
};
window.updateLegendaryDisplay = function() {
$('#legendary-counter').text(SV.scavengingGame.treasurecounterleg);
};
if (!SCAV_gameStateInit) {
const scavengePassages = ['6C', 'NEW FIGHT', 'BB19']
window.mapsArr = Object.keys(maps);
window.randMap = mapsArr[Math.floor(Math.random() * mapsArr.length)];
/*var randMap = mapsArr[0];*/
window.NONE = 4,
UP = 3,
LEFT = 2,
DOWN = 1,
RIGHT = 11,
WAITING = 5,
PAUSE = 6,
PLAYING = 7,
COUNTDOWN = 8,
EATEN_PAUSE = 9,
DYING = 10,
Pacman = {};
Pacman.FPS = 30;
Pacman.Ghost = function (game, map, colour, ghostImageSrc) {
// colour not used
var position = null,
direction = null,
eatable = null,
eaten = null,
due = null,
baseSpeed = 1.5; // default speed
function getSpeed() {
var currentLevel = game.getLevel(); // Use the getLevel method from game object
var speed = 0;
if (currentLevel == 1) {
speed = baseSpeed;
}
else {
// increase speed by 0.5 for each level
speed = baseSpeed + (0.10 * (currentLevel - 1));
}
return speed;
}
function getNewCoord(dir, current) {
var speed = getSpeed(); // Retrieve dynamic speed based on level
var xSpeed = (dir === LEFT && -speed || dir === RIGHT && speed || 0),
ySpeed = (dir === DOWN && speed || dir === UP && -speed || 0);
return {
"x": addBounded(current.x, xSpeed),
"y": addBounded(current.y, ySpeed)
};
};
function addBounded(x1, x2) {
var rem = x1 % 10,
result = rem + x2;
if (rem !== 0 && result > 10) {
return x1 + (10 - rem);
} else if (rem > 0 && result < 0) {
return x1 - rem;
}
return x1 + x2;
};
function isVunerable() {
return eatable !== null;
};
function isDangerous() {
return eaten === null;
};
function isHidden() {
return eatable === null && eaten !== null;
};
function getRandomDirection() {
var moves = (direction === LEFT || direction === RIGHT)
? [UP, DOWN, direction] : [LEFT, RIGHT, direction];
if (Math.random() <= 0.05) {
return oppositeDirection(direction);
}
// Shuffle the moves array to ensure randomness
moves = moves.sort(() => Math.random() - 0.5);
for (var i = 0; i < moves.length; i++) {
var newDirection = moves[i];
var newPos = getNewCoord(newDirection, position);
let y = pointToCoord(nextSquare(newPos.y, newDirection));
let x = pointToCoord(nextSquare(newPos.x, newDirection));
// Check if the new position is a safe zone for the user
var currentBlock = map.block({ //find map coord with pointToCoord for x and y
"y": y,
"x": x
})
if (currentBlock === Pacman.EXIT || currentBlock === Pacman.SAFE) {
continue;
}
// If there's no wall in the new direction, return it
if (map.isFloorSpace({
"y": y,
"x": x
})) {
return newDirection;
}
}
// If no other moves are available, allow a 180-degree turn
return oppositeDirection(direction);
}
function reset() {
eaten = null;
eatable = null;
if (maps[randMap].ghostsPosition[game.index]) {
position = maps[randMap].ghostsPosition[game.index];
} else {
position = maps[randMap].ghostsPosition[0];
}
direction = getRandomDirection;
due = getRandomDirection();
};
/*function resetghosts() {
position = { "x": 90, "y": 80 };
};*/
function onWholeSquare(x) {
return x % 10 === 0;
};
function oppositeDirection(dir) {
return dir === LEFT && RIGHT ||
dir === RIGHT && LEFT ||
dir === UP && DOWN || UP;
};
function makeEatable() {
direction = oppositeDirection(direction);
eatable = game.getTick();
};
function eat() {
eatable = null;
eaten = game.getTick();
};
function pointToCoord(x) {
return Math.round(x / 10);
};
function nextSquare(x, dir) {
var rem = x % 10;
if (rem === 0) {
return x;
} else if (dir === RIGHT || dir === DOWN) {
return x + (10 - rem);
} else {
return x - rem;
}
};
function onGridSquare(pos) {
return onWholeSquare(pos.y) && onWholeSquare(pos.x);
};
function secondsAgo(tick) {
return (game.getTick() - tick) / Pacman.FPS;
};
function getColour() {
if (eatable) {
if (secondsAgo(eatable) > 5) {
return game.getTick() % 20 > 10 ? "#FFFFFF" : "#0000BB";
} else {
return "#0000BB";
}
} else if (eaten) {
return "#222";
}
return colour;
};
var ghostImage = new Image();
ghostImage.src = ghostImageSrc; // Set the source to your image
function draw(ctx) {
var s = map.blockSize,
top = (position.y / 10) * s,
left = (position.x / 10) * s,
centerX = left + s / 2,
centerY = top + s / 2,
radius = s / (maps[randMap].ghostSizeDivider); // Radius is half of the block size, so the diameter is 's'
if (eatable && secondsAgo(eatable) > 8) {
eatable = null;
}
if (eaten && secondsAgo(eaten) > 3) {
eaten = null;
}
ctx.fillStyle = getColour();
ctx.beginPath();
// Draw the circular body of the ghost
ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);
ctx.closePath();
ctx.fill();
// Clip to the circle
ctx.save(); // Save the current context state
ctx.beginPath();
ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);
ctx.clip(); // Clip to the circle
// Draw the image inside the circle
if (ghostImage && ghostImage.complete) { // Check if the image is loaded
// Center the image inside the circle
var imageX = centerX - radius; // Adjust X position
var imageY = centerY - radius; // Adjust Y position
ctx.drawImage(ghostImage, imageX, imageY, radius * 2, radius * 2);
}
ctx.restore(); // Restore the context to its original state
}
function pane(pos) {
if (pos.y === 100 && pos.x >= 190 && direction === RIGHT) {
return { "y": 100, "x": -10 };
}
if (pos.y === 100 && pos.x <= -10 && direction === LEFT) {
return position = { "y": 100, "x": 190 };
}
return false;
};
/*
function move(ctx) {
var oldPos = position,
var npos;
if (due !== direction) {
// Check if directions are opposite, same or different axis
if (isOppositeDirection(due, direction)) {
npos = getNewCoord(due, position);
} else if (isOnSameAxis(due, direction)) {
npos = getNewCoord(due, position);
} else if (isOnDifferentAxis(due, direction)) {
npos = getNewCoord(due, position);
}
// Check if new position is free
if (npos && isSpaceFree(npos, due)) {
direction = due;
}
}
if (!npos) {
npos = getNewCoord(direction, position);
}
// Original position check
if (isWallSpace(npos, direction)) {
due = getRandomDirection();
return move(ctx);
}
// Set to new position
position = npos;
// Update due direction
due = getRandomDirection();
return {
"new" : position,
"old" : oldPos
};
}
// Helper functions
function isOppositeDirection(dir1, dir2) {
return (dir1 === LEFT && dir2 === RIGHT) ||
(dir1 === RIGHT && dir2 === LEFT) ||
(dir1 === UP && dir2 === DOWN) ||
(dir1 === DOWN && dir2 === UP);
}
function isOnSameAxis(dir1, dir2) {
return (dir1 === LEFT || dir1 === RIGHT) &&
(dir2 === LEFT || dir2 === RIGHT) ||
(dir1 === UP || dir1 === DOWN) &&
(dir2 === UP || dir2 === DOWN);
}
function isOnDifferentAxis(dir1, dir2) {
return !isOnSameAxis(dir1, dir2);
}
function isSpaceFree(pos, dir) {
// Check map if space is free
}
*/
function move(ctx) {
var speed = getSpeed();
var oldPos = position,
onGrid = onGridSquare(position),
npos = null;
if (maps[randMap].teleport == "map3") {
// if position is { x: 10, y: 20 } and direction is LEFT, teleport to { x: 190, y: 190 } direction RIGHT
if (position.y == 20 && position.x == 10 && direction === LEFT) {
position = { "y": 190, "x": 190 };
direction = LEFT;
}
}
if (maps[randMap].teleport == "map1") {
// if position is { x: 190, y: 190 } and direction is RIGHT, teleport to { x: 10, y: 20 } direction LEFT
if (position.y == 90 && position.x == 0 && direction === RIGHT) {
position = { "y": 90, "x": 180 };
direction = RIGHT;
}
}
if (due !== direction) {
npos = getNewCoord(due, position);
if (onGrid &&
map.isFloorSpace({
"y": pointToCoord(nextSquare(npos.y, due)),
"x": pointToCoord(nextSquare(npos.x, due)),
})) {
direction = due;
} else {
npos = null;
}
}
if (npos === null) {
npos = getNewCoord(direction, position);
}
if (onGrid &&
map.isWallSpace({
"y": pointToCoord(nextSquare(npos.y, direction)),
"x": pointToCoord(nextSquare(npos.x, direction))
})) {
due = getRandomDirection();
return move(ctx);
}
position = npos;
var tmp = pane(position);
if (tmp) {
position = tmp;
}
due = getRandomDirection();
return {
"new": position,
"old": oldPos
};
};
return {
"eat": eat,
"isVunerable": isVunerable,
"isDangerous": isDangerous,
"makeEatable": makeEatable,
"reset": reset,
"move": move,
"draw": draw,
getSpeed: getSpeed
};
};
Pacman.User = function (game, map, userImageSrc) {
var position = null,
direction = null,
eaten = null,
due = null,
score = 0,
userImage = 'ressources/maingui/ui/mcicon2.webp',
userImageSrc = userImage,
keyMap = {};
keyMap[KEY.ARROW_LEFT] = LEFT;
keyMap[KEY.ARROW_UP] = UP;
keyMap[KEY.ARROW_RIGHT] = RIGHT;
keyMap[KEY.ARROW_DOWN] = DOWN;
function addScore(nScore) {
score += nScore;
};
function theScore() {
return score;
};
function resetScore() {
score = 0;
};
function convertScore(type) {
// 500 score = 4 metal, 2 plastic.
var metal = Math.floor(score / 250) * 2;
var plastic = Math.floor(score / 250);
if (type == "metal") {
return metal;
}
else if (type == "plastic") {
return plastic;
}
}
function initUser() {
resetPosition();
score = 5;
};
function drawScore(text, position) {
ctx.fillStyle = "#c55142";
ctx.font = "bold 20px Century Gothic";
var width = ctx.measureText(text).width,
x = ((map.width * map.blockSize) - width) / 2;
ctx.fillText(text, x, (map.height * 10) + 8);
};
function newLevel() {
resetPosition();
eaten = 0;
};
function resetPosition() {
// Find the start position on the map
for (var i = 0; i < map.height; i++) {
for (var j = 0; j < map.width; j++) {
if (map.block({ x: j, y: i }) === Pacman.START) {
position = { x: j * 10, y: i * 10 };
direction = maps[randMap].startingDirection;
due = maps[randMap].startingDirection;
break;
}
}
}
};
function reset() {
resetPosition();
};
function keyDown(e) {
if (keyMap[e.keyCode] !== undefined) {
due = keyMap[e.keyCode];
e.preventDefault();
e.stopPropagation();
return false;
}
return true;
};
function getNewCoord(dir, current) {
return {
"x": current.x + (dir === LEFT && -2 || dir === RIGHT && 2 || 0),
"y": current.y + (dir === DOWN && 2 || dir === UP && -2 || 0)
};
};
function onWholeSquare(x) {
return x % 10 === 0;
};
function pointToCoord(x) {
return Math.round(x / 10);
};
function nextSquare(x, dir) {
var rem = x % 10;
if (rem === 0) {
return x;
} else if (dir === RIGHT || dir === DOWN) {
return x + (10 - rem);
} else {
return x - rem;
}
};
function next(pos, dir) {
return {
"y": pointToCoord(nextSquare(pos.y, dir)),
"x": pointToCoord(nextSquare(pos.x, dir)),
};
};
function onGridSquare(pos) {
return onWholeSquare(pos.y) && onWholeSquare(pos.x);
};
function isOnSamePlane(due, dir) {
return ((due === LEFT || due === RIGHT) &&
(dir === LEFT || dir === RIGHT)) ||
((due === UP || due === DOWN) &&
(dir === UP || dir === DOWN));
};
function move(ctx) {
var npos = null,
nextWhole = null,
oldPosition = position,
block = null;
if (due !== direction) {
npos = getNewCoord(due, position);
if (isOnSamePlane(due, direction) ||
(onGridSquare(position) &&
map.isFloorSpace(next(npos, due)))) {
direction = due;
} else {
npos = null;
}
}
if (npos === null) {
npos = getNewCoord(direction, position);
}
if (onGridSquare(position) && map.isWallSpace(next(npos, direction))) {
direction = NONE;
}
if (direction === NONE) {
return { "new": position, "old": position };
}
if (npos.y === 100 && npos.x >= 190 && direction === RIGHT) {
game.completedLevel();
/*winDialog("YOU WON");
function winDialog(text) {
ctx.fillStyle = "white";
ctx.font = "bold 20px Century Gothic";
var width = ctx.measureText(text).width,
x = ((map.width * map.blockSize) - width) / 2;
ctx.fillText(text, x, (map.height * 10) + 8);
}*/
}
if (npos.y === 100 && npos.x <= 0 && direction === LEFT) {
npos.x = 0;
}
position = npos;
nextWhole = next(position, direction);
block = map.block(nextWhole);
if (block === Pacman.EXIT) {
game.completedLevel();
}
if ((isMidSquare(position.y) || isMidSquare(position.x)) &&
block === Pacman.DOT || block === Pacman.TREASURE) {
map.setBlock(nextWhole, Pacman.EMPTY);
eaten += 1;
if (block === Pacman.TREASURE) {
game.eatenTREASURE();
}
}
return {
"new": position,
"old": oldPosition
};
};
function isMidSquare(x) {
var rem = x % 10;
return rem > 3 || rem < 7;
};
function calcAngle(dir, pos) {
if (dir == RIGHT && (pos.x % 10 < 5)) {
return { "start": 0.25, "end": 1.75, "direction": false };
} else if (dir === DOWN && (pos.y % 10 < 5)) {
return { "start": 0.75, "end": 2.25, "direction": false };
} else if (dir === UP && (pos.y % 10 < 5)) {
return { "start": 1.25, "end": 1.75, "direction": true };
} else if (dir === LEFT && (pos.x % 10 < 5)) {
return { "start": 0.75, "end": 1.25, "direction": true };
}
return { "start": 0, "end": 2, "direction": false };
};
/*function drawDead(ctx, amount) {
var size = map.blockSize,
half = size / 2,
top = (position.y / 10) * s,
left = (position.x / 10) * s,
centerX = left + s / 2,
centerY = top + s / 2,
radius = s / (maps[randMap].ghostSizeDivider); // Radius is half of the block size, so the diameter is 's'
if (amount >= 1) {
return;
}
// this determines the color of the pacman when he dies
ctx.fillStyle = "rgba(0,255,0,0)";
ctx.beginPath();
ctx.moveTo(((position.x / 10) * size) + half,
((position.y / 10) * size) + half);
ctx.arc(((position.x / 10) * size) + half,
((position.y / 10) * size) + half,
half, 0, Math.PI * 2 * amount, true);
ctx.fill();
ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);
if (userImage && userImage.complete) { // Check if the image is loaded
// Center the image inside the circle
var imageX = centerX - radius; // Adjust X position
var imageY = centerY - radius; // Adjust Y position
ctx.drawImage(userImage, imageX, imageY, radius * 2, radius * 2);
}
};*/
userImage = new Image();
userImage.src = userImageSrc;
function draw(ctx) {
var s = map.blockSize,
angle = calcAngle(direction, position),
top = (position.y / 10) * s,
left = (position.x / 10) * s,
centerX = left + s / 2,
centerY = top + s / 2,
radius = s / maps[randMap].ghostSizeDivider; // Radius is half of the block size, so the diameter is 's'
// this determines the color of the pacman
ctx.fillStyle = "rgba(0,255,0,0)";
ctx.beginPath();
ctx.moveTo(((position.x / 10) * s) + s / 2,
((position.y / 10) * s) + s / 2);
ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);
/*ctx.arc(((position.x / 10) * s) + s / 2,
((position.y / 10) * s) + s / 2,
s / 2, Math.PI * angle.start,
Math.PI * angle.end, angle.direction);*/
ctx.fill();
// Draw the image inside the circle
if (userImage && userImage.complete) { // Check if the image is loaded
// Center the image inside the circle
var imageX = centerX - radius; // Adjust X position
var imageY = centerY - radius; // Adjust Y position
ctx.drawImage(userImage, imageX, imageY, radius * 2, radius * 2);
}
};
return {
"score": score,
"addScore": addScore,
"theScore": theScore,
"resetScore": resetScore,
"convertScore": convertScore,
"draw": draw,
/*"drawDead": drawDead,*/
"keyDown": keyDown,
"move": move,
"newLevel": newLevel,
"reset": reset,
"resetPosition": resetPosition
};
};
Pacman.Map = function (game, size) {
var height = null,
width = null,
blockSize = size,
TREASURESize = 0,
map = null;
var treasurePositions = [];
function placeTreasures() {
// Define the four possible positions for treasures
var treasureType;
if (game.getLevel() <= 2) {
treasureType = 'common';
} else if (game.getLevel() <= 4) {
treasureType = 'epic';
} else {
treasureType = 'legendary';
}
// Place the treasures on the map
var possiblePositions = maps[randMap].treasurePositions;
/*[
{ x: 1, y: 1 },
{ x: 17, y: 18 },
{ x: 17, y: 20 },
{ x: 17, y: 1 }
];*/
treasurePositions = possiblePositions.sort(function () {
return 0.5 - Math.random();
}).slice(0, 3);
// Place the treasure in the map
treasurePositions.forEach(function (pos) {
map[pos.y][pos.x] = Pacman.TREASURE;
});
}
function possibleExits() {
var possibleExits = maps[randMap].possibleExits;
/*[
{ x: 1, y: 1 },
{ x: 17, y: 18 },
{ x: 17, y: 20 },
{ x: 17, y: 1 }
];*/
possibleExits = possibleExits.sort(function () {
return 0.5 - Math.random();
}).slice(0, 1);
// Place the Exit in the map
possibleExits.forEach(function (pos) {
map[pos.y][pos.x] = Pacman.EXIT;
});
}
function withinBounds(y, x) {
return y >= 0 && y < height && x >= 0 && x < width;
}
function isWall(pos) {
return withinBounds(pos.y, pos.x) && map[pos.y][pos.x] === Pacman.WALL;
}
function isFloorSpace(pos) {
if (!withinBounds(pos.y, pos.x)) {
return false;
}
var peice = map[pos.y][pos.x];
return peice === Pacman.EMPTY ||
peice === Pacman.DOT ||
peice === Pacman.TREASURE ||
peice === Pacman.EXIT ||
peice === Pacman.SAFE;
}
function drawWall(ctx) {
var i, j, p, line;
ctx.clearRect(0, 0, width * blockSize, height * blockSize);
// this determines the color of the walls
ctx.strokeStyle = "#4e7757";
ctx.lineWidth = blockSize / 8;
ctx.lineCap = "round";
for (i = 0; i < Pacman.WALLS.length; i += 1) {
line = Pacman.WALLS[i];
ctx.beginPath();
for (j = 0; j < line.length; j += 1) {
p = line[j];
if (p.move) {
ctx.moveTo(p.move[0] * blockSize, p.move[1] * blockSize);
} else if (p.line) {
ctx.lineTo(p.line[0] * blockSize, p.line[1] * blockSize);
} else if (p.curve) {
ctx.quadraticCurveTo(p.curve[0] * blockSize,
p.curve[1] * blockSize,
p.curve[2] * blockSize,
p.curve[3] * blockSize);
}
}
ctx.stroke();
}
}
function reset() {
/*map = Pacman.MAP.clone();*/
map = deepCloneArray(maps[randMap].MAP);
height = map.length;
width = map[0].length;
placeTreasures();
possibleExits();
};
function block(pos) {
if (!withinBounds(pos.y, pos.x)) {
return null; // or some other value indicating an invalid position
}
return map[pos.y][pos.x];
}
function setBlock(pos, type) {
map[pos.y][pos.x] = type;
};
function getLevel() {
return level;
}
function drawTREASUREs(ctx) {
var treasureType;
if (game.getLevel() <= 2) {
treasureType = 'common';
} else if (game.getLevel() <= 4) {
treasureType = 'epic';
} else {
treasureType = 'legendary';
}
var treasureImg = new Image();
treasureImg.src = Pacman.TREASURES[treasureType].imgSrc;
treasurePositions.forEach(function (pos) {
if (map[pos.y][pos.x] === Pacman.TREASURE) {
ctx.drawImage(treasureImg, pos.x * blockSize, pos.y * blockSize, blockSize, blockSize);
}
});
};
// function that seperates the 3 treasures types
function getTreasureType() {
var level = game.getLevel(); // Get the current level
var treasureType = null;
if (level <= 2) {
treasureType = "common";
}
else if (level <= 4) {
treasureType = "epic";
}
else if (level <= 6) {
treasureType = "legendary";
}
return treasureType;
treasureTypeImg = {
common: {
image: new Image(),
/*src: 'ressources/icons/7B.webp'*/
src: 'ressources/icons/7B.webp'
},
epic: {
image: new Image(),
/*src: 'ressources/icons/7E.webp'*/
src: 'ressources/icons/7E.webp'
},
legendary: {
image: new Image(),
/*src: 'ressources/icons/7C.webp'*/
src: 'ressources/icons/7C.webp'
},
};
};
function draw(ctx) {
var i, j, size = blockSize;
// this determines the color of the background of the walls
ctx.fillStyle = "transparent";
ctx.fillRect(0, 0, width * size, height * size);
drawWall(ctx);
for (i = 0; i < height; i += 1) {
for (j = 0; j < width; j += 1) {
drawBlock(i, j, ctx);
}
}
};
function drawBlock(y, x, ctx) {
var layout = map[y][x];
if (layout === Pacman.TREASURE) {
return;
}
ctx.beginPath();
if (layout === Pacman.EMPTY || layout === Pacman.BLOCK ||
layout === Pacman.DOT || layout === Pacman.EXIT) {
// this determines the color of the background of the empty blocks
ctx.fillStyle = "transparent";
ctx.fillRect((x * blockSize), (y * blockSize),
blockSize, blockSize);
if (layout === Pacman.DOT) {
// this determines the color of the DOTs
ctx.fillStyle = "yellow";
ctx.fillRect((x * blockSize) + (blockSize / 2.5),
(y * blockSize) + (blockSize / 2.5),
blockSize / 6, blockSize / 6);
}
else if (layout === Pacman.EXIT) {
// this determines the color of the EXIT
ctx.fillStyle = "green";
ctx.fillRect((x * blockSize) + (blockSize / 2.5),
(y * blockSize) + (blockSize / 2.5),
blockSize / 3, blockSize / 3);
}
}
ctx.closePath();
};
reset();
return {
"draw": draw,
"drawBlock": drawBlock,
"drawTREASUREs": drawTREASUREs,
"block": block,
"setBlock": setBlock,
"reset": reset,
"isWallSpace": isWall,
"isFloorSpace": isFloorSpace,
"height": height,
"width": width,
"blockSize": blockSize,
"getTreasureType": getTreasureType,
};
};
Pacman.Audio = function (game) {
var files = [],
endEvents = [],
progressEvents = [],
playing = [];
function load(name, path, cb) {
var f = files[name] = document.createElement('audio');
progressEvents[name] = function (event) { progress(event, name, cb); };
f.addEventListener('canplaythrough', progressEvents[name], true);
f.setAttribute('preload', "true");
f.setAttribute('autobuffer', "true");
f.setAttribute('src', path);
f.pause();
};
function progress(event, name, callback) {
if (event.loaded === event.total && typeof callback === "function") {
callback();
files[name].removeEventListener('canplaythrough',
progressEvents[name], true);
}
};
function disableSound() {
for (var i = 0; i < playing.length; i++) {
files[playing[i]].pause();
files[playing[i]].currentTime = 0;
}
playing = [];
};
function ended(name) {
var i, tmp = [], found = false;
files[name].removeEventListener('ended', endEvents[name], true);
for (i = 0; i < playing.length; i++) {
if (!found && playing[i]) {
found = true;
} else {
tmp.push(playing[i]);
}
}
playing = tmp;
};
function play(name) {
if (!game.soundDisabled()) {
endEvents[name] = function () { ended(name); };
playing.push(name);
files[name].volume = SugarCube.settings.sfx; //bugfix audio scavenging
files[name].addEventListener('ended', endEvents[name], true);
files[name].play();
}
};
function pause() {
PopupManager.fadein();
for (var i = 0; i < playing.length; i++) {
files[playing[i]].pause();
}
};
function resume() {
for (var i = 0; i < playing.length; i++) {
files[playing[i]].play();
}
};
return {
"disableSound": disableSound,
"load": load,
"play": play,
"pause": pause,
"resume": resume
};
};
window.PACMAN = (function () {
var state = WAITING,
audio = null,
ghosts = [],
// this determines the color of the ghosts
ghostSpecs = ["rgba(0,255,0,0)", "rgba(0,255,0,0)", "rgba(0,255,0,0)", "rgba(0,255,0,0)", "rgba(0,255,0,0)", "rgba(0,255,0,0)", "rgba(0,255,0,0)", "rgba(0,255,0,0)"],
/*ghostImage = ["ressources/icons/8.webp",
"ressources/icons/9.webp",
"ressources/icons/10.webp",
"ressources/icons/11.webp",
"ressources/icons/12.webp",
"ressources/icons/16.webp",
"ressources/icons/17.webp",
"ressources/icons/18.webp"],*/
ghostImage = ["ressources/icons/FWC.webp",
"ressources/icons/FWC.webp",
"ressources/icons/FWC.webp",
"ressources/icons/FWC.webp",
"ressources/icons/FWC.webp",
"ressources/icons/FWC.webp",
"ressources/icons/FWC.webp",
"ressources/icons/FWC.webp"],
eatenCount = 0,
level = 0,
tick = 0,
ghostPos, userPos,
stateChanged = true,
timerStart = null,
lastTime = 0,
ctx = null,
timer = null,
map = null,
user = null,
stored = null;
var PopupManager = {
popupElement: null, // same as popupfade
init: function (parentElementId) {
this.popupElement = document.getElementById("popup");
this.popupElement.setAttribute('id', "popup");
//this.popupElement.classList.add('popup');
//document.getElementById(parentElementId)?.appendChild(this.popupElement);
},
//show: function (content, buttons, additionalClass) {
show: function (type) {
this.reset(); // Reset the popup and remove any additional classes
let popupText = document.createElement('div');
popupText.classList.add('popupText');
this.popupElement?.appendChild(popupText);
switch (type) {
case 'potential_rewards': {
popupText.innerHTML = 'Potential rewards: ';
let potential_rewards = document.createElement('div');
potential_rewards.classList.add('potential_rewards');
let left = document.createElement('div');
let metalImg = new Image();
metalImg.src = "ressources/icons/I1MA2.webp";
left.appendChild(metalImg);
let metalText = document.createElement('div');
metalText.innerHTML = user.convertScore("metal"); // window.PACMAN scoped
left.appendChild(metalText);
potential_rewards.appendChild(left);
let right = document.createElement('div');
let plasticImg = new Image();
plasticImg.src = "ressources/icons/I1MA3.webp";
right.appendChild(plasticImg);
let plasticText = document.createElement('div');
plasticText.innerHTML = user.convertScore("plastic"); // window.PACMAN scoped
right.appendChild(plasticText);
potential_rewards.appendChild(right);
this.popupElement?.appendChild(potential_rewards);
break;
}
case 'claim_continue': {
popupText.innerHTML = 'Level Complete! Would you like to claim your rewards or continue to the next level?';
let claim_button = document.createElement('button');
claim_button.classList.add('buttonCLAIM');
claim_button.textContent = 'CLAIM';
claim_button.onclick = function () {
PopupManager.fadeout();
PopupManager.hide();
claimRewards(); // window.PACMAN scoped
playPassage('3B1');
window.SCAV_gameStateInit = false;
};
this.popupElement?.appendChild(claim_button);
let continue_button = document.createElement('button');
continue_button.classList.add('buttonCONTINUE');
continue_button.textContent = 'NEXT LEVEL';
continue_button.onclick = function () {
PopupManager.fadeout();
user.newLevel(); // window.PACMAN scoped
startLevel(); // window.PACMAN scoped
};
this.popupElement?.appendChild(continue_button);
break;
}
case 'last_claim': {
popupText.innerHTML = 'Congratulations! You have completed all levels! You can claim your rewards.';
let claim_button = document.createElement('button');
claim_button.classList.add('buttonCLAIM');
claim_button.textContent = 'CLAIM';
claim_button.onclick = function () {
PopupManager.fadeout();
PopupManager.hide();
claimRewards();
playPassage('3B1');
window.SCAV_gameStateInit = false;
};
this.popupElement?.appendChild(claim_button);
break;
}
case 'caught': {
popupText.innerHTML = 'MAD Fighter has caught you!';
let flee_button = document.createElement('button');
flee_button.classList.add('buttonFLEE');
flee_button.textContent = 'FLEE';
flee_button.onclick = function () {
PopupManager.fadeout();
PopupManager.hide();
startNewGame();
SV.scavengingGame.treasurecountercom=0;
SV.scavengingGame.treasurecounterepi=0;
SV.scavengingGame.treasurecounterleg=0;
updateCommonDisplay();
updateEpicDisplay();
updateLegendaryDisplay();
};
this.popupElement?.appendChild(flee_button);
let fight_button = document.createElement('button');
fight_button.classList.add('buttonFIGHT');
fight_button.textContent = 'FIGHT';
fight_button.onclick = function () {
PopupManager.fadeout();
PopupManager.hide();
setState(PAUSE);
/* playPassage('FIGHT FWA scavenging'); */
FGF_enterFight("FWC0", {winReturnPassage: "6C"});
};
this.popupElement?.appendChild(fight_button);
break;
}
default: {
break;
}
}
},
hide: function () {
this.reset(); // Reset the popup when hiding
},
reset: function () {
this.popupElement.innerHTML = "";
this.popupElement.classList = "";
},
fadeout: function() {
document.removeEventListener('keydown', preventEnterKey);
this.popupElement.style.opacity = "0";
this.popupElement.style.pointerEvents = "none";
},
fadein: function() {
this.popupElement.style.opacity = "1";
this.popupElement.style.pointerEvents = "auto";
}
};
var ScavPassageEl = null;
function deleteGhost(index) {
ghosts.splice(index, 1);
}
function getLevel() {
return level;
}
function getTick() {
return tick;
};
function getState() {
return state;
};
function dialog(text) {
// this determines the color of the text
ctx.fillStyle = "#001400";
ctx.font = "bold 20px Century Gothic";
var width = ctx.measureText(text).width,
x = ((map.width * map.blockSize) - width) / 2;
ctx.fillText(text, x, (map.height * 10) + 0);
}
function soundDisabled() {
return localStorage["soundDisabled"] === "true";
};
function startLevel() {
fakecanvas.style.opacity = "0";
user.reset();
ghosts = []; // Clear existing ghosts array
var numberOfGhosts = 2 + level - 1; // Start with 2 ghosts, add 1 for each level
for (var i = 0; i < numberOfGhosts; i++) {
var ghostColour = ghostSpecs[i % ghostSpecs.length]; // Repeat colors if necessary
var ghostImageSrc = ghostImage[i % ghostImage.length]; // Repeat images if necessary
var ghost = new Pacman.Ghost({
"getTick": getTick,
"getLevel": getLevel,
"index": i,
}, map, ghostColour, ghostImageSrc);
ghosts.push(ghost);
}
for (var i = 0; i < ghosts.length; i++) {
ghosts[i].reset();
}
/*setState(WAITING);*/
timerStart = tick;
setState(COUNTDOWN);
}
function resumeLevel() {
/*setState(WAITING);*/
timerStart = tick;
setState(COUNTDOWN);
}
function startNewGame() {
setState(WAITING);
level = 1;
user.reset();
map.reset();
map.draw(ctx);
startLevel();
user.resetScore();
}
function claimRewards() {
PopupManager.fadeout();
var metal = user.convertScore("metal");
var plastic = user.convertScore("plastic");
//user.resetScore();
//return { metal: metal, plastic: plastic };
var realReturnMetal = modVariable("add", "item", "metal", metal) // add metal
var realReturnPlastic = modVariable("add", "item", "plastic", plastic) // add plastic
}
function keyDown(e) {
if (document.contains(ScavPassageEl) === false) { // 0.1.8b fix
//document.addEventListener('keydown', keyDown, true);
document.removeEventListener('keydown', keyDown);
return;
}
if (e.keyCode === KEY.ENTER) {
if (PACMAN.getState() === WAITING) { // Check if the state is WAITING
startNewGame(); // Start a new game only if in WAITING state
}
} else if (e.keyCode === KEY.S) {
audio.disableSound();
localStorage["soundDisabled"] = !soundDisabled();
} else if (e.keyCode === KEY.SPACEBAR && state === PAUSE) {
audio.resume();
map.draw(ctx);
setState(PLAYING);
/* } else if (e.keyCode === KEY.SPACEBAR) {
stored = state;
setState(PAUSE);
audio.pause();
map.draw(ctx); */
} else if (state !== PAUSE && state !== WAITING) { // Prevent direction keys from affecting the game when paused or waiting
return user.keyDown(e);
}
return true;
}
function setState(nState) {
state = nState;
stateChanged = true;
};
function collided(user, ghost) {
return (Math.sqrt(Math.pow(ghost.x - user.x, 2) +
Math.pow(ghost.y - user.y, 2))) < 10;
};
function drawFooter() {
ctx.clearRect(0, (map.height * map.blockSize), (map.width * map.blockSize), 30);
var topLeft = (map.height * map.blockSize),
textBase = topLeft + 17;
// this determines the color of the footer
ctx.fillStyle = "transparent";
ctx.fillRect(0, topLeft, (map.width * map.blockSize), 30);
// this determines the color of the footer
ctx.fillStyle = "black";
/*for (var i = 0, len = user.getreplaces(); i < len; i++) {
// this determines the color of the replaces
ctx.fillStyle = "white";
ctx.beginPath();
ctx.moveTo(150 + (25 * i) + map.blockSize / 2,
(topLeft + 1) + map.blockSize / 2);
ctx.arc(150 + (25 * i) + map.blockSize / 2,
(topLeft + 1) + map.blockSize / 2,
map.blockSize / 2, Math.PI * 0.25, Math.PI * 1.75, false);
ctx.fill();
}*/
// this determines the color of the text
//ctx.fillText("♪", 10, textBase);
// this determines the color of the text
ctx.fillStyle = "#001400";
ctx.font = "bold 20px Century Gothic";
ctx.fillText(`Level: ${level}`, 25, textBase);
/*ctx.fillText(`Rewards : ${user}`. (function rewards display) 100, textBase);*/
}
function redrawBlock(pos) {
map.drawBlock(Math.floor(pos.y / 10), Math.floor(pos.x / 10), ctx); // floor because we want to redraw the block the user is leaving
map.drawBlock(Math.ceil(pos.y / 10), Math.ceil(pos.x / 10), ctx); // ceil because we want to redraw the block the user is entering
}
//redrawBlock but modded. redraw 9 blocks instead of 2
/*function redrawBlock(pos) {
var leavingBlockPos = [Math.ceil(pos.y/10), Math.ceil(pos.x/10)];
var allAroundBlockPos = [];
for (var i = -1; i < 2; i++) {
for (var j = -1; j < 2; j++) {
allAroundBlockPos.push([leavingBlockPos[0] + i, leavingBlockPos[1] + j]);
}
}
//detect out of bounds
// TODO
allAroundBlockPos.push(leavingBlockPos);
for (var i = 0; i < allAroundBlockPos.length; i++) {
map.drawBlock(allAroundBlockPos[i][0], allAroundBlockPos[i][1], ctx);
}
}*/
function mainDraw() {
var diff, u, i, len;
ghostPos = [];
for (i = 0, len = ghosts.length; i < len; i += 1) {
ghostPos.push(ghosts[i].move(ctx));
}
u = user.move(ctx);
for (i = 0, len = ghosts.length; i < len; i += 1) {
redrawBlock(ghostPos[i].old);
}
redrawBlock(u.old);
for (i = 0, len = ghosts.length; i < len; i += 1) {
ghosts[i].draw(ctx);
}
user.draw(ctx);
userPos = u["new"];
// will serve for the collision (fights)
/*for (i = 0, len = ghosts.length; i < len; i += 1) {
if (collided(userPos, ghostPos[i]["new"])) {
audio.play("die");
saveGameState();
setState(DYING);
timerStart = tick;
}
}
};*/
for (i = 0, len = ghosts.length; i < len; i += 1) {
collisionInfo = collided(userPos, ghostPos[i]["new"]);
if (collisionInfo) {
audio.play("die");
setState(DYING);
PACMAN.deleteGhost(i);
fakecanvas.style.opacity = "1";
setTimeout(function () {
popupFight();
}, 1000);
timerStart = tick;
// Save the collided ghost data in the gameState object
SCAV_gameStateInit.collidedGhost = collisionInfo.ghost;
break; // No need to keep checking after a collision is found
}
}
};
function mainLoop() {
var diff;
if (state !== WAITING && state !== COUNTDOWN) {
map.draw(ctx);
}
if (state !== PAUSE) {
++tick;
}
if (state === PAUSE) {
for (var i = 0; i < ghosts.length; i++) {
ghosts[i].draw(ctx);
dialog("Press SPACEBAR to resume");
}
// Draw the player
user.draw(ctx);
}
if (state === PLAYING) {
mainDraw();
map.drawTREASUREs(ctx);
} else if (state === WAITING && stateChanged) {
stateChanged = false;
map.draw(ctx);
dialog("Press ENTER to start");
} else if (state === EATEN_PAUSE &&
(tick - timerStart) > (Pacman.FPS / 3)) {
map.draw(ctx);
setState(PLAYING);
} else if (state === DYING) {
if (tick - timerStart > (Pacman.FPS * 2)) {
} else {
redrawBlock(userPos);
for (i = 0, len = ghosts.length; i < len; i += 1) {
redrawBlock(ghostPos[i].old);
ghostPos.push(ghosts[i].draw(ctx));
}
/* user.drawDead(ctx, (tick - timerStart) / (Pacman.FPS * 2));*/
}
} else if (state === COUNTDOWN) {
diff = 5 + Math.floor((timerStart - tick) / Pacman.FPS);
audio.play("start");
if (diff === 0) {
map.draw(ctx);
setState(PLAYING);
} else {
if (diff !== lastTime) {
lastTime = diff;
map.draw(ctx);
dialog(`Starting in: ${diff}`);
}
}
}
drawFooter();
detectGamestateInit();
}
function eatenTREASURE() {
var treasureType;
if (level <= 2) {
treasureType = 'common';
SV.scavengingGame.treasurecountercom+=1;
updateCommonDisplay();
} else if (level <= 4) {
treasureType = 'epic';
SV.scavengingGame.treasurecounterepi+=1;
updateEpicDisplay();
} else {
treasureType = 'legendary';
SV.scavengingGame.treasurecounterleg+=1;
updateLegendaryDisplay();
}
audio.play("eatTREASURE");
timerStart = tick;
eatenCount = 0;
// Add score based on treasure type if
user.addScore(Pacman.TREASURES[treasureType].score);
}
function completedLevel() {
fakecanvas.style.opacity = "1";
if (level < 6) {
setState(WAITING);
level += 1;
setTimeout(function () {
popupRewards();
}, 1000);
setTimeout(function () {
popuplvlcomplete();
}, 4000);
map.reset();
}
else {
setState(WAITING);
SV.achievements.eventTrigger.scavengersSummit_1 = true;
popupRewards();
if (SV.scavengingGame.treasurecountercom === 6
&& SV.scavengingGame.treasurecounterepi === 6
&& SV.scavengingGame.treasurecounterleg === 6) {
SV.achievements.eventTrigger.scrapSavant_1 = true;
}
setTimeout(function () {
popupGameEnd();
}, 2000);
}
//startLevel();
};
function popuplvlcomplete() {
fakecanvas.style.opacity = "1";
setState(PAUSE);
PopupManager.show('claim_continue');
}
function popupGameEnd() {
fakecanvas.style.opacity = "1";
PopupManager.show('last_claim');
}
function popupFight() {
fakecanvas.style.opacity = "1";
PopupManager.fadein();
PopupManager.show('caught');
// Directly add another class to the popup element if it's accessible
var fightElement = document.querySelector('.fight');
if (fightElement) {
fightElement.classList.add('rewards_container');
}
}
function popupRewards() {
fakecanvas.style.opacity = "1";
setState(PAUSE);
PopupManager.fadein();
PopupManager.show('potential_rewards');
}
function keyPress(e) {
if (state !== WAITING && state !== PAUSE) {
e.preventDefault();
e.stopPropagation();
}
};
function soft_init(wrapper, root) {
var blockSize = 30;
var canvas = document.createElement('canvas');
let width = blockSize * maps[randMap].blockwidth;
let height = blockSize * maps[randMap].blockheight + 50;
let ratio = width / height;
overlayAngelaButton.style.display = "none"; // display none menu HACKY SHIT I KNOW IM RETARDED - CRYCRY
canvas.setAttribute('width', `${width}px`);
canvas.setAttribute('height', `${height}px`);
fakecanvas.setAttribute('width', `${width}px`);
fakecanvas.setAttribute('height', `${height}px`);
canvas.setAttribute('background-color', "black");
popupfade.style.aspectRatio = ratio;
PopupManager.init(); //Bugfix: Now in soft init
wrapper?.appendChild(canvas);
ctx = canvas.getContext('2d');
ScavPassageEl = document.querySelector('.passage'); // 0.1.8b fix
document.addEventListener('keydown', keyDown, true);
}
function hard_init(wrapper, root) {
var i, len, ghost;
//var blockSize = wrapper.offsetWidth / 28,
var blockSize = 30;
overlayAngelaButton.style.display = "none"; // display none menu HACKY SHIT I KNOW IM RETARDED - CRYCRY
SV.scavengingGame.treasurecountercom=0;
SV.scavengingGame.treasurecounterepi=0;
SV.scavengingGame.treasurecounterleg=0;
updateCommonDisplay();
updateEpicDisplay();
updateLegendaryDisplay();
audio = new Pacman.Audio({ "soundDisabled": soundDisabled });
map = new Pacman.Map(
{
"getTick": getTick,
"getLevel": getLevel
}, blockSize);
user = new Pacman.User({
"completedLevel": completedLevel,
"eatenTREASURE": eatenTREASURE
}, map);
for (let i = 0, len = ghostSpecs.length; i < len; i += 1) {
ghost = new Pacman.Ghost({
"getTick": getTick,
"getLevel": getLevel,
"index": i,
}, map, ghostSpecs[i], ghostImage[i]);
ghosts.push(ghost);
}
map.draw(ctx);
dialog("Loading ...");
//PopupManager.init("pacman");
//var extension = Modernizr.audio.ogg ? 'ogg' : 'mp3';
var extension = 'mp3'; //hard codded to that
var audio_files = [
["start", `${root}opening_song.mp3`],
["die", `${root}die.mp3`],
["eatghost", `${root}eatghost.mp3`],
["eatTREASURE", `${root}eatpill.mp3`],
["eating", `${root}eating.short.mp3`],
["eating2", `${root}eating.short.mp3`]
];
load(audio_files, function () { loaded(); });
};
function load(arr, callback) {
if (arr.length === 0) {
callback();
} else {
var x = arr.pop();
audio.load(x[0], x[1], function () { load(arr, callback); });
//audio.volume = 0.1;
//console.log("volume SET")
}
};
function loaded() {
dialog("Press ENTER to start a New game");
//document.addEventListener('keydown', keyDown, true);
timer = setInterval(mainLoop, 1000 / Pacman.FPS);
//detect
};
function detectGamestateInit() {
if (!SCAV_gameStateInit || !scavengePassages.includes(passageId)) { //if false or undefined
//stop the timer
clearInterval(timer);
}
}
return {
//"init": init,
"soft_init": soft_init,
"hard_init": hard_init,
"getLevel": getLevel,
"getState": getState,
"setState": setState,
"deleteGhost": deleteGhost,
};
}());
/* Human readable keyCode index */
var KEY = { 'BACKSPACE': 8, 'TAB': 9, 'NUM_PAD_CLEAR': 12, 'ENTER': 13, 'SHIFT': 16, 'CTRL': 17, 'ALT': 18, 'PAUSE': 19, 'CAPS_LOCK': 20, 'ESCAPE': 27, 'SPACEBAR': 32, 'PAGE_UP': 33, 'PAGE_DOWN': 34, 'END': 35, 'HOME': 36, 'ARROW_LEFT': 37, 'ARROW_UP': 38, 'ARROW_RIGHT': 39, 'ARROW_DOWN': 40, 'PRINT_SCREEN': 44, 'INSERT': 45, 'DELETE': 46, 'SEMICOLON': 59, 'WINDOWS_LEFT': 91, 'WINDOWS_RIGHT': 92, 'SELECT': 93, 'NUM_PAD_ASTERISK': 106, 'NUM_PAD_PLUS_SIGN': 107, 'NUM_PAD_HYPHEN-MINUS': 109, 'NUM_PAD_FULL_STOP': 110, 'NUM_PAD_SOLIDUS': 111, 'NUM_LOCK': 144, 'SCROLL_LOCK': 145, 'SEMICOLON': 186, 'EQUALS_SIGN': 187, 'COMMA': 188, 'HYPHEN-MINUS': 189, 'FULL_STOP': 190, 'SOLIDUS': 191, 'GRAVE_ACCENT': 192, 'LEFT_SQUARE_BRACKET': 219, 'REVERSE_SOLIDUS': 220, 'RIGHT_SQUARE_BRACKET': 221, 'APOSTROPHE': 222 };
(function () {
/* 0 - 9 */
for (var i = 48; i <= 57; i++) {
KEY[`${i - 48}`] = i;
}
/* A - Z */
for (i = 65; i <= 90; i++) {
KEY[String.fromCharCode(i)] = i;
}
/* NUM_PAD_0 - NUM_PAD_9 */
for (i = 96; i <= 105; i++) {
KEY[`NUM_PAD_${i - 96}`] = i;
}
/* F1 - F12 */
for (i = 112; i <= 123; i++) {
KEY[`F${i - 112 + 1}`] = i;
}
})();
Pacman.WALL = 0;
Pacman.DOT = 1;
Pacman.EMPTY = 2;
Pacman.BLOCK = 3;
Pacman.TREASURE = 4;
Pacman.EXIT = 5;
Pacman.START = 6;
Pacman.SAFE = 7;
Pacman.TREASURES = {
'common': {
'name': 'Common',
/*'imgSrc': 'ressources/icons/6B.webp',*/
'imgSrc': 'ressources/icons/6B.webp',
'score': 500
},
'epic': {
'name': 'Epic',
/*'imgSrc': 'ressources/icons/6E.webp',*/
'imgSrc': 'ressources/icons/6E.webp',
'score': 1500
},
'legendary': {
'name': 'Legendary',
/*'imgSrc': 'ressources/icons/6C.webp',*/
'imgSrc': 'ressources/icons/6C.webp',
'score': 3000
}
}
Pacman.MAP = maps[randMap].MAP;
Pacman.WALLS = maps[randMap].WALLS;
}
$(function () {
var backbutton = document.getElementById('scavenging_back_button');
var el = document.getElementById('pacman');
if (!SCAV_gameStateInit) {
// Perform hard initialization on first run
window.SCAV_gameStateInit = true;
PACMAN.soft_init(el, "ressources/sounds/scavenging/"); //was code/script/pacman-master/
PACMAN.hard_init(el, "ressources/sounds/scavenging/"); //was code/script/pacman-master/
} else {
// Perform soft initialization on subsequent passage changes (HTML)
PACMAN.soft_init(el, "ressources/sounds/scavenging/"); //was code/script/pacman-master/
//PACMAN.soft_init(document.getElementById('pacman'), "code/script/pacman-master/");
}
});
function backButton(passage) {
window.SCAV_gameStateInit = false;
playPassage(passage);
}
function deepCloneArray(arr) {
return arr.map(item => Array.isArray(item) ? deepCloneArray(item) : item);
}
// Attach the event listener
document.addEventListener('keydown', preventEnterKey);
/* window.onload = function() {
var canvas = document.querySelector('canvas');
if (canvas) {
var ctx = canvas.getContext("2d");
// Save the current canvas content
var savedImageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
// Resize the canvas
var newWidth = 400; // Set this to your desired new width
var newHeight = 200; // Set this to your desired new height
canvas.width = newWidth;
canvas.height = newHeight;
// Put the saved content back onto the canvas
ctx.putImageData(savedImageData, 0, 0);
} else {
console.error('Canvas element not found!');
}
} */
</script><<nobr>>
<div class="DIAS_container"></div>
<</nobr>>\
<style>
.buttons {
font-size: 2vh;
}
</style>\
<script>
var EGV_lastPassage;
var EGV_zoneId; // used for the rewards AND content
var EGV_floorId; // used for the rewards AND content
var EGV_randContentKey; // used for the content (text and images)
var EGV_currentSection;
var EGV_sectionData;
window.EGF_optionsClick = function(n) {
EGV_currentSection = gameData.exploration.gameFlow[EGV_currentSection][n]; /* eg: A1 */
// nextPartOfDay(); // now only on exit
EGF_updateContent();
}
window.EGF_exitClick = function() {
nextPartOfDay();
let defaultRewards = gameData.exploration.rewards.default;
let rewards = gameData.exploration.rewards[EGV_zoneId][EGV_floorId];
let endingTypeKey = EGV_sectionData.type; //ex: "good"
let tier = rewards.tier ?? defaultRewards.tier;
let reward = rewards[endingTypeKey] ?? defaultRewards[endingTypeKey];
let dynaList = SV.exploreGame.list;
let index = EGV_currentSection.substring(1) * 1 - 1; // "E8" -> 7
if (Number.isInteger(index) !== true) return;
if (dynaList[EGV_zoneId][EGV_floorId][index] !== true) { // to not give the reward twice
EGF_giveReward(reward, tier);
}
playPassage(EGV_lastPassage);
}
function EGF_giveReward(reward, tier) {
// ----- EQUIPMENT, GIFT
if (reward.item) {
let itemConfig = {
tier: [tier],
rarity: [reward.item],
}
if (Math.random() < 0.5) { // 50 %
itemConfig.type = ["equipment"];
} else {
itemConfig.type = ["material"];
itemConfig.type2 = ["gift"];
}
let item = getRandomItem(itemConfig);
if (!item) {
console.error(`No item found for config: ${JSON.stringify(itemConfig)}`);
return;
}
BPopupR_pushRewards([{
type: "item",
key: item,
applyType: "add",
applyValue: 1,
}])
}
// ----- VIRUS
if (reward.virus) {
modVariable("add", "stat", "virus", reward.virus);
}
}
function EGF_setupEndRewardData() {
let dynaList = SV.exploreGame.list;
if (dynaList[EGV_zoneId] === undefined) {
dynaList[EGV_zoneId] = {};
}
if (dynaList[EGV_zoneId][EGV_floorId] === undefined) {
dynaList[EGV_zoneId][EGV_floorId] = [];
}
}
function EGF_updateContent() {
EGV_sectionData = gameData.exploration.list[EGV_zoneId]?.[EGV_randContentKey]?.[EGV_currentSection];
let DIAS_container = document.querySelector('.DIAS_container');
if (!DIAS_container) return;
DIAS_container.innerHTML = "";
let dialogData = [];
dialogData.push({
type: "text",
content: [
["para", EGV_sectionData.desc],
],
});
dialogData.push({
type: "image",
src: `ressources/minigames/${EGV_randContentKey}${EGV_currentSection}.webp`, /* ERROR PRONE, 👉😜👈 */ /* most accurate shit XD -crystallia */
});
let randArr = Math.random() < 0.5 ? [0,1] : [1,0];
if (EGV_sectionData.choice1 !== undefined) {
// let choices = [
// [`${EGV_sectionData.choice1}`, "script", "EGF_optionsClick(0)"],
// [`${EGV_sectionData.choice2}`, "script", "EGF_optionsClick(1)"],
// ];
let choices = [
{
type: "script",
content: EGV_sectionData.choice1,
onclick: () => EGF_optionsClick(0),
},
{
type: "script",
content: EGV_sectionData.choice2,
onclick: () => EGF_optionsClick(1),
},
];
dialogData.push({
type: "button",
content: [
// button text, button type[script], button onclick
choices[randArr[0]],
choices[randArr[1]],
],
});
} else {
dialogData.push({
type: "button",
content: [
// button text, button type[script], button onclick
// [`${EGV_sectionData.exit}`, "script", "EGF_exitClick()"],
{
type: "script",
content: EGV_sectionData.exit,
onclick: () => EGF_exitClick(),
},
],
});
}
DIAS_container.appendChild(DIAF_buildDialogue({ dialogData }));
setTimeout(() => { //hack
DIAF_initDialogPassage();
}, 100);
}
function EGF_minigamesBackground(){
if (EGV_zoneId === 'A'){
setBackground('ressources/backgrounds/WA.webm'); /* Border */
}
else if (EGV_zoneId === 'B'){
setBackground('ressources/backgrounds/WB.webm'); /* Green */
}
else if (EGV_zoneId === 'C'){
setBackground('ressources/backgrounds/WC.webm'); /* Blue */
}
else if (EGV_zoneId === 'D'){
setBackground('ressources/backgrounds/WD.webm'); /* Red */
}
else if (EGV_zoneId === 'E'){
setBackground('ressources/backgrounds/WE.webm'); /* Yellow */
}
}
EGV_lastPassage = SV.exploreGame.lastPassage;
EGV_zoneId = SV.exploreGame.zoneId; // ex: A, B, C, D, E
EGV_floorId = SV.exploreGame.floorId; // ex: 1, 2, 3, ...
EGV_currentSection = Object.keys(gameData.exploration.gameFlow)[0]; // = "A1"
var contentRendIndex = gameData.exploration.presetContentRandomness[EGV_zoneId]?.[EGV_floorId]
EGV_randContentKey = Object.keys(gameData.exploration.list[EGV_zoneId])[contentRendIndex - 1]; // ex: 1 -> "WA2C"
console.log('Zone:', EGV_zoneId);
console.log('Rand Content Key:', EGV_randContentKey);
EGF_minigamesBackground();
EGF_updateContent();
EGF_setupEndRewardData();
</script><<nobr>>
<div id="MGS_canvasContainer">
<div id="MGS_canvasContainer2">
<canvas id="MGS_gameCanvas" width="768" height="512"></canvas>
<div id="MGS_canvasOverlay">
<div id="MGS_canvasOverlay2">
<div id="MGS_inventory">
</div>
<div id="MGS_death"> <!-- z: 3 -->
YOU DIED
</div>
<div id="MGS_exit">
EXIT
</div>
<div id="MGS_helpButton">
<img src="ressources/maingui/ui/info.webp" alt="Info Button">
</div>
<div id="MGS_helpContent">
<div id="MGS_helpContent_close">X</div>
<div id="MGS_informations_info">
<h1 style="color: white;">The Mining Game</h1>
<br>Welcome to the Wastelands Mines! Here's what you need to know to get started:
<br>
<br>
<u><b>Shop</b></u>
<br>Spend your hard-earned ores to gain upgrades:
<br>Speed Boost: Mine faster to maximize your haul.
<br>Bigger Water Bottle: Stay in the mines longer without needing to refill.
<br>Better Pickaxe: Break through the rock quicker to access rarer ores.
<br>
<br>
<u><b>Trade Stand</b></u>
<br>Encounter a resourceful girl from the wastelands who trades ores for special items.
<br>Tip: Keep an eye out for what she offers, these items may be useful in the future.
<br>
<br>
<u><b>Fountain</b></u>
<br>Water is essential for mining:
<br>Refill: Make regular trips to the fountain to replenish your water supply.
<br>Caution: If you run dry, you risk losing everything you've worked for. Stay hydrated!
<br>
<br>
<u><b>Mining</b></u>
<br>Discover 3 different ore types within the border's depths:
<br>Ores: Coal, Copper and Iron.
<br>Effort Equals Reward: The value of the ore increases with its rarity, so be prepared to dig deeper for the best gems.
<br>
<br>
<u><b>Strategy Tip</b></u>
<br>Balance your time between mining for ores, upgrading your equipment, trading for helpful items, and keeping your water bottle filled. Good luck out there, miner!
</div>
</div>
<div id="MGS_shop">
<back>BACK</back>
<div class="left">
<div class="itemsCont">
<div class="shelf_content">
<item>
<img src="ressources/maingui/mining_game/clay.webp">
</item>
<item>
<img src="ressources/maingui/mining_game/clay.webp">
</item>
<item>
<img src="ressources/maingui/mining_game/clay.webp">
</item>
</div>
<div class="shelf">
<img src="ressources/maingui/mining_game/shelf.webp">
</div>
</div>
<div class="item_info">
<div class="desc">
<p>DESCRIPTION:</p>
<div></div>
</div>
<div class="buttons">
<div>BUY</div>
</div>
</div>
</div>
<div class="right">
</div>
</div>
<div id="MGS_trade">
<back>BACK</back>
<div class="left">
<div class="itemsCont">
<div class="shelf_content">
<item>
<img src="ressources/maingui/mining_game/tier 1 mythical.webp">
</item>
<item>
<img src="ressources/maingui/mining_game/tier 1 mythical.webp">
</item>
<item>
<img src="ressources/maingui/mining_game/tier 1 mythical.webp">
</item>
</div>
<div class="shelf">
<img src="ressources/maingui/mining_game/shelf.webp">
</div>
</div>
<div class="item_info">
<div class="desc">
<p>DESCRIPTION:</p>
<div></div>
</div>
<div class="buttons">
<!--div>BUY</div-->
</div>
</div>
</div>
<div class="right">
</div>
</div>
</div>
</div>
</div>
</div>
<</nobr>>\
<style>
body {
margin: 0;
padding: 0;
overflow: hidden;
height: 100vh;
width: 100vw;
display: flex;
justify-content: center;
align-items: center;
}
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
}
#passages {
margin: 0;
max-width: 100%;
}
.passage {
user-select: none;
font-family: 'Century Gothic', sans-serif; /*MAYBEE*/
color: white; /*MAYBEE*/
font-size: 1.75vh;
line-height: normal;
overflow: hidden;
background-color: #1d1d1d; /*MAYBEE*/
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
color: white;
}
#MGS_canvasContainer {
aspect-ratio: 768/512;
max-width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
#MGS_canvasContainer2 {
position: relative;
aspect-ratio: 768/512;
width: 100%;
margin: auto;
display: flex;
justify-content: center;
align-items: center;
}
#MGS_gameCanvas {
width: 100%;
display: block; /* Prevents scrollbar */
background: #000; /* Sets a default background */
}
#MGS_canvasOverlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
font-size: 1.75vh;
font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
color: white;
}
#MGS_canvasOverlay2 {
position: relative;
width: 100%;
height: 100%;
pointer-events: none;
display: flex;
justify-content: center;
align-items: center;
/* background-color: rgba(0, 0, 0, 0.5); */
}
#MGS_inventory {
opacity: 0.7;
position: absolute;
bottom: 0;
right: 0;
max-width: 18em;
padding-left: 1.0em;
padding-right: 0.2em;
background-image: linear-gradient(to right, transparent, rgba(0, 0, 0, 0.43) 3%);
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: flex-end;
align-items: flex-end;
}
#MGS_inventory > item {
position: relative;
width: 4.8em;
margin: 0.2em;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
#MGS_inventory > item > qty {
font-size: 1.2em;
color: #000;
position: absolute;
top: -0.1em;
left: -0.1em;
padding: 0.3em;
height: 0.8em;
border-radius: 1em;
background-color: rgba(255, 255, 255, 0.537);
display: flex;
justify-content: center;
align-items: center;
}
#MGS_inventory > item > img {
/* height: 4.5em; */
width: 100%;
}
#MGS_inventory > item > desc {
font-size: 1.2em;
text-align: center;
}
@keyframes MGS_itemHover {
0% {transform: none}
to {transform: translateY(-0.3em)}
}
#MGS_shop {
opacity: 0;
pointer-events: none;
background-color: rgba(36, 16, 0, 0.604);
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: flex-start;
align-items: flex-end;
transition: opacity 0.3s;
}
#MGS_shop > back {
position: absolute;
bottom: 0.5em;
right: 0.5em;
padding: 0.5em;
border-radius: 0.5em;
background-color: #000000a1;
border: solid 0.05em #000000a4;
color: #fff;
font-size: 2.2em;
font-weight: bold;
cursor: pointer;
transition: background-color 0.1s, transform 0.1s;
}
#MGS_shop > back:hover {
background-color: #4d4d4d;
transform: translate(1px, -2px);
}
#MGS_shop > .left {
width: 65%;
height: 100%;
background-image: url('ressources/maingui/mining_game/trade_wall.webp');
background-size: cover;
background-repeat: repeat;
background-position: center;
}
#MGS_shop > .left > .itemsCont {
width: 100%;
height: 75%;
padding: 1em;
overflow-y: auto;
}
#MGS_shop > .left > .itemsCont > .shelf_content {
width: 100%;
height: 17%;
margin-top: 0.8em;
display: flex;
flex-direction: row;
justify-content: space-evenly;
}
#MGS_shop > .left > .itemsCont > .shelf_content > item {
position: relative;
height: 100%;
aspect-ratio: 1/1;
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: center;
cursor: pointer;
}
#MGS_shop > .left > .itemsCont > .shelf_content > item:hover > img {
animation: MGS_itemHover 0.3s infinite alternate;
}
#MGS_shop > .left > .itemsCont > .shelf_content > item > img {
position: absolute;
z-index: 1;
height: 100%;
filter: drop-shadow(0 0.3em 0.2em rgba(0, 0, 0, 0.5));
}
#MGS_shop > .left > .itemsCont > .shelf_content > item > img.equiped {
filter: drop-shadow(0 0 0.4em rgb(27, 80, 12));
height: 110%;
}
#MGS_shop > .left > .itemsCont > .shelf {
width: 100%;
height: 2.5em;
display: flex;
flex-direction: column;
justify-content: flex-end;
}
#MGS_shop > .left > .itemsCont > .shelf > img {
width: 100%;
filter: drop-shadow(0 0.3em 0.2em rgba(0, 0, 0, 0.5))
drop-shadow(0 0.7em 0.2em rgba(0, 0, 0, 0.5));
}
#MGS_shop > .left > .item_info {
background-color: rgba(0, 0, 0, 0.474);
display: flex;
height: 25%;
}
#MGS_shop > .left > .item_info > .desc {
width: 80%;
height: 100%;
overflow-y: auto;
padding: 1em;
color: rgb(255, 255, 255);
font-weight: bold;
font-size: 1.3em;
padding: 0 0.8em;
}
#MGS_shop > .left > .item_info > .buttons {
border-left: solid 0.1em #00000071;
width: 20%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
#MGS_shop > .left > .item_info > .buttons > div {
min-width: 80%;
max-width: 100%;
padding: 1em 0;
margin: 0.3em;
padding: 0.5em;
border-radius: 0.4em;
background-color: #323232;
color: #fff;
font-size: 1.3em;
font-weight: bold;
text-align: center;
cursor: pointer;
border-style: solid;
border-color: #000000;
border-width: 0.1em 0 0.1em 0;
transition: transform 0.1s, background-color 0.1s;
}
#MGS_shop > .left > .item_info > .buttons > div:hover {
transform: translate(1px, -2px);
background-color: #4d4d4d;
}
#MGS_trade {
opacity: 0;
pointer-events: none;
background-color: rgba(36, 16, 0, 0.604);
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: flex-start;
align-items: flex-end;
transition: opacity 0.3s;
}
#MGS_trade > back {
position: absolute;
bottom: 0.5em;
right: 0.5em;
padding: 0.5em;
border-radius: 0.5em;
background-color: #000000a1;
border: solid 0.05em #000000a4;
color: #fff;
font-size: 2.2em;
font-weight: bold;
cursor: pointer;
transition: background-color 0.1s, transform 0.1s;
}
#MGS_trade > back:hover {
background-color: #4d4d4d;
transform: translate(1px, -2px);
}
#MGS_trade > .left {
width: 65%;
height: 100%;
background-image: url('ressources/maingui/mining_game/trade_wall.webp');
background-size: cover;
background-repeat: repeat;
background-position: center;
}
#MGS_trade > .left > .itemsCont {
width: 100%;
height: 75%;
padding: 1em;
overflow-y: auto;
}
#MGS_trade > .left > .itemsCont > .shelf_content {
width: 100%;
height: 17%;
margin-top: 0.8em;
display: flex;
flex-direction: row;
justify-content: space-evenly;
}
#MGS_trade > .left > .itemsCont > .shelf_content > item {
position: relative;
height: 100%;
aspect-ratio: 1/1;
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: center;
cursor: pointer;
}
#MGS_trade > .left > .itemsCont > .shelf_content > item:hover > img {
animation: MGS_itemHover 0.3s infinite alternate;
}
#MGS_trade > .left > .itemsCont > .shelf_content > item > img {
position: absolute;
z-index: 1;
height: 100%;
filter: drop-shadow(0 0.3em 0.2em rgba(0, 0, 0, 0.5));
}
#MGS_trade > .left > .itemsCont > .shelf_content > item > img.equiped {
filter: drop-shadow(0 0 0.4em rgb(27, 80, 12));
height: 110%;
}
#MGS_trade > .left > .itemsCont > .shelf {
width: 100%;
height: 2.5em;
display: flex;
flex-direction: column;
justify-content: flex-end;
}
#MGS_trade > .left > .itemsCont > .shelf > img {
width: 100%;
filter: drop-shadow(0 0.3em 0.2em rgba(0, 0, 0, 0.5))
drop-shadow(0 0.7em 0.2em rgba(0, 0, 0, 0.5));
}
#MGS_trade > .left > .item_info {
background-color: rgba(0, 0, 0, 0.474);
display: flex;
height: 25%;
}
#MGS_trade > .left > .item_info > .desc {
width: 80%;
height: 100%;
overflow-y: auto;
padding: 1em;
color: rgb(255, 255, 255);
font-weight: bold;
font-size: 1.3em;
padding: 0 0.8em;
}
#MGS_trade > .left > .item_info > .buttons {
border-left: solid 0.1em #00000071;
width: 20%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
#MGS_trade > .left > .item_info > .buttons > div {
width: 80%;
padding: 1em 0;
margin: 0.3em;
padding: 0.5em;
border-radius: 0.4em;
background-color: #323232;
color: #fff;
font-size: 1.3em;
font-weight: bold;
text-align: center;
cursor: pointer;
border-style: solid;
border-color: #000000;
border-width: 0.1em 0 0.1em 0;
transition: transform 0.1s, background-color 0.1s;
}
#MGS_trade > .left > .item_info > .buttons > div:hover {
transform: translate(1px, -2px);
background-color: #4d4d4d;
}
#MGS_trade > .right {
width: 35%;
height: 100%;
background-image: url('ressources/maingui/mining_game/gift_girl.webp');
background-size: cover;
background-color: transparent;
}
#MGS_death {
opacity: 0;
pointer-events: none;
background-color: rgba(0, 0, 0, 0.9);
position: absolute;
z-index: 3; /* items are 2 */
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: center;
align-items: center;
transition: opacity 3s ease-in-out;
font-family: 'Adobe Garamond';
font-size: 5em;
font-weight: normal;
color: #a51717;
}
#MGS_exit {
opacity: 1;
pointer-events: all;
position: absolute;
z-index: 3;
top: 0.5em;
right: 0.5em;
padding: 0.5em;
border-radius: 0.5em;
background-color: #000000a1;
border: solid 0.1em #000000a4;
color: #fff;
font-size: 2em;
width: 7em;
font-weight: bold;
cursor: pointer;
transition: background-color 0.1s, transform 0.1s;
display: flex;
justify-content: center;
align-items: center;
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow:
0px 0px 8px rgba(255, 0, 0, 0.4),
0px 0px 16px rgba(255, 0, 0, 0.4),
0px 0px 24px rgba(255, 0, 0, 0.4);
box-shadow:
inset 0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 1vw rgba(255, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
cursor: pointer;
transition: all ease 0.3s;
}
#MGS_exit:hover {
box-shadow:
inset 0 0 1vw rgba(255, 0, 0, 0.6),
0 0 0.5vw rgba(255, 0, 0, 0.6),
0 0 1vw rgba(255, 0, 0, 0.6),
0 0 2vw rgba(255, 0, 0, 0.6);
text-shadow:
0 0 1vw rgba(255, 0, 0, 0.6),
0 0 1vw rgba(255, 0, 0, 0.6),
0 0 1vw rgba(255, 0, 0, 0.6);
}
#MGS_helpButton {
position: absolute;
pointer-events: all;
width: 7vmin;
height: 7vmin;
border-radius: 50%;
display: flex;
top: 12vh;
right: 1.5vh;
margin-left: auto;
align-items: center;
justify-content: center;
cursor: pointer;
text-align: center;
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow:
0px 0px 8px rgba(255, 0, 0, 0.4),
0px 0px 16px rgba(255, 0, 0, 0.4),
0px 0px 24px rgba(255, 0, 0, 0.4);
box-shadow:
inset 0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 1vw rgba(255, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
cursor: pointer;
transition: all ease 0.3s;
z-index: 10;
}
#MGS_helpButton:hover {
box-shadow:
inset 0 0 1vw rgba(255, 0, 0, 0.6),
0 0 0.5vw rgba(255, 0, 0, 0.6),
0 0 1vw rgba(255, 0, 0, 0.6),
0 0 2vw rgba(255, 0, 0, 0.6);
text-shadow:
0 0 1vw rgba(255, 0, 0, 0.6),
0 0 1vw rgba(255, 0, 0, 0.6),
0 0 1vw rgba(255, 0, 0, 0.6);
}
#MGS_helpButton img {
max-width: 80%;
max-height: 80%;
filter: invert(43%) sepia(5%) saturate(6104%) hue-rotate(168deg) brightness(89%) contrast(98%);
}
#MGS_helpContent {
pointer-events: all;
width: 60vw;
height: 82vh;
position: absolute;
transform: translate(-50%, -50%);
z-index: 2000;
padding: 0.5vw;
border-radius: 2vw;
display: none;
opacity: 0; /* init for animation */
transform: scale(0.5); /* init for animation */
transform-origin: top right;
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow:
0px 0px 8px rgba(255, 0, 0, 0.4),
0px 0px 16px rgba(255, 0, 0, 0.4),
0px 0px 24px rgba(255, 0, 0, 0.4);
box-shadow:
inset 0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 1vw rgba(255, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
cursor: pointer;
transition: all ease 0.3s;
}
#MGS_helpContent > #MGS_informations_info {
padding: 4vh;
font-size: 2vh;
overflow-y: auto;
height: 100%;
}
#MGS_helpContent > #MGS_helpContent_close {
position: absolute;
top: -50px;
left: -50px;
cursor: pointer;
width: 100px;
/* Increased from 50px to 100px */
height: 100px;
/* Increased from 50px to 100px */
text-align: center;
line-height: 100px;
/* Increased to match height */
border-radius: 50%;
z-index: 1;
/* Keep this to make sure it overlaps other elements */
font-size: 48px;
/* Increase this for a bigger 'X' */
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow:
0px 0px 8px rgba(255, 0, 0, 0.4),
0px 0px 16px rgba(255, 0, 0, 0.4),
0px 0px 24px rgba(255, 0, 0, 0.4);
box-shadow:
inset 0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 1vw rgba(255, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.8);
background-image: none;
cursor: pointer;
transition: all ease 0.3s;
}
#MGS_helpContent > #MGS_helpContent_close:hover {
transform: scale(1.1);
box-shadow:
inset 0 0 1vw rgba(255, 0, 0, 0.6),
0 0 0.5vw rgba(255, 0, 0, 0.6),
0 0 1vw rgba(255, 0, 0, 0.6),
0 0 2vw rgba(255, 0, 0, 0.6);
text-shadow:
0 0 1vw rgba(255, 0, 0, 0.6),
0 0 1vw rgba(255, 0, 0, 0.6),
0 0 1vw rgba(255, 0, 0, 0.6);
}
</style>\
<script>
(function miningGameInit() {
// canvas and context
let interlink = {}; // interlink object to link different parts of the game
const canvas = document.getElementById('MGS_gameCanvas');
const ctx = canvas.getContext('2d');
//ctx.imageSmoothingEnabled = true; //default: true
// keypress system
const keypressSystem = new MGC_keyPressSystem(interlink);
interlink.keypressSystem = keypressSystem; // interlink
// html overlay
const htmlInterface = new MGC_htmlInterface(interlink);
interlink.htmlInterface = htmlInterface; // interlink
// game map
const worldBlockWidth = 40;
const worldBlockHeight = 3000;
const blockSize = 64; // px/block
const worldWidth = worldBlockWidth * blockSize; // px
const worldHeight = worldBlockHeight * blockSize; // px
const gameMap = new MGC_map(interlink, worldBlockWidth, worldBlockHeight, blockSize);
interlink.gameMap = gameMap; // interlink
// player
const player = new MGC_player(interlink, blockSize*10, blockSize*9, blockSize);
interlink.player = player; // interlink
// camera
const gameCamera = new MGC_camera(interlink, player, gameMap);
interlink.gameCamera = gameCamera; // interlink
// renderer
const renderer = new MGC_renderer(interlink, ctx, gameCamera, blockSize);
interlink.renderer = renderer; // interlink
// before loop init
player.loadFromDatabase(); // try to load from database
htmlInterface.shopGui_updateItems();
htmlInterface.tradeGui_updateItems();
htmlInterface.updateInventory(player);
// game loop
let fps = 0;
let lastTimestamp = 0;
let directFrameDelta = 0; // unfiltered
let frameDelta = 0; // filtered using ema
let ema = 0.1;
function gameLoop(timestamp) {
directFrameDelta = timestamp - lastTimestamp;
lastTimestamp = timestamp;
if (!timestamp) directFrameDelta = 16.67; // first frame, timestamp is undefined
if (!directFrameDelta) directFrameDelta = 16.67; // prevent the weird
directFrameDelta /= 1000; // convert to seconds
directFrameDelta = Math.min(directFrameDelta, 0.5); // prevent spikes (max 0.5s) // 0.1.8b fix
frameDelta = directFrameDelta * ema + frameDelta * (1 - ema); // exponential moving average
fps = 1 / frameDelta; // dev info
ctx.clearRect(0, 0, canvas.width, canvas.height);
gameMap.buildings.forEach(building => {
building.checkEnterCondition(player, gameMap, frameDelta)
});
gameCamera.update(frameDelta); // update camera position
const visibleBlocks = MGF_getVisibleBlocks(gameMap, gameCamera);
const visibleBuildings = MGF_getVisibleBuildings(gameMap, gameCamera);
let canvasIsValid = renderer.render(timestamp, visibleBlocks, visibleBuildings, player); // render everything
//renderer.drawDevInfo(player, fps, gameCamera); // dev info
if (!canvasIsValid) { // 0.1.8b fix
// canvas is not valid, stop the game loop
keypressSystem.removeKeysListeners();
return;
}
player.updateWaterLevel(frameDelta); // update water level
player.checkForInput(keypressSystem, gameMap, frameDelta); // check for input
player.updateAnimation(frameDelta); // update player animation
player.updatePosition(worldWidth, worldHeight, gameMap, frameDelta); // update player position
keypressSystem.update();
requestAnimationFrame(gameLoop);
}
gameLoop();
//-------- HELP INFO ----------//
var helpContent = document.querySelector('.MGS_helpContent');
document.querySelector('.MGS_helpContent_close').addEventListener('click', function () {
helpContent.style.opacity = '0';
helpContent.style.transform = 'scale(0.5)';
setTimeout(function () {
helpContent.style.display = 'none';
}, 300);
});
document.querySelector('.MGS_helpButton').addEventListener('click', function () {
// Check if the div is already displayed
if (helpContent.style.display === 'block' || window.getComputedStyle(helpContent).display === 'block') {
// Hide the div if it's already displayed
helpContent.style.opacity = '0';
helpContent.style.transform = 'scale(0.5)';
setTimeout(function () {
helpContent.style.display = 'none';
}, 300);
} else {
// Show the div if it's not already displayed
helpContent.style.display = 'block';
setTimeout(function () {
helpContent.style.opacity = '1';
helpContent.style.transform = 'scale(1)';
}, 10);
}
});
})();
</script><<script>>
playAudio("music", "forestPeacewood");
<</script>>\
<<nobr>>
<div class="HGS_title">HUNTING</div>
<div class="HGS_exit" onclick="HGS_exitHunting();">EXIT</div>
<div class="HGS_refresh">Change hunting spot</div>
<div class="HGS_effTableTrigger">
<img src="ressources/icons/2E.webp">
</div>
<div class="HGS_effTable">
Hunt Sucess Rate
<table></table>
</div>
<div class="HGS_dialogCont">
<div class="DIAS_message centered DIAS_active">
<div class="DIAS_text">
<p>:D... please contact the devs ????</p>
</div>
</div>
</div>
<div class="HGS_bottom">
<!-- <item>
<div class="HGS_button">HUNT</div>
<div class="HGS_shadow"><div></div></div>
<img class="HGS_img" src="ressources/maingui/logos/fixfap.webp" alt="item">
<div class="HGS_successRate">Challenging</div>
</item> -->
</div>
<div class="HGS_range">
<div class="HGS_targetWall">
<div class="notif">MISS</div>
<img src="ressources/icons/YA_B10.webp">
<div class="HGS_targetCont">
<img src="ressources/icons/YA_B11.webp">
<div class="HGS_targetHitBox">
<img src="ressources/icons/YA_B12.webp">
</div>
</div>
</div>
</div>
<</nobr>>\
<style>
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
height: 100vh;
font-size: 1.75vh;
}
#ui-bar.stowed {
left: -26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
width: 100%;
max-width: 100%;
margin: 0;
height: 100vh;
}
.passage {
height: 100%;
width: 100%;
overflow: hidden;
font-size: 1.25vh;
/*padding: 2vh;*/
position: relative;
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: center;
}
.HGS_title {
position: absolute;
top: 2vh;
left: 50%;
transform: translateX(-50%);
width: 18em;
max-width: 100%;
height: 10vh;
display: flex;
justify-content: center;
align-items: center;
font-size: 3em;
font-weight: bold;
color: #ffffff;
--test_color: rgb(255, 0, 0, 0.6);
background-color: rgba(0, 0, 0, 0.8);
border: 0.1vh solid var(--test_color);
border-radius: 1vh;
text-shadow: 0 0 0.2em var(--test_color),
0 0 0.4em var(--test_color);
box-shadow: inset 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 2vh var(--test_color);
}
.HGS_exit {
position: absolute;
top: 2vh;
right: 2vh;
padding: 0.5em 3em;
font-size: 2em;
font-weight: bold;
color: #ffffff;
border-radius: 0.5em;
--test_color: rgb(255, 0, 0, 0.6);
background-color: rgba(0, 0, 0, 0.8);
border: 0.1vh solid var(--test_color);
border-radius: 1vh;
text-shadow: 0 0 0.2em var(--test_color),
0 0 0.4em var(--test_color);
box-shadow: inset 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 2vh var(--test_color);
cursor: pointer;
transition: text-shadow 0.3s, box-shadow 0.3s;
}
.HGS_exit:hover {
text-shadow: 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 1vh var(--test_color);
box-shadow: inset 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 2vh var(--test_color),
0 0 4vh var(--test_color);
}
.HGS_refresh {
position: absolute;
z-index: 2;
bottom: 10vh;
left: 50%;
transform: translateX(-50%);
padding: 0.5em 3em;
font-size: 2em;
font-weight: bold;
color: #ffffff;
border-radius: 0.5em;
--test_color: rgb(255, 0, 0, 0.6);
background-color: rgba(0, 0, 0, 0.8);
border: 0.1vh solid var(--test_color);
border-radius: 1vh;
text-shadow: 0 0 0.2em var(--test_color),
0 0 0.4em var(--test_color);
box-shadow: inset 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 2vh var(--test_color);
opacity: 0;
pointer-events: none;
cursor: pointer;
transition: text-shadow 0.3s, box-shadow 0.3s;
}
.HGS_refresh:hover {
text-shadow: 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 1vh var(--test_color);
box-shadow: inset 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 2vh var(--test_color),
0 0 4vh var(--test_color);
}
.HGS_effTableTrigger {
position: absolute;
right: 1vh;
top: 13vh;
z-index: 1;
width: 8vh;
aspect-ratio: 1;
border-radius: 50%;
--test_color: rgb(255, 0, 0, 0.6);
background-color: rgba(0, 0, 0, 0.8);
border: 0.1vh solid var(--test_color);
text-shadow: 0 0 0.2em var(--test_color),
0 0 0.4em var(--test_color);
box-shadow: inset 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 2vh var(--test_color);
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
}
.HGS_effTableTrigger img {
height: 100%;
filter: invert(100%);
}
.HGS_effTableTrigger:hover ~ .HGS_effTable {
opacity: 1;
}
.HGS_effTable {
pointer-events: none;
opacity: 0;
position: absolute;
right: 1vh;
top: 13vh;
z-index: 1;
font-size: 1.5em;
background-color: rgba(0, 0, 0, 0.747);
text-align: center;
width: 12em;
color: #fff;
padding: 1vh;
border-radius: 1vh;
display: flex;
flex-direction: column;
box-sizing: border-box;
transition: opacity 0.3s, width 0.4s;
}
.HGS_effTable table {
border-top: solid 0.15em #000000;
padding-top: 0.4em;
border-collapse: separate;
margin: unset;
}
.HGS_effTable td {
padding: 0 0.5vh;
border-radius: 0.6vh;
text-align: center;
color: white;
}
.HGS_dialogCont {
width: 100vh;
max-width: 100%;
max-height: 46vh;
padding: 1vh;
font-size: 1.8em;
}
.HGS_bottom {
max-width: 100%;
margin: 2vh;
min-height: 32vh;
display: flex;
flex-direction: row;
justify-content: center;
}
.HGS_bottom > item {
position: relative;
display: flex;
width: 28vh;
padding: 1vh 2vh;
padding-top: 1vh; /* for successRate */
flex-direction: column-reverse;
justify-content: flex-start;
align-items: center;
background-image: radial-gradient(closest-side, rgba(0, 0, 0, 0.331) 75%, transparent);
opacity: 0;
transition: opacity 0.3s, width 0.4s;
}
.HGS_bottom > item > .HGS_successRate {
position: absolute;
z-index: 2;
top: 0.2em;
right: 0.2em;
padding: 0 0.5em;
max-width: 100%;
font-size: 1.8em;
line-height: 1.3em;
font-weight: bold;
color: #ffffff;
background-image: linear-gradient(to right ,transparent , rgba(0, 0, 0, 0.7) 10%, rgba(0, 0, 0, 0.7) 90%, transparent);
--text-shadow-color: rgb(255, 255, 255);
text-shadow: 0 0 0.2em var(--text-shadow-color), 0 0 0.3em var(--text-shadow-color);
text-align: center;
}
.HGS_bottom > item > img.HGS_img {
width: 100%;
position: relative;
z-index: 1;
filter: drop-shadow(0 0 0.8vh rgba(0, 0, 0, 0.54));
transition: transform 0.3s, filter 0.3s;
}
.HGS_bottom > item > .HGS_shadow {
width: 100%;
height: 2vh;
display: flex;
justify-content: center;
align-items: flex-end;
}
.HGS_bottom > item > .HGS_shadow > div {
width: 100%;
height: 200%;
border-radius: 50%;
background-color: #000000;
filter: blur(0.8vh);
}
.HGS_bottom > item > .HGS_button {
width: 100%;
border-radius: 0.3em;
font-size: 2em;
font-weight: bold;
padding: 0.2em 2em;
margin: 0.5em;
background-color: #000000;
display: flex;
justify-content: center;
align-items: center;
border: 3px solid rgba(255, 0, 0, 0.4);
text-shadow:
0px 0px 8px rgba(255, 0, 0, 0.4),
0px 0px 16px rgba(255, 0, 0, 0.4),
0px 0px 24px rgba(255, 0, 0, 0.4);
box-shadow:
inset 0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 0.5vw rgba(255, 0, 0, 0.4),
0 0 1vw rgba(255, 0, 0, 0.4);
cursor: pointer;
transition: text-shadow 0.3s, box-shadow 0.3s;
}
.HGS_bottom > item > .HGS_button:hover {
text-shadow:
0 0 1vw rgba(255, 0, 0, 0.6),
0 0 1vw rgba(255, 0, 0, 0.6),
0 0 1vw rgba(255, 0, 0, 0.6);
box-shadow:
inset 0 0 1vw rgba(255, 0, 0, 0.6),
0 0 0.5vw rgba(255, 0, 0, 0.6),
0 0 1vw rgba(255, 0, 0, 0.6),
0 0 2vw rgba(255, 0, 0, 0.6);
}
.HGS_bottom > item > .HGS_button:hover ~ img.HGS_img {
transform: translateY(-0.3vh);
filter: drop-shadow(0 0 0.5vh white);
}
.HGS_range {
width: 100%;
height: 100%;
position: absolute;
background-color: rgba(0, 0, 0, 0.5);
z-index: 2;
display: flex;
justify-content: center;
align-items: center;
pointer-events: none;
opacity: 0;
transition: opacity 0.5s;
}
.HGS_range > .HGS_targetWall {
position: relative;
width: 100%;
height: 60vh;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
.HGS_range > .HGS_targetWall > .notif {
position: absolute;
top: 1vh;
z-index: 3;
display: flex;
justify-content: center;
align-items: center;
font-size: 5em;
line-height: 1.3;
padding: 0 2em;
font-weight: bold;
background-image: linear-gradient(to right ,transparent , rgba(0, 0, 0, 0.9) 10%, rgba(0, 0, 0, 0.9) 90%, transparent);
color: #ffffff;
text-shadow: 0 0 0.2em #f00, 0 0 0.3em #f00;
opacity: 0;
transition: opacity 0.3s;
}
.HGS_range > .HGS_targetWall > img {
height: 100%;
}
.HGS_range > .HGS_targetWall > .HGS_targetCont {
position: absolute;
height: 90%;
aspect-ratio: 1/1;
display: flex;
justify-content: center;
align-items: center;
}
.HGS_range > .HGS_targetWall > .HGS_targetCont > img { /* target */
height: 200%; /* 200 is default: 1 */
mix-blend-mode: color-burn;
filter: blur(0.5vh);
}
.HGS_range > .HGS_targetWall > .HGS_targetCont > .HGS_targetHitBox {
position: absolute;
height: 100%;
aspect-ratio: 1/1;
}
.HGS_range > .HGS_targetWall > .HGS_targetCont > .HGS_targetHitBox > img { /* target */
position: absolute;
height: 50%;
top: 0;left: 0;
opacity: 0;
transition: opacity 0.3s;
}
</style>\
<script>
setBackground('ressources/backgrounds/YA.webm');
var HGV_huntSuccess = { // step 2
easy: 0.8, // Easy Hunt ( 80 % Success ) [Green]
regular: 0.5, // Regular Hunt ( 50 % Success ) [Yellow]
challenging: 0.25, // Challenging Hunt ( 25% Success ) [Orange]
hardcore: 0.1, // Hardcore Hunt ( 10 % Success ) [Red]
suicidal: 0.02 // Suicidal Hunt ( 2 % Success ) [Black]
}
var HGV_huntSuccessColor = {
//background, text
easy: ['#0f0', '#000'],
regular: ['#ff0', '#000'],
challenging: ['#f80', '#000'],
hardcore: ['#f00', '#000'],
suicidal: ['#000', '#fff']
}
var HGV_spawnOddsByFloor = { // step 1
1: {
chicken: [0.8, 'regular'], //ex: Chicken (80%) SuccessRate: Regular Hunt (50%)
pig: [0.08, 'regular'],
cow: [0.046, 'challenging'],
deer: [0.033, 'challenging'],
moose: [0.02, 'hardcore'],
wolf: [0.01, 'suicidal'],
bear: [0.01, 'suicidal'],
yeti: [0.001, 'suicidal']
},
2: {
chicken: [0.75, 'regular'],
pig: [0.1, 'regular'],
cow: [0.05, 'challenging'],
deer: [0.04, 'challenging'],
moose: [0.03, 'hardcore'],
wolf: [0.015, 'suicidal'],
bear: [0.013, 'suicidal'],
yeti: [0.002, 'suicidal']
},
3: {
chicken: [0.7, 'regular'],
pig: [0.12, 'regular'],
cow: [0.06, 'challenging'],
deer: [0.045, 'challenging'],
moose: [0.035, 'hardcore'],
wolf: [0.02, 'suicidal'],
bear: [0.015, 'suicidal'],
yeti: [0.005, 'suicidal']
},
4: {
chicken: [0.65, 'easy'],
pig: [0.13, 'regular'],
cow: [0.08, 'regular'],
deer: [0.05, 'challenging'],
moose: [0.04, 'challenging'],
wolf: [0.025, 'hardcore'],
bear: [0.0175, 'suicidal'],
yeti: [0.0075, 'suicidal']
},
5: {
chicken: [0.6, 'easy'],
pig: [0.14, 'regular'],
cow: [0.09, 'regular'],
deer: [0.06, 'challenging'],
moose: [0.05, 'challenging'],
wolf: [0.03, 'hardcore'],
bear: [0.02, 'suicidal'],
yeti: [0.01, 'suicidal']
},
6: {
chicken: [0.55, 'easy'],
pig: [0.16, 'regular'],
cow: [0.1, 'regular'],
deer: [0.07, 'challenging'],
moose: [0.05, 'challenging'],
wolf: [0.04, 'hardcore'],
bear: [0.02, 'suicidal'],
yeti: [0.01, 'suicidal']
},
7: {
chicken: [0.5, 'easy'],
pig: [0.18, 'easy'],
cow: [0.11, 'regular'],
deer: [0.08, 'regular'],
moose: [0.055, 'challenging'],
wolf: [0.045, 'hardcore'],
bear: [0.02, 'hardcore'],
yeti: [0.01, 'suicidal']
},
8: {
chicken: [0.45, 'easy'],
pig: [0.2, 'easy'],
cow: [0.12, 'regular'],
deer: [0.08, 'regular'],
moose: [0.06, 'challenging'],
wolf: [0.045, 'hardcore'],
bear: [0.025, 'hardcore'],
yeti: [0.02, 'suicidal']
},
9: {
chicken: [0.4, 'easy'],
pig: [0.25, 'easy'],
cow: [0.125, 'regular'],
deer: [0.08, 'regular'],
moose: [0.06, 'challenging'],
wolf: [0.04, 'hardcore'],
bear: [0.025, 'hardcore'],
yeti: [0.02, 'suicidal']
},
10: {
chicken: [0.325, 'easy'],
pig: [0.25, 'easy'],
cow: [0.135, 'regular'],
deer: [0.1, 'regular'],
moose: [0.07, 'regular'],
wolf: [0.05, 'challenging'],
bear: [0.04, 'challenging'],
yeti: [0.03, 'hardcore']
},
11: {
chicken: [0.25, 'easy'],
pig: [0.25, 'easy'],
cow: [0.15, 'regular'],
deer: [0.12, 'regular'],
moose: [0.08, 'regular'],
wolf: [0.06, 'challenging'],
bear: [0.05, 'challenging'],
yeti: [0.04, 'hardcore']
},
12: {
chicken: [0.2, 'easy'],
pig: [0.2, 'easy'],
cow: [0.16, 'regular'],
deer: [0.15, 'regular'],
moose: [0.12, 'regular'],
wolf: [0.08, 'challenging'],
bear: [0.05, 'challenging'],
yeti: [0.04, 'hardcore']
},
13: {
chicken: [0.13, 'easy'],
pig: [0.17, 'easy'],
cow: [0.15, 'easy'],
deer: [0.18, 'regular'],
moose: [0.15, 'regular'],
wolf: [0.1, 'regular'],
bear: [0.07, 'challenging'],
yeti: [0.05, 'hardcore']
},
14: {
chicken: [0.1, 'easy'],
pig: [0.15, 'easy'],
cow: [0.15, 'easy'],
deer: [0.2, 'regular'],
moose: [0.16, 'regular'],
wolf: [0.11, 'regular'],
bear: [0.075, 'challenging'],
yeti: [0.055, 'hardcore']
},
15: {
chicken: [0.1, 'easy'],
pig: [0.1, 'easy'],
cow: [0.12, 'easy'],
deer: [0.2, 'regular'],
moose: [0.18, 'regular'],
wolf: [0.14, 'regular'],
bear: [0.09, 'challenging'],
yeti: [0.07, 'hardcore']
},
16: {
chicken: [0.1, 'easy'],
pig: [0.1, 'easy'],
cow: [0.1, 'easy'],
deer: [0.18, 'easy'],
moose: [0.19, 'regular'],
wolf: [0.15, 'regular'],
bear: [0.1, 'regular'],
yeti: [0.08, 'challenging']
},
17: {
chicken: [0.1, 'easy'],
pig: [0.1, 'easy'],
cow: [0.1, 'easy'],
deer: [0.13, 'easy'],
moose: [0.2, 'regular'],
wolf: [0.16, 'regular'],
bear: [0.12, 'regular'],
yeti: [0.09, 'challenging']
},
18: {
chicken: [0.1, 'easy'],
pig: [0.1, 'easy'],
cow: [0.1, 'easy'],
deer: [0.1, 'easy'],
moose: [0.15, 'regular'],
wolf: [0.2, 'regular'],
bear: [0.15, 'regular'],
yeti: [0.1, 'challenging']
},
19: {
chicken: [0.1, 'easy'],
pig: [0.1, 'easy'],
cow: [0.1, 'easy'],
deer: [0.1, 'easy'],
moose: [0.1, 'easy'],
wolf: [0.18, 'regular'],
bear: [0.2, 'regular'],
yeti: [0.12, 'challenging']
},
20: {
chicken: [0.1, 'easy'],
pig: [0.1, 'easy'],
cow: [0.1, 'easy'],
deer: [0.1, 'easy'],
moose: [0.1, 'easy'],
wolf: [0.15, 'easy'],
bear: [0.2, 'regular'],
yeti: [0.15, 'regular']
},
21: {
chicken: [0.1, 'easy'],
pig: [0.1, 'easy'],
cow: [0.1, 'easy'],
deer: [0.1, 'easy'],
moose: [0.1, 'easy'],
wolf: [0.1, 'easy'],
bear: [0.2, 'easy'],
yeti: [0.2, 'regular']
}
};
var HGV_dialogByFloor = {
1 : 'As you step into the serene entrance of the PeaceWood, the gentle rustling of leaves and chirping of birds fill the air. The forest seems inviting, with abundant wildlife roaming freely. You spot potential prey nearby, ready for your first hunt in this new territory.',
2 : 'Venturing deeper into the PeaceWood, the canopy above grows denser, filtering the sunlight into a soft, emerald glow. The forest floor is dotted with mushrooms and wildflowers, and you can hear the distant sounds of animals scurrying about. You ready your weapon, anticipating the hunt ahead.',
3 : 'The heart of the PeaceWood is a tapestry of vibrant green hues and earthy scents. The trees seem to whisper ancient secrets as you navigate the winding trails. You come across a small clearing where wildlife congregates, presenting an opportunity for a successful hunt.',
4 : 'As you progress through the PeaceWood, the atmosphere shifts subtly. The air feels slightly heavier, and the shadows seem to dance with a life of their own. You spot movement in the underbrush, hinting at the presence of more elusive prey. Your senses sharpen as you prepare for the challenge.',
5 : "The PeaceWood's tranquility is occasionally interrupted by the distant calls of exotic birds and the rustling of leaves in the gentle breeze. You find yourself in a lush grove, where the vegetation grows thick and the wildlife seems more abundant. You take aim, ready to test your hunting skills.",
6 : "The deeper reaches of the PeaceWood are shrouded in a mysterious mist that clings to the forest floor. The sounds of nature become muffled, and an eerie stillness settles over the area. You can feel the presence of hidden creatures watching you from the shadows, waiting to be discovered.",
7 : "As you venture further into the PeaceWood, the trees grow taller and the canopy becomes more dense. Shafts of sunlight pierce through the leaves, creating a mesmerizing play of light and shadow on the forest floor. The wildlife here seems more cautious, requiring a keen eye and steady hand to hunt successfully.",
8 : "The heart of the PeaceWood pulses with an ancient energy, as if the forest itself is alive. The air is thick with the scent of moss and wildflowers, and the sounds of nature create a symphonic backdrop. You spot signs of larger, more formidable prey, and steel yourself for the hunt ahead.",
9 : "The PeaceWood seems to whisper secrets as you navigate its winding paths. The trees arch overhead, their branches intertwining to create a natural cathedral. The wildlife here is more elusive, requiring patience and skill to track and hunt.",
10: "As you reach the deeper parts of the PeaceWood, the atmosphere becomes more primal and untamed. The forest seems to pulse with a raw, untapped energy, and the creatures that inhabit it are more formidable. You must rely on your wits and expertise to emerge victorious in the hunt.",
11: "The PeaceWood's heart is a realm of twilight, where the boundaries between light and shadow blur. The air is thick with the scent of ancient trees and hidden secrets. The wildlife here is cunning and swift, demanding a hunter's full attention and skill.",
12: "The depths of the PeaceWood are a testament to nature's resilience and power. The trees stand as silent guardians, their roots twisting and turning beneath the earth. The creatures that call this place home are fierce and well-adapted, presenting a true test of a hunter's prowess.",
13: "As you venture into the farthest reaches of the PeaceWood, the forest seems to come alive with a primal energy. The air crackles with tension, and the shadows seem to move with a will of their own. The wildlife here is the most challenging yet, requiring every ounce of your skill and determination.",
14: "The heart of the PeaceWood is a place of ancient power, where the very essence of nature thrums through the earth and air. The trees seem to whisper ancient secrets, and the creatures that inhabit this realm are the stuff of legends. Only the most skilled and daring hunters venture this far.",
15: "As you delve into the deepest parts of the PeaceWood, the forest takes on an otherworldly quality. The colors seem more vivid, the sounds more melodic, and the very air seems to shimmer with hidden magic. The wildlife here is both beautiful and deadly, requiring a hunter's utmost respect and skill.",
16: "The PeaceWood's innermost sanctum is a place of myths and legends, where the boundary between the natural and supernatural blurs. The trees seem to pulse with an arcane energy, and the creatures that roam these woods are said to possess extraordinary powers. Only the most seasoned hunters dare to test their mettle here.",
17: "As you approach the very core of the PeaceWood, the forest seems to come alive with a symphonic harmony of sounds and sensations. The air is electric with anticipation, and the wildlife here is the most magnificent and challenging you've ever encountered. Every hunt is a true test of skill, courage, and respect for nature's power.",
18: "The heart of the PeaceWood is a realm of secrets and wonders, where the very fabric of reality seems to bend and sway. The trees are ancient sentinels, guarding the forest's deepest mysteries, and the creatures that inhabit this place are the stuff of both dreams and nightmares. Only the most intrepid and skilled hunters dare to venture this far.",
19: "As you stand on the threshold of the PeaceWood's innermost sanctum, you can feel the weight of the forest's ancient power pressing down upon you. The air is thick with the scent of primal magic, and the creatures that roam these woods are the embodiment of nature's raw fury and grace. Every hunt here is a sacred ritual, a dance between predator and prey, hunter and hunted.",
20: "At the very heart of the PeaceWood lies a place of unimaginable beauty and terror, where the boundaries between the mortal world and the realm of spirits dissolve. The trees are ancient gods, the creatures are divine emissaries, and every hunt is a sacred offering to the forces that govern this mystical place. Only the most enlightened and skilled hunters are worthy of setting foot in this ultimate sanctum of nature's power.",
21: "As you step into the deepest, most secluded part of the PeaceWood, you feel as though you've crossed a threshold into another world entirely. The air is thick with an ancient, primal energy that seems to permeate every leaf, every stone, every creature. The wildlife here is the stuff of legends - majestic, powerful, and filled with an almost human-like wisdom. Every hunt in this sacred place is a test not just of skill, but of character, as the forest itself seems to judge whether you are worthy of the honor of taking its bounty. You take a deep breath, steadying yourself for the ultimate challenge that awaits in this mystical heart of the PeaceWood.",
}
var HGV_itemsDrops = { // step 3
chicken: {
eggs: 0.49, // Common
chicken: 0.49, // Common
chickenSkull: 0.02 // Legendary
},
pig: {
pork: 0.70, // Common
butter: 0.20, // Uncommon
bacon: 0.10 // Rare
},
cow: {
steak: 0.80, // Common
milk: 0.15, // Rare
filetMignon: 0.05 // Epic
},
deer: {
venison: 0.80, // Uncommon
primeVenison: 0.05, // Legendary
deerToes: 0.15 // Rare
},
moose: {
mooseMeat: 0.85, // Uncommon
mooseAntler: 0.10, // Rare
mooseThickSkin: 0.05 // Legendary
},
wolf: {
wolfMeat: 0.83, // Rare
wolfFur: 0.15, // Epic
wolfFang: 0.02 // Mythical
},
bear: {
bearMeat: 0.72, // Rare
bearFur: 0.20, // Epic
bearBones: 0.08 // Legendary
},
yeti: {
yetiMeat: 0.85, // Epic
primeYetiMeat: 0.02, // Mythical
yetiFur: 0.13 // Legendary
}
};
var HGV_animalsData = {
chicken: { name: 'Chicken', img: 'ressources/icons/YA_B1.webp' },
pig: { name: 'Pig', img: 'ressources/icons/YA_B2.webp' },
cow: { name: 'Cow', img: 'ressources/icons/YA_B3.webp' },
deer: { name: 'Deer', img: 'ressources/icons/YA_B4.webp' },
moose: { name: 'Moose', img: 'ressources/icons/YA_B5.webp' },
wolf: { name: 'Wolf', img: 'ressources/icons/YA_B6.webp' },
bear: { name: 'Bear', img: 'ressources/icons/YA_B7.webp' },
yeti: { name: 'Yeti', img: 'ressources/icons/YA_B8.webp' }
};
function HGF_setup() {
let floor = SV.huntingGame.currentFloor;
//title
/* let title = document.querySelector('.HGS_title');
let floorLastString = floor.toString()[floor.toString().length - 1];
console.log('floorLastString', floorLastString);
let ordinal = floorLastString === '1' ? 'ST' : floorLastString === '2' ? 'ND' : floorLastString === '3' ? 'RD' : 'TH';
ordinal = floor === 11 || floor === 12 || floor === 13 ? 'TH' : ordinal;
title.innerHTML = `${floor}${ordinal} FLOOR HUNTING`; */
//dialog
let dialog = document.querySelector('.HGS_dialogCont > .DIAS_message > .DIAS_text > p');
dialog.innerHTML = HGV_dialogByFloor[floor];
// table
let tableCont = document.querySelector('.HGS_effTable');
let table = tableCont.querySelector('table');
table.innerHTML = '';
let hardness = Object.keys(HGV_huntSuccess);
for (let i = 0; i < hardness.length; i++) {
let tr = document.createElement('tr');
let trName = document.createElement('td');
trName.innerHTML = hardness[i];
trName.style.backgroundColor = HGV_huntSuccessColor[hardness[i]][0];
trName.style.color = HGV_huntSuccessColor[hardness[i]][1];
tr.appendChild(trName);
let trPercentage = document.createElement('td');
let percentage = Math.round(HGV_huntSuccess[hardness[i]] * 100);
trPercentage.innerHTML = `${percentage}%`;
tr.appendChild(trPercentage);
table.appendChild(tr);
}
}
function HGF_update() {
let previousArr = SV.huntingGame.previousHuntAnimals;
let currentFloor = SV.huntingGame.currentFloor;
if (previousArr === undefined) return;
let animals = [];
if (previousArr.length === 0) {
animals = HGF_findAnimals(currentFloor); //step 1
} else {
animals = previousArr;
}
HGF_createItems(currentFloor, animals);
}
function HGF_findAnimals(floor) { // step 1
let spawnOdds = HGV_spawnOddsByFloor[floor];
let animals = Object.keys(spawnOdds);
let animalSlots = [];
for (let i = 0; i < 3; i++) { // 3 slots
for (let j = animals.length - 1; j >= 0; j--) {
if (Math.random() < spawnOdds[animals[j]][0]) {
animalSlots.push(animals[j]);
break;
}
}
}
if (animalSlots.length === 0) {
return HGF_findAnimals(floor); // try again :P
} else {
return animalSlots;
}
}
function HGF_createItems(floor, animals) {
//make the html with event listeners
var spawnOdds = HGV_spawnOddsByFloor[floor];
var bottom = document.querySelector('.HGS_bottom');
bottom.innerHTML = '';
for (let i = 0; i < animals.length; i++) {
let item = document.createElement('item');
let animalData = HGV_animalsData[animals[i]];
let HGS_button = document.createElement('div');
HGS_button.classList.add('HGS_button');
HGS_button.innerHTML = 'HUNT';
item.appendChild(HGS_button);
HGS_button.addEventListener('click', function() {
HGF_hunt(item, floor, animals[i]);
});
let HGS_shadow = document.createElement('div');
HGS_shadow.classList.add('HGS_shadow');
let shadow = document.createElement('div');
HGS_shadow.appendChild(shadow);
item.appendChild(HGS_shadow);
let HGS_img = document.createElement('img');
HGS_img.classList.add('HGS_img');
HGS_img.src = animalData.img;
HGS_img.alt = animalData.name;
item.appendChild(HGS_img);
let HGS_successRate = document.createElement('div');
HGS_successRate.classList.add('HGS_successRate');
HGS_successRate.innerHTML = spawnOdds[animals[i]][1];
HGS_successRate.style.setProperty('--text-shadow-color', HGV_huntSuccessColor[spawnOdds[animals[i]][1]][1]);
HGS_successRate.style.color = HGV_huntSuccessColor[spawnOdds[animals[i]][1]][0];
item.appendChild(HGS_successRate);
bottom.appendChild(item);
setTimeout(function() {
if (item === null) return;
item.style.opacity = 1;
}, 100 * i);
}
}
function HGF_hunt(itemEl, floor, animalKey) {
let successRateKey = HGV_spawnOddsByFloor[floor][animalKey][1];
let success = Math.random() < HGV_huntSuccess[successRateKey];
let targetSize = HGV_huntSuccess[successRateKey];
console.log('Hunt:', success, successRateKey, targetSize);
targetSize = Math.min(Math.max(targetSize, 0.15), 1);
let rangeEl = document.querySelector('.HGS_range');
let targetEl = document.querySelector('.HGS_range > .HGS_targetWall > .HGS_targetCont > img');
let arrowEl = document.querySelector('.HGS_range > .HGS_targetWall > .HGS_targetCont > .HGS_targetHitBox > img');
let notifEl = document.querySelector('.HGS_range > .HGS_targetWall > .notif');
let dialog = document.querySelector('.HGS_dialogCont > .DIAS_message');
dialog.classList.remove('DIAS_active');
let canExitEarly = false;
let exitedEarly = false;
let clickRange = function() {
if (!canExitEarly) return;
exitRange();
exitedEarly = true;
}
let exitRange = function() {
if (rangeEl === null) return;
rangeEl.style.opacity = 0;
rangeEl.style.pointerEvents = 'none';
notifEl.style.opacity = 0;
arrowEl.style.opacity = 0;
itemEl.remove();
HGF_checkIfEmpty();
rangeEl.removeEventListener('click', clickRange);
}
rangeEl.style.opacity = 1;
rangeEl.style.pointerEvents = 'all';
HGF_placeArrow(success, targetSize);
targetEl.style.height = `${targetSize * 200}%`; // 200% is default
playAudio("sfx", "YA_B1.mp3"); //external function
rangeEl.addEventListener('click', clickRange);
setTimeout(function() {
if (rangeEl === null) return;
arrowEl.style.opacity = 1;
playAudio("sfx", "YA_B2.mp3");
}, 700);
setTimeout(function() {
if (rangeEl === null) return;
arrowEl.style.opacity = 1;
}, 1000);
setTimeout(function() {
if (rangeEl === null) return;
notifEl.innerHTML = success ? 'HIT' : 'MISS';
notifEl.style.opacity = 1;
itemEl.style.width = '0vh';
itemEl.style.opacity = 0;
success ? HGS_giveLoot(animalKey) : null;
canExitEarly = true;
}, 1300);
setTimeout(function() {
if (exitedEarly) return;
exitRange();
}, 3000);
}
function HGF_placeArrow(hasHit, targetSize) {
//target Size is in between 0.2 and 1
let arrow = document.querySelector('.HGS_targetHitBox > img');
let topOffset = -9;
let leftOffset = -3;
let hitboxSizeMultiplier = 0.5;
let theta = Math.random() * 2 * Math.PI;
let r = Math.random();
let x = 0;
let y = 0;
if (hasHit) { // find a coord inside the circle
x = (r * Math.cos(theta)) * targetSize * 0.5;
y = (r * Math.sin(theta)) * targetSize * 0.5;
} else { // find a coord outside the circle
r = r * (1 - targetSize*0.5) + targetSize*0.5;
x = (r * Math.cos(theta))
y = (r * Math.sin(theta))
}
y = Math.min(0.8, y); // out of bounds in gui
x = x * hitboxSizeMultiplier * 100 + leftOffset + 50;
y = y * hitboxSizeMultiplier * 100 + topOffset + 50;
arrow.style.left = `${x}%`;
arrow.style.top = `${y}%`;
}
function HGS_giveLoot(animalKey) {
let loot = HGV_itemsDrops[animalKey];
let lootKeys = Object.keys(loot);
let lootKey = '';
let lootChance = 0;
//let lootkeys = [];
for (let i = 0; i < lootKeys.length; i++) {
lootKey = lootKeys[i];
lootChance = loot[lootKey];
if (Math.random() < lootChance) {
console.log('Loot:', lootKey);
modVariable("add", "item", lootKey, 1);
}
}
}
function HGF_checkIfEmpty() {
let bottom = document.querySelector('.HGS_bottom');
if (bottom?.innerHTML === '') {
let refresh = document.querySelector('.HGS_refresh');
refresh.style.opacity = 1;
refresh.style.pointerEvents = 'all';
refresh.addEventListener('click', HGS_changeHuntingSpot, { once: true });
}
}
function HGS_changeHuntingSpot() {
let currentFloor = SV.huntingGame.currentFloor;
let refresh = document.querySelector('.HGS_refresh');
refresh.style.opacity = 0;
refresh.style.pointerEvents = 'none';
nextPartOfDay(); //inside function.js. add times
perPassageScript(); //inside function.js. (also updates the sidebar)
SB_mainRefresh(); //external function
let animals = HGF_findAnimals(currentFloor);
HGF_createItems(currentFloor, animals);
}
function HGS_exitHunting() {
nextPartOfDay(); //inside function.js. add times
exitHuntingGame(); //external function
}
HGF_setup();
HGF_update();
</script><<script>>
playAudio("music", "forestPeacewood");
<</script>>\
<<nobr>>
<div class="GGS_title">GATHERING</div>
<div class="GGS_exit" onclick="GGS_exitGathering();">EXIT</div>
<div class="GGS_refresh" onclick="GGS_changeGatheringSpot()">Change Gathering Spot</div>
<div class="GGS_dialogCont">
<div class="DIAS_message centered DIAS_active">
<div class="DIAS_text">
<p>🤣🫵 Something went wrong, please contact the devs <a href="https://discord.gg/jEpjVQdXkX" target="_blank">Discord</a> :D</p>
</div>
</div>
</div>
<div class="GGS_bottom">
<bush onclick="GGF_gather()">
<div class="GGS_shadow"><div></div></div>
<img src="" alt="bush">
</bush>
</div>
<div class="GGS_scroller">
<!-- item>
<div class="GGS_bobble">
<img class="GGS_item" src="ressources/icons/I1ED9.webp" alt="item">
<img class="GGS_overlay" src="ressources/icons/YA_C5.svg" alt="item">
<number>1%</number>
</div>
</item -->
</div>
<</nobr>>\
<style>
#story {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 26vh;
height: 100vh;
font-size: 1.75vh;
}
#ui-bar.stowed {
left: -26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
width: 100%;
max-width: 100%;
margin: 0;
height: 100vh;
}
.passage {
height: 100%;
width: 100%;
overflow: hidden;
font-size: 1.25vh;
position: relative;
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: center;
align-items: center;
align-content: stretch;
padding-right: 23vh;
padding-top: 13vh;
}
.GGS_title {
position: absolute;
top: 2vh;
width: 18em;
max-width: 100%;
height: 10vh;
display: flex;
justify-content: center;
align-items: center;
font-size: 3em;
font-weight: bold;
color: #ffffff;
--test_color: rgb(255, 0, 0, 0.6);
background-color: rgba(0, 0, 0, 0.8);
border: 0.1vh solid var(--test_color);
border-radius: 1vh;
text-shadow: 0 0 0.2em var(--test_color),
0 0 0.4em var(--test_color);
box-shadow: inset 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 2vh var(--test_color);
}
.GGS_exit {
position: absolute;
top: 2vh;
right: 2vh;
padding: 0.5em 3em;
font-size: 2em;
font-weight: bold;
color: #ffffff;
border-radius: 0.5em;
--test_color: rgb(255, 0, 0, 0.6);
background-color: rgba(0, 0, 0, 0.8);
border: 0.1vh solid var(--test_color);
border-radius: 1vh;
text-shadow: 0 0 0.2em var(--test_color),
0 0 0.4em var(--test_color);
box-shadow: inset 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 2vh var(--test_color);
cursor: pointer;
transition: text-shadow 0.3s, box-shadow 0.3s;
}
.GGS_exit:hover {
text-shadow: 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 1vh var(--test_color);
box-shadow: inset 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 2vh var(--test_color),
0 0 4vh var(--test_color);
}
.GGS_refresh {
position: absolute;
z-index: 2;
bottom: 10vh;
padding: 0.5em 3em;
font-size: 2em;
font-weight: bold;
color: #ffffff;
border-radius: 0.5em;
--test_color: rgb(255, 0, 0, 0.6);
background-color: rgba(0, 0, 0, 0.8);
border: 0.1vh solid var(--test_color);
border-radius: 1vh;
text-shadow: 0 0 0.2em var(--test_color),
0 0 0.4em var(--test_color);
box-shadow: inset 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 2vh var(--test_color);
opacity: 0;
pointer-events: none;
cursor: pointer;
transition: text-shadow 0.3s, box-shadow 0.3s;
}
.GGS_refresh:hover {
text-shadow: 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 1vh var(--test_color);
box-shadow: inset 0 0 1vh var(--test_color),
0 0 1vh var(--test_color),
0 0 2vh var(--test_color),
0 0 4vh var(--test_color);
}
.GGS_dialogCont {
width: 100vh;
max-width: 100%;
max-height: 46vh;
padding: 1vh;
font-size: 1.8em;
transition: opacity 0.3s;
}
.GGS_bottom {
align-self: end;
position: relative;
width: 100%;
margin: 0;
min-height: 32vh;
display: flex;
flex-direction: row;
justify-content: center;
}
.GGS_bottom > bush {
position: relative;
display: flex;
width: 61vh;
padding: 1vh 2vh;
padding-top: 1vh; /* for successRate */
flex-direction: column-reverse;
justify-content: flex-start;
align-items: center;
/* opacity: 0; */
transition: opacity 0.3s, width 0.4s;
}
.GGS_bottom > bush > img {
width: 100%;
filter: drop-shadow(0 0 0.8vh rgb(0, 0, 0));
cursor: pointer;
transition: transform 0.3s, filter 0.3s;
}
.GGS_bottom > bush > img:hover {
transform: translateY(-0.3vh);
filter: drop-shadow(0 0 0.5vh white);
}
.GGS_bottom > bush > img.GGS_flash {
transform: translateY(-0.3vh);
filter: drop-shadow(0 0 0.5vh white);
}
.GGS_bottom > bush > .GGS_shadow {
width: 110%;
height: 0;
display: flex;
justify-content: center;
align-items: flex-end;
}
.GGS_bottom > bush > .GGS_shadow > div {
width: 100%;
height: 8vh;
border-radius: 50%;
background-color: hsla(0, 0%, 75%, 0.826);
filter: blur(0.8vh);
}
.GGS_scroller {
position: absolute;
right: 2vh;
bottom: 2vh;
top: 15vh;
background-color: aqua;
width: 20.5vh;
border-radius: 2vh;
border: solid 0.2vh #000000;
background: #151313;
box-shadow: inset 0 0 2em rgba(157, 64, 64, 0.445);
overflow: hidden;
}
.GGS_scroller > item {
position: relative;
width: 100%;
aspect-ratio: 1;
border-radius: 50%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
--GGS_rarity_color: #ffffff;
}
.GGS_scroller > item > .GGS_bobble {
position: relative;
width: 90%;
aspect-ratio: 1;
border-radius: 50%;
background-color: #00000099;
/* border: solid 0.2vh #000000; */
border-style: solid;
border-width: 0.2vh;
border-color: #000000;
display: flex;
justify-content: center;
align-items: center;
transition: border-color 0.3s;
}
.GGS_scroller > item.GGS_active > .GGS_bobble {
border-color: var(--GGS_rarity_color);
}
.GGS_scroller > item > .GGS_bobble > img.GGS_item {
width: 80%;
aspect-ratio: 1;
filter: drop-shadow(0 0 0.5vh black);
transition: filter 0.3s;
}
.GGS_scroller > item.GGS_active > .GGS_bobble > img.GGS_item {
filter: drop-shadow(0 0 0.5vh var(--GGS_rarity_color));
}
.GGS_scroller > item > .GGS_bobble > .GGS_overlay {
position: absolute;
width: 100%;
aspect-ratio: 1;
border-radius: 50%;
/* black to white*/
stroke: white;
opacity: 0;
animation: GGS_scroller_overlay_animation 3s infinite;
transition: opacity 0.3s, fill 0.3s;
}
.GGS_scroller > item.GGS_active > .GGS_bobble > .GGS_overlay {
opacity: 1;
stroke: var(--GGS_rarity_color)
}
.GGS_scroller > item > .GGS_bobble > number {
position: absolute;
text-align: center;
padding: 0.1em 0.1em;
border-radius: 0.2em;
font-size: 3em;
line-height: 1;
background-color: rgba(0, 0, 0, 0.7);
box-shadow: 0 0 0.2em rgba(0, 0, 0, 0.7), 0 0 0.5em rgba(0, 0, 0, 0.7);
}
@keyframes GGS_scroller_overlay_animation {
0% { transform: rotate(0deg); scale: 1.08; }
to { transform: rotate(360deg); scale: 1.08; }
}
</style>\
<script>
setBackground('ressources/backgrounds/YA.webm');
var GGV_oddsByFloor = {
1: {
type: "fruit",
list: {
apple: 0.75,
orange: 0.14,
peach: 0.06,
cherry: 0.03,
watermelon: 0.015,
greenApple: 0.005,
},
},
2: {
type: "vegetable",
list: {
potato: 0.75,
carrot: 0.14,
cabbage: 0.06,
onion: 0.03,
tomato: 0.015,
pepper: 0.005,
},
},
3: {
type: "plant",
list: {
rottenDRoot: 0.75,
herbs: 0.14,
dRoot: 0.06,
wheats: 0.03,
primeDRoot: 0.015,
honey: 0.005,
},
},
4: {
type: "misc",
list: {
nut: 0.75,
mushrooms: 0.14,
peanuts: 0.06,
greenMushrooms: 0.03,
almonds: 0.015,
pistachios: 0.005,
},
},
5: {
type: "fruit",
list: {
apple: 0.7,
orange: 0.15,
peach: 0.08,
cherry: 0.04,
watermelon: 0.02,
greenApple: 0.01,
},
},
6: {
type: "vegetable",
list: {
potato: 0.7,
carrot: 0.15,
cabbage: 0.08,
onion: 0.04,
tomato: 0.02,
pepper: 0.01,
},
},
7: {
type: "plant",
list: {
rottenDRoot: 0.7,
herbs: 0.15,
dRoot: 0.08,
wheats: 0.04,
primeDRoot: 0.02,
honey: 0.01,
},
},
8: {
type: "misc",
list: {
nut: 0.7,
mushrooms: 0.15,
peanuts: 0.08,
greenMushrooms: 0.04,
almonds: 0.02,
pistachios: 0.01,
},
},
9: {
type: "fruit",
list: {
apple: 0.6,
orange: 0.2,
peach: 0.1,
cherry: 0.06,
watermelon: 0.03,
greenApple: 0.01,
},
},
10: {
type: "vegetable",
list: {
potato: 0.6,
carrot: 0.2,
cabbage: 0.1,
onion: 0.06,
tomato: 0.03,
pepper: 0.01,
},
},
11: {
type: "plant",
list: {
rottenDRoot: 0.6,
herbs: 0.2,
dRoot: 0.1,
wheats: 0.06,
primeDRoot: 0.03,
honey: 0.01,
},
},
12: {
type: "misc",
list: {
nut: 0.6,
mushrooms: 0.2,
peanuts: 0.1,
greenMushrooms: 0.06,
almonds: 0.03,
pistachios: 0.01,
},
},
13: {
type: "fruit",
list: {
apple: 0.5,
orange: 0.24,
peach: 0.12,
cherry: 0.08,
watermelon: 0.04,
greenApple: 0.02,
},
},
14: {
type: "vegetable",
list: {
potato: 0.5,
carrot: 0.24,
cabbage: 0.12,
onion: 0.08,
tomato: 0.04,
pepper: 0.02,
},
},
15: {
type: "plant",
list: {
rottenDRoot: 0.5,
herbs: 0.24,
dRoot: 0.12,
wheats: 0.08,
primeDRoot: 0.04,
honey: 0.02,
},
},
16: {
type: "misc",
list: {
nut: 0.5,
mushrooms: 0.24,
peanuts: 0.12,
greenMushrooms: 0.08,
almonds: 0.04,
pistachios: 0.02,
},
},
17: {
type: "fruit",
list: {
apple: 0.4,
orange: 0.21,
peach: 0.18,
cherry: 0.12,
watermelon: 0.06,
greenApple: 0.03,
},
},
18: {
type: "vegetable",
list: {
potato: 0.4,
carrot: 0.21,
cabbage: 0.18,
onion: 0.12,
tomato: 0.06,
pepper: 0.03,
},
},
19: {
type: "plant",
list: {
rottenDRoot: 0.4,
herbs: 0.21,
dRoot: 0.18,
wheats: 0.12,
primeDRoot: 0.06,
honey: 0.03,
},
},
20: {
type: "misc",
list: {
nut: 0.4,
mushrooms: 0.21,
peanuts: 0.18,
greenMushrooms: 0.12,
almonds: 0.06,
pistachios: 0.03,
},
},
};
var GGV_dialogByFloor = {
1 : "As you wander through the peaceful woods, you stumble upon a bountiful orchard. Apples are plentiful, making up the majority of the fruits you find. Oranges and peaches are scattered about, while cherries and watermelons prove to be more elusive. You even manage to spot a rare green apple, a true treasure in this forest.",
2 : "The forest floor is rich with vegetables, ready for harvest. Potatoes are the most common, followed by a decent amount of carrots. Cabbages and onions are harder to come by, while tomatoes and peppers are truly rare finds. You gather a diverse selection, excited to use them in your meals.",
3 : "As you forage through the undergrowth, you discover an abundance of plants. Rotten D-Roots are everywhere, but you manage to find some useful herbs and a few precious D-Roots. Wheats and prime D-Roots are scarce, but you do stumble upon a small amount of honey, a sweet and valuable find.",
4 : "The forest is full of miscellaneous edibles. Nuts are the most prevalent, followed by a good amount of mushrooms. Peanuts and green mushrooms are less common, while almonds and pistachios are the rarest treats. You gather a bit of everything, appreciating the variety the forest has to offer.",
5 : "The fruit trees in this part of the forest are slightly less generous. Apples still dominate, but oranges and peaches are a bit more common than before. Cherries and watermelons are still hard to find, but you manage to collect a few. Green apples remain the rarest and most prized fruit.",
6 : "The vegetable patches here are similar to the previous area. Potatoes and carrots make up the bulk of your harvest, with cabbages and onions being less abundant. Tomatoes and peppers are still the rarest vegetables, but you're lucky enough to find a couple of each.",
7 : "The plant life in this section of the forest is comparable to the earlier area. Rotten D-Roots are the most common, followed by herbs and regular D-Roots. Wheats and prime D-Roots are still scarce, but you manage to find a bit more honey than before.",
8 : "The miscellaneous edibles in this part of the forest mirror the previous area. Nuts and mushrooms are the most plentiful, followed by peanuts and green mushrooms. Almonds and pistachios remain the rarest finds, but you're fortunate enough to gather a few.",
9 : "As you venture deeper into the forest, the fruit distribution shifts. Apples are still the most common, but oranges and peaches are more abundant than before. Cherries and watermelons are easier to find, while green apples remain elusive but obtainable.",
10: "The vegetable patches in this area are similar to the previous one. Potatoes and carrots are still the most plentiful, but cabbages and onions are slightly more common. Tomatoes and peppers are a bit easier to find, but still relatively rare.",
11: "The plant life here is comparable to the earlier sections. Rotten D-Roots dominate, followed by herbs and regular D-Roots. Wheats and prime D-Roots are a bit more abundant, and you manage to find a decent amount of honey.",
12: "The miscellaneous edibles in this part of the forest are similar to the previous areas. Nuts and mushrooms are the most common, followed by peanuts and green mushrooms. Almonds and pistachios are slightly easier to find, but still the rarest of the bunch.",
13: "As you reach the heart of the forest, the fruit distribution becomes more balanced. Apples are still common, but oranges and peaches are almost as abundant. Cherries and watermelons are much easier to find, and green apples are no longer as rare as they once were.",
14: "The vegetable patches here are more diverse. Potatoes and carrots are still common, but cabbages and onions are nearly as plentiful. Tomatoes and peppers are easier to find, making your harvest more colorful and varied.",
15: "The plant life in this area is rich and varied. Rotten D-Roots are still common, but herbs and regular D-Roots are almost as abundant. Wheats and prime D-Roots are much easier to find, and honey is no longer a rare treat.",
16: "The miscellaneous edibles here are more evenly distributed. Nuts and mushrooms are still the most common, but peanuts and green mushrooms are nearly as plentiful. Almonds and pistachios are easier to find, adding variety to your gatherings.",
17: "As you near the end of your journey through the PeaceWood, the fruit trees are generous with their bounty. Apples are still common, but oranges, peaches, and cherries are all abundant. Watermelons and green apples are much easier to find, making your final harvest a sweet success.",
18: "The vegetable patches in this area are bountiful. Potatoes and carrots are still common, but cabbages, onions, tomatoes, and peppers are all readily available. Your final vegetable harvest is diverse and plentiful.",
19: "The plant life here is rich and rewarding. Rotten D-Roots are still common, but herbs, regular D-Roots, wheats, and prime D-Roots are all abundant. Honey is also much easier to find, providing a sweet end to your foraging journey.",
20: "The miscellaneous edibles in this final area are a treasure trove. Nuts and mushrooms are still common, but peanuts, green mushrooms, almonds, and pistachios are all readily available. Your final gathering is a diverse and satisfying mix of forest treats.",
21: "As you reach the very heart of the PeaceWood, you stumble upon a mythical grove. The trees here bear the rarest and most prized fruits, vegetables, and nuts. Green apples, peppers, honey, and pistachios are abundant, making this final gathering a truly legendary haul. You leave the forest with a sense of wonder and gratitude for the magical bounty you've been granted.",
}
var GGV_bushData = {
fruit: { img: 'ressources/icons/YA_C3.webp' },
vegetable: { img: 'ressources/icons/YA_C1.webp' },
plant: { img: 'ressources/icons/YA_C2.webp' },
misc: { img: 'ressources/icons/YA_C3.webp' },
};
function GGF_setup() {
let floor = SV.gatheringGame.currentFloor;
let dialog = document.querySelector('.GGS_dialogCont > .DIAS_message > .DIAS_text > p');
dialog.innerHTML = GGV_dialogByFloor[floor];
let bush = document.querySelector('.GGS_bottom > bush > img');
bush.src = GGV_bushData[GGV_oddsByFloor[floor].type].img;
GGF_scroller_setup(floor);
GGF_bushFlashing_setup();
}
function GGF_bushFlashing_setup() {
let bush = document.querySelector('.GGS_bottom > bush > img');
let isHovered = false;
bush.addEventListener('mouseenter', () => {isHovered = true;});
bush.addEventListener('mouseleave', () => {isHovered = false;});
let bushFInterval = setInterval(() => {
if (isHovered) return;
bush.classList.add('GGS_flash');
setTimeout(() => {
bush.classList.remove('GGS_flash');
}, 200);
setTimeout(() => {
bush.classList.add('GGS_flash');
}, 300);
setTimeout(() => {
bush.classList.remove('GGS_flash');
}, 500);
}, 4000);
$(document).one(':passageinit', e => {
clearInterval(bushFInterval);
});
}
/* function GGF_update(floor) {
// put the bush back
let bush = document.querySelector('.GGS_bush');
} */
function GGF_gather() {
let dialog = document.querySelector('.GGS_dialogCont');
dialog.style.opacity = 0;
let nbOfAudio = 3;
let randAudioIndex = Math.floor(Math.random() * nbOfAudio) + 1;
playAudio("sfx", `YA_C${randAudioIndex}.mp3`);
setTimeout(() => {
GGF_gathered();
}, 700);
let bush = document.querySelector('.GGS_bottom > bush');
bush.style.pointerEvents = 'none';
}
function GGF_gathered() {
let floor = SV.gatheringGame.currentFloor;
let items = GGV_oddsByFloor[floor].list;
let total = 0;
for (let item in items) {
total += items[item];
}
let rand = Math.random() * total;
let sum = 0;
let keys = Object.keys(items);
let index = 0;
for (let item in items) {
sum += items[item];
if (rand < sum) {
itemFound = item;
index = keys.indexOf(item);
break;
}
}
GGF_scroller_selectItem(index, itemFound);
modVariable('add', 'item', itemFound, 1);
let refresh = document.querySelector('.GGS_refresh');
refresh.style.opacity = 1;
refresh.style.pointerEvents = 'all';
let bush = document.querySelector('.GGS_bottom > bush');
bush.style.opacity = 0;
}
function GGS_changeGatheringSpot() {
let items = document.querySelectorAll('.GGS_scroller > item');
for (let item of items) {
item.classList.remove('GGS_active');
}
GGF_scroller_startIdle();
let refresh = document.querySelector('.GGS_refresh');
refresh.style.opacity = 0;
refresh.style.pointerEvents = 'none';
let bush = document.querySelector('.GGS_bottom > bush');
bush.style.opacity = 1;
bush.style.pointerEvents = 'all';
nextPartOfDay(); //inside function.js. add times
perPassageScript(); //inside function.js. (also updates the sidebar)
SB_mainRefresh(); //external function
}
// -------- Scroller
if (GGV_scrollInterval !== undefined) { //HOTFIX :D
clearInterval(GGV_scrollInterval);
}
var GGV_scrollerCont = null;
var GGV_itemNb = 0;
var GGV_scrollInterval = null;
var GGV_scrollSpeed = 3; // Adjust the scroll speed as needed
var GGV_targetIndex = null;
function GGF_scroller_setup(floor) {
GGV_itemNb = GGF_scrollerAppendItems(floor);
GGV_scrollerCont = document.querySelector('.GGS_scroller');
//let firstItem = GGV_scrollerCont.querySelector('item');
//let contHeight = GGV_scrollerCont.clientHeight;
//let itemHeight = firstItem.clientHeight;
// Start the idle scrolling
GGF_scroller_startIdle();
}
function GGF_scroller_selectItem(index, item) {
//if (index < 2) {
index += GGV_itemNb;
//}
GGV_targetIndex = index;
GGF_scroller_scrollToItem();
let itemData = gameData.inventory.items[item];
let rarityColor = gameData.illustration.rarity[itemData.rarity].color;
console.log(rarityColor);
let items = GGV_scrollerCont.querySelectorAll('item');
items[index].classList.add('GGS_active');
items[index].setAttribute('style', `--GGS_rarity_color: ${rarityColor};`);
}
function GGF_scroller_startIdle() {
GGV_targetIndex = null;
GGV_scrollInterval = setInterval(() => {
GGV_scrollerCont.scrollTop += GGV_scrollSpeed;
if (GGV_scrollerCont.scrollTop >= GGV_scrollerCont.scrollHeight / 2) {
GGV_scrollerCont.scrollTop = 0;
}
}, 16);
$(document).one(':passageinit', e => {
clearInterval(GGV_scrollInterval);
});
}
function GGF_scroller_scrollToItem() {
clearInterval(GGV_scrollInterval);
let contHeight = GGV_scrollerCont.clientHeight;
let itemHeight = GGV_scrollerCont.querySelector('item').getBoundingClientRect().height; // dude how do you get the height of an element
let targetScrollTop = itemHeight * GGV_targetIndex + itemHeight / 2 - contHeight / 2;
let startScrollTop = GGV_scrollerCont.scrollTop;
let distance = targetScrollTop - startScrollTop;
let duration = 500; // Adjust the duration as needed for smooth scrolling
let startTime = Date.now();
function scrollStep() {
let currentTime = Date.now();
let elapsedTime = currentTime - startTime;
let percentage = Math.min(elapsedTime / duration, 1);
GGV_scrollerCont.scrollTop = startScrollTop + distance * percentage;
if (elapsedTime < duration) {
setTimeout(scrollStep, 16); // Adjust the timeout as needed for smooth scrolling
} else {
GGV_targetIndex = null;
// Do not resume scrolling after the animation finishes
}
}
scrollStep();
}
// --------
function GGF_scrollerAppendItems(floor) {
let GGV_scrollerCont = document.querySelector('.GGS_scroller');
GGV_scrollerCont.innerHTML = '';
let items = GGV_oddsByFloor[floor].list;
for (let i = 0; i < 2; i++) {
for (let item in items) {
let itemData = gameData.inventory.items[item];
let itemCont = document.createElement('item');
let itemBobble = document.createElement('div');
itemBobble.classList.add('GGS_bobble');
let itemImg = document.createElement('img');
itemImg.classList.add('GGS_item');
let itemOverlay = document.createElementNS("http://www.w3.org/2000/svg", "svg");
itemOverlay.classList.add('GGS_overlay');
let itemNumber = document.createElement('number');
itemCont.appendChild(itemBobble);
itemBobble.appendChild(itemImg);
itemBobble.appendChild(itemOverlay);
itemBobble.appendChild(itemNumber);
itemImg.src = itemData.image;
itemNumber.innerHTML = `${Math.round(items[item] * 1000) * 0.1}%`;
/* <svg width="400" height="400">
<circle stroke-dasharray="37.3" cx="100" cy="100" r="95" fill="none" stroke="red" stroke-width="10" stroke-linecap="round"></circle>
</svg> */
itemOverlay.setAttribute('xmlns',"http://www.w3.org/2000/svg");
itemOverlay.setAttribute('width', '200');
itemOverlay.setAttribute('height', '200');
itemOverlay.setAttribute('viewBox', '0 0 200 200');
itemOverlay.innerHTML = `<circle stroke-dasharray="37.3" cx="100" cy="100" r="95" fill="none" stroke-width="10" stroke-linecap="round"></circle>`;
GGV_scrollerCont.appendChild(itemCont);
}
}
return Object.keys(items).length;
}
function GGS_exitGathering() {
nextPartOfDay(); //inside function.js. add times
exitGatheringGame(); //external function
}
GGF_setup();
//GGF_update(); //idk if this is needed - TODO
</script><<script>>playAudio("music", "forestPeacewood");<</script>>\
<<nobr>>
<<if $tutorial.tutowoodchop is 1>>
<<goto "4B">>
<</if>>
<<set $tutorial.tutowoodchop to 1>>
<div class="tutorial" id="tutorial">
<div class="map" id="map-section">
<div class="containerbox2">
<h1>Wood chopping tutorial</h1>
<div class="spacerui"></div>
<div class="textui"> Wood Chopping is a vital activity in the game, allowing you to gather wood from the forest. This resource is essential for various constructions and upgrades within the Shelter. The mini-game challenges you to chop down as many trees as possible within a set time frame, with each tree type requiring a different number of hits to be felled. </div>
<<TUTORIALMENU>>
</div>
</div>
<div class="uihelp" id="uihelp-section">
<div class="containerbox2">
<h1>Wood chopping tutorial</h1>
<div class="spacerui"></div>
<div class="textui">
<img class="img-ui" src="ressources/icons/4V.webp">
<br>
<br> ➀ <b>Tree Icons</b>: There are three types of trees you can chop: small, medium, and large. Each tree icon varies in style and size to represent its type. <br>
<br> ➁ <b>Timer Bar</b>: Located at the top of the screen, this bar shows the remaining time you have to chop trees. Once the timer runs out, the mini-game ends, and you'll receive the total wood collected. <br>
<br> ➂ <b>Wood Counter</b>: This counter, usually at the bottom or side of the screen, shows the amount of wood you've gathered so far.
</div>
<<TUTORIALMENU>>
</div>
</div>
<div class="mechanism" id="mechanism-section">
<div class="containerbox2">
<h1>Wood chopping tutorial</h1>
<div class="spacerui"></div>
<div class="textui">
<b>Click to Chop</b>: Click on a tree to start chopping it. The number of clicks required depends on the tree's size. <br>
<br>
<b>Tree Types</b>: <br> Small trees require fewer clicks but yield less wood. <br>
<br>
<img class="img-tree" src="ressources/icons/4D.webp">
<br>
<br> Medium trees take more clicks and provide a moderate amount of wood. <br>
<br>
<img class="img-tree" src="ressources/icons/4L.webp">
<br>
<br> Large trees need the most clicks but offer the most wood. <br>
<br>
<img class="img-tree" src="ressources/icons/4P.webp">
<br>
<br>
<b>Time Management</b>: The mini-game is time-sensitive. Strategize to maximize wood collection within the given time. <br>
<br>
<b>Day Progression</b>: After the mini-game concludes, the game's time will advance (e.g., from morning to afternoon).
</div>
<<TUTORIALMENU>>
</div>
</div>
<div class="goals" id="goals-section">
<div class="containerbox2">
<h1>Wood chopping tutorial</h1>
<div class="spacerui"></div>
<div class="textui">
<b>Resource Gathering</b>: The primary goal is to gather as much wood as possible within the time limit. <br>
<br>
<b>Strategic Chopping</b>: Decide which trees to chop based on their size and your current needs. Sometimes, focusing on smaller trees for quick wood might be beneficial, while other times, investing time in larger trees for a bigger yield might be the better strategy. <br>
<br>
<b>Time Efficiency</b>: Aim to use the allotted time wisely to maximize your wood collection, considering the game's time progression post mini-game.
</div>
<<TUTORIALMENU>>
</div>
</div>
<div class="enter-button" onclick="nextBloc()">Understood</div>
</div>
<</nobr>>\
<style>
body {
background-image: url('ressources/backgrounds/4A.webp');
/* font-size: 0.9vw; */
overflow: hidden;
}
::-webkit-scrollbar {
width: 1vw;
}
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
-webkit-box-shadow: inset 0 0 6px rgb(214, 211, 211);
border-radius: 10px;
}
#story {
max-height: 100vh;
}
#passages {
width: 100%;
max-width: 100%;
margin: 0;
height: 100vh;
}
.container {
display: flex;
align-items: center;
justify-content: space-around;
max-width: 100vw;
margin: auto;
height: 90vh;
}
.button {
position: relative;
cursor: pointer;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); /* Adjusted opacity */
}
.containerbox2 > .textui > img.img-tree {
width: 50%;
}
b {
margin-top: 10%;
}
</style>\
<script>
function nextBloc() {
playPassage('4B');
}
function openTuto() {
document.getElementById('tutorial').style.display = "block";
}
function showSection(sectionId) {
const sections = ['map-section', 'uihelp-section', 'mechanism-section', 'goals-section'];
sections.forEach(id => {
document.getElementById(id).style.display = (id === sectionId) ? 'block' : 'none';
});
}
function showMap() {
showSection('map-section');
}
function showUIHelp() {
showSection('uihelp-section');
}
function showMechanism() {
showSection('mechanism-section');
}
function showGoals() {
showSection('goals-section');
}
</script><<nobr>>
<!-- audio autoplay loop>
<source src="ressources/forest/woodchopping/birds-chirping.mp3" type="audio/mp3">
</audio -->
<<set _trees = {
small: {
hp: [7, 13, 20],
img: ['4D', '4F', '4H', '4J'],
wood: [2, 2, 5]
},
medium: {
hp: [13, 27, 40],
img: ['4L', '4M', '4N', '4O'],
wood: [4, 4, 10]
},
large: {
hp: [27, 53, 80],
img: ['4P', '4Q', '4R', '4S'],
wood: [5, 5, 15]
}
}>>
<<TREES>>
<<set _timeUp to 0>>
<<set _endgame to 0>>
<<set _endgamebox to 0>>
<<set _woodcounter to 0>>
<<if isNightTime()>>
<div class="filter"></div>
<style>body {background-image: url('ressources/backgrounds/4A.webp')}</style>
<<else>>
<style>body {background-image: url('ressources/backgrounds/4B.webp')}</style>
<</if>>
<div class="woodcounter">
<img class="woodicon" src="ressources/icons/I1MA1.webp">
<h1 id="woodcounterValue">_woodcounter</h1>
</div>
<div id="app"></div>
<img @id="_tree1.id" onclick="$.wiki('<<WOODCUTTING _tree1>>')" @class="_tree1.class" @src="`ressources/icons/${ST.trees[_tree1.size].img[0]}.webp`">
<img @id="_tree2.id" onclick="$.wiki('<<WOODCUTTING _tree2>>')" @class="_tree2.class" @src="`ressources/icons/${ST.trees[_tree2.size].img[0]}.webp`">
<img @id="_tree3.id" onclick="$.wiki('<<WOODCUTTING _tree3>>')" @class="_tree3.class" @src="`ressources/icons/${ST.trees[_tree3.size].img[0]}.webp`">
<img @id="_tree4.id" onclick="$.wiki('<<WOODCUTTING _tree4>>')" @class="_tree4.class" @src="`ressources/icons/${ST.trees[_tree4.size].img[0]}.webp`">
<img @id="_tree5.id" onclick="$.wiki('<<WOODCUTTING _tree5>>')" @class="_tree5.class" @src="`ressources/icons/${ST.trees[_tree5.size].img[0]}.webp`">
<img @id="_tree6.id" onclick="$.wiki('<<WOODCUTTING _tree6>>')" @class="_tree6.class" @src="`ressources/icons/${ST.trees[_tree6.size].img[0]}.webp`">
<img @id="_tree7.id" onclick="$.wiki('<<WOODCUTTING _tree7>>')" @class="_tree7.class" @src="`ressources/icons/${ST.trees[_tree7.size].img[0]}.webp`">
<<repeat 1s>>
<<if _endgamebox is 0 && (_endgame gte 7 || _timeUp is 1)>>
<<set _endgamebox to 1>>
<<addclass "#app" "hidden">>
<div class="endgamebox">
<div class="DIAS_button" onclick="nextBloc(event)">Good</div>
<p class="endtitle"><b><<= _timeUp is 1 ? "TIME'S UP!" : "ALL TREES CHOPPED!">></b></p>
<p>Trees chopped: _endgame</p>
<p>Wood earned: _woodcounter</p>
</div>
<<run endgame()>>
<</if>>
<</repeat>>
<<timed 15s>>
<<set _timeUp = 1>>
<div id="anticlick"></div>
<</timed>>
<</nobr>>\
<style>
@keyframes fade-in3 {
0% {
opacity: 0;
height: 0;
width: 59.259vh;
} to {
opacity: 0.9;
height: 20vh;
width: 59.259vh;
}
}
body {
overflow: hidden;
}
p {
margin-bottom: 2.963vh;
text-align: center;
}
.endgamebox {
z-index: 110;
position: absolute;
color: white;
width: 45.926vh;
left: 83vh;
opacity: 0;
border-radius: 1.481vh;
animation: fade-in3 1s forwards;
background-color: rgba(0, 0, 0, 0.7);
border-radius: 15px;
box-shadow: 0px 0px 20px rgba(255, 0, 0, 0.5);
height: 15vh;
left: 0;
right: 0;
margin: auto;
}
.endtitle {
font-size: 20px;
margin-top: 1.481vh;
margin-bottom: 2.963vh;
text-align: center;
}
.base-timer {
position: absolute;
left: 0;
width: 14.815vh;
height: 14.815vh;
margin-top: -1.481vh;
z-index: 3;
}
.base-timer__svg {
transform: scaleX(-1);
}
.base-timer__circle {
fill: none;
stroke: none;
}
.base-timer__path-elapsed {
stroke-width: 0.733vh;
stroke: grey;
}
#base-timer-path-remaining {
stroke-width: 0.733vh;
stroke-linecap: round;
transform: rotate(90deg);
transform-origin: center;
transition: 1s linear all;
fill-rule: nonzero;
stroke: currentColor;
}
#base-timer-path-remaining.green {
color: rgb(65, 184, 131);
}
#base-timer-path-remaining.orange {
color: orange;
}
#base-timer-path-remaining.red {
color: red;
}
#base-timer-label {
position: relative;
top: -12vh;
display: flex;
align-items: center;
justify-content: center;
font-size: 4.19vh;
z-index: 3;
}
.tree {
position: absolute;
}
.tree:hover {
opacity: 0.8;
}
.tree1 {
width: 14.815vh;
height: 11.852vh;
margin-left: -29.63vh;
margin-top: 44vh;
}
.tree2 {
width: 14.815vh;
height: 17.778vh;
margin-left: -29.63vh;
margin-top: 37.037vh;
}
.tree3 {
width: 14.815vh;
height: 14.815vh;
margin-left: -29.63vh;
margin-top: 44vh;
}
.tree4 {
width: 29.63vh;
height: 23.704vh;
margin-left: 22.222vh;
margin-top: 47.407vh;
}
.tree5 {
width: 22.222vh;
height: 29.63vh;
margin-left: 22.222vh;
margin-top: 40vh;
}
.tree6 {
width: 29.63vh;
height: 29.63vh;
margin-left: 22.222vh;
margin-top: 44.444vh;
}
.tree7 {
width: 14.815vh;
height: 11.852vh;
margin-left: 7.407vh;
margin-top: 42vh;
}
.tree8 {
width: 14.815vh;
height: 17.778vh;
margin-left: 7.407vh;
margin-top: 35vh;
}
.tree9 {
width: 14.815vh;
height: 14.815vh;
margin-left: 7.407vh;
margin-top: 38vh;
}
.tree10 {
width: 22.222vh;
height: 16.296vh;
margin-left: 97vh;
margin-top: 40vh;
}
.tree11 {
width: 16.296vh;
height: 22.222vh;
margin-left: 97vh;
margin-top: 40vh;
}
.tree12 {
width: 22.222vh;
height: 22.222vh;
margin-left: 97vh;
margin-top: 40vh;
}
.tree13 {
width: 32.593vh;
height: 25.185vh;
margin-left: -14.815vh;
margin-top: 56.296vh;
}
.tree14 {
width: 25.185vh;
height: 32.593vh;
margin-left: -14.815vh;
margin-top: 48.889vh;
}
.tree15 {
width: 32.593vh;
height: 32.593vh;
margin-left: -14.815vh;
margin-top: 50.37vh;
}
.tree16 {
width: 26.667vh;
height: 20.741vh;
margin-left: 65vh;
margin-top: 55vh;
}
.tree17 {
width: 20.741vh;
height: 26.667vh;
margin-left: 65vh;
margin-top: 55vh;
}
.tree18 {
width: 26.667vh;
height: 26.667vh;
margin-left: 65vh;
margin-top: 55vh;
}
.tree19 {
width: 14.815vh;
height: 11.852vh;
margin-left: 54vh;
margin-top: 42vh;
}
.tree20 {
width: 11.852vh;
height: 14.815vh;
margin-left: 54vh;
margin-top: 39vh;
}
.tree21 {
width: 14.815vh;
height: 14.815vh;
margin-left: 54vh;
margin-top: 39vh;
}
#anticlick {
position: absolute;
left: -50vw;
top: -50vh;
height: 200vh;
width: 200vw;
background-color: red;
opacity: 0;
}
.filter {
position: absolute;
left: -50vw;
top: -50vh;
height: 200vh;
width: 200vw;
background-color: #0f0b47;
opacity: 0.2;
z-index: 2;
pointer-events: none;
}
#story {
/* Specify the cursor image */
cursor: url('ressources/icons/4T.webp'), auto;
cursor-size: 10vw;
height: 100vh;
margin: 2.5em;
}
#story:active {
/* Specify the cursor image */
cursor: url('ressources/icons/4U.webp'), auto;
}
h1 {
width: 50%;
margin: 0;
margin: auto;
margin-left: 0.5vw;
color: white;
text-align: center;
}
@keyframes bop {
0% {transform: translateY(0)}
50% {transform: translateY(-10px)}
to {transform: translateY(0)}
}
.bop {
animation: bop 0.2s;
}
/* .neon-button2 {
position: absolute;
left: 0;
right: 0;
margin: auto;
margin-top: 24vh;
} */
.DIAS_button {
position: absolute;
top: 24vh;
left: 0;
right: 0;
width: 40%;
margin: auto;
}
.woodcounter {
width: 15vw;
max-width: 200px;
border: 0.296vh black solid;
background-color: rgba(0, 0, 0, 0.7);
border-radius: 15px;
box-shadow: 0px 0px 20px rgba(255, 0, 0, 0.5);
object-fit: contain;
display: flex;
flex-direction: row-reverse;
position: absolute;
right: 0;
}
.woodicon {
width: 40%;
margin: 1vw;
}
</style>\
<script>
(() => {
playAudio("music", "forestPeacewood");
UIBar.hide();
/*loop trough all item in equipment*/
let power = 0;
for (let item in SV.inventory.menuInv.equipment.list) {
let itemEq = SV.inventory.menuInv.equipment.list[item];
let itemKey = itemEq.key;
if (!itemKey) { continue; }
let itemObj = gameData.inventory.items[itemKey];
if (!(itemObj.type == "equipment")) { continue; }
if (!(itemObj.type2 == "handheld")) { continue; }
if (!(itemObj.type3 == "axe")) { continue; }
if (itemObj.power == undefined) { continue; }
power += itemObj.power;
}
if (power > 0) {
ST.axepower = power;
} else {
ST.axepower = 1;
}
const counterValueElem = document.getElementById('woodcounterValue');
const woodcounterElem = document.querySelector('.woodcounter');
const FULL_DASH_ARRAY = 283;
const TIME_LIMIT = 15;
const WARNING_THRESHOLD = 10;
const ALERT_THRESHOLD = 5;
const COLOR_CODES = {
info: {
color: "green"
},
warning: {
color: "orange",
threshold: WARNING_THRESHOLD
},
alert: {
color: "red",
threshold: ALERT_THRESHOLD
}
};
let timeLeft = TIME_LIMIT;
// This function updates the time left and the visual representation
function startTimer() {
const baseTimerLabel = document.getElementById('base-timer-label')
const timerInterval = setInterval(() => {
timeLeft--;
baseTimerLabel.innerHTML = formatTime(timeLeft);
setCircleDasharray();
setRemainingPathColor(timeLeft);
if (timeLeft === 0) {
clearInterval(timerInterval);
}
}, 1000);
$(document).one(':passageinit', e => {
clearInterval(timerInterval);
});
};
function formatTime(time) {
const minutes = Math.floor(time / 60);
let seconds = time % 60;
if (seconds < 10) {
seconds = `0${seconds}`;
}
return `${minutes}:${seconds}`;
}
function setRemainingPathColor(timeLeft) {
const { alert, warning, info } = COLOR_CODES;
const element = document.getElementById('base-timer-path-remaining');
// Remove old color and apply new
element.classList.remove(info.color, warning.color, alert.color);
if (timeLeft <= alert.threshold) {
element.classList.add(alert.color);
} else if (timeLeft <= warning.threshold) {
element.classList.add(warning.color);
} else {
element.classList.add(info.color);
}
}
function calculateTimeFraction() {
const rawTimeFraction = timeLeft / TIME_LIMIT;
return rawTimeFraction - (1 / TIME_LIMIT) * (1 - rawTimeFraction);
}
function setCircleDasharray() {
const circleDasharray = `${(calculateTimeFraction() * FULL_DASH_ARRAY).toFixed(0)} 283`;
document.getElementById('base-timer-path-remaining').setAttribute('stroke-dasharray', circleDasharray);
}
function addWood(value) {
ST.woodcounter += value;
counterValueElem.innerHTML = ST.woodcounter;
// Apply the "bop" class to trigger the animation
woodcounterElem.classList.add('bop');
// Remove the "bop" class after the animation ends
setTimeout(function () {
woodcounterElem.classList.remove('bop');
}, 200);
}
// Render the timer initially
document.getElementById('app').innerHTML = `
<div class="base-timer">
<svg class="base-timer__svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<g class="base-timer__circle">
<circle class="base-timer__path-elapsed" cx="50" cy="50" r="45"></circle>
<path
id="base-timer-path-remaining"
stroke-dasharray="283"
class="${COLOR_CODES.info.color}"
d="
M 50, 50
m -45, 0
a 45,45 0 1,0 90,0
a 45,45 0 1,0 -90,0
"
></path>
</g>
</svg>
<span id="base-timer-label">${formatTime(timeLeft)}</span>
</div>
`;
window.addWood = addWood;
startTimer();
})();
function endgame() {
SV.achievements.eventTrigger.woodChopping_1 += ST.woodcounter;
nextPartOfDay();
}
//NEXT BLOC
function nextBloc(event) {
event.stopPropagation();
UIBar.show();
modVariable("add", "item", "wood", ST.woodcounter);
playPassage('2A1');
}
</script><<nobr>>
<<if isNightTime()>>
<div class="filter"></div>
<</if>>
<img id="pic" class="rod" src="ressources/icons/5C.webp" alt="A" draggable="false">
<<set _delay to `${random(3,7)}s`>>
<<repeat _delay>>
<!-- audio autoplay>
<source src="ressources/sounds/5B.mp3" type="audio/mp3">
</audio -->
<<run playAudio("sfx", "5B.mp3")>>
<img id="splash" src="ressources/icons/5E.webp">
<div class="boutonfish" onmousedown="$.wiki('<<FISH>>')"></div>
<<timed 1.5s>>
<<run $('.macro-repeat').empty()>>
<</timed>>
<</repeat>>
<<if $tutorial.tutorialfishing is 0>>
<div class="Paragraph">
<p>Welcome to the fishing pond. To hook a fish, click on the fishing rod when some bubbles appear.</p>
</div>
<</if>>
<</nobr>>\
<style>
body {
font-family: sans-serif;
background-image: url('ressources/backgrounds/2A_1.webp');
background-position: left;
position: absolute;
margin: 0;
overflow: hidden;
}
#story {
width: 100vw;
height: 100vh;
overflow-y: auto; /* Add a scrollbar if the content is longer than the screen */
margin: 0;
margin-left: 26vh;
}
#story::before {
opacity: 0;
transition: opacity 1s ease-in-out; /* Adjust duration as needed */
}
#passages {
width: 100%;
max-width: 100%;
margin: 0;
height: 100vh;
}
.passage {
width: 100%;
height: 100vh;
transition-property: none;
}
.passage-in,
.passage-out {
opacity: 0;
}
.Paragraph {
font-size: 2.5vh;
width: 90vh;
max-width: 100%;
opacity: 1;
position: absolute;
z-index: 3;
left: 0;
right: 0;
top: 80vh;
margin: auto;
border-radius: 1.481vh;
animation: fadeInOpacity 1s forwards;
background-color: rgba(0, 0, 0, 0.7);
box-shadow: 0px 0px 20px rgba(255, 0, 0, 0.5);
color: white;
padding: 1vw;
}
p {
margin-top: 0;
}
/* Adjust the story area when the UI bar is open */
html[data-ui-bar='true'] #story {
width: calc(100vw - 17.5em); /* Adjust for the 17.5em sidebar width */
}
/* Adjustments for smaller screens */
@media screen abhnd (max-width: 800px) {
html[data-ui-bar='true'] #story {
width: 100vw;
}
}
.rod {
position: absolute;
margin: auto;
left: 0;
right: 0;
bottom: 18vh;
width: 80vh;
max-width: 100%;
padding-left: 120px;
}
#splash {
z-index: 1;
position: absolute;
margin: auto;
left: 0;
right: 0;
bottom: 20vh;
width: 80vh;
max-width: 100%;
padding-left: 120px;
}
.boutonfish {
z-index: 100;
position: relative;
left: 0;
top: 0;
height: 100%;
width: 100%;
cursor: pointer;
}
.filter {
position: absolute;
left: -50vw;
top: -50vh;
height: 200vh;
width: 200vw;
background-color: #0f0b47;
opacity: 0.2;
z-index: 2;
pointer-events: none;
}
</style>\
<script>
(() => {
playAudio("music", "forestPeacewood");
const picElement = document.getElementById('pic');
const sound = new Audio('ressources/sounds/5A.mp3');
sound.volume = SugarCube.settings.sfx;
document.querySelector('.passage').addEventListener('mousedown', e => {
picElement.src = 'ressources/icons/5D.webp';
sound.play();
document.addEventListener('mouseup', () => {
picElement.src = 'ressources/icons/5C.webp';
sound.pause();
sound.currentTime = 0;
}, { once: true });
});
})();
</script><<nobr>>
<<set $tutorial.tutorialfishing to 0>>
<<set _fish = gameData.inventory.items[$fish]>>
<<if isNightTime()>>
<div class="filter"></div>
<</if>>
<img id="pic" class="rod" src="ressources/icons/5C.webp" alt="A" draggable="false">
<div id="canvas-wrapper">
<canvas id="canvas" width="66" height="579"></canvas>
</div>
<div id="settings" style="display:none">
<label class="hidden">
Effective fishing level: <small title="Fishing level + food buff. Master enchantment adds 1 and cork bobber adds 3. Training rod sets this to at least 5.">(?)</small>
<input type="number" id="level" value="0">
</label>
<label class="hidden">
Difficulty:
<small>(see <a href="https://stardewvalleywiki.com/Fish#Fish_Types">the wiki</a> for specific values)</small>
<<switch _fish.rarity>>
<<case 0>>
<<if $fish is "uglyFish">><input type="number" id="difficulty" value="70">
<<else>><input type="number" id="difficulty" value="30">
<</if>>
<<case 1>><input type="number" id="difficulty" value="35">
<<case 2>><input type="number" id="difficulty" value="40">
<<case 3>><input type="number" id="difficulty" value="50">
<<case 4>><input type="number" id="difficulty" value="60">
<<case 5>><input type="number" id="difficulty" value="70">
<</switch>>
</label>
<label class="hidden">
Behavior:
<select id="behavior" class="hidden">
<option value="mixed" selected="">Mixed</option>
<option value="dart">Dart</option>
<option value="smooth">Smooth</option>
<option value="floater">Floater</option>
<option value="sinker">Sinker</option>
</select>
<p id="accuracy"></p>
</label>
<label class="hidden"><input class="hidden" type="checkbox" id="treasure"> Spawn treasure chests (currently unimplemented)</label>
<ul class="hidden">
<label class="hidden"><input type="checkbox" id="trap-bobber"> Trap Bobber</label>
<label class="hidden"><input type="checkbox" id="lead-bobber" checked> Lead Bobber</label>
<label class="hidden"><input type="checkbox" id="barbed-hook"> Barbed Hook</label>
<label class="hidden"><input type="checkbox" id="treasure-hunter"> Treasure Hunter</label>
</ul>
</div>
<<if $tutorial.tutorialfishing is 0>>
<div class="Paragraph">
<p>Something caught your line! Click anywhere to try to reel it in. You must keep the fish (yellow circle) in the green bar to catch it.</p>
</div>
<</if>>
<</nobr>>\
<style>
body {
font-family: sans-serif;
background-image: url('ressources/backgrounds/2A_1.webp');
background-position: left;
position: absolute;
margin: 0;
overflow: hidden;
}
#story::before {
opacity: 0;
transition: opacity 1s ease-in-out; /* Adjust duration as needed */
}
#story {
width: 100vw;
height: 100vh;
overflow-y: auto; /* Add a scrollbar if the content is longer than the screen */
margin: 0;
margin-left: 26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
width: 100%;
max-width: 100%;
margin: 0;
height: 100vh;
}
.passage {
width: 100%;
height: 100vh;
transition-property: none;
}
.passage-in,
.passage-out {
opacity: 0;
}
.Paragraph {
font-size: 2.5vh;
width: 90vh;
max-width: 100%;
opacity: 1;
position: absolute;
z-index: 3;
left: 0;
right: 0;
top: 80vh;
margin: auto;
border-radius: 1.481vh;
animation: fadeInOpacity 1s forwards;
background-color: rgba(0, 0, 0, 0.7);
box-shadow: 0px 0px 20px rgba(255, 0, 0, 0.5);
color: white;
padding: 1vw;
}
p {
margin-top: 0;
}
/* Adjust the story area when the UI bar is open */
html[data-ui-bar='true'] #story {
width: calc(100vw - 17.5em); /* Adjust for the 17.5em sidebar width */
}
/* Adjustments for smaller screens */
@media screen abhnd (max-width: 800px) {
html[data-ui-bar='true'] #story {
width: 100vw;
}
}
.rod {
position: absolute;
margin: auto;
left: 0;
right: 0;
bottom: 18vh;
width: 80vh;
max-width: 100%;
padding-left: 120px;
}
.filter {
position: absolute;
left: -50vw;
top: -50vh;
height: 200vh;
width: 200vw;
background-color: #0f0b47;
opacity: 0.2;
z-index: 2;
pointer-events: none;
}
#settings {
position: absolute;
}
#canvas-wrapper {
border: 5px solid black;
padding: 15px;
background-image: url('ressources/icons/5A.webp');
background-size: cover;
border-radius: 1em;
width: 66px;
height: 579px;
position: absolute;
z-index: 3;
top: 0;
bottom: 0;
margin: auto;
margin-left: 50px;
}
#canvas-wrapper > canvas {
height: 100%;
max-width: unset;
}
[title] {
cursor: help;
}
label {
display: block;
margin-bottom: 0.5em;
}
input, select {
display: block;
}
input[type=number] {
width: 3.5em;
}
input[type=radio], input[type=checkbox] {
display: inline-block;
}
.input-list {
list-style-type: none;
margin: 0 0 0.5em;
padding: 0;
}
.input-list>label {
display: list-item;
margin: 0;
}
#start_1 {
position: absolute;
width: 66px;
height: 579px;
padding: 100vh;
}
#start_1:hover {
cursor: pointer;
}
</style>\
<script>
(() => {
playAudio("music", "forestPeacewood");
const picElement = document.getElementById('pic');
const sound = new Audio('ressources/sounds/5A.mp3');
document.querySelector('.passage').addEventListener('mousedown', e => {
picElement.src = 'ressources/icons/5D.webp';
sound.play();
document.addEventListener('mouseup', () => {
stopSfx();
picElement.src = 'ressources/icons/5C.webp';
}, { once: true });
});
function stopSfx() {
sound.pause();
sound.currentTime = 0;
}
function rand(min, max) {
return min + Math.floor(Math.random() * (max - min));
}
function el(s) {
return document.getElementById(s);
}
console.log("RAN");
const pondSize = 568;
let mouseDown = false;
document.querySelector('.passage').addEventListener('mousedown', function(e) {
mouseDown = true;
document.addEventListener('mouseup', () => {
mouseDown = false
}, { once: true });
});
const canvas = el('canvas');
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'transparent';
ctx.lineWidth = 2;
ctx.fillRect(6, 1, 32, pondSize);
document.querySelector('.passage').addEventListener('click', function() {
const x = document.querySelector('.Paragraph');
if (x) x.style.display = "none";
console.log("CLICKED");
var trapBobber = el('trap-bobber').checked;
var leadBobber = el('lead-bobber').checked;
var barbedHook = el('barbed-hook').checked;
var treasureHunter = el('treasure-hunter').checked;
var treasure = el('treasure').checked;
var difficulty = parseInt(el('difficulty').value);
var behavior = el('behavior').value;
var barSize = 150 + 8 * parseInt(el('level').value);
var barPos = pondSize - barSize;
var barVel = 0;
var fishPos = 508;
var fishVel = 0;
var fishBaseVel = 0;
var fishTarget = (1 - difficulty / 100) * 548;
var progress = 300;
var fishingTime = 0;
var inBarTime = 0;
var interval = setInterval(function() {
if (Math.random() < difficulty * (behavior === 'smooth' ? 0.005 : 0.00025) && (fishTarget === -1 || behavior !== 'smooth')) {
var percent = Math.min(99, difficulty + rand(10, 45)) * 0.01;
fishTarget = fishPos + rand(Math.ceil(-fishPos), Math.floor(pondSize - 20 - fishPos) * percent);
}
if (fishTarget != -1 && Math.abs(fishPos - fishTarget) > 3) {
var fishAccel = (fishTarget - fishPos) / (rand(10, 30) + Math.max(0, 100 - difficulty));
fishVel += (fishAccel - fishVel) / 5;
} else if (behavior !== 'smooth' && Math.random() < 0.0005 * difficulty)
fishTarget = fishPos + (Math.random() < 0.5 ? rand(-100, -51) : rand(50, 101))
else
fishTarget = -1;
if (behavior === 'dart' && Math.random() < 0.001 * difficulty)
fishTarget = fishPos + (Math.random() < 0.5 ? rand(-100 - difficulty * 2, -51) : rand(50, 101 + difficulty * 2))
if (behavior === 'floater')
fishBaseVel = Math.max(fishBaseVel - 0.01, -1.5);
else if (behavior === 'sinker')
fishBaseVel = Math.min(fishBaseVel + 0.01, 1.5);
fishTarget = Math.max(-1, Math.min(fishTarget, pondSize - 20));
fishPos = Math.max(0, Math.min(fishPos + fishVel + fishBaseVel, pondSize - 36));
var wasInBar = (fishPos + 44 <= barPos + barSize || barPos >= pondSize - barSize - 4) && fishPos + 16 >= barPos;
var bacc = mouseDown ? -0.25 : 0.25
if (wasInBar) {
bacc *= 0.6;
progress += 2;
if (barbedHook) {
bacc *= 0.5;
if (fishPos + 16 < barPos + barSize / 2)
barVel -= 0.2;
else
barVel += 0.2;
}
} else if (!treasureHunter /* TODO add treasure check */) {
if (trapBobber)
progress -= 2;
else
progress -= 3;
}
progress = Math.max(0, Math.min(progress, 1000));
barVel += bacc;
barPos += barVel;
// check for the bar hitting the edge
if (barPos < 0) {
barPos = 0;
barVel = mouseDown ? 0 : -2/3 * barVel;
} else if (barPos + barSize > pondSize) {
barPos = pondSize - barSize;
barVel = mouseDown ? 0 : (leadBobber ? -0.1 : -2/3) * barVel;
}
fishingTime++;
if (wasInBar)
inBarTime++;
el('accuracy').innerText = `Accuracy: ${Math.round(100 * inBarTime / fishingTime)}%`;
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = 'transparent';
ctx.fillRect(6, 1, 32, pondSize);
ctx.fillStyle = 'lime';
if (!wasInBar)
ctx.globalAlpha = 0.4;
ctx.fillRect(5, 1 + barPos, 32, barSize);
ctx.globalAlpha = 1;
ctx.strokeRect(5, 1 + barPos, 32, barSize);
if (progress >= 1000) {
ctx.fillStyle = 'green';
stopSfx();
playPassage('5C');
} else if (progress <= 0) {
ctx.fillStyle = 'red';
stopSfx();
playPassage('2A1');
} else
ctx.fillStyle = 'yellow';
ctx.beginPath();
ctx.ellipse(22, 25 + fishPos, 15, 15, Math.PI / 4, 0, 2 * Math.PI);
ctx.fill();
ctx.stroke();
// ctx.globalAlpha = 0.5;
// ctx.fillStyle = 'red';
// ctx.fillRect(60, 5 + fishPos, 40, 40);
// ctx.globalAlpha = 1;
ctx.fillStyle = 'lime';
ctx.fillRect(50, (1000 - progress) * 0.57, 16, progress * 0.57);
}, 16);
$(document).one(':passageinit', e => {
clearInterval(interval);
});
}, { once: true });
})();
</script><<nobr>>
<<set _fish = gameData.inventory.items[$fish]>>
<<set $tutorial.tutorialfishing to 1>>
<<set $achievements.eventTrigger.firstSplashSuccess_1 to true>>
<<if isNightTime()>>
<div class="filter"></div>
<</if>>
<div class="successbox">
<img class="fish" @src="_fish.image">
<p class="p1">You caught something!</p>
<<switch _fish.rarity>>
<<case 0>>
<p class="p2"><b>_fish.name - Common</b></p>
<<set _sfx = "80A.mp3">>
<<case 1>>
<p class="p2" style="color: forestgreen;"><b>_fish.name - Uncommon</b></p>
<<set _sfx = "80B.mp3">>
<<case 2>>
<p class="p2" style="color: dodgerblue;"><b>_fish.name - Rare</b></p>
<<set _sfx = "80C.mp3">>
<<case 3>>
<p class="p2" style="color: purple;"><b>_fish.name - Epic</b></p>
<<set _sfx = "80D.mp3">>
<<case 4>>
<p class="p2" style="color: gold;"><b>_fish.name - Legendary</b></p>
<<set _sfx = "80E.mp3">>
<<set $achievements.eventTrigger.masterBaiter_1 to true>>
<<case 5>>
<p class="p2" style="color: red;"><b>_fish.name - Mythical</b></p>
<<set _sfx = "80F.mp3">>
<<set $achievements.eventTrigger.masterBaiter_1 to true>>
<<set $achievements.eventTrigger.pondsMaestro_1 to true>>
<</switch>>
<p class="p2">_fish.description</p>
<<timed 1.5s>>
<<run playAudio("sfx", _sfx);>>
<</timed>>
</div>
<img id="pic" class="rod" src="ressources/icons/5C.webp" alt="A" draggable="false">
/* <div class="flexbox">
<p class="neon-button2" onclick="playPassage('5A')">Fish again</p>
<p class="neon-button2" onclick="playPassage('2A1')">Exit</p>
</div> */
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('5A')"> Fish again </div>
<div class="DIAS_button" onclick="playPassage('2A1')"> Exit </div>
</div>
<</nobr>>\
<style>
body {
font-family: sans-serif;
background-image: url('ressources/backgrounds/2A_1.webp');
background-position: left;
position: absolute;
margin: 0;
overflow: hidden;
}
#story::before {
opacity: 0;
transition: opacity 1s ease-in-out; /* Adjust duration as needed */
}
#story {
width: 100vw;
height: 100vh;
overflow-y: auto; /* Add a scrollbar if the content is longer than the screen */
margin: 0;
margin-left: 26vh;
}
#ui-bar.stowed ~ #story {
margin-left: 0;
}
#passages {
width: 100%;
max-width: 100%;
margin: 0;
height: 100vh;
}
.passage {
width: 100%;
height: 100vh;
transition-property: none;
}
.passage-in,
.passage-out {
opacity: 0;
}
.Paragraph {
font-size: 2.5vh;
width: 90vh;
max-width: 100%;
opacity: 1;
position: absolute;
z-index: 3;
margin: auto;
border-radius: 1.481vh;
animation: fadeInOpacity 1s forwards;
background-color: rgba(0, 0, 0, 0.7);
box-shadow: 0px 0px 20px rgba(255, 0, 0, 0.5);
color: white;
padding: 1vw;
margin-top: -7%;
margin-left: 20%;
}
p {
margin-top: 0;
}
.DIAS_buttonCont {
display: flex;
flex-direction: row;
animation: fadeInOpacity 1s forwards;
position: absolute;
top: 78vh;
left: 0;
right: 0;
}
.DIAS_button {
width: 10em;
}
/* .flexbox {
z-index: 110;
position: absolute;
display: flex;
justify-content: space-around;
width: 31em;
margin: auto;
opacity: 0;
animation: fadeInOpacity 1s forwards;
animation-delay: 3s;
bottom: 12vh;
left: 0;
right: 0;
} */
/* .neon-button2 {
height: 4vh;
width: 10em;
margin: 1vw;
padding: 2em;
text-align: center;
border-radius: 1em;
font-size: 2vh;
} */
.successbox {
width: 40em;
min-width: 500px;
padding: 1em;
position: absolute;
left: 0;
right: 0;
bottom: 25vh;
margin: auto;
overflow: hidden;
z-index: 3;
text-align: center;
opacity: 0;
border-radius: 1.481vh;
animation: 2s fadeInOpacity 1s forwards;
background-color: rgba(0, 0, 0, 0.7);
box-shadow: 0px 0px 20px rgba(255, 0, 0, 0.5);
color: white;
transition: all 0.5s ease;
}
.successbox:hover {
box-shadow:
0 0 0.5vw var(--neon-color-hover),
0 0 1.5vw var(--neon-color-hover),
inset 0 0 0.5vw var(--neon-color-hover),
inset 0 0 1.5vw var(--neon-color-hover);
background-color: rgba(0, 0, 0, 0.9);
}
.successbox > img {
opacity: 0;
width: 0;
aspect-ratio: 1.8;
object-fit: cover;
pointer-events: none;
animation: 2s fade-in 1.5s forwards;
}
@keyframes fade-in {
0% {
opacity: 0;
width: 0;
transform: translateY(50em);
} to {
opacity: 1;
width: 100%;
transform: translateY(0);
}
}
.successbox > .p1 {
font-size: 1.4em;
text-align: center;
color: white;
pointer-events: none;
}
.successbox > .p2 {
font-size: 1.3em;
text-align: center;
color: white;
padding: 1vh 0;
pointer-events: none;
}
.successbox > .p2:nth-child(3) {
background-image: linear-gradient(to right, transparent, rgba(0,0,0,0.4), rgba(0,0,0,0.4), transparent);
}
.rod {
position: absolute;
margin: auto;
left: 0;
right: 0;
bottom: 18vh;
width: 80vh;
max-width: 100%;
padding-left: 120px;
}
#passage-fish-game-success {
height: 100%;
}
#story {
height: 100%;
position: static;
}
.filter {
position: absolute;
left: -50vw;
top: -50vh;
height: 200vh;
width: 200vw;
background-color: #0f0b47;
opacity: 0.2;
z-index: 2;
pointer-events: none;
}
</style>\
<script>
(() => {
playAudio("sfx", "5A.mp3");
playAudio("music", "forestPeacewood");
nextPartOfDay();
modVariable("add", "item", SV.fish, 1);
// const img = document.querySelector('.fade-in-container img');
// img.onload = function() {
// img.style.opacity = 1;
// };
})();
</script><<nobr>>
<div class="DIAS_container">
<div class="DIAS_message centered DIAS_active">
<div class="DIAS_text">
<p><!-- content --></p>
<div class="containerloupe">
<span><!-- bras de la loupe --></span>
<div class="centerloupe">
<div class="wraploupe">
<div class="box-1 box">
<i class="fas fa-file-code"><img class="imgcar" src="ressources/icons/2E.webp"></i>
<i class="fas fa-file-code"><img class="imgcar" src="ressources/icons/2E.webp"></i>
</div>
<div class="box-2 box">
<i class="fas fa-file-code"><img class="imgcar" src="ressources/icons/2E.webp"></i>
<i class="fas fa-file-code"><img class="imgcar" src="ressources/icons/2E.webp"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="SEGF_giveItemAndExit()">Take it</div>
<div class="DIAS_button" onclick="SEGF_exitWithNoItem()">Leave it</div>
</div>
</div>
<</nobr>>\
<style>
i {
font-size: 55px;
margin: 16px;
color: #F9C42F;
}
.containerloupe {
position: relative;
height: 120px;
display: flex;
align-items: center;
justify-content: center;
margin-top: 50px;
margin-bottom: 100px;
}
.containerloupe::before {
content: "";
position: absolute;
top: 210px;
width: 100px;
height: 32px;
border-radius: 100%;
background-color: rgba(222, 225, 228, 0.4);
animation-name: shadow-loop;
animation-duration: 0.7s;
animation-iteration-count: infinite;
animation-timing-function: ease;
animation-direction: alternate;
}
.centerloupe {
display: flex;
justify-content: center;
align-items: center;
width: 140px;
height: 140px;
border-radius: 100%;
background-color: #fff;
border: 9px solid #DEE1E4;
overflow: hidden;
background-color: rgba(0,0,0,0.4);
animation-name: cloud-loop;
animation-duration: 0.7s;
animation-iteration-count: infinite;
animation-timing-function: ease;
animation-direction: alternate;
background-size: cover;
backdrop-filter: blur(40px);
}
.wraploupe {
display: flex;
justify-content: space-between;
flex-direction: row;
}
span {
position: relative;
left: 112px;
top: 60px;
animation-name: cloud-loop;
animation-duration: 0.7s;
animation-iteration-count: infinite;
animation-timing-function: ease;
animation-direction: alternate;
}
span::before {
content: "";
position: absolute;
width: 50px;
height: 6px;
background-color: #DEE1E4;
transform: rotate(45deg);
}
span::after {
content: "";
position: absolute;
left: 30px;
top: 20px;
width: 36px;
height: 12px;
background-color: #DEE1E4;
transform: rotate(45deg);
border-radius: 0 4px 4px 0;
}
.box-1 {
display: flex;
justify-content: space-between;
animation: 1s rowup-1 linear infinite normal;
}
.box-2 {
display: flex;
justify-content: space-between;
animation: 1s rowup-2 linear infinite normal;
}
/* animation */
@keyframes rowup-1 {
0% {transform: translate3d(0, 0, 0)}
to {transform: translate3d(50%, 0, 0)}
}
@keyframes rowup-2 {
0% {transform: translate3d(0, 0, 0)}
to {transform: translate3d(50%, 0, 0)}
}
@keyframes cloud-loop {
0% {transform: translate(0, 15px)}
to {transform: translate(0, 0)}
}
@keyframes shadow-loop {
0% {transform: translate(0, -35px) scale(1.15, 0.25)}
to {transform: translate(0, -35px) scale(1, 0.25)}
}
.dr {
position: absolute;
bottom: 16px;
right: 16px;
width:100px;
}
.text {
padding-bottom: 140px;
}
.imgcar {
width: 5vh;
margin-top: 3vh;
}
.wraploupe[rarity="0"] .imgcar { /* Common - white */
filter: invert(100%) sepia(0%) saturate(1%) hue-rotate(67deg) brightness(108%) contrast(101%);
}
.wraploupe[rarity="1"] .imgcar { /* Uncommon - green */
filter: invert(25%) sepia(57%) saturate(4002%) hue-rotate(114deg) brightness(96%) contrast(73%);
}
.wraploupe[rarity="2"] .imgcar { /* Rare - blue */
filter: invert(40%) sepia(83%) saturate(1984%) hue-rotate(193deg) brightness(103%) contrast(100%);
}
.wraploupe[rarity="3"] .imgcar { /* Epic - purple */
filter: invert(10%) sepia(60%) saturate(5496%) hue-rotate(291deg) brightness(103%) contrast(115%);
}
.wraploupe[rarity="4"] .imgcar { /* Legendary - gold */
filter: invert(86%) sepia(33%) saturate(1232%) hue-rotate(353deg) brightness(97%) contrast(109%);
}
.wraploupe[rarity="5"] .imgcar { /* Mythic - red */
filter: invert(14%) sepia(92%) saturate(7178%) hue-rotate(0deg) brightness(97%) contrast(113%);
}
.DIAS_buttonCont {
flex-direction: row;
}
.DIAS_buttonCont .DIAS_button {
min-width: 40vh;
}
</style>\
<script>
var SEGV_lastPassage;
var SEGV_zoneId; // A, B, C, D (border, green, blue, ...)
var SEGV_floorId; // 1, 2, 3, ...
var SEGV_data;
var SEGV_itemKey; // the randomly chosen item key.
function SEGF_setRandomItem() {
if (Math.random() < 0.1) { // 10 %
SEGV_itemKey = getRandomDroot();
} else {
//FIND RARITY
let rarityProbabilities = SEGV_data.rarityProbabilities; // ex: [85, 8, 3.5, 2, 1, 0.5]
let rand = random(100); // 0 to 100
//find index
let rarity;
let cumulativeProbability = 0;
for (let i = 0; i < rarityProbabilities.length; i++) {
cumulativeProbability += rarityProbabilities[i];
if (rand < cumulativeProbability) {
rarity = i;
break;
}
}
rarity = rarity ?? rarityProbabilities.length - 1; // fallback
// FIND ITEM
let itemConfig = {
tier: SEGV_data.tiers,
rarity: [rarity],
}
if (Math.random() < 0.5) { // 50 %
itemConfig.type = ["equipment"];
} else {
itemConfig.type = ["material"];
itemConfig.type2 = ["gift"];
}
SEGV_itemKey = getRandomItem(itemConfig);
}
if (!SEGV_itemKey) {
console.error('No item found for search game');
SEGF_exitWithNoItem();
return;
}
}
function SEGF_updateContent() {
let rarity = gameData.inventory.items[SEGV_itemKey].rarity;
let textDiv = document.querySelector('.DIAS_text > p');
textDiv.innerHTML = SEGV_data.dialogues[rarity];
if (!textDiv.innerHTML) {
console.error(`No dialogue found for rarity ${rarity}`);
textDiv.innerHTML = SEGV_data.dialogues[0]; // fallback
}
let wraploupeDiv = document.querySelector('.wraploupe');
wraploupeDiv.setAttribute('rarity', rarity);
}
function SEGF_giveItemAndExit() {
BPopupR_pushRewards([{
type: "item",
key: SEGV_itemKey,
applyType: "add",
applyValue: 1,
}])
nextPartOfDay();
playPassage(SEGV_lastPassage);
}
function SEGF_exitWithNoItem() {
//nextPartOfDay(); // hmmm
playPassage(SEGV_lastPassage);
}
SEGV_lastPassage = SV.searchGame.lastPassage
SEGV_zoneId = SV.searchGame.zoneId;
SEGV_floorId = SV.searchGame.floorId;
function SEGF_minigamesBackground(){
if (SEGV_zoneId === 'A'){
setBackground('ressources/backgrounds/WA.webm'); /* Border */
}
else if (SEGV_zoneId === 'B'){
setBackground('ressources/backgrounds/WB.webm'); /* Green */
}
else if (SEGV_zoneId === 'C'){
setBackground('ressources/backgrounds/WC.webm'); /* Blue */
}
else if (SEGV_zoneId === 'D'){
setBackground('ressources/backgrounds/WD.webm'); /* Red */
}
else if (SEGV_zoneId === 'E'){
setBackground('ressources/backgrounds/WE.webm'); /* Yellow */
}
}
SEGV_data = gameData.searchGame.list[SEGV_zoneId]?.[SEGV_floorId];
if (!SEGV_data) {
playPassage(SEGV_lastPassage);
throw new Error(`Contact devs please. no data found for this combination: ${SEGV_zoneId}, ${SEGV_floorId}`);
} else {
SEGF_minigamesBackground();
SEGF_setRandomItem();
SEGF_updateContent();
DIAF_initDialogPassage();
}
</script><script>
(() => {
const dialog = `
Narrator: As awareness slowly returns to you, the fuzzy shapes and muted voices hovering above gradually come into focus. Blinking rapidly, the concerned faces of your mother Cherie and sisters Lana and Elfie sharpen before your eyes.
Cherie: [placing a hand on your forehead](feeling relieved he's finally awake) Oh thank heavens, you're awake! We've been so worried about you!
***XS1A.webp***
Elfie: [bouncing excitedly and leaning in close](Yay he's awake!) Big brother!! You're awake!
***XS1B.webp***
Narrator: Before Elfie can pounce on you in her enthusiasm, Cherie gently pulls her back.
Cherie: [guiding Elfie back](Don't overwhelm him dear) Easy Elfie, let's give him some space. I need to check his vitals.
***XS1C.webp***
Narrator: As Cherie checks your pulse and breathing, Lana stands back with her arms crossed, a scowl on her face.
Lana: [rolling her eyes](Typical little brother worrying us again) Ugh, about time you woke up! Do you have any idea how much you freaked us out passing out like that?
***XS1D.webp***
Cherie: [focusing on your vital signs](Pulse is strong, breathing is steady) Try not to move too much, you've been out for quite a while. We found you collapsed out there and couldn't recover your gear. I'm afraid it's been lost.
***XS1E.webp***
Elfie: [watching you with wide, concerned eyes](I hope he's feeling better now) You gave us such a big scare big brother! Please be more careful, we were so worried!
***XS1F.webp***
Narrator: As Cherie helps you slowly sit up, the details come back - your relentless scavenging runs, pushing your body to the brink until you finally collapsed from exhaustion. With no one to stimulate your release, the virus has progressed unchecked in your system while you were unconscious.
Lana: [shaking her head in frustration](He never thinks before he acts) Seriously, using up all your energy like that? You know what happens when you get too strung out! What were you thinking being so reckless?
***XS1G.webp***
Cherie: [supporting you steadily](Take it slow now) I know you feel driven to provide for us, but you must remember to care for yourself as well. We can't have you burn out like this again, it's too dangerous in your condition. Please, try to be more mindful from now on.
***XS1H.webp***
Elfie: [giving your hand a gentle, reassuring squeeze](I'll help take care of you!) Don't push yourself so hard big brother. I'll help support you however I can so you don't have to do everything alone!
***XS1I.webp***
Lana: [lightly smacking your shoulder](You idiot, you really messed up this time) Next time use your head before you do something stupid like that again! If you need help, ask us instead of running yourself ragged!
***XS1J.webp***
Cherie: [stroking your hair soothingly](My sweet boy, I know it's difficult but we're here for you) I know it can't be easy managing the virus like this. But please remember, you don't have to shoulder this burden alone. We're your family, let us support you. You just focus on recovering your strength for now.
***XS1K.webp***
Narrator: The concerned love radiating from your mother and sisters wraps around you like a warm blanket. Despite Lana's harsh words, you know she cares deeply too. Gazing at the three women who mean everything to you, relief and gratitude well up within. With their help, you feel certain you'll get through this stronger than ever.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><<nobr>>
<<type 40ms>>
<div class="death_message">You are dead. Better luck next time! Now please load one of your previous saves.</div>
<</type>>
<div class="death_buttons">
<div onclick="SugarCube.UI.saves()" class="death_button">LOAD</div>
<div onclick="SugarCube.UI.restart()" class="death_button">RESTART</div>
</div>
<</nobr>>\
<style>
body {
background-color: black;
display: flex;
align-content: center;
justify-content: center;
align-items: center;
height: 100vh;
}
#story, #passages, .passage {
height: 100%;
}
.passage {
display: flex;
flex-direction: column;
align-content: center;
justify-content: center;
align-items: center;
text-align: center;
}
.death_buttons {
display: flex;
flex-direction: row;
align-content: center;
justify-content: center;
align-items: center;
text-align: center;
opacity: 0;
transition: opacity 1s;
}
.death_button {
font-weight: bold;
background-color: white;
color: black;
height: 4vh;
width: 15vh;
border-radius: 1vh;
margin: 1vh;
display: flex;
align-content: center;
justify-content: center;
align-items: center;
text-align: center;
cursor: pointer;
transition: all 0.5s ease;
}
.death_button:hover {
background-color: black;
color: white;
}
</style>\
<script>
UIBar.stow().hide();
var buttonsCont = document.querySelector('.death_buttons');
setTimeout(() => {
buttonsCont.style.opacity = 1;
}, "4000");
</script><script>
(() => {
const dialog = `
The acrid smell of ozone hangs heavy in the air as you and Gabbie catch your breath. The defeated MAD Executioner ran away, there is craters on the ground, a testament to the intense battle you've just survived. Your muscles ache, but a surge of pride courses through you.
You: [Wiping sweat from your brow] "That was... intense. You okay, Gabbie?"
Gabbie: [Nodding, her chest heaving] "Yeah, I'm good. But we should keep moving. There's no telling what else is lurking around here."
***WA13E1.webp***
As you venture deeper into the heart of The Border's final sector, the air grows thick with an oppressive, electric charge. The dilapidated buildings pulse with an eerie, violet glow, the virus's presence more concentrated than ever before.
You: [Skin tingling uncomfortably] "Fuck, you feel that? It's like the virus is alive here."
Gabbie: [Shivering] "It's... it's so strong. We need to be careful."
Suddenly, the ground beneath your feet begins to tremble. Cracks appear in the pavement, oozing a viscous, glowing liquid that seems to reach out towards you both.
You: [Jumping back] "Shit! Move!"
You and Gabbie sprint through the deteriorating landscape, dodging tendrils of virus-infused matter that erupt from the ground and walls. Your hearts race, the virus in your blood singing with a perverse excitement that conflicts with your survival instincts.
As you round a corner, you come face to face with a massive, fortified structure. Unlike the crumbling ruins surrounding it, this building stands pristine, its walls a gleaming black that seems to absorb light.
Before you can catch your breath, a holographic projection flickers to life before the building's entrance. The image wavers before settling into the form of a man, his features blurred but his presence imposing.
Hologram: "Welcome to the future of humanity. The virus is not our end, but our beginning. Here, we forge the path to our species' true potential."
You: [Panting, eyes wide] "What the hell?"
Gabbie: [Face pale, voice barely a whisper] "No... it can't be. Grandpa?"
The moment the word leaves her lips, Gabbie claps her hands over her mouth, realizing her mistake.
***WA13E2.webp***
You: [Whipping around to face her] "Grandpa? Gabbie, what are you talking about?"
Before she can respond, the building's defenses activate. Swarms of nanobots, glowing with viral energy, pour out of hidden vents, forming a whirling, deadly cloud.
You: [Grabbing Gabbie's arm] "Run! Now!"
As you flee, the nanobots give chase, their collective buzz drowning out the hologram's continued monologue. The virus in your blood responds to the danger, flooding your system with adrenaline and heightening every sensation.
You and Gabbie weave through the decaying cityscape, the nanobots hot on your heels. Suddenly, you spot a half-collapsed building with a narrow opening.
You: [Pointing] "There! We can lose them in there!"
You dive through the opening, Gabbie right behind you. The nanobots slam into the debris, unable to follow. Inside, you find yourselves in a dimly lit, claustrophobic space.
You: [Turning to Gabbie, breathing hard] "Alright, spill it. What was that about? Who's your grandfather?"
Gabbie: [Backing away, shaking her head] "I... I can't tell you. Please, just drop it."
***WA13E3.webp***
You: [Stepping closer, frustration and curiosity warring within you] "No way. This is too big to just ignore. Talk to me, Gabbie."
***START - Choice 1***
[[Branch A: "Fine, keep your secrets. We need to focus on getting out of here." (Trust/Lust requirements not met)]]
[[Branch B: "Gabbie, please. Whatever it is, we're in this together. You can trust me." (Trust/Lust requirements met)]]
***START - Choice 1 - Branch A***
Gabbie: [Relief washing over her face] "Thank you. You're right, we need to focus on survival right now."
You nod, pushing down your curiosity and frustration. As you turn to assess your surroundings, you can't shake the feeling that a crucial piece of the puzzle has just slipped through your fingers.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Gabbie: [Her resolve hardening] "I... I can't. I'm sorry, but I just can't talk about this. Please understand."
You: [Placing a comforting hand on her shoulder] "Gabbie, we're in this together. Whatever it is, we can face it."
Gabbie takes a deep breath, her eyes meeting yours with a mix of fear and determination.
***WA13E4.webp***
Gabbie: "I know you want answers, but I can't give them to you. Not now, maybe not ever. Please, just trust me when I say it's better this way."
As you and Gabbie grapple with the weight of her refusal to explain, the virus's presence in the air intensifies. The walls of your shelter seem to pulse with an eerie, violet light, and the air grows thick and heavy.
You: [Sweat beading on your forehead] "Is it getting hotter in here, or is it just me?"
Gabbie: [Fanning herself, her cheeks flushed] "No, I feel it too. The virus... it's so strong here."
***WA13E5.webp***
The viral energy in the air seems to seep into your very pores, igniting a fire in your veins. Your skin becomes hypersensitive, every brush of fabric against your body sending shivers of pleasure through you.
Gabbie: [Whimpering softly] "I can't... I can't think straight. Everything feels so..."
You watch as Gabbie unconsciously runs her hands over her body, her nipples visibly hardening through her shirt. The thin fabric clings to her sweat-slicked skin, outlining every curve and valley of her breasts. Your own body responds in kind, your cock swelling painfully against the confines of your pants, a visible bulge forming that you can't hide.
***WA13E6.webp***
You: [Voice husky, fighting against the urge to touch yourself] "We need to... to control ourselves. The virus is affecting us."
But even as you say the words, your eyes are drawn to the curve of Gabbie's breasts, the way her body moves as she squirms in discomfort and arousal. You can see the outline of her erect nipples, practically begging to be touched, sucked, worshipped. The rational part of your mind screams that this is wrong, that you need to focus on escaping, but the virus-addled part of you wants nothing more than to give in to these primal urges.
***WA13E7.webp***
Gabbie: [Meeting your gaze, her eyes dark with lust] "I know we shouldn't, but... God, I want to touch you so badly. I've never felt anything like this before."
You take a step towards her, your hand reaching out almost of its own accord. This time, you don't stop. Your fingers brush against her flushed skin, and it's like an electric current passing between you.
Gabbie: [Gasping at the contact] "Oh God... your touch... it's..."
You: [Shaking your head to clear it, your cock throbbing painfully] "Fuck, we need to get out of here. The virus is too strong."
Gabbie nods, but as she moves to follow you, she stumbles, her legs weak with arousal. You catch her, pulling her against your body. Her shirt flies up. The moment your fingers touches hers, it's like an electric shock coursing through both of your bodies. Your cock twitches, pressing against her thigh, and you feel her shudder in response.
***WA13E8.webp***
Gabbie: [Breathlessly] "Oh God... I can feel you. You're so hard..."
Your hands, seemingly with a mind of their own, roam over her body, feeling the heat radiating from her skin. Gabbie's breath comes in short gasps, her chest heaving, nipples straining against her shirt.
***START - Choice 2***
[[Branch A: "We can't do this. We need to focus on escaping." (Trust/Lust requirements not met)]]
[[Branch B: "Maybe... maybe we should help each other relieve some of this tension." (Trust/Lust requirements met)]]
***START - Choice 2 - Branch A***
You: [Forcing yourself to let go of Gabbie] "No, we can't. We need to keep our heads clear."
Gabbie: [Nodding, her face a mix of relief and disappointment] "You're right. Let's... let's just find a way out of here."
With great effort, you both push down your arousal and focus on finding an escape route. The sexual tension between you remains palpable, but for now, survival takes precedence.
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Voice trembling] "Gabbie, I... I don't think I can hold back much longer."
Gabbie: [Pressing herself against you] "Me neither. Just... just a little relief. To clear our heads."
Your hands roam over each other's bodies, the touch sending waves of pleasure through your virus-enhanced nervous systems. You can't help but stare, mesmerized by the beads of sweat trailing down her skin.
***WA13E9.webp***
Gabbie: [Arching her back] "Touch me... please..."
Your mouth finds hers in a desperate, hungry kiss. Your hands cup her breasts, thumbs circling her nipples. Gabbie moans into your mouth, her hips grinding against your thigh.
***WA13E10.webp***
Just as things are about to escalate further, you hear a familiar voice calling out.
Lana: [Muffled] "Bro? Gabbie? Are you down there?"
You and Gabbie freeze, the spell momentarily broken.
You: [Calling back, voice strained] "Lana? Don't come down here! The virus concentration is too high!"
Despite your warning, you hear Lana's footsteps approaching. She appears at the entrance to your shelter, her eyes widening as she takes in the scene before her - you and Gabbie, flushed and disheveled, hands all over each other.
***WA13E11.webp***
Lana: [Shock turning to anger] "What the actual fuck is going on here? Are you two seriously getting it on in this shithole?"
Before you can explain, the viral energy in the air hits Lana like a tidal wave. You watch as her expression changes, anger melting into confusion, then unmistakable lust.
Lana: [Swaying slightly, her voice a mix of rage and growing arousal] "What... what the hell is this? I feel so... No, fuck this, it's your fault, isn't it, you pervert?"
You: [Desperately trying to maintain control] "Lana, you need to leave. Now. The virus here, it's too strong."
But it's too late. Lana's body responds to the viral influence, her skin flushing, nipples hardening visibly through her shirt. With a growl of frustration, she tears at her clothes, her usual bravado crumbling under the weight of the virus's influence.
***WA13E12.webp***
Lana: [Voice husky, struggling against her own actions] "It's so hot. I need... No, I shouldn't... but I need... Fuck you, bro, this is all your fault!"
You watch in a mixture of horror and arousal as your sister's body reacts to the virus. Her athletic frame, usually a source of pride and nothing more, suddenly becomes the focus of your attention. Her shirt comes off, revealing her toned abs and perky breasts, smaller than Gabbie's but perfectly formed. The rational part of your mind screams that this is wrong, but the virus in your blood sings with desire.
***WA13E13.webp***
Gabbie: [Whimpering, her own clothes starting to come off] "We can't... it's too much... but I can't stop..."
***WA13E14.webp***
But even as she says this, Gabbie's eyes are locked on Lana's body, her tongue darting out to wet her lips. Lana's gaze, in turn, is fixed on the visible bulge in your pants.
***WA13E15.webp***
Lana: [Moving closer, her voice a mix of anger, confusion, and desire] "I've never... I've never felt like this before. So hot, so... needy. This is fucked up, but I can't... I can't stop looking at you, you bastard."
The three of you gravitate towards each other, hands reaching out and making contact. Bodies aching for more. The air is thick with pheromones and viral energy, pushing you towards a point of no return.
You can feel the heat radiating from both women, see the way their chests heave with each breath. Your own body throbs with need, your cock painfully hard, pre-cum soaking through your underwear.
Lana: [Her usual confidence warring with shame, but her anger still evident] "Fuck, I shouldn't be looking, but... I need to see it. Take it out, you asshole. Now!"
Your hands move of their own accord, unzipping your pants and freeing your throbbing member. Both Lana and Gabbie gasp at the sight, their eyes wide with a mixture of awe and hunger.
***WA13E16.webp***
Gabbie: [Licking her lips] "It's... it's so big. I've never seen anything like it."
***WA13E17.webp***
Lana: [Trying to maintain her aloof attitude but failing, her voice a mix of awe and anger] "Holy shit, little bro. When did you get so... fuck, I shouldn't be thinking this. This is your fault, making me feel this way!"
***START - Choice 3***
[[Branch A: "No! We have to fight this. We're family, for fuck's sake!" (Trust/Lust requirements not met)]]
[[Branch B: "Maybe... maybe we should just let go. Just this once." (Trust/Lust requirements met)]]
***START - Choice 3 - Branch A***
With a Herculean effort, you force yourself to step back, putting distance between yourself and the two women.
You: [Voice shaking] "No. We can't do this. We're family. This is wrong. We need to get out of here, now."
Lana and Gabbie look at you with a mixture of disappointment and relief. Slowly, painfully, you all begin to gather yourselves, fighting against the virus's influence.
[[Exit]]
***END***
***START - Choice 3 - Branch B***
You: [Voice thick with lust] "I can't... I can't fight it anymore."
Lana: [Moving closer, her hand grabbing your chest roughly] "Then don't. Let's just feel good together. Who cares if we're family? Nothing matters but this feeling. But don't think I'm doing this because I like you, asshole."
***WA13E18.webp***
Gabbie: [Pressing against your back] "Just this once. To relieve the pressure. We need this."
Your hands roam over their bodies, feeling the heat radiating from their skin. You can smell their arousal, see the way their bodies tremble with need. Lana, usually so strong and in control, looks at you with a vulnerability you've never seen before, though her eyes still flash with anger. Gabbie's eyes are dark with lust, her usual shyness completely gone.
***WA13E19.webp***
You: [Struggling to maintain some semblance of control] (This is wrong. So wrong. But God, I want it so badly.)
Lana: [Her voice a husky whisper, tinged with frustration] "I've... I've always wondered what it would be like. To be with you like this. Fuck, I hate that I want this."
Gabbie: [Breath hot against your neck] "Please... I need..."
The virus pushes you further, your inhibitions crumbling. Before you can stop yourself, you find your mouth on Lana's breast, tongue swirling around her nipple. She gasps, her hand tangling in your hair, pulling roughly.
***WA13E20.webp***
Lana: [Moaning] "Fuck... we shouldn't... but don't stop... I'll kill you if you stop..."
Gabbie, not to be left out, presses herself against your back, her hands roaming over your muscled chest. You feel her teeth graze your shoulder, sending shivers down your spine.
Just as you're about to lose yourself completely in this taboo, virus-fueled frenzy, a new voice cuts through the haze of lust.
Cherie: [From above] "Oh my God! What are you doing? Stop this immediately!"
***WA13E21.webp***
Cherie's voice cuts through the air like a knife, momentarily snapping you out of your virus-induced frenzy. You look up to see her standing at the top of the entrance, her eyes wide with shock and horror.
You: [Shouting, voice hoarse with need] "Mom! Don't come down here! The virus concentration is too high!"
Lana: [Anger flaring through her lust] "Fuck off, Mom! This is none of your business!"
Cherie: [Her voice stern but wavering] "I'm coming down there right now to put a stop to this madness!"
You and Lana both cry out in protest, but Cherie has already started making her way down. You watch in a mixture of dread and lingering arousal as she navigates the debris, getting closer and closer to the virus-saturated air.
Cherie: [As she descends] "I can't believe what I'm seeing. My own children... and Gabbie... What has gotten into you all?"
As Cherie reaches the bottom, the viral energy engulfs her. You watch in a mixture of horror and renewed arousal as your mother's body responds to the virus, her skin flushing, her ample breasts heaving with each breath. Her rear end shaking by itself.
***WA13E22.webp***
Cherie: [Voice trembling] "I... I can't... it's so strong... No, I'm your mother, I shouldn't..."
The last threads of your collective restraint snap. Before Cherie can react, you, Lana, and Gabbie are upon her, hands tearing at her clothes. She tries to resist, but as the virus takes hold, her protests turn to moans of pleasure.
***WA13E23.webp***
Cherie: [Gasping as her clothes are torn away] "No, we can't... I'm your mother... but it feels so good..."
Her mature but still incredibly sexy body is revealed. Her large breasts, barely affected by gravity despite her age, bounce free. Her pussy, surprisingly bare, glistens with arousal.
***WA13E24.webm***
You find yourself surrounded by the naked, willing bodies of your family and Gabbie. Moans and whimpers fill the air. Your cock stands at full attention, throbbing and angry red, pre-cum beading at the tip.
Lana: [Eyes fixed on your cock, her usual bratty attitude warring with lust] "God, I never realized how big... I mean, I shouldn't be looking, but... Fuck, bro, when did you get so ripped? I hate that I want you so bad."
Gabbie: [Licking her lips] "I want to taste... No, we shouldn't, but... Your body, it's like a Greek god..."
Cherie: [Struggling to maintain her motherly composure] "This is wrong. We're family. But... oh God, I've never felt anything like this. My son, when did you become such a man?"
You: [Mind reeling] (This is my family. My mother, my sister. I shouldn't be seeing them like this, shouldn't be wanting this. But fuck, I've never been so turned on in my life.)
The virus pushes you further. You find yourself behind Lana, your teeth grazing her ass cheek. She yelps, a mixture of surprise and pleasure, before growling and pushing back against you.
***WA13E25.webp***
Lana: [Gasping] "Fuck, bro... your teeth... we shouldn't... but don't you dare stop, you bast-"
Her words are cut off as Gabbie suddenly appears, capturing Lana's mouth in a deep, passionate kiss. Your sister's eyes widen in shock before fluttering closed, giving in to the sensation.
You can't tear your eyes away from the sight of your sister and Gabbie locked in a taboo embrace. The scent of Lana's arousal fills your nostrils, her pussy mere inches from your face, glistening with need. You can see every fold, every detail of your sister's most intimate area, and the wrongness of it only seems to fuel your desire.
***WA13E26.webp***
Cherie: [Moaning] "No, we can't... I'm your mother... but it feels so good..."
You find yourself drawn to Cherie, laying your head in her naked lap. Her breasts, full and mature, hang tantalizingly above you. Without thinking, you latch onto a nipple, suckling like you did as an infant, but now with an entirely different intent.
***WA13E27.webm***
Cherie: [Gasping, her eyes rolling back] "Oh God, baby... Mommy shouldn't... we can't... but I can't stop..."
You: [Mumbling around her nipple] "Mom... I need you... I've always needed you like this..."
Cherie: [Her resolve crumbling] "My baby boy... my beautiful son... Mommy loves you so much... too much..."
The air is thick with the scent of sweat, arousal, and the cloying sweetness of the virus. You can feel it pulsing through your veins, breaking down every barrier, every taboo. The fact that these are your family members seems to matter less and less with each passing second.
Lana: [Breaking away from Gabbie's kiss, her voice husky] "Fuck... I can't believe I'm saying this, but I want my brother's cock so bad..."
***WA13E28.webp***
Gabbie: [Breathlessly] "Me too... I want to feel it inside me..."
***WA13E29.webp***
Cherie: [Stroking your hair as you suckle] "My beautiful children... my babies... we shouldn't, but it feels so right..."
***WA13E30.webm***
Just as you're about to lose yourself completely in this taboo, virus-fueled almost-orgy, you hear a voice in your head - Angela's voice.
Angela: (Reach for the light within you. You're stronger than the virus. Save them.)
***START - Choice 4***
[[Branch A: "Fight against the virus's influence and save your family." (Victory, the game continues)]]
[[Branch B: "Give in to the virus and embrace the pleasure." (Game over, everyone die)]]
***START - Choice 4 - Branch A***
With a monumental effort, you force yourself to focus, to push back against the overwhelming tide of lust. You grab onto that inner light, feeling it grow stronger, pushing back the virus's influence.
You: [Voice hoarse but determined] "No. We can't do this. We have to get out of here. Now!"
Using every ounce of willpower you possess, you begin to gather your family members, pulling them away from each other, forcing them to focus. It's a struggle against not only their resistance but your own desperate desire.
Slowly, painfully, you manage to guide everyone out of the virus-saturated area. As you reach cleaner air, the fog of lust begins to lift, replaced by shock and shame at what nearly transpired.
Cherie: [Covering herself, voice shaking] "I... I can't believe we almost... Oh God, what kind of mother am I?"
***WA13E31.webp***
Lana: [Unable to meet anyone's eyes, her usual bravado completely gone] "Fuck. Just... fuck. How could we...? This is all your fault, bro... somehow..."
***WA13E32.webp***
Gabbie remains silent, her face a mask of conflicting emotions.
***WA13E33.webp***
You: [Exhausted but relieved] "It's okay. We're safe now. The virus... it was too strong. But we fought it off. This wasn't our fault."
As the group begins to recover, you turn to Gabbie, the questions from earlier still burning in your mind.
You: "Gabbie, about what you said earlier... about your grandfather..."
But before you can finish, Gabbie turns and flees, disappearing into the ruins of the Border.
***WA13E34.webp***
You're left standing there, surrounded by your shaken family, with more questions than answers. The shadows of the past loom larger than ever, and you can't shake the feeling that what transpired today is just the beginning of a much larger, more terrifying story.
As you lead your family back to the safety of your shelter, you know that nothing will ever be the same. The virus has shown you the depths of its power, and the secrets lurking in your own bloodline threaten to unravel everything you thought you knew.
The game has changed, and you're only just beginning to understand the true stakes.
-- GREENZONE UNLOCKED --
Button: Continue
***END***
***START - Choice 4 - Branch B***
You decide to ignore Angela's voice, giving in fully to the virus's influence. The pleasure is overwhelming, unlike anything you've ever experienced. You lose yourself in a haze of lust and depravity, your body moving from one family member to another, tasting, touching, fucking without restraint.
At first, there's still a semblance of control. Lana's hand moves hesitantly on your shaft, her eyes wide with a mixture of disgust and desire.
***WA13E35.webm***
Lana: [Whispering] "This is so wrong..."
But her grip tightens, betraying her growing arousal. Cherie watches, her maternal instincts warring with the virus-induced lust.
Cherie: [Voice trembling] "We shouldn't... we're family..."
But her hands roam her own body, unable to stop.
***WA13E36.webm***
Gabbie, already less inhibited, kneels beside you.
Gabbie: [Murmuring] "Just a taste..."
Her tongue darts out to lick your shaft. The air is thick with the scent of sex and the sickly-sweet aroma of the virus. You can feel it pulsing through your veins, breaking down every barrier, every taboo. Your mind begins to fog, rational thought giving way to pure, animalistic lust. She did not get "just a taste", she is sucking your dick with determination.
***WA13E37.webp***
As the minutes pass, the resistance crumbles. Lana's strokes become more confident, her breathing heavy.
***WA13E38.webm***
Lana: [Panting] "Fuck, little brother, you're so big. I hate how much I want this."
Cherie crawls closer, her eyes fixed on your cock.
Cherie: [Voice husky] "Let mommy help, sweetie."
***WA13E39.webp***
Her hand joins Lana's, and you groan at the dual sensation. The taboo nature of the situation only seems to fuel the fire. Your sister and mother, stroking you together. The wrongness of it sends a thrill through your body.
Gabbie whimpers, her hand between her legs.
Gabbie: [Begging] "Please, I need more."
You respond by plunging your fingers into her dripping pussy, feeling her walls clench around you. The action seems to break the last of Cherie's resolve.
***WA13E40.webm***
Cherie: [Moaning] "That's it, baby. Make her feel good. Mommy wants to watch."
Lana, not to be outdone, lowers her mouth to your cock. The sensation of her lips wrapping around you sends shockwaves of pleasure through your body.
***WA13E41.webp***
You: [Thinking] (This is my sister. My sister is sucking my cock while my mother watches.)
The thought should horrify you, but instead, it only intensifies your arousal. You feel a strange tingling sensation throughout your body, the first sign of the changes to come.
As the virus surges stronger, your body begins to change. Muscles bulge, skin takes on an otherworldly sheen. Your cock grows, stretching Lana's mouth to its limit.
Lana: [Pulling back, gasping] "What's happening to you?"
But before anyone can react, you grab her with one arm, lifting her effortlessly. Your enhanced cock plunges into her tight pussy without warning.
***WA13E42.webp***
Lana: [Screaming] "No! Stop! You're too big!"
Cherie tries to intervene.
Cherie: [Panicking] "Baby, you're hurting her! This isn't you!"
But you're beyond reason now. You drop Lana unceremoniously and grab Cherie instead, lifting her into the air with your newfound strength. Your monstrous cock pushes against her entrance, threatening to split her in two.
***WA13E43.webp***
Cherie: [Sobbing] "Please, no... I'm your mother!"
You silence her with a brutal kiss, your tongue invading her mouth as you impale her on your shaft. She screams into the kiss, her body convulsing around your massive member.
***WA13E44.webm***
You: [Growling] "You're mine now, Mom. All of you are."
You fuck Cherie relentlessly, each thrust lifting her off the ground. Your enhanced strength allows you to use her body like a ragdoll, and you revel in the power.
***WA13E45.webm***
Cherie: [Gasping between thrusts] "Oh God... it hurts... but... so good..."
As you pound into your mother, you notice Lana's ass in the air, her pussy still leaking your fluids. Without warning, you pull out of Cherie and lunge at Lana, burying your face between her cheeks.
***WA13E46.webp***
Lana: [Yelping in surprise] "What are you- Oh fuck!"
Your tongue probes her asshole, tasting the forbidden fruit of your sister's most intimate area. The depravity of the act only fuels your lust further.
You: [Growling] "I'm going to fuck this tight little ass, sis."
Before Lana can protest, you thrust your enormous cock into her unprepared asshole. She screams in agony as you tear into her, blood lubricating your passage.
***WA13E47.webp***
Lana: [Sobbing] "It hurts! Please, stop!"
But her pleas fall on deaf ears as you ravage her ass, your cock reshaping her insides to fit your monstrous size.
Cherie, seeing her daughter in pain, tries to intervene again. She crawls in front of you, presenting her own ass.
***WA13E48.webp***
Cherie: [Desperate] "Take me instead! Leave her alone!"
The sight of your mother's offered anus is too tempting to resist. You pull out of Lana and immediately plunge into Cherie's ass, lifting her in the air in the process, tearing into her with brutal force.
***WA13E49.webp***
Cherie: [Wailing] "Oh God! It's too much!"
You fuck your mother's ass with abandon, her cries of pain and pleasure echoing off the walls. Blood and anal fluids coat your cock, but you don't slow down.
***WA13E50.webm***
You: [Snarling] "This is what you wanted, isn't it, Mom? To be fucked by your son's monster cock?"
As you continue to pound Cherie's ass, you grab her by the throat, lifting her upper body off the ground. With your other hand, you grab her breasts, squeezing them roughly.
***WA13E51.webm***
You: [Commanding] "Wrap these tits around my cock, Mom."
Cherie, choking and gasping, complies. You thrust between her breasts, the force of your movements causing her pain, but also igniting a fire within her she's never felt before.
***WA13E52.webm***
Cherie: [Gasping] "I've... never been handled like this... It's so wrong... but I can't stop..."
Her eyes lock with yours, filled with a mixture of fear, pain, and undeniable lust. The taboo nature of the situation seems to awaken something primal in her. She takes you into her mouth with the most depraved stare you ever saw.
***WA13E53.webp***
Cherie: [Moaning] "Yes, baby... use Mommy's body... I'm yours..."
Meanwhile, Gabbie watches wide-eyed, masturbating furiously.
***WA13E54.webm***
Gabbie: [Whimpering] "It's so hot... I want it too."
Your transformation continues to accelerate. Your skin ripples, muscles bulging to inhuman proportions. Your cock grows even larger, now a monstrous appendage that seems to pulse with a life of its own.
Suddenly, Cherie seems to have a moment of clarity. She looks at Lana, a desperate plan forming in her mind.
Cherie: [Urgently] "Lana, we have to stop him! We need to make him cum!"
Understanding dawns in Lana's eyes. Despite their pain and exhaustion, mother and daughter launch themselves at you, determined to end this madness.
Lana: [Seductively] "You want to fuck your big sister, don't you? Come on, little bro, show me what you've got."
***WA13E55.webp***
Cherie: [Purring] "Mommy's here, baby. Let me take care of you like I used to."
***WA13E56.webp***
They work together, using every trick they know to pleasure you. Lana takes your cock in her mouth while Cherie licks your balls. They swap positions, kissing each other around your shaft, breaking every taboo in their desperation.
***WA13E57.webp***
Cherie: [Moaning] "That's it, baby. Fuck Mommy and sissy's mouths. We're your personal fucktoys now."
***WA13E58.webp***
Lana: [Gasping] "God, you're so big, bro. I bet you've always wanted to split your big sister in half with this monster cock."
***WA13E59.webp***
But their efforts are in vain. Your virus-enhanced stamina allows you to outlast them easily. As they tire, you take control once again.
You: [Growling] "Nice try. But I'm not done with you yet."
You grab both women, lifting them effortlessly. Your cock, now penetrates all their holes simultaneously. They scream in a mixture of pain and pleasure as you reshape their bodies from the inside out.
***WA13E60.webp***
***WA13E61.webp***
Gabbie, unable to resist any longer, joins the fray. You use your viral tentacles to penetrate her ass as well, completing the twisted family tableau.
***WA13E62.webp***
Time loses all meaning as you fuck them relentlessly. Their minds, overwhelmed by the constant stimulation and viral influence, begin to break down. Coherent thoughts give way to animal grunts and moans.
Lana's body contorts unnaturally, her limbs elongating, joints bending in impossible ways. Gabbie's skin becomes translucent, her internal organs visible and pulsing with viral energy. Cherie's body becomes a fountain of viral fluids, her orifices stretched and leaking constantly.
In rare moments of clarity, you see flashes of your former selves. Lana's defiant glare, Gabbie's shy smile, Cherie's loving gaze. But these moments are fleeting, quickly swallowed by the all-consuming lust.
***WA13E63.webp***
***WA13E64.webp***
***WA13E65.webp***
***WA13E66.webp***
As your bodies continue to mutate and merge, you feel a final surge of the virus. It's too much - your minds shatter under the onslaught of pleasure and viral corruption.
In your last moment of humanity, you're struck by the horrific realization of what you've done. You've damned your family, corrupted the people you loved most. A wave of shame and regret washes over you.
But it's too late. Your consciousness fragments, swept away in a final, cataclysmic orgasm that shakes the very foundations of the building.
Where once there were four people, now there is only a writhing mass of viral flesh, pulsing with inhuman hunger and lust. The Border has claimed four more victims, lost forever to the virus's embrace.
The game is over. In your quest for pleasure, you've lost everything - your humanity, your family, and ultimately, yourself.
Button: Game Over
***END***
***END - Choice 4***
***END***
***END - Choice 3***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The crisp autumn air nips at your skin as you stand at the forest's edge with Cherie, Lana, and Elfie. The trees loom before you, their gnarled branches reaching out like skeletal fingers against the darkening sky. Jack-o'-lanterns line the path, their carved faces flickering with an eerie orange glow, casting long, dancing shadows across the leaf-strewn ground.
As you venture deeper into the woods, a strange mist begins to swirl around your feet. It's cool and damp, clinging to your skin with an almost sentient touch. The scent of decaying leaves and damp earth fills your nostrils, mingling with something else... something primal and intoxicating.
Cherie: [Fanning herself, her cheeks flushing] "Is it getting warm in here, or is it just me?"
You notice a faint flush creeping up her neck, spreading across her chest. Her costume suddenly seems tighter than before, the fabric straining against her curves. Beads of sweat form on her brow, one slowly trailing down her temple.
***XHH1A.webp***
Lana: [Shifting uncomfortably, her muscular thighs pressing together] "It's probably just the walk. Let's keep moving."
***XHH1B.webp***
As you progress, the air grows thicker with an unseen energy. The virus in your blood begins to sing, a low hum that resonates through your body. Elfie stumbles slightly, her small hand grabbing your arm for support.
Elfie: [Giggling nervously, her pupils dilating] "Oops! I feel a bit dizzy. Must be all the excitement."
Her touch lingers longer than necessary, her small hand warm against your skin. You feel a stirring in your loins, the virus amplifying every sensation. Elfie's breath quickens, her chest rising and falling rapidly.
***XHH1C.webp***
Cherie: [Tugging at her costume, her movements becoming more sensual] "This outfit is so restrictive. I need to... adjust it a bit."
She pulls at the neckline, revealing more of her ample cleavage. The swell of her breasts heaves with each breath, a thin sheen of sweat making her skin glisten in the jack-o'-lantern light. Your eyes are drawn to the movement, and you notice Lana staring too, her tongue darting out to wet her lips.
***XHH1D.webp***
Lana: [Clearing her throat, her voice husky] "Mom, maybe you should... oh, who am I kidding? It's so hot."
She begins to loosen her own costume, her toned abs peeking through. The defined muscles ripple with each movement, a testament to her strength and fitness. The sight makes your mouth go dry, your own body temperature rising.
***XHH1E.webp***
Elfie: [Whimpering softly, her small hands starting to roam her body] "I feel funny... like my skin is too tight."
Her hands start to wander over her body, innocently at first, then with growing curiosity. She traces the curve of her modest breasts, gasping softly at the sensation. You feel your own arousal building, your manhood beginning to strain against your costume.
***XHH1F.webp***
Cherie: [Her voice dropping an octave, eyes widening] "Oh my... look at you, honey. You've... grown."
Her eyes are fixed on the obvious bulge in your pants, which has grown to an impressive size. Lana and Elfie follow her gaze, their eyes widening in a mixture of shock and fascination.
Lana: [Swallowing hard, her throat bobbing visibly] "That's... that's not normal. Is it the virus?"
You nod, unable to speak as the three women stare at your growing erection. The taboo nature of the situation only seems to intensify the virus's effects, your member throbbing painfully against its confines.
Elfie: [Breathless, her innocence warring with newfound desire] "It's so big... I've never seen..."
Her costume slips off one shoulder, revealing her small, perky breast. The pink nipple hardens in the cool air, but she doesn't seem to notice or care. Her eyes remain fixed on your groin, her small tongue darting out to wet her lips.
***XHH1G.webp***
Cherie, lost in the haze of arousal, begins to peel off her costume entirely. Her mature, voluptuous body is revealed inch by inch. Full, heavy breasts spill free, topped with large, dusky nipples. Her stomach, soft with motherhood, leads down to wide hips and strong thighs.
***XHH1H.webp***
Cherie: [Panting, her hands roaming her own body] "I can't... I can't fight it. It feels so good..."
Lana tries to resist, her strong will battling against the virus's influence. But the sight of her mother's naked form and your obvious arousal proves too much. With a growl of frustration and lust, she tears at her own costume.
***XHH1I.webp***
Lana: [Her voice a mix of shame and desire] "This is wrong... but I can't stop..."
Her athletic body is revealed, all toned muscle and smooth skin. Her breasts, smaller than her mother's but firm and perky, heave with each breath. A thin strip of neatly trimmed hair leads down to her core, which glistens with obvious arousal.
***XHH1J.webp***
You find your own hands moving of their own accord, freeing your throbbing member from its confines. It springs free, larger than you've ever seen it, pulsing with viral energy. The cool air on your heated flesh makes you groan, a bead of pre-cum forming at the tip.
Elfie: [Whimpering, her small body trembling] "Big brother... is this okay? Should we be doing this?"
Despite her words, her costume falls away, leaving her small, lithe body exposed. Her breasts are modest, barely more than swells topped with pink, puffy nipples. Her hips, while narrow, curve enticingly to a small, heart-shaped bottom. A sparse patch of light hair does little to hide her virgin pussy, which glistens with dew-like arousal.
***XHH1K.webp***
The forest seems to pulse around you, the jack-o'-lanterns' grins taking on a leering quality. The air is thick with pheromones and the scent of arousal, a heady mixture that makes your head spin.
Cherie: [Staring at your manhood, her voice filled with awe and forbidden desire] "Oh god... it's even bigger than I imagined. We shouldn't... but I can't look away."
Her hands move to her breasts, kneading them roughly as she watches you begin to stroke yourself. Her nipples pebble under her touch, and she pinches them, moaning softly.
***XHH1L.webp***
Lana: [Breathing heavily, her athletic body tensed like a coiled spring] "This is so fucked up... but I'm so turned on. Look what you're doing to us, little brother."
Her fingers find her dripping core, plunging in and out as she maintains eye contact with you. The lewd, wet sounds of her ministrations fill the air, mixing with the family's collective panting.
***XHH1M.webp***
Elfie: [Moaning softly, her inexperience evident in her tentative touches] "It's so big... I don't think it would even fit..."
Her small hands rub circles on her clit, her inexperienced movements growing more confident as she watches you pleasure yourself. Her other hand explores her small breasts, squeezing and kneading in imitation of her mother and sister.
***XHH1N.webp***
The sight of your family members masturbating to the sight of you pushes you closer to the edge. Your hand moves faster along your shaft, your breath coming in short gasps. The virus pulses through your veins, making every touch electric.
Cherie: [Moaning loudly, her fingers working furiously at her clit] "Oh god... I'm going to... I can't believe I'm doing this with my children..."
Her body tenses, back arching as she nears her peak. Sweat glistens on her skin, her breasts heaving with each labored breath.
***XHH1O.webp***
Lana: [Grunting with effort, her muscular body trembling] "Fuck... this is so wrong... but it feels so good..."
She adds another finger, her pace increasing as she races towards orgasm. Her free hand grips her breast roughly, pinching and pulling at her nipple.
***XHH1P.webp***
Elfie: [Whimpering, her small body shaking] "Big brother... I'm feeling something... it's coming..."
Her inexperienced touches have given way to more confident strokes, her small body wracked with new sensations. She bites her lip, eyes locked on your throbbing member.
***XHH1Q.webp***
As your family members reach their climax, crying out in a mixture of pleasure and shame, you feel your own orgasm building. With a final, powerful stroke, you erupt. Your seed arcs through the air in an impressive display, more copious than you've ever experienced before. It splatters on the forest floor, steaming slightly in the cool air.
The spell seems to break as you all come down from your highs. Reality crashes back, bringing with it a wave of shame and confusion. The virus's hold loosens, leaving you all panting and disoriented.
Cherie: [Gasping, trying to cover herself with shaking hands] "Oh god... what have we done? We need to leave. Now."
Her eyes are wide with shock, darting between you and her daughters. She fumbles for her discarded costume, her movements jerky and uncoordinated.
***XHH1R.webp***
Lana and Elfie snap out of their trance-like states, looks of horror crossing their faces as they scramble to gather their discarded costumes. Lana's strong hands tremble as she tries to cover herself, while Elfie curls into a ball, tears forming in her eyes.
Lana: [Her voice rough with lingering arousal and embarrassment] "This... this never happened. We never speak of this again."
She can't meet anyone's eyes, her face flushed with shame and the remnants of her orgasm.
***XHH1S.webp***
Elfie: [Close to tears, her small body shaking] "I'm sorry... I don't know what came over me. Big brother, I..."
She trails off, unable to finish her thought as she hurriedly pulls on her costume.
***XHH1T.webp***
As quickly as it began, the moment passes. You all hurriedly dress yourselves and begin to make your way out of the forest, unable to meet each other's eyes. The jack-o'-lanterns seem to mock your retreat, their flickering grins a reminder of the depraved scene that just unfolded.
The Halloween adventure has taken a turn you never expected, the line between trick and treat irrevocably blurred in the misty darkness of the virus-infested woods. As you exit the forest, you can't help but wonder how this experience will change your family dynamic moving forward. The memory of your shared pleasure, forbidden and intense, lingers in the air like the last wisps of the forest mist.
`;
playAudio("music", "halloween");
setBackground("ressources/backgrounds/XHH1.webp");
DIAF_parseBuildAppend(dialog);
})();
</script><script>
(() => {
const dialog = `
The full moon hangs low in the sky, casting an eerie glow over the abandoned cemetery as you approach with Gabbie, Angela, and Mia. Ancient tombstones jut from the ground like crooked teeth, their weathered surfaces etched with faded names and dates. Skeletal trees encircle the graveyard, their bare branches creaking in the chill autumn wind.
As you step through the rusted iron gates, a strange energy pulses through the air. The virus in your blood seems to resonate with it, creating a dizzying sensation that makes your head spin.
Angela: [Her eyes glowing faintly in the darkness] "The veil is thin tonight. The dead walk among us."
No sooner has she spoken than a ghostly mist begins to rise from the graves, coalescing into translucent, skeletal forms. These spectral entities drift aimlessly, seemingly unaware of your presence.
***XHH2A.webp***
Mia: [Shivering, her voice a whisper] "Holy shit, are those... ghosts?"
Before anyone can answer, one of the skeletal spirits passes through her. Mia gasps, her body arching as if electrified. When the spirit emerges on the other side, Mia's eyes are wide with shock and... something else.
Mia: [Panting, her pupils dilated] "I... I feel so hot. Especially my... oh god."
You watch in amazement as Mia begins to strip off her costume, her movements frantic and desperate. As she turns, you notice her hands flying to her ass, kneading and squeezing the firm flesh.
***XHH2B.webp***
Gabbie: [Eyes wide, voice trembling] "Mia, what are you doing?"
But even as she speaks, another spirit drifts through Gabbie. She shudders violently, her hands flying to her own costume. Within moments, she too is naked, her hands immediately cupping her breasts.
Gabbie: [Breathless, her voice filled with need] "My breasts... they're so sensitive. I can't stop touching them."
Her fingers begin to tease her nipples, pinching and rolling them as she moans softly.
***XHH2C.webp***
Angela doesn't wait for a spirit to reach her. She steps forward, allowing one to pass through her willingly. She moans loudly as her clothes seem to melt away, revealing her goddess-like form. Her hands fly to her perfect breasts, massaging them urgently.
Angela: [Her voice low and husky] "The spirits are awakening our deepest desires. Don't fight it. Let the pleasure consume you."
***XHH2D.webp***
You feel the cool touch of a spirit passing through you, and suddenly your senses are heightened to an impossible degree. Every breath of wind, every rustle of leaves sends shockwaves of pleasure through your body. Your costume vanishes, revealing your massively engorged member, pulsing with viral energy.
Mia: [Staring at your erection, her voice a mix of awe and lust] "Holy... Is that because of the ghosts, or have you always been hiding that monster?"
Unable to resist, Mia turns around, bending over slightly as she spreads her ass cheeks. She looks back at you, her eyes clouded with lust.
Mia: [Moaning] "I need... I need something in my ass. It's burning with desire."
***XHH2E.webp***
Gabbie, lost in sensation, has dropped to her knees on the cool grass. Both hands are working her breasts, squeezing and kneading the soft flesh. She pinches her nipples hard, crying out in a mix of pain and pleasure.
Gabbie: [Whimpering] "My tits... they're so full. It feels like they might burst if I don't... if I don't..."
***XHH2F.webp***
Angela begins to levitate slightly, her body glowing with an otherworldly light. Her hands never leave her breasts, massaging them with increasing urgency. Her nipples seem to glow brighter than the rest of her body, pulsing with ethereal energy.
Angela: [Her voice echoing with power] "Let go of your inhibitions. Give in to the primal energy surrounding us."
***XHH2G.webp***
The graveyard seems to pulse with energy, the spectral forms swirling around you in an ever-tightening spiral. The moonlight takes on a reddish hue, bathing everything in a surreal, bloody glow. The air is thick with the scent of arousal and the sound of desperate moans.
You find your own hand wrapping around your throbbing shaft, stroking slowly as you take in the sight before you. Three beautiful women, lost in the throes of spectral-induced passion, pleasuring themselves shamelessly under the Halloween moon.
Mia has fallen to her hands and knees, her ass high in the air. One hand reaches back, fingers probing at her tight asshole. Her other hand supports her weight as she rocks back and forth, desperate for more stimulation.
Mia: [Gasping between moans] "Oh fuck... my ass... it needs to be filled..."
***XHH2H.webp***
Gabbie is on her back now, her breasts pushed together as she frantically rubs them against each other. Her nipples, red and swollen, peek out from between her fingers as she pinches and pulls at them.
Gabbie: [Voice breaking with need] "Please... I need... I need to cum from my tits..."
***XHH2I.webp***
Angela's entire body is pulsing with light now, her form flickering between solid and translucent as she hovers above the ground. Her breasts seem to have swollen slightly, glowing brighter than the rest of her body. Milk-like droplets of glowing energy begin to leak from her nipples as she continues to massage them.
Angela: [Her voice resonating in your mind more than in your ears] "Yes... feel the power. Let it build. Let it consume you!"
***XHH2J.webp***
The spirits swirl faster around you all, their ethereal forms passing through your bodies repeatedly. With each pass, the pleasure intensifies. You can feel your orgasm building, a tidal wave of ecstasy threatening to crash over you at any moment.
Mia is the first to break. She manages to work two fingers into her ass, crying out in ecstasy as her orgasm hits. Her whole body shudders, her ass clenching rhythmically around her fingers.
***XHH2K.webp***
Gabbie follows almost immediately, her back arching off the ground as she cums solely from breast stimulation. Her nipples seem to spasm, and for a moment, you swear you see a faint glow emanating from them.
***XHH2L.webp***
Angela's climax is something otherworldly. Her breasts erupt in a blinding flash of light as she cums, streams of glowing energy shooting from her nipples like fireworks. Her scream of ecstasy shakes the very foundations of the earth.
***XHH2M.webp***
The sight and sound of their combined release pushes you over the edge. With a roar that seems to come from the very depths of your soul, you cum. Your seed erupts from you in long, powerful spurts, arcing through the air to splatter on the ground and nearby tombstones. The sheer volume is staggering, far more than should be humanly possible.
As the last waves of pleasure wash over you all, the spectral energy begins to dissipate. The spirits sink back into the ground, leaving you alone in the now-silent graveyard. You find yourselves lying on the cool grass, naked and panting, bodies glistening with sweat in the moonlight.
Mia: [Voice hoarse, eyes wide] "That was... holy shit. I've never felt anything like that in my ass before."
Gabbie: [Still trembling slightly, cupping her breasts gently] "It was like... like my entire being was centered in my breasts. So intense."
Angela: [Her glow fading, but nipples still dripping with ethereal energy] "We've touched something beyond the veil tonight. A power as old as time itself."
`;
playAudio("music", "halloween");
setBackground("ressources/backgrounds/XHH1.webp");
DIAF_parseBuildAppend(dialog);
})();
</script><script>
(() => {
const dialog = `
You lie down on your makeshift bed, your muscles aching from the day's challenges. As you drift into sleep, you find yourself standing in the barren Wastelands, a place of desolation and danger.
SA1A.webp
Angela: (Appears beside you, ethereal) "The Wastelands are harsh, but they hold valuable resources. Be cautious but curious."
You: "I'll keep my eyes open and my guard up."
Angela: "Good. Remember, some risks are worth taking, but always be prepared for the unexpected."
SA1B.webp
Wake up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You collapse onto your bed, exhausted. In your dreams, you find yourself in the lush but mysterious forest.
SA2A.webp
Angela: (Materializes, smiling) "The forest is teeming with life, but not all of it is friendly."
You: "So, what should I look out for?"
Angela: "Be wary of the creatures, but also look for herbs and plants. They can be useful for crafting and healing."
SA2B.webp
Wake up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You lay down, your thoughts swirling. Soon, you find yourself walking through the District, the last bastion of civilization.
SA3A.webp
Angela: (Joins you, looking around) "The District is where you'll resource yourself and build your relationships."
You: "Got it. Anything specific I should know?"
Angela: "Keep an eye on the Trust and Lust attributes with the women. They'll determine how much help or hindrance they can be."
SA3B.webp
Wake up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You hit the bed, your body yearning for rest. As you sleep, you find yourself in an arena, facing an unknown opponent.
SA4A.webp
Angela: (Appears, arms crossed) "Fights are inevitable, but they're also an opportunity."
You: "An opportunity for what?"
Angela: "To gain resources, build your skills, and earn respect. But remember, losing a fight could mean losing valuable items."
SA4B.webp
Wake up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You're in a deep sleep, half-covered by the thin blanket. Cherie quietly enters the room, her eyes widening as she notices your state of undress.
SA7.webp
Cherie: (Stares, heart pounding) "I came to check his vitals, but this... I should leave, but the virus... it's making it hard to look away."
SA5A.webp
Wake up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You're sprawled on your bed, the blanket barely covering you. Elfie bursts into the room, her eyes widening as she takes in the sight before her.
SA7.webp
Elfie: (Giggles internally, cheeks flushing) "He looks so relaxed. But why do I feel so... jittery all of a sudden? Is it the virus? It's like it's pulling me closer."
SA6A.webp
Wake up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You're lying on your bed, half-naked and deep in sleep. Lana walks in, her eyes locking onto you as she stands by the door.
SA7.webp
Lana: (Stiffens, eyes narrowing) "I should've knocked. But why can't I leave? The virus is making it hard to... resist this tension."
SA7A.webp
Wake up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You wake up to the sound of the door creaking open. Cherie walks in, her eyes immediately darting to your lower half.
SA8.webp
Cherie: (Flustered, trying to maintain eye contact) "Good morning. I came to check on you. How did you sleep?"
SA8A.webp
You: (Oblivious, stretching) "Slept like a rock. What brings you here so early?"
Cherie: (Blushing, quickly glances away) "Just... routine check-up. I'll let you get dressed."
Get up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You're jolted awake by Elfie's cheerful voice. As your eyes open, you see her standing there, her eyes wide and cheeks flushed.
SA8.webp
Elfie: (Giggling, but noticeably flustered) "Morning! Rise and shine!"
SA9A.webp
You: (Yawning, sitting up) "You're up early. What's the occasion?"
Elfie: (Fidgeting, avoiding eye contact) "No occasion! Just wanted to say hi! I'll, um, let you get ready!"
Get up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You slowly wake up, sensing someone's presence. Opening your eyes, you see Lana standing by the door, her eyes averted.
SA8.webp
Lana: (Cautious, looking away) "Morning. You're up late."
SA10A.webp
You: (Stretching, unaware) "Is it? I could've slept longer. What's up?"
Lana: (Blushing, clears throat) "Nothing. I'll leave you to it."
Get up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter your room, feeling a mild itch of the virus' effects. It's manageable but distracting. You decide to take care of it before it escalates.
You: (Sighs softly) "Better now than later."
SB1A.webp
You quickly relieve the tension, a sense of mild relief washing over you.
You: "Alright, back to it."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter your room, feeling a mild itch of the virus' effects. It's manageable but distracting. You decide to take care of it before it escalates.
You: (Sighs softly) "Better now than later."
SB2A.webp
You quickly relieve the tension, a sense of mild relief washing over you.
You: "Alright, back to it."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter your room, feeling a mild itch of the virus' effects. It's manageable but distracting. You decide to take care of it before it escalates.
You: (Sighs softly) "Better now than later."
SB3A.webp
You quickly relieve the tension, a sense of mild relief washing over you.
You: "Alright, back to it."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter your room, feeling a mild itch of the virus' effects. It's manageable but distracting. You decide to take care of it before it escalates.
You: (Sighs softly) "Better now than later."
SB4A.webp
You quickly relieve the tension, a sense of mild relief washing over you.
You: "Alright, back to it."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You walk into your room, the virus' pull becoming more noticeable. Your thoughts are starting to scatter, and you know you need to address it.
You: (Frustrated) "Can't focus like this."
SB5A.webp
You take a moment to relieve the tension. The sensation is stronger than usual, and you feel a wave of clarity afterwards.
You: "Much better."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You walk into your room, the virus' pull becoming more noticeable. Your thoughts are starting to scatter, and you know you need to address it.
You: (Frustrated) "Can't focus like this."
SB6A.webp
You take a moment to relieve the tension. The sensation is stronger than usual, and you feel a wave of clarity afterwards.
You: "Much better."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You walk into your room, the virus' pull becoming more noticeable. Your thoughts are starting to scatter, and you know you need to address it.
You: (Frustrated) "Can't focus like this."
SB7A.webp
You take a moment to relieve the tension. The sensation is stronger than usual, and you feel a wave of clarity afterwards.
You: "Much better."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You barely make it to your room, the virus' effects reaching a critical point. Your vision blurs, and your thoughts are a jumbled mess. You're at the edge, and you know you need immediate relief.
You: (Struggling) "Now. Must do it now."
SB8A.webp
With urgency, you relieve the intense tension. The sensation is almost overwhelming, but the relief is immediate and profound.
You: "Close call."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You barely make it to your room, the virus' effects reaching a critical point. Your vision blurs, and your thoughts are a jumbled mess. You're at the edge, and you know you need immediate relief.
You: (Struggling) "Now. Must do it now."
SB9A.webp
With urgency, you relieve the intense tension. The sensation is almost overwhelming, but the relief is immediate and profound.
You: "Close call."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You barely make it to your room, the virus' effects reaching a critical point. Your vision blurs, and your thoughts are a jumbled mess. You're at the edge, and you know you need immediate relief.
You: (Struggling) "Now. Must do it now."
SB10A.webp
With urgency, you relieve the intense tension. The sensation is almost overwhelming, but the relief is immediate and profound.
You: "Close call."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You barely make it to your room, the virus' effects reaching a critical point. Your vision blurs, and your thoughts are a jumbled mess. You're at the edge, and you know you need immediate relief.
You: (Struggling) "Now. Must do it now."
SB11A.webp
With urgency, you relieve the intense tension. The sensation is almost overwhelming, but the relief is immediate and profound.
You: "Close call."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You barely make it to your room, the virus' effects reaching a critical point. Your vision blurs, and your thoughts are a jumbled mess. You're at the edge, and you know you need immediate relief.
You: (Struggling) "Now. Must do it now."
SB12A.webp
With urgency, you relieve the intense tension. The sensation is almost overwhelming, but the relief is immediate and profound.
You: "Close call."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter your room, feeling a mild itch of the virus' effects. It's manageable but distracting. You decide to take care of it before it escalates.
You: (Sighs softly) "Better now than later."
SB13A.webm
You quickly relieve the tension, a sense of mild relief washing over you.
You: "Alright, back to it."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You walk into your room, the virus' pull becoming more noticeable. Your thoughts are starting to scatter, and you know you need to address it.
You: (Frustrated) "Can't focus like this."
SB14A.webp
You take a moment to relieve the tension. The sensation is stronger than usual, and you feel a wave of clarity afterwards.
You: "Much better."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You barely make it to your room, the virus' effects reaching a critical point. Your vision blurs, and your thoughts are a jumbled mess. You're at the edge, and you know you need immediate relief.
You: (Struggling) "Now. Must do it now."
SB15A.webp
You: "Close call."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter your room, feeling a mild itch of the virus' effects. It's manageable but distracting. You decide to take care of it before it escalates.
You: (Sighs softly) "Better now than later."
SB16A.webp
You quickly relieve the tension, a sense of mild relief washing over you.
You: "Alright, back to it."
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
SW1.webp
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
SW2.webp
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
SW3.webp
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
SW4.webp
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
SW5.webp
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
SW6.webp
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
SW7.webp
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
SW8.webp
Done
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Narrator: You feel your body weakening as the hunger pangs become unbearable. Your stomach is twisted in knots and your head throbs from the lack of nourishment. Looking over at your mother and sisters, you see the gaunt expressions on their faces, their eyes sunken and bodies frail from starvation. You know you have failed them as a provider.
You: [Fading in and out of consciousness as extreme hunger takes hold](I'm so hungry...we're all starving...this is all my fault...)
Narrator: Suddenly, you see a fiery blonde woman stomping towards you, radiating power. As she comes into focus, you recognize her as Tsunade from Naruto, the legendary Sannin.
***SH1A.webp***
Tsunade: [Scowling angrily] Hey you! Snap out of it and get your act together! Your family needs you!
Narrator: You stare in disbelief as she grabs you by the collar and shakes you roughly.
Tsunade: [Glaring intensely] Look at me! I'm not going to let you give up so easily. Now stand up and be a man!
Narrator: She slaps you hard across the face, the shock helping you focus. You scramble to your feet as she looks you up and down appraisingly.
***SH1B.webp***
Tsunade: [Nodding in approval] Hmm not bad, you've got some potential. But we need to relieve some of that tension first.
Narrator: With brute strength she shoves you against the wall, pressing her curvy body against yours aggressively as she crushes her lips to yours.
You: [Kissing her back passionately](Oh Tsunade! I've always wanted this!)
Tsunade: [Breaking the kiss and scowling] Quiet! I'm doing this to motivate you, not for your enjoyment.
***SH1C.webp***
Narrator: She roughly gropes your hardening manhood through your pants, squeezing it painfully. You wince but don't protest.
Tsunade: [Unzipping your pants] Hmph, well you do seem ready for action at least.
***SH1D.webp***
Narrator: She squats down and takes your length into her mouth, sucking forcefully as you gasp in pained pleasure. Her nails dig into your thighs as she bobs her head at a punishing pace.
***SH1E.webp***
Tsunade: [Coming up for air] Had enough yet? I'm just getting started!
***SH1F.webp***
Narrator: Not waiting for an answer, she spins you around and bends you over a table. You hear her wetness as she fingers herself readying you for entry.
***SH1G.webp***
Narrator: With no hesitation she slams every inch of you deep into her soaked pussy. You rail her from behind, the table creaking from the force of your powerful thrusts.
***SH1H.webp***
Tsunade: [Moaning loudly as she fucks you] Come on! Take me like a man! Don't you dare finish before me!
Narrator: You clench your teeth, willing yourself not to climax too soon as you pounds her relentlessly. Finally you feel her inner walls clench and flutter around your shaft.
***SH1I.webp***
Narrator: She lets out an feral scream as her orgasm crashes through her. The pulsations quickly send you over the edge as you are about to cum she switches position and take you between her boobs to finish you off and you end up coming on her chest.
***SH1J.webp***
Narrator: Panting heavily, she withdraws from you and straightens her clothes, her demeanor shifting from lustful to strict.
Tsunade: [Giving you a stern look] I hope I've made myself clear. No more wallowing in self-pity, your family needed you!
Narrator: The vision starts to fade as you snap back to reality. Looking around frantically you see your starving mother and sisters barely holding on. You don't have enough energy to do something about it and everything fades to black.
Button: Farewell
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Narrator: You feel your body weakening as the hunger pangs become unbearable. Your stomach is twisted in knots and your head throbs from the lack of nourishment. Looking over at your mother and sisters, you see the gaunt expressions on their faces, their eyes sunken and bodies frail from starvation. You know you have failed them as a provider.
You: [Fading in and out of consciousness as extreme hunger takes hold] (I'm so hungry...we're all starving...this is all my fault...)
Narrator: Suddenly, you see a curvy orange-haired woman approaching you through your hazy vision. As she comes into focus, you recognize her as Nami from One Piece.
***SH2A.webp***
Nami: [Hands on her hips, looking irritated] Ugh, I can't believe you got us stranded out here with no food! Some captain you are.
You: [Staring in disbelief] N-Nami? What are you doing here? I must be hallucinating...
Nami: [Rolling her eyes] Yeah yeah, you're hallucinating. But I'm still pissed at you! As your navigator, I'm gonna have to punish you for this.
Narrator: She reaches down and grabs your crotch aggressively, causing you to yelp in surprise.
***SH2B.webp***
Nami: [Squeezing tighter] Now be a good captain and take your punishment like a man. I'm confiscating this treasure of yours!
Narrator: You groan as she massages and strokes you through your pants, your manhood quickly swelling from her skilled touch.
Nami: [Noticing your erection and smirking] Well well, what do we have here? Looks like someone's wanting to hoist the mainsail.
***SH2C.webp***
You: [Panting heavily] Oh wow Nami...your hands feel amazing...
Nami: [Giggling] All right captain, I'll give you a little reward for enduring your punishment so well.
Narrator: She unzips your pants and takes your length into her mouth, sucking vigorously. You gasp and grip her hair as intense waves of pleasure wash over you.
***SH2D.webp***
Nami: [Pausing her sucking to look up at you sternly] Just remember you still owe me for this! I'm adding an extra 10,000 berries to your debt for this special service.
Narrator: You groan in protest but don't stop her as she resumes her enthusiastic blowjob. She bobs her head rapidly, taking you deep into her throat again and again. Then she decides to give you a proper titsjob and get to it like her life depends on it.
***SH2E.webp***
Nami: [Popping you out of her mouth with an audible slurp] Mmm you taste pretty good captain, but I think it's time I got a bit more compensation for my hard work.
Narrator: She strips naked, showcasing her perfect curves. Gripping your shoulders, she climbs on top and lowers herself onto your stiffness.
***SH2F.webp***
Nami: [Moaning as she rides you] Ah yes, this is the real treasure!
Narrator: You thrust up to meet her gyrations, pounding away at her dripping womanhood. You run your hands over her smooth skin and ample chest, playing with her nipples as she works her hips.
***SH2G.webp***
Nami: [Picking up speed] Oh yes, just like that! Give me everything you've got!
Narrator: The lewd sounds of your bodies colliding fill the air. You flip her into other positions, ramming her hard from behind and missionary.
***SH2H.webp***
Narrator: Finally, you cry out as the pressure builds to a breaking point. With a few more powerful thrusts, you erupt inside her, filling her womb with your seed.
Narrator: you finish, panting hard, Nami climbs off and starts getting dressed.
Nami: [Counting on her fingers] Let's see, with interest that comes to...one million berries you owe me now! You better pay up when we get back to the ship!
Narrator: She blows a kiss and walks away swaying her hips. As she fades from sight, the grim reality sets back in. Your family lies lifeless around you, and your own life quickly slips away as darkness closes in...
Button: Farewell
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Narrator: Fading in and out of consciousness as extreme hunger takes hold, your mind starts to play tricks on you. Suddenly, you see a shapely figure with blue hair approaching you through your hazy vision. As she comes into focus, you recognize her as Bulma from Dragonball.
***SH3A.webp***
Bulma: [Hands on her hips, looking at you skeptically] Hey there, you don't look so good. What's going on?
You: [Staring in disbelief, too weak to respond]
Bulma: [Rolls her eyes and sighs] Ugh, men. Always getting themselves into trouble. [Kneels down next to you and checks your vitals] Yup, you're clearly not doing well. But don't worry, I'll take care of you!
Narrator: She unzips your pants in a no-nonsense manner, licking her lips when she sees your swollen manhood.
***SH3B.webp***
Bulma: [Matter-of-factly] Well, looks like someone needs some relief here. I guess I have no choice but to help out.
Narrator: Gripping you firmly, she starts stroking up and down in a confident manner, moaning a little at the feeling of you pulsing in her hand.
***SH3C.webp***
You: [Groaning loudly, too weak to believe this is really happening]
Bulma: [Smirking arrogantly] I know, I have very talented hands. Just relax and let me work my magic!
Narrator: She takes you into her mouth and bobs her head rapidly, putting her oral skills on full display. Her tongue swirls skillfully as she works your length. The pleasure is so intense you see stars.
***SH3D.webp***
You: [Breathing heavily, nearing climax]
Narrator: Sensing how close you are, Bulma pops you out of her mouth and grins.
Bulma: [Hands on her hips] Alright, I think that's enough foreplay. Time for the main event!
Narrator: She strips fully nude in a matter-of-fact manner then pushes you down and straddles you, sliding down onto your slick shaft.
***SH3E.webp***
Bulma: [Moaning loudly] Mmm yes, now this is more like it!
Narrator: She rides you hard, grinding her hips aggressively. You grip her ass tightly, pumping up to meet her intense rhythm. Her breasts bounce wildly right in your face.
Bulma: [Commanding you in a stern voice] Come on, put some more effort into this! I'm not doing all the work here!
***SH3F.webp***
Narrator: You pound away intensely, flipping her into different positions as she demands. Missionary, doggy style, reverse cowgirl - you work hard to keep up with Bulma's commands and relentless pace.
***SH3G.webp***
Narrator: Finally, at her urging you drive in deep and hold yourself there, exploding intensely inside her spasming sex. You empty yourself completely until she's satisfied. As the last drops spill from you, the pleasure and Bulma's presence fade away...
***SH3H.webp***
Narrator: Leaving you alone, with the grim reality setting in that your family has died of starvation while you hallucinated. Darkness consumes your vision as you join them in eternal sleep.
Button: Farewell
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Narrator: You feel your body weakening as the hunger pangs become unbearable. Your stomach is twisted in knots and your head throbs from lack of nourishment. Looking over at your mother and sisters, you see the gaunt expressions on their faces, their bodies frail from starvation. You know you have failed them as a provider.
You: [Fading in and out of consciousness from extreme hunger] I'm so hungry...we're all starving...this is all my fault...
Narrator: Suddenly, you see a curvy brunette woman approaching you through your hazy vision. As she comes into focus, you recognize her as Delia Ketchum, Ash's mom from Pokemon.
***SH4A.webp***
Delia: [Looking concerned] Oh dear, you poor thing. You must be absolutely famished.
You: [Staring in disbelief] Delia? I must be hallucinating...
Delia: [In a soothing, motherly voice] Shh, try to relax. Let me make you a little more comfortable.
***SH4B.webp***
Narrator: She gently presses her curvy body against yours in an attempt to prop you up. Her hands lightly brush over your chest in a caring manner as she checks on your condition. You feel your manhood stirring as she looks at you kindly.
Delia: [Noticing your reaction] Oh! I apologize, I didn't mean to excite you. I was just trying to help.
You: [Groaning involuntarily] Sorry, your touch just feels really nice...
***SH4C.webp***
Delia: [Blushing but still speaking gently] Oh my, you poor dear. You must be delirious from hunger. Here, let me eat you out.
Narrator: She unzips your pants and gingerly takes your length into her mouth. She sucks you gently, providing soothing oral stimulation. You grip her hair instinctively as waves of pleasure wash over you.
***SH4D.webp***
You: [Moaning] Oh wow...Delia that feels incredible...
Narrator: She continues oral care, speaking words of comfort around your manhood. Sensing you are close to release, she slowly pops you out of her mouth.
Delia: [Smiling maternally] There now, feeling a little better? I want to make sure you’re taken care of.
She removes her clothes, revealing her curvy, beautiful body. You eagerly provide her oral pleasure, wanting to reciprocate. Her cries of delight fill the air as you lick her sensitively.
***SH4E.webp***
Narrator: After getting her wet, you enter her with care. You make love slowly and gently, both of you moaning in subdued euphoria. You explore various positions - missionary, sideways, cowgirl - maintaining an intimate tenderness throughout.
***SH4F.webm***
Narrator: Finally, you ask to take her from behind. She gets on all fours and you enter her tight rear entrance tenderly. You move together in bliss until climaxing simultaneously, filling her with intense warmth.
***SH4G.webp***
Narrator: As you finish, the vision of Delia starts to fade. She smiles at you lovingly.
Delia: Come see me again soon dear. I’ll take good care of you.
Narrator: The euphoria fades as the hallucination ends. You see your mother and sisters motionless on the ground, realizing your failure to provide has led to their starvation and your shared demise.
Button: Farewell
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Narrator: You are exhausted after a long day of working and surviving in the harsh new world. As the night grows late, you feel your eyelids getting heavier and heavier. You know you should get some rest, but you decide to push yourself and stay up just a little longer. As the minutes tick by, an overwhelming sense of tiredness washes over you. Your limbs feel like lead, and your mind starts drifting into a sleepy haze.
Narrator: Just as you are about to give in and collapse onto your bed, a strange vision suddenly appears before you. Through your bleary, half-closed eyes, you see D.Va from the game Overwatch materializing in your room. She looks so real, so vibrant and full of life.
***SS1A.webp***
D.Va: [giggling and posing cutely](You must be hallucinating from exhaustion) Hey there! Looks like someone stayed up way past their bedtime.
Narrator: You shake your head, trying to clear the fog from your mind. This can't be real. Am I dreaming? Or is the lack of sleep making me hallucinate?
Narrator: D.Va saunters closer, swaying her hips flirtatiously. She reaches out and runs a finger down your chest. You feel a tingling jolt at her touch. This feels too real to be just a hallucination.
D.Va: [biting her lower lip](His reaction is so cute) Mm someone's been working hard. I can help you relax, you know.
***SS1B.webp***
Narrator: Before you can respond, she hops into your lap, straddling you. You inhale sharply at the feeling of her weight on top of you. She grinds her hips, and you feel a swell of arousal building inside you. The scent of her hair and skin surrounds you, so sweet and tantalizing.
D.Va: [gazing into your eyes](Let's see how far I can take this fantasy of his) Just sit back and let me make you feel good.
Narrator: She reaches down and begins stroking you through your pants. A jolt of pleasure shoots up your spine at her touch. Her hand is so soft yet firm in all the right ways. She smiles mischievously as you harden under her ministrations.
***SS1C.webp***
D.Va: [biting her lip](Mm someone's excited...let's take this further) Is that a rocket in your pocket, or are you just happy to see me?
Narrator: Before you can respond, she deftly unzips your pants, freeing you from the confines of the fabric. The feeling of her small hand wrapping around your exposed length is incredible. She begins moving up and down, quickly finding a rhythm that has you seeing stars. Precum beads at your tip as she increases her pace, using it to lubricate her strokes.
***SS1D.webm***
D.Va: [looking up at you hungrily](The sounds he's making are so hot) Does that feel good? Tell me how good it feels...
You: It feels incredible...don't stop!
Narrator: She smiles and lowers her head, her pink lips parting. Your tip disappears into the warm, wet cavern of her mouth. The feeling is unbelievable. Her tongue swirls and laps, hitting all the right spots. She bobs her head up and down, taking more and more of you each time. The pleasure builds and builds, like a rocket preparing for liftoff.
***SS1E.webp***
You: Oh god...your mouth feels so good!
D.Va: [moaning around you](Mmm he tastes amazing)
Narrator: She increases her pace, her cheeks hollowing as she sucks you with vigor. It feels too good to be real, like a fantasy come to life. Your toes curl from the building sensations. Sensing you are close, D.Va pops you out of her mouth and gives you a naughty look.
***SS1F.webp***
D.Va: [straddling you again](Let's try something else now) My turn...
Narrator: She positions herself above your face and lowers herself down until her glistening pink folds are right in front of your mouth. Needing no further invitation, you lean up and begin lapping hungrily at her wet slit. She gasps and grinds against your probing tongue.
***SS1G.webp***
D.Va: Oh yes, just like that! Don't stop!
Narrator: You continue eating her out with enthusiasm, relishing her sweet juices. Her thighs quiver around your head as she rides your face to climax. As you bring her to orgasm, she cries out in ecstasy.
***SS1H.webp***
Narrator: Finally, unable to wait any longer, D.Va shifts and guides you inside her tight, wet pussy. You both moan loudly as you fill her up to the hilt. She starts bouncing up and down rapidly, her breasts jiggling right in your face. You take one of her hardened nipples into your mouth, sucking in time with her movements.
***SS1I.webp***
D.Va: [eyes rolling back in pleasure](Yes, please fuck me hard!) Ah! You feel so good inside me!
***SS1J.webp***
Narrator: She rides you with wild abandon, her slick inner walls gripping you like a velvety vise. You piston your hips up to meet her downward thrusts, your bodies colliding passionately. The pleasure is white-hot in intensity, like nothing you've ever experienced before.
***SS1K.webp***
D.Va: [panting heavily](Let's try my other hole now) I want you in my ass!
Narrator: She climbs off and gets on all fours, presenting herself to you. You position yourself behind her and slowly work your aching length into her impossibly tight backdoor. She whimpers and pushes back against you. Once fully seated inside, you begin thrusting vigorously.
***SS1L.webp***
D.Va: Oh god yes! Just like that! Fuck my ass!
***SS1M.webp***
Narrator: You grip her hips and pound away relentlessly. The feeling of her snug anal passage squeezing around you is incredible. She fingers her clit rapidly as you hammer into her from behind. The lewd sounds of flesh slapping on flesh fill the room, mingling with your passionate moans and gasps.
***SS1N.webp***
Narrator: The pleasure continues building to impossible heights. With a few more well-angled thrusts, D.Va's body seizes up in orgasm just as you erupt powerfully inside her. She milks every last drop from you as you collapse forward onto her, fully spent.
***SS1O.webp***
Narrator: As the haze of lust begins clearing, D.Va turns and gives you a final smile and wink.
D.Va: That was fun! Get some rest now...until next time!
Narrator: With those parting words, she blows you a kiss. Your surroundings start spinning and fading to black. Your head hits the pillow just before everything goes dark. The last thing you remember is D.Va's smiling face as you drift off into a deep, restful sleep.
Button: Wake up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Narrator: You are exhausted after a long day of working and surviving in the harsh new world. As the night grows late, you feel your eyelids getting heavier and heavier. You know you should get some rest, but you decide to push yourself and stay up just a little longer. As the minutes tick by, an overwhelming sense of tiredness washes over you. Your limbs feel like lead, and your mind starts drifting into a sleepy haze.
Narrator: Just as you are about to give in and collapse onto your bed, a strange vision suddenly appears before you. Through your bleary, half-closed eyes, you see a flash of green in the corner of your eye. You turn to see Cammy and Chun-Li materializing before you, looking vibrant and ready for battle.
***SS2A.webp***
***SS2B.webp***
Narrator: Cammy stands tall and proud, her muscular yet feminine physique accentuated by her signature green leotard. Her long blonde braids sway as she places her hands on her shapely hips. "Look who can barely keep his eyes open. Seems someone hasn't been getting proper rest," she says in her distinct British accent.
Narrator: Chun-Li giggles and nods in agreement, her cheeks plump and rosy. She's wearing her blue qipao dress, the silky material hugging her curvy figure. Her powerful thighs flex as she approaches you. "That won't do. You need to relax so you can continue fighting the good fight," she says, her voice sweet yet firm.
Narrator: You shake your head, trying to clear the fog from your mind. This can't be real. Am I dreaming? Or is the lack of sleep making me hallucinate?
Narrator: The two saunter closer, swaying their hips. Cammy reaches out and runs a hand down your chest. You feel a tingling sensation at her touch. Chun-Li climbs into your lap, the feeling of her weight on you seeming too real for a hallucination.
***SS2C.webp***
Chun-Li: Mm, you've got some nice muscles here. But you're all tense.
***SS2D.webp***
Narrator: She begins grinding her hips, and you feel yourself swelling with arousal. Cammy kneels down and starts stroking you through your pants. A jolt of pleasure shoots up your spine.
Cammy: Well, look who's excited to see us. Let's help take care of this, shall we?
Narrator: She unzips your pants, freeing your erect length. The feeling of her hand wrapping around you is incredible. She starts stroking up and down, quickly finding a good rhythm.
***SS2E.webp***
Chun-Li: [biting her lip] Oh, that looks like it feels really good. Tell us how good it feels, baby.
You: It feels amazing, don't stop!
Narrator: Cammy smiles and takes you into her mouth. Her tongue swirls and laps at you skillfully. Chun-Li grinds against you harder, moaning. The pleasure builds to greater heights.
***SS2F.webm***
***SS2G.webp***
You: Oh god, your mouths feels so good, Cammy!
Cammy: [popping you out] I think he's ready for more.
Narrator: Chun-Li stands up and lowers herself onto you, guiding you inside her. You both moan loudly as she takes you in deeply. She starts bouncing rapidly, her breasts jiggling. You take one of her nipples into your mouth, sucking in time with her movements.
***SS2H.webp***
Chun-Li: Oh yes, you feel so good inside me! Fuck me harder!
Narrator: She rides you passionately while Cammy positions herself over your face. You lean up and hungrily start eating her out. She grinds against your tongue, crying out. The pleasure is almost more than you can take.
***SS2I.webp***
Narrator: Finally, unable to hold back any longer, you erupt powerfully inside Chun-Li. She climaxes around you at the same time. Cammy moans loudly as you make her orgasm with your mouth.
***SS2J.webp***
Narrator: Utterly spent, the two fighters smile down at you. Just before you pass out, Cammy winks.
Cammy: Sleep well, love. We'll play more next time.
Narrator: As they fade away, you fall into a deep, restful sleep.
Button: Wake up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Narrator: You are absolutely exhausted after a long day of mystery solving and evading dangers. As night falls, your eyelids grow heavier by the minute. You know you should get some rest, but your curiosity compels you to stay up a little longer. However, your fatigue quickly becomes overwhelming.
Narrator: Just as you start dozing off, a familiar figure appears unexpectedly - none other than Velma from the Scooby Doo gang. Adjusting her oversized glasses, she approaches you with a coy smile.
***SS3A.webp***
Velma: Jinkies! Looks like someone's tuckered out. Why don't you let me help you relax, Shaggy?
Narrator: Still skeptical that she's really there, you rub your eyes and blink hard. Velma giggles and walks closer, her short orange pleated skirt swishing around her thighs.
***SS3B.webp***
Velma: I know just the thing to help you unwind before bed.
Narrator: Before you can react, she climbs into your lap, the warmth of her body pressing against you. Your pulse quickens as she wiggles her hips, her soft curves tantalizing even through the layers of her clothes.
Velma: Just lie back and let me work my magic.
Narrator: She traces her fingers down your chest, igniting sparks beneath your skin. With deft hands, she frees you from your pants, wrapping her fingers around your rapidly hardening length.
***SS3C.webp***
Velma: Well, well, what do we have here?
Narrator: She begins stroking up and down, quickly finding a rhythm that has you groaning. Her grip is snug but smooth, aided by the beads of precum oozing from your tip. The look of academic curiosity on her face makes it all the more arousing.
***SS3D.webp***
Velma: Fascinating reaction...I think some hands-on research is required.
Narrator: She opens her plump lips and takes you into her warm, wet mouth. Her tongue swirls and laps eagerly, glasses fogging up. She bobs her head slowly, working you deeper with each pass.
Velma: Mmph...delightful hypothesis confirmed...
Narrator: Her pace increases as you gently thread your fingers through her short auburn hair. The velvety friction of her mouth is incredible. You can feel the pressure building in your core, ready to erupt like a science experiment.
***SS3E.webp***
Narrator: Sensing your impending climax, she pops you out of her mouth and grins mischievously. She swiftly removes her saturated orange panties and straddles you once more.
***SS3F.webp***
Velma: I think it's time we test this theory to completion, don't you?
Narrator: She positions her entrance over you and sinks down, engulfing your length in her slick heat. You both gasp sharply as she takes you in to the hilt. Soon she finds her rhythm, bucking her hips as she rides you.
***SS3G.webp***
Velma: Jinkies, yes! So this is what "culminating the experiment" means!
Narrator: You grip her supple waist, reveling in the feeling of her snug warmth. Her breathing grows ragged as she bounces faster, the wet sound of flesh colliding filling the room.
Velma: Don't stop! I'm so close to a breakthrough!
Narrator: She throws her head back, lost in ecstasy as her inner walls spasm and clamp down on you. The added pressure triggers your own intense release. With a few final erratic thrusts, you empty yourself deep inside her.
***SS3H.webp***
Narrator: Completely spent, you both collapse in a tangled heap. Velma sighs contentedly and snuggles up beside you.
Velma: I'd call that a successful study session. Now get some rest, you've earned it!
Narrator: She gives you a peck on the cheek before your vision fades to black. You feel her presence lingering as you drift into a deep, satisfied sleep.
Button: Wake up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Narrator: You are exhausted after a long day of working and surviving in the harsh new world. As the night grows late, you feel your eyelids getting heavier and heavier. You know you should get some rest, but you decide to push yourself and stay up just a little longer. As the minutes tick by, an overwhelming sense of tiredness washes over you. Your limbs feel like lead, and your mind starts drifting into a sleepy haze.
Narrator: As you rub your bleary eyes, you see a shapely figure standing by the window. You do a double take as you realize it's Helen Parr from The Incredibles!
***SS4A.webp***
Helen: Oh honey, you look absolutely exhausted! Why don't you have a seat and let me take care of you?
Narrator: Still wondering if you're hallucinating, you slowly sink down onto the edge of the bed. Helen sashays over, her hips swaying enticingly. She sits next to you and begins massaging your shoulders, her strong yet gentle fingers working out the knots.
***SS4B.webp***
Helen: You poor thing, you're so incredibly tense! Just relax and let me help you unwind.
Narrator: Her hands roam your back, dissolving the tension under her expert touch. After several minutes, she stops and stands up.
Helen: Now, why don't I help you get ready for bed?
Narrator: She kneels down and removes your shoes and socks, caressing your feet. Then she stands and unbuttons your shirt, peeling it off to reveal your chest. Her fingers trail lightly over your skin, raising goosebumps.
Helen: Let's get these pants off too, okay?
Narrator: She unzips your pants tantalizingly slowly, then tugs them down your legs. You lift your hips to help her pull them off completely, leaving you in just your boxers. She licks her lips appreciatively.
***SS4C.webp***
Helen: There, now make yourself comfortable on the bed.
Narrator: You settle back against the pillows. Helen climbs on top of you, straddling your lap. She begins grinding her hips, the friction feeling amazing even through both of your underwear.
Helen: Mmm...you deserve to feel good after such a long day.
Narrator: She reaches down and strokes your hard length through your boxers, eliciting a sharp inhale. Still undulating her hips, she uses her powers to remove her super suit, exposing her full, supple breasts.
***SS4D.webp***
Helen: Here, let me take care of this for you...
Narrator: She tugs your boxers down and wraps her hand firmly around your bare, rigid shaft. Her strokes are expertly paced as precum beads at your tip. The cool metal of her wedding ring heightens the sensations.
Narrator: After bringing you close with her hands, she repositions herself above you. Her eyes lock with yours as she sinks down, enveloping your throbbing manhood within her hot, slick pussy. You both moan loudly as she takes you to the hilt.
***SS4E.webp***
Narrator: Helen rides you steadily, her hips gyrating fluidly. The sight of her bouncing on top of you is mesmerizing. She gradually increases her tempo until the bed is rocking and creaking.
Helen: There you go, just relax...let me make you feel incredible...
Narrator: Her velvety inner muscles squeeze and massage your length. Your hands grip her toned ass tightly as she brings you both to the precipice.
***SS4F.webp***
Narrator: Sensing you are on the edge, she redoubles her efforts, working her inner muscles to milk your climax from you. With a ragged cry, the pleasure peaks and breaks over you in pulsing waves.
Narrator: As you float back down, she gives you a satisfied yet tender smile. But she doesn't stop there. Her hands and mouth continue to stoke your desire, coaxing you back to full arousal.
Helen: Oh, we're not done yet, honey...
Narrator: This time, she saddles up reversed, giving you a spectacular view of her shapely ass. As she rides you, she looks back over her shoulder, her eyes smoldering. You reach around to tease her stiff nipples as she swivels her hips.
***SS4G.webm***
Narrator: When you are both nearing the brink again, she leans forward into a 69 position, enveloping your rigid cock with her lips. The dual sensations push you over the edge once more, your cries muffled by her glistening pussy pressed against your mouth.
***SS4H.webm***
Narrator: Afterward, fully spent, Helen uses her powers to clean you both up and tuck you snugly under the blankets. She kisses your forehead tenderly, gazing at you with deep affection.
Helen: Sleep now, sweetie. I'll be right here if you need anything.
Narrator: Her gentle caresses lull you quickly into a deep, peaceful slumber.
Button: Wake up
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Narrator: You feel a heaviness in your limbs as the virus courses through your body unchecked. Your vision blurs as your heart pounds deafeningly in your chest. This is it - the virus has finally overwhelmed you. As you sink to your knees, darkness creeping into your periphery, an ethereal figure seems to manifest before you.
Makima: [emerging from swirling mist, her red eyes piercing yours](You recognize this seductive anime villainess, though you know she can't possibly be real) Hello there. It seems you've reached your limit.
***SV1A.webp***
Narrator: You stare as Makima saunters toward you, her hips swaying hypnotically. You know you should be afraid, but you feel only desire pooling within you as your eyes travel over her voluptuous form.
You: [fighting to remain conscious] You're not real...just a hallucination...
Makima: [kneeling before you, her fingers trailing down your heaving chest teasingly] Does it matter, when I can give you what you crave? Don't fight it now...just give in to me...
Narrator: Her touch is electric, sending sparks of pleasure through your body. You know you shouldn't, but you can't resist as she claims your mouth in a searing kiss. Her hands work at your pants, freeing your massive erection. You groan into her mouth as she wraps her fingers around you.
***SV1B.webp***
Makima: [stroking you firmly, her red eyes boring into yours] Forget everything else...focus only on me...
You: [gripping her shoulders for support, your hips bucking involuntarily] Makima...you feel so good...but this can't be real...
Makima: [increasing her pace, her lips curled in a smirk] Just let go...stop thinking and feel...
Narrator: The tension that has been building within you begs for release. You close your eyes, losing yourself to the rhythmic strokes of her hands. Nothing else matters but this exquisite pleasure she's coaxing from your body.
Narrator: Your eyes fly open as her mouth engulfs you, her tongue swirling skillfully. You cry out hoarsely, your fingers tangling in her hair. She takes you deep, moaning around your thickness. The vibration sends you reeling.
***SV1C.webp***
You: Fuck...Makima...I can't...I'm going to...
Narrator: She pulls back with an audible pop, a coy smile playing about her lips. With feline grace she straddles you, guiding you to her slick entrance. You hiss as she takes you in agonizingly slowly. Soon you are buried to the hilt within her velvet heat.
***SV1D.webp***
Narrator: You seize her hips as she begins to ride you. Her head falls back, red eyes sliding shut in ecstasy. You thrust up to meet her, consumed by carnal hunger. She crashes into you again and again until you are both panting and slick with sweat.
***SV1E.webp***
Narrator: In a sudden move she spins around, keeping you joined. The new angle has you seeing stars. You grip her waist tightly as she slams down, taking you to the hilt. You won't last much longer.
***SV1F.webm***
Narrator: With a guttural cry you find your release. As you spill yourself inside her, the world around you begins to spin. Makima turns back to face you, her expression unreadable.
***SV1G.webp***
Makima: It's time for you to go now...you've served your purpose...
You: [fighting to cling to consciousness] No...please...I have to go back...my family...
Narrator: But it's too late. Makima and the room around you fade to black. Though it was only an illusion, a final figment of your fevered mind, the regret is real. You failed - failed to control the virus, failed to save your family from The MAD's cruelty. As death closes its fist around your heart, your last thoughts are of your mother and sisters, now doomed to a horrific fate. And then...nothing.
Button: Succumb
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Narrator: You feel the deadly grip of the virus taking hold as your strength rapidly fades. Your vision blurs as your pounding heartbeat thunders in your ears. This is the end - the virus has finally overwhelmed you. Suddenly, an alluring figure emerges from the swirling mists.
Miss Fortune: [sashaying toward you, her hips swaying seductively] Well well, look what we have here.
***SV2A.webp***
Narrator: You stare, enthralled by the infamous bounty hunter. Fiery red hair tumbles over her shoulders, complementing her revealing outfit. Her piercing green eyes and arrogant smirk hold a dangerous allure.
You: [gasping] You can't be...real...
Miss Fortune: [kneeling before you, trailing a gloved finger down your heaving chest] Does it really matter, sugar? I'm here to give you exactly what you need.
Narrator: Her touch sends arcs of electricity through your fevered body. You know you shouldn't give in, but you're powerless to resist as she claims your mouth in a hungry kiss. Deft fingers work at your pants, freeing your throbbing erection. You groan as she wraps her hand around your hardness.
***SV2B.webm***
Miss Fortune: [pumping you firmly, her eyes burning into yours] Forget everything else and just feel...
You: [gripping her shoulders, hips bucking] Ah...Fortune...you feel incredible...but how...
Miss Fortune: [quickening her strokes, a devious glint in her eyes] Don't think...just feel...give me everything you've got...
Narrator: The tension inside you begs for release. You close your eyes, losing yourself to the rhythmic strokes of her skillful hands. Nothing else matters but the exquisite pleasure she's coaxing from your body.
Narrator: Your eyes fly open as wet heat engulfs you - Fortune's talented mouth bringing you close to the edge with long sucks and swirls of her tongue. Your fingers tangle in her hair as you cry out hoarsely. She takes you deep, her moans sending vibrations through you.
***SV2C.webp***
You: Fuck...I can't hold it...I'm going to...
Narrator: With an audible pop she releases you, a coy smirk on her lips. She straddles you gracefully, taking you into her slick depths with a satisfied hiss. You grip her hips tightly as she rides you, head falling back in ecstasy. You meet her downward thrusts, consumed by primal hunger. Your bodies move as one until you are both slick with sweat and gasping for breath.
***SV2D.webp***
Narrator: In one smooth motion she spins to face away, keeping you buried inside. The new angle has stars exploding behind your eyes. You clutch her waist, pulling her down hard as she slams her hips down. You're close now, the pressure building to a breaking point.
***SV2E.webp***
Narrator: With a ragged shout you find your release, spilling inside her as the world spins wildly. Miss Fortune turns to face you, her expression unreadable.
***SV2F.webp***
Miss Fortune: It's time for you to go now, sugar...you played your part well...
You: [desperate] No...I have to go back...my family...
Narrator: But it's too late - she and the room around you fade away. Though an illusion, the regret is real. You failed to control the virus, failed to save your family. As death's cold hand closes around your heart, your last thoughts are of your mother and sisters, their fate now doomed. And then...oblivion.
Button: Succumb
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Narrator: You feel a heaviness in your limbs as the virus courses unchecked through your body. Your vision blurs as your heart pounds deafeningly in your chest. This is it - the virus has finally overwhelmed you. As you sink to your knees, darkness creeping into your periphery, an ethereal figure seems to manifest before you.
Peach: [emerging from swirling mist, her blue eyes wide with concern] Oh dear, this simply won't do!
***SV3A.webp***
Narrator: You stare as Princess Peach hurries toward you, her golden curls bouncing around her delicate face. Her pink gown flows around her graceful form as she kneels beside you, placing a gloved hand upon your fevered brow.
You: [fighting to remain conscious] You can't be here...I must be hallucinating...
Peach: [brushing your hair back gently] Hush now, save your strength. We must take care of this dreadful virus at once!
Narrator: Her touch is soothing, sending a wave of comfort through your body. You know you shouldn't, but you can't resist leaning into her palm as she caresses your cheek.
Peach: [reaching for your pants, her cheeks flushed] This is rather forward of me, but desperate times call for desperate measures!
Narrator: You groan weakly as she frees your massive erection from the confines of your pants. With delicate fingers she begins stroking you, her movements tentative but determined.
***SV3B.webp***
Peach: [biting her lip as she increases her pace] Goodness me, but you are quite virile! I do hope this helps...
You: [gripping her shoulders for support, your hips bucking involuntarily] Peach...you shouldn't be doing this...
Peach: [looking deep into your eyes] If it will save you, I will gladly do what I must! Now just relax, I'm here for you.
Narrator: The tension building within you begs for release. You close your eyes, losing yourself to the rhythmic strokes of her silken gloves. Nothing else matters but this tender pleasure she's coaxing from your body.
***SV3D.webp***
Narrator: You cry out hoarsely as her lips engulf you, her petite mouth straining to accommodate your girth. She bobs slowly, her golden curls tickling your thighs as she pleasures you with care. The warmth of her mouth has you reeling.
***SV3D.webp***
You: Oh Peach...I can't...I'm going to...
Narrator: She pulls back, daintily wiping the corners of her mouth as she smiles up at you. In one graceful movement she lifts her skirts and straddles you, taking you slowly into her velvet heat. You hiss through gritted teeth, overwhelmed by her tightness.
***SV3E.webp***
Narrator: Soon you are fully sheathed within her. Peach begins to rock her hips, her eyes sliding shut and lips parting in ecstasy. You meet her movements as best you can, consumed by desire for your princess.
***SV3F.webp***
Narrator: Her pace quickens until you are both slick with sweat, your moans mingling in fevered harmony. With a strangled cry you find your climax, spilling yourself deep inside her.
***SV3G.webp***
Narrator: As you start to fade, Peach leans down, cradling your head to her chest. Her voice seems to echo from far away.
***SV3H.webp***
Peach: Be at peace, my dear hero. You've fulfilled your purpose for now. Return to us...your story is not yet over...
Narrator: Though you know she is just a fever dream, you take comfort in her tender words. As darkness descends, your thoughts turn to your family, hoping they will be there to greet you upon your return...
Button: Succumb
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You sit on the edge of your bed, the rough blanket folded neatly at the foot. The dim light from a small lamp casts a warm glow over the simple wooden room, highlighting the modest furnishings—a wooden table with a few chairs, a small shelf with medical supplies, and a bedside table.
The door creaks softly as it opens, and you look up to see Cherie entering quietly. She holds a tray with a cup of cold tea, her expression a mix of worry and warmth. Her simple, form-fitting dress clings to her curves, slightly disheveled, hinting at the rough survival conditions. Her long blonde hair is tied back, and her blue eyes reflect the lamplight.
Cherie: [Smiling, gently knocking on the open door, stepping inside] (I hope this helps him relax a bit...) "I brought you some tea. Thought you might like something cold after all the hard work you've been doing."
***CA0A.webm***
You: [Smiling faintly, grateful for the gesture] (She's always thinking of me, even in these times...) "Thanks, Mom. I could really use a break."
Cherie: [Walking over, placing the tray on the bedside table] (He looks so tired... I wish I could do more.) "You've done so much already. Building this shelter must have been exhausting."
You: [Nodding, taking the cup of tea] (She seems more worried than usual...) "It was hard work, but it was worth it. We needed a safe place."
Cherie: [Sitting down on the chair next to the bed, her eyes filled with a mix of pride and concern] (I need to make sure he's okay... the virus is unpredictable.) "I'm really proud of you. You've stepped up in ways I never expected. But... I'm also worried about the virus and how it's affecting you."
***CA0B.webp***
***START - Choice 1***
[[Branch A: "It's nothing, Mom. I'm fine. Really." (Trust attribute requirements not met)]]
[[Branch B: "I appreciate your concern and having you here makes it easier." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Cherie: [Frowning slightly, sensing the evasion] (He's hiding something... but I can't push him too hard.) "Alright, if you say so. But please, if anything changes, let me know."
You: [Nodding, feeling the tension in the air] (I hate lying to her, but I don't want her to worry more than she already does.) "I will, Mom. Thanks for the tea."
Cherie: [Standing up, giving a small, forced smile] (I wish he would open up to me... I just want to help.) "You're welcome. Try to get some rest, okay?"
You: [Watching her leave, a pang of guilt in your chest] (I need to figure this out on my own... but I hate keeping her in the dark.) "I will. Goodnight, Mom."
Cherie: [Pausing at the door, looking back with concern] "Goodnight, sweetheart."
***CA0C.webp***
She quietly exits the room, leaving you alone with your thoughts. You sense that you have failed this dialogue and will try again another time.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: "I appreciate your concern and having you here makes it easier."
Cherie: [Returning your smile, visibly relieved] (He's so strong... he's really grown up.) "I'm glad to hear that. You've always been so reliable."
***CA0D.webp***
You: [Taking a sip of the tea, feeling the warmth spread through you] (I need to keep her spirits up.) "I couldn't have done it without you. You've been amazing through all of this."
Cherie: [Blushing slightly, looking down] (He's always been so thoughtful...) "Thank you. That means a lot to me."
You: [Reaching out, gently touching her hand] "I mean it, Mom. We’re a team. We’ll get through this together."
Cherie: [Looking up, her eyes shining with emotion] (He's right. We have to stay strong together.) "Yes, we will. And I want to help you as much as I can."
You: [Squeezing her hand reassuringly] "I know you do. And I appreciate it more than you know."
Cherie: [Taking a deep breath, her expression becoming more serious] (I need to address the virus...) "Speaking of helping, I think we need to talk about the virus and how it's affecting you."
***CA0E.webp***
You: [Nodding, sensing the importance of the conversation] "Yeah, I've been feeling different. It's hard to explain."
Cherie: [Leaning in closer, her concern evident] "I need to understand exactly what's happening. The virus is unpredictable, and I want to make sure you're safe."
***START - Choice 2***
[[Branch A: "It's nothing too serious. Just some... weird feelings." (Lust attribute requirements not met)]]
[[Branch B: "I've been feeling more... sensitive. Like my body is reacting in ways I can't control." (Lust attribute Requirements met)]]
***START - Choice 2 - Branch A***
Cherie: [Frowning slightly, sensing your evasion] (He's holding back... but I can't force him to open up.) "Weird feelings? Can you be more specific?"
You: [Shrugging, trying to downplay it] "Just... different. Like my body is reacting in ways I don't fully get yet."
Cherie: [Sighing, clearly unsatisfied with your vague answer] "I understand you're trying to protect me, but I need to know exactly what's going on to help you properly."
***CA0F.webp***
You: [Feeling the weight of her expectations] (I hate seeing her like this, but I can't bring myself to tell her everything.) "I just need more time to figure it out myself."
Cherie: [Nodding slowly, her worry evident, looking slightly upset] "Alright, I'll leave you to it."
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Meeting her gaze, trying to be honest, but feeling shy] (She needs to know the truth...) "I've been experiencing the... usual effects the virus has on men."
Cherie: [Eyes widening slightly, understanding the gravity] (Oh no, the symptoms are starting...) "You mean the... heightened sensations and... other reactions?"
***CA0G.webp***
You: [Nodding, looking down] "Yeah, and it's been tough. I can relieve it by myself, but it's... not easy."
Cherie: [Nodding, her concern deepening] "I understand. It's important that you find a way to manage it. We can't let it overwhelm you."
You: [Feeling the weight of her words] "I know, Mom. I just didn't want to worry you more than you already are."
Cherie: [Reaching out to touch your arm gently, her eyes soft with concern] "We're in this together, remember? You don't have to go through this alone."
***CA0H.webp***
You: [Feeling the warmth of her touch, a shiver running down your spine] (Her touch feels different... more intense.) "I know, and it helps just knowing you're here."
Cherie: [Taking a deep breath, steeling herself] "Alright, let's start with a basic examination. I need to see if there are any visible changes or symptoms we need to address."
You: [Nodding, feeling a mix of anticipation and nervousness] "Okay, I'm ready."
***START - Choice 3***
[[Branch A: "Maybe we should wait. I'm not sure I'm ready for this." (Virus attribute requirements not met)]]
[[Branch B: "Alright, let's do this. I trust you, Mom." (Virus attribute Requirements met)]]
***START - Choice 3 - Branch A***
Cherie: [Sighing softly, her worry deepening] (He's not ready, and I can't push him.) "I understand. We can take things slow. But promise me you'll let me know if anything changes."
You: [Nodding, feeling a sense of relief and guilt] "I will, Mom."
Cherie: [Standing up, giving a small, forced smile] "Of course. We'll get through this together, just like always."
***CA0I.webp***
You: [Watching her leave, the room feeling colder without her presence] "Goodnight, Mom."
Cherie: [Pausing at the door, looking back with concern] "Goodnight, sweetheart."
She quietly exits the room, leaving you alone with your thoughts. The unresolved tension lingers, and you know that avoiding this conversation isn't the solution.
[[Exit]]
***END***
***START - Choice 3 - Branch B***
Cherie: [Nodding, her expression a mix of determination and concern] (I need to be thorough, for his sake.) "Okay, let's start with your temperature and heartbeat."
You: [Watching her closely as she prepares the medical kit] (She's so focused... I need to stay calm.)
Cherie: [Gently placing a hand on your forehead, checking your temperature] "You feel a bit warm, but that's expected with the virus."
***CA0J.webp***
You: [Feeling the warmth of her touch, trying to stay composed] "Is it bad?"
Cherie: [Shaking her head, her touch lingering] "No, it's within the range I was expecting. Now, let's check your heartbeat."
You: [Taking a deep breath as she places the stethoscope on your chest] (Her touch is so gentle...)
Cherie: [Listening carefully, her face close to yours] "Your heart rate is elevated, but again, that's expected."
You: [Feeling the closeness, your heart pounding harder] "Okay. What else?"
Cherie: [Leaning back slightly, her eyes scanning your face] "I need to check for any physical changes. Your musculature looks more defined... and you seem very healthy overall."
***CA0K.webp***
You: [Flexing slightly, noticing the changes too] "Yeah, I've noticed that. I feel stronger and more energetic."
Cherie: [Nodding, her eyes studying you] "That's good to hear. The virus does enhance physical attributes, but we need to monitor it closely."
You: [Feeling a bulge forming in your pants, trying to stay calm] (I hope she doesn't notice...)
Cherie: [Her eyes flickering downwards briefly, then back up] "And... I need you to assure me that everything is fine with your... reproductive health."
***CA0L.webp***
You: [Blushing, feeling awkward] "Yeah, everything's fine. Just... a bit more sensitive, like I said."
Cherie: [Nodding, her expression softening] "Alright. That's important. If anything changes, you need to tell me immediately."
You: [Nodding, feeling a mix of relief and lingering tension] "I promise, Mom. Thanks for understanding."
Cherie: [Smiling softly, her hand resting on your arm] "We're in this together. Remember that."
You: [Feeling a deep sense of connection] "I will. Goodnight, Mom."
Cherie: [Standing up, looking back with a reassuring smile] "Goodnight, sweetheart."
***CA0M.webp***
She quietly exits the room, leaving you with a sense of relief and a stronger bond of trust. You know that with her by your side, you can face the challenges ahead.
[[Exit]]
***END***
***END - Choice 3***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The living room had been transformed into a makeshift classroom. Diagrams of the human body and medical textbooks were spread across the coffee table, their clinical illustrations a stark contrast to the intimate nature of the impending lesson. Cherie stood before a whiteboard, her posture rigid with nervous energy. She was dressed in a crisp white blouse, the top two buttons undone, and a pencil skirt that hugged her curves in a way that walked the line between professional and alluring. Her hair was pulled back in a loose bun, a few strands escaping to frame her face, softening her appearance.
***CA4A.webp***
You sat on the couch, trying to focus on the lesson but finding your attention continually drawn to the way Cherie moved. The sway of her hips as she turned to the whiteboard, the graceful arc of her arm as she wrote, the subtle shift of fabric across her chest as she breathed - every movement seemed magnified, imbued with a sensuality you'd never noticed before. The virus had heightened your senses, making every detail of her presence intensely noticeable. The scent of her perfume, a light floral fragrance, mingled with the underlying scent that was uniquely her, creating an intoxicating aroma that made your head spin.
***CA4B.webp***
Cherie: [Taking a deep breath, her chest rising noticeably] "Today, we're going to discuss the more... intimate effects of the virus. It's crucial that you understand exactly how your body is changing."
As she began to explain the virus's impact on various body systems, you found yourself shifting uncomfortably, acutely aware of the changes happening within you even as Cherie described them. Her voice, usually so soothing, now seemed to caress your senses, each word sending shivers down your spine.
***START - Choice 1***
[[Branch A: "This is kind of embarrassing, Mom. Do we really need to go into so much detail?" (Trust attribute requirements not met)]]
[[Branch B: "I appreciate you taking the time to explain this, Mom. Your knowledge makes me feel safer in this situation." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Cherie's expression hardened slightly, her tone becoming more clinical. The warmth in her eyes disappeared, replaced by a cool professionalism that made your heart sink.
***CA4C.webm***
Cherie: [Her voice clipped and precise] "This information could be crucial to our survival. We need to approach this scientifically, without embarrassment."
She continued the lesson from a distance, pointing to diagrams rather than using you as a model. The potential for intimacy was lost, replaced by a sterile, academic atmosphere. Yet even this couldn't prevent your growing arousal, your body responding to Cherie's presence despite the emotional distance between you.
Cherie: [Gesturing to a diagram] "The virus enhances sensitivity in these areas. It's important to be aware of these changes to manage your symptoms effectively."
You nodded, trying to focus on the clinical information, but your mind kept wandering to less academic thoughts. The lesson continued in this vein, informative but lacking the personal touch that could have made it truly impactful.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Cherie's professional demeanor softened, a warm smile spreading across her face. The change was dramatic, transforming her from stern educator to the loving mother you'd always known.
***CA4D.webp***
Cherie: [Moving to sit beside you on the couch] "I'm glad you understand the importance of this, sweetie."
The proximity sent a subtle wave of awareness through both of you, your thighs almost touching. The heat of her body seemed to radiate through the small space between you, making you acutely aware of every inch that separated you.
Cherie: [Her voice taking on a more intimate tone] "The virus enhances sensitivity here," she said, her fingers brushing against the inside of your wrist. The simple touch sent sparks of sensation shooting up your arm. "And here," her hand moved to the side of your neck, the warmth of her palm seeming to sear your skin.
Your breath hitched at her touch, your skin tingling where her fingers had been. Every point of contact felt electrified, sending jolts of pleasure through your system. Your body responded eagerly, blood rushing south, causing a noticeable bulge to form in your pants.
Cherie noticed your reaction, a faint blush coloring her cheeks. Her eyes widened slightly, darting down to your lap before quickly returning to your face.
***CA4E.webp***
Cherie: [Her voice slightly husky] "Are you experiencing increased sensitivity?"
***START - Choice 2***
[[Branch A: "Uh, Mom? I'm feeling kind of... strange. Is this normal?" (Lust attribute requirements not met)]]
[[Branch B: "The way you're explaining this is really... affecting me, Mom. Is that part of the virus's influence?" (Lust attribute Requirements met)]]
***START - Choice 2 - Branch A***
Cherie quickly stood, putting distance between you. The sudden movement made her blouse gape slightly, offering a tantalizing glimpse of cleavage that she quickly covered.
Cherie: [Her voice higher than usual] "Those are... normal reactions to the virus. Perhaps we should take a break. Give you a moment to... compose yourself."
She turned away, busying herself with rearranging the diagrams, but you could see the tremble in her hands, the rapid rise and fall of her chest as she breathed. The tension in the room was palpable, but the opportunity for further exploration was lost. Cherie continued the lesson with clinical detachment, careful to avoid any potentially stimulating topics or demonstrations. Yet the image of your arousal lingered in her mind, making it difficult for her to focus on the academic material before her.
***CA4F.webp***
[[Exit]]
***END***
***START - Choice 2 - Branch B***
Cherie paused, her eyes widening slightly as she took in your flushed face and dilated pupils. A faint blush colored her cheeks, spreading down her neck and disappearing beneath the collar of her blouse.
***CA4G.webp***
Cherie: [Her voice dropping to a near whisper] "That's... that's actually a perfect example of the virus's effects."
She moved closer, her hip pressing against yours as she sat. The contact sent a jolt of awareness through both of you, the heat of her body seeming to sear through the fabric of your clothes.
Cherie: [Her eyes locked with yours] "The virus heightens arousal responses. Even innocent stimuli can trigger intense reactions."
Her hand hovered near your thigh, not quite touching but close enough that you could feel the heat radiating from her palm. The anticipation of her touch was almost unbearable, every nerve ending screaming for contact.
Cherie: [Breathlessly] "Are you experiencing that now? The increased sensitivity? The rush of heat?"
You nodded, not trusting yourself to speak. Cherie's proximity, the warmth emanating from her body, was almost overwhelming. You shifted slightly, your growing arousal becoming painfully obvious. The bulge in your pants was impossible to ignore, straining against the fabric in a way that drew both of your gazes.
Cherie's breath caught, her eyes fixed on the prominent outline of your erection.
Cherie: [Murmuring] "That's... that's a common response. The virus causes significant changes in... in size and sensitivity."
Her tongue darted out to wet her lips, a gesture that sent a surge of heat through your body. The tension in the room was palpable, pressing down on you like a physical weight. Your heart raced, each beat seeming to echo in the quiet room. You could see the rapid pulse at the base of Cherie's throat, a visual reminder of her own heightened state.
Cherie: [Her voice barely above a whisper] "Perhaps we should... examine these changes more closely. For... for scientific purposes, of course."
With shaking hands, you stood. You hesitated for a moment, your eyes meeting Cherie's, seeking final confirmation. She nodded almost imperceptibly, her gaze a mixture of scientific curiosity and something darker, more primal.
Slowly, you pushed down your pants and underwear, revealing your fully erect, virus-enhanced member. It sprang free, standing proudly at its full, impressive length. The room fell silent save for Cherie's sharp intake of breath.
Cherie's reaction was immediate and intense. Her eyes widened impossibly, her mouth falling open in shock. A deep flush spread from her cheeks down her neck, disappearing beneath the collar of her blouse. Her pupils dilated, darkening her eyes as they roamed over the impressive length and girth of your manhood. Every vein, every subtle movement seemed to captivate her attention.
***CA4H.webp***
Cherie: [Breathing] "Oh my..."
Her hands clenched at her sides, as if she was physically restraining herself from reaching out to touch. She took an involuntary step forward, then caught herself, stepping back quickly. The movement caused her breasts to bounce slightly, drawing your attention to the way her blouse strained across her chest.
***START - Choice 3***
[[Branch A: "Mom, I think I need to... take care of something. This lesson is making it hard to concentrate." (Virus attribute requirements not met)]]
[[Branch B: "I think I'm experiencing some intense effects right now, Mom. Maybe you should observe them directly... for scientific purposes." (Virus attribute Requirements met)]]
***START - Choice 3 - Branch A***
Cherie took a step back, shaking her head as if to clear it. Her bun came loose, sending waves of hair cascading around her face.
***CA4I.webp***
Cherie: [Her voice strained] "I think we've covered enough for today. We'll need to... to process this information before proceeding further."
She quickly gathered up the diagrams and textbooks, her movements jerky and uncoordinated.
Cherie: [Not meeting your eyes] "Try to... to keep track of any changes or intense reactions. We'll schedule another lesson... later."
With that, she hurried from the room, leaving you alone with your unfulfilled arousal and a myriad of confused emotions. The air was thick with the scent of your mutual arousal, a tangible reminder of the line you almost crossed.
[[Exit]]
***END***
***START - Choice 3 - Branch B***
Cherie took a deep breath, her chest rising and falling in a way that drew your gaze to the swell of her breasts. She visibly steeled herself, squaring her shoulders.
Cherie: [Her voice trembling slightly] "You're right. Direct observation would be... scientifically valuable."
She swallowed hard, her professional demeanor warring with obvious nervousness and a hint of excitement she couldn't quite hide.
Cherie: "Perhaps you should... demonstrate the changes you're experiencing."
Your heart pounding, you nodded. Your hand moved to your exposed member, wrapping around the thick shaft. The contact sent a jolt of pleasure through you, more intense than anything you'd experienced before. You began to stroke slowly, your eyes never leaving Cherie's face.
Cherie watched, transfixed, her breathing becoming shallow and quick. Her hands moved to the buttons of her blouse, unconsciously beginning to undo them.
***CA4J.webp***
Cherie: [Murmuring] "The virus affects female physiology as well. Increased sensitivity, heightened arousal responses..."
She trailed off as she exposed more of her cleavage, her skin flushed and glistening with a light sheen of sweat.
***CA4K.webp***
Your hand moved faster, your breath coming in short gasps. Pre-cum beaded at the tip of your member, the clear fluid catching the light. Cherie leaned forward, her eyes darting between your face and your throbbing manhood. She was about to undo another button when suddenly, as if waking from a trance, she froze.
Cherie: [Her voice shaky] "Stop. We... we can't do this. It's not right."
She quickly re-buttoned her blouse, her hands trembling.
Cherie: "This has gone too far. You should... you should take care of that yourself. In private."
With that, she hurried from the room, leaving you alone, achingly aroused and confused. The air was thick with the scent of your mutual arousal, a tangible reminder of the line you almost crossed.
[[Exit]]
***END***
***END - Choice 3***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You sit on the worn-out couch in the dimly lit living room, flicking through the TV channels. Your fingers pause on a channel showing explicit content—scantily clad women, their bodies moving sensuously. A surge of heat courses through your body, making it impossible to focus, and you're sweating, trying to control the rising need within you.
The door creaks open softly, and Cherie steps into the room. You don't notice her at first, but she sees you, your eyes glued to the screen, your body tense. She moves closer, her dress clinging to her curves, her face flushed with a mix of concern and something else—something she tries to suppress.
Cherie: [Clearing her throat, trying to sound casual] (He’s struggling… I need to help him somehow.) "What are you watching, sweetheart?"
***CAL1A.webp***
You jump slightly, quickly switching the channel to a hero TV show, and grabbing a pillow to hide the raging boner tenting your pants.
You: [Trying to act nonchalant] (She can't see me like this…) "Oh, just flipping through channels. Nothing interesting."
Cherie sits down next to you, her eyes scanning your face, noticing the sweat and your rapid breathing. She can feel the virus's effects on herself too, her heart pounding and her body reacting in ways she’s struggling to control.
Cherie: [Gently placing a hand on your forehead] (He’s burning up… it’s the virus.) "You’re sweating a lot. How are you feeling?"
You: [Shifting uncomfortably, trying to avoid her gaze] (I can’t tell her how bad it is…) "I’m fine, just a bit hot. I’ll go to my room and take care of it."
Cherie watches as you stand up, her mind racing with conflicting thoughts. She knows what you mean by "taking care of it," and the thought sends a shiver down her spine. She tries to push the image away, but it lingers, making her pulse quicken.
***CAL1B.webp***
***START - Choice 1***
[[Branch A: "I’m just going to cool off and maybe take a cold shower." (Lust attribute requirements not met)]]
[[Branch B: "It’s the virus, Mom. I need to… relieve myself." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: "I’m just going to cool off and maybe take a cold shower."
Cherie: [Sighing deeply, feeling the weight of the situation] (I can't push him… not now.) "Alright, if you think that will help. Just make sure to rest."
***CAL1C.webp***
You: [Glancing back, feeling the tension in the air] (I hate leaving her like this…) "I will, Mom. Goodnight."
Cherie watches you leave, a sense of failure and frustration gnawing at her. She knows she needs to find a way to help you, but for now, she can only wait and hope.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: "It’s the virus, Mom. I need to… relieve myself."
Cherie: [Taking a deep breath, deciding to address the issue head-on] (I have to know… for his sake.) "Wait… before you go, can we talk about how you’re handling the virus?"
***CAL1D.webp***
You pause, feeling a mix of relief and embarrassment. You turn back to face her, noticing the concern in her eyes.
You: [Nervously] (She’s really worried… maybe I should be honest.) "It’s been tough, Mom. The virus… it’s making things hard to control."
Cherie: [Nodding, her hand reaching out to touch your arm] (I need to be strong for him.) "I understand. It’s affecting me too, but we need to find a way to manage it together."
You: [Feeling a connection, your heart pounding] (She cares so much… I can’t do this alone.) "Thanks, Mom. It helps to know you’re here for me."
Cherie: [Smiling softly, her eyes meeting yours] "Always. We’ll get through this, I promise."
***CAL1E.webp***
You both sit in silence for a moment, the air thick with unspoken words and rising desires. You can feel the virus pushing you towards her, and you struggle to maintain control.
Cherie: [Taking a deep breath, her voice trembling slightly] (I need to address it… for his sake.) "Let's talk about the virus and its effects on you. It's important that I understand exactly what you're going through."
You: [Heart racing, feeling the intensity of her concern] (She needs to know…) "The virus… it makes it hard to control my urges. I get these intense feelings, and sometimes it’s painful."
Cherie: [Listening intently, her eyes filled with concern] (He’s really suffering…) "I see. It’s important that you find ways to relieve these symptoms safely. Maybe we can come up with a routine or some techniques to help you manage it better."
***CAL1F.webp***
You: [Swallowing hard, feeling a surge of arousal] (This is so embarrassing, but she’s right…) "Okay, Mom. I’ll try to follow your advice."
Cherie: [Nodding, her hand squeezing yours] "We’ll take it one step at a time. Remember, you’re not alone in this. We’ll figure out a way to deal with it together."
You: [Feeling a sense of relief and gratitude] "Thanks, Mom. It means a lot to me."
Cherie: [Smiling softly, her eyes meeting yours] "Always. We’ll get through this, I promise."
***CAL1G.webp***
You both sit there, the tension thick in the air, knowing that this is just the beginning of a much deeper and more complicated journey.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You stand outside the bathroom door, the sound of running water and Cherie's soft humming drawing you closer. The fog from the hot shower seeps through the small gap at the bottom of the door, creating an almost mystical atmosphere. The virus rages through your body, making your thoughts hazy and your arousal nearly unbearable. You know you shouldn't, but the urge to peek inside is overwhelming.
The door is slightly ajar, just enough for you to catch glimpses of Cherie's silhouette through the foggy glass door of the shower. Her movements are slow and deliberate, her shape barely visible but undeniably captivating. You feel a surge of heat course through you, your heart pounding in your chest.
***CAL2A.webp***
You: [Peeking through the door, struggling with your urges] (I shouldn't be doing this... but I can't help it. The virus... it's driving me insane.)
Cherie continues to shower, unaware of your presence. The steam clings to her skin, highlighting the curves of her body through the foggy glass. You can make out the outline of her figure, her long legs, and the swell of her breasts. The scent of her soap and shampoo fills the air, mingling with the steam, making your head spin and your imagination run wild.
You: [Inhaling deeply, feeling the virus's effects] (Her scent... it's driving me wild. I can't stop thinking about her.)
The virus's effects make it hard to think clearly. You know you need to control yourself, but your body is betraying you. The faint sight of Cherie, the smell of her, and the sound of her humming are almost too much to bear.
***CAL2B.webp***
***START - Choice 1***
[[Branch A: "Control yourself and back down." (Lust attribute requirements not met)]]
[[Branch B: "Open the door a bit further." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You hesitate, your hand trembling as you consider opening the door further. But the rational part of your mind prevails, and you pull back, your arousal still burning but tempered by a sense of guilt.
You: [Pulling back from the door, feeling ashamed] (I can't do this... it's wrong.)
Cherie: [Unaware, continuing her shower] (I must finish quickly. The virus is making things difficult.)
You retreat to your room, the image of Cherie's silhouette burned into your mind. The tension remains, but the moment has passed.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Driven by the virus and your overwhelming desire, you carefully push the door open a little more, allowing a clearer view of Cherie. Her body is more visible now, the steam creating an almost surreal effect as it clings to her skin. The sight is mesmerizing, and you can feel your arousal reaching a fever pitch.
***CAL2C.webp***
You: [Opening the door slightly more, heart racing] (I need to see more... just a little more.)
Cherie: [Unaware, her movements slow and sensual] (The hot water feels so good... but why am I feeling so... aroused?)
You catch glimpses of her through the fogged-up mirror, her body a tantalizing blur. The way the water cascades down her form, the faint outline of her curves, and the occasional flash of her skin through the steam send waves of desire through you. The virus's influence is undeniable, making every detail of her body seem more alluring and forbidden.
***CAL2D.webp***
You: [Struggling with your arousal, almost trembling] (This is so wrong... but I can't stop.)
Cherie begins to feel the effects of the virus more intensely. Her body reacts, her movements becoming more languid, and she lets out a soft moan. The sound sends a jolt of desire through you, and you find it harder to control yourself.
You: [Breathing heavily, feeling the virus's effects] (I need to stop... but I can't.)
Cherie: [Softly moaning, her voice barely audible] (Why do I feel like this... it's the virus, but... it feels so good.)
***CAL2E.webp***
The scene is almost too much to bear. The virus is messing with your mind and body, making it hard to think clearly. You feel a mix of guilt and overwhelming desire, knowing that what you're doing is wrong but unable to stop yourself.
Cherie: [Suddenly sensing something, turning slightly] (Is someone there...?)
***CAL2F.webp***
You quickly retreat, your heart pounding and your arousal still burning. Cherie doesn't seem to notice you, but the moment is charged with tension and forbidden desire.
You: [Retreating, feeling a mix of shame and desire] (I need to get a grip... this can't go on.)
Cherie finishes her shower, a strange feeling lingering in the air. Both of you are deeply affected by the encounter, the virus's influence making everything more intense and confusing.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You walk past Cherie's bedroom, your mind still reeling from the previous encounter. The soft glow of a lamp seeps through the slightly ajar door. As you pass, you hear Cherie's voice, gentle yet firm.
Cherie: [Calling softly] "Can you come in for a moment? We need to talk."
***CAL3A.webp***
You hesitate but push the door open, stepping into her room. It's cozy, with pastel-colored sheets and a wooden dresser with a large mirror. The soft lighting casts a warm glow over everything. Cherie sits on the edge of the bed, her nightgown clinging to her curves, highlighting her mature beauty.
You: [Entering hesitantly, eyes scanning the room] (This feels too intimate... but I can't refuse her.) "What's up, Mom?"
Cherie: [Patting the bed beside her] (I need to understand what he's going through.) "Sit down. We need to talk about the virus and what it's doing to us."
You sit beside her, feeling the heat radiating from her body. The proximity makes your heart race, and you struggle to maintain composure.
***CAL3B.webp***
Cherie: [Looking at you with concern] "How are you handling the virus, physically and mentally?"
You: [Taking a deep breath] "It's been... rough. The virus, it's making everything harder to control."
Cherie: [Squeezing your hand gently] "I can see that. You don't have to go through this alone, you know."
You: [Looking away, ashamed] "I know, but it's hard. Especially after... what happened earlier."
Cherie: [Nodding, her expression serious] "We need to talk about that. It's not your fault, but we can't let it happen again."
You: [Feeling guilty] "I understand. It's just... the virus makes me feel things I shouldn't."
Cherie: [Softly] "I know. And I felt it too. But we have to be strong. We can't let it control us."
***CAL3C.webp***
You: [Nodding] "You're right. I'm sorry for putting you in that position."
Cherie: [Squeezing your hand] "It's okay. I just want you to be honest with me, how are you truly dealing with the virus?"
***START - Choice 1***
[[Branch A: "I'm fine. It's just... something I have to deal with on my own." (Lust attribute requirements not met)]]
[[Branch B: "Honestly, Mom, I'm struggling." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Avoiding her gaze, mumbling] "I'm fine. It's just... something I have to deal with on my own."
Cherie: [Sighing deeply, pulling back slightly] "I understand if you don't want to talk about it. Just know I'm here if you need me."
You: [Feeling the weight of the unspoken tension] "Thanks, Mom. I'll be okay."
Cherie: [Nodding, a hint of sadness in her eyes] "Alright. Try to get some rest."
***CAL3D.webp***
You stand up and leave the room, the atmosphere heavy with unresolved tension.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Looking into her eyes, speaking softly] "Honestly, Mom, I'm struggling. The virus makes me feel things I shouldn't, and it's hard to control."
Cherie: [Smiling, feeling a deep connection] "Thank you for being honest with me. That means a lot."
***CAL3E.webp***
You: [Taking her hand] "It's not just physical. It's messing with my mind too. I can't stop thinking about... things I shouldn't."
Cherie: [Nodding] "I know what you mean. I've been feeling it too. It's like my body reacts without my permission."
You: [Surprised, meeting her gaze] "You feel it too? That makes it even harder."
Cherie: [Blushing slightly, her voice trembling] "Yes, every time we're close, I feel this... pull. It's wrong, but I can't deny it."
You: [Hesitating] "I... I think you're beautiful, Mom. It's hard to resist."
Cherie: [Reflexively, her words spilling out before she catches herself] "You too, sweetheart. You're so... handsome." [Stopping mid-sentence, her eyes widening in realization] "I... I shouldn't have said that."
***CAL3F.webp***
You: [Feeling the weight of the moment] "Mom, it's okay. We're both affected by the virus."
Cherie: [Getting a little upset with herself, her voice firm] "No, it's not okay. We need to remember who we are, what we are to each other."
You: [Nodding, feeling the tension in the air] "I know. It's just... so hard."
Cherie: [Taking a deep breath, trying to maintain her composure] "We need to be strong. Both of us. The virus is making everything worse, but we can't let it win."
You: [Feeling a mix of relief and desire] "Thank you, Mom. It helps to hear that."
Cherie: [Trying to keep a cold composure, but her voice betrays her inner turmoil] "Always. But we need to keep our boundaries clear. We can't... we mustn't cross them."
***CAL3G.webp***
You: [Heart racing, feeling the intensity of the moment] (She's so close... I need to stay strong.)
Cherie: [Looking into your eyes, struggling to maintain her resolve] "Let's talk about what we can do to manage these urges. We need a plan."
You: [Nodding] "You're right. Maybe we can find ways to distract ourselves, or set boundaries that we both agree on."
Cherie: [Sighing softly, her voice a mix of determination and uncertainty] "Yes, that sounds like a good start. We need to communicate openly and honestly about how we're feeling."
You: [Feeling a sense of hope mixed with tension] "I can do that. I promise to be honest with you."
Cherie: [Nodding, repeating more for herself than you] "Good. We'll take it one day at a time. And remember, I'm here for you, no matter what."
***CAL3H.webp***
You both share a moment of understanding, the bond between you deepening despite the taboo nature of your feelings. The tension in the air is palpable, each of you feeling the pull of the virus, but determined to fight it. The scene ends with a sense of strained determination to fight the virus's influence together, even as your bodies and minds betray your deeper, forbidden desires.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Steam fills the small bathroom as you step inside, the air thick with humidity and unspoken tension. Cherie stands by the sink, her hair tied up in a messy bun, wearing nothing but a simple cotton bra and panties. Her eyes roam over your body, a mix of clinical assessment and something darker, more primal.
***CAL5A.webp***
Cherie: [Clearing her throat] "We need to be thorough. Who knows what pathogens might be in that soil, especially with the virus..."
You: [Nodding, trying not to stare at her nearly naked form] "Right. Of course."
Cherie: [Gesturing to your clothes] "Everything off. We can't risk contamination."
With trembling hands, you strip down to your underwear. The virus heightens every sensation - the brush of fabric against your skin feels almost unbearably erotic. You catch Cherie's sharp intake of breath as your enhanced physique is revealed.
Cherie: [Picking up a loofah, her voice slightly strained] "Turn around. I'll start with your back."
As she begins to scrub, you can't help but notice how her breathing changes, becoming heavier, more ragged. Her touch, initially clinical, starts to linger. You feel the soft press of her breasts against your back as she reaches up to scrub your shoulders.
***CAL5B.webp***
You: [Suppressing a groan] (God, this feels incredible. I shouldn't be enjoying this so much.)
Cherie: [Her voice husky] "Your muscles are so tense, honey. Try to relax."
Her hands move lower, dangerously close to the waistband of your underwear. You feel her hesitate, then quickly move back up to safer territory.
Suddenly, you hear a soft snap. Turning your head, you see that Cherie's bra strap has broken, causing the cup to sag and reveal the upper curve of her breast. Her nipple, hard and prominent, threatens to slip into view.
***CAL5C.webp***
Cherie: [Flustered, trying to adjust her bra] "Oh! I... I should fix this."
You: (This is my chance. Do I say something, or let it go?)
***START - Choice 1***
[[Branch A: "Mom, this is embarrassing. I can clean myself, you know." (Lust attribute requirements not met)]]
[[Branch B: "Your touch feels amazing, Mom. Maybe I should return the favor?" (Lust attribute requirements met)]]
***START - Choice 1 - Branch A***
Cherie: [Blinking rapidly, a mix of relief and disappointment crossing her face] "Oh! Of course, honey. I'm sorry, I didn't mean to make you uncomfortable."
She quickly hands you the loofah and steps back, wrapping her arms around herself. The moment of intimacy shatters, replaced by an awkward tension.
You: [Fumbling with the loofah] "It's okay, Mom. I just... I can handle it from here."
Cherie nods, her eyes avoiding yours as she reaches for a towel. She wraps it tightly around herself, suddenly very aware of her state of undress.
***CAL5D.webp***
Cherie: [Her voice strained] "I'll just... I'll wait outside. Let me know when you're done."
As she hurries out of the bathroom, you're left alone with your thoughts and the lingering scent of her skin. The virus surges through your body, heightening your frustration and arousal. You finish cleaning yourself mechanically, trying to ignore the throbbing need between your legs.
When you emerge from the bathroom, fully dressed, Cherie is nowhere to be seen. The air is thick with unresolved tension and missed opportunities.
You: [To yourself, sighing] "What the hell is happening to us?"
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Cherie's eyes widen at your words, her cheeks flushing a deep crimson. For a moment, she seems frozen, caught between desire and propriety. Then, almost imperceptibly, she nods.
Cherie: [Her voice barely a whisper] "I... yes. Yes, that would be... thorough."
With trembling hands, you take the loofah from her. As you begin to wash her back, you marvel at the softness of her skin. The virus heightens every sensation, making even this simple act feel incredibly intimate.
You: [Your voice husky] "Your skin is so soft, Mom."
Cherie: [Shivering under your touch] "Th-thank you, honey. You're very gentle."
As you work, Cherie's broken bra strap finally gives way entirely. The garment falls to the floor, leaving her breasts exposed. You both freeze, the air electric with tension.
***CAL5E.webp***
Cherie: [Gasping, but making no move to cover herself] "Oh! I... I should..."
You: [Swallowing hard] "It's okay, Mom. We're just cleaning, right?"
She nods, her eyes meeting yours in the mirror. The look she gives you is filled with a hunger that makes your breath catch.
***CAL5F.webm***
As you continue washing her, your hands glide over the swell of her breasts. Cherie arches into your touch, a soft moan escaping her lips before she can stifle it.
Cherie: [Biting her lip] "We... we should be thorough. The virus..."
You: [Nodding, your hands moving lower] "Right. Thorough."
Your fingers trace the curve of her hips, dipping just below the waistband of her panties. Cherie's breathing becomes ragged, her body trembling under your touch.
Suddenly, she turns to face you. Her breasts press against your chest, her hardened nipples dragging across your skin. You both gasp at the contact.
***CAL5G.webp***
Cherie: [Her voice thick with desire] "We should... we should rinse off now."
She reaches behind you to turn on the shower, her body sliding against yours as she does. As the water cascades over you both, your underwear becomes transparent, clinging to your bodies.
You can't help but stare at the way the wet fabric molds to Cherie's curves, leaving little to the imagination. Your enhanced manhood strains against your soaked boxers, the outline clearly visible.
Cherie's eyes are drawn to the prominent bulge. She licks her lips unconsciously, her gaze filled with a mixture of maternal concern and unmistakable lust.
Cherie: [Her voice trembling] "Oh, honey... the virus, it's... it's affecting you so much."
***CAL5H.webm***
Her hand moves as if to touch you, but she stops herself at the last moment. The air between you is thick with unresolved tension and desire.
You: [Your voice rough with need] "Mom, I..."
Cherie: [Shaking her head, stepping back] "We should... we should get dressed. We're clean now."
As you both dry off, your eyes roam over each other's bodies, taking in every detail. The bathroom feels charged with electricity, the air heavy with the scent of arousal and missed opportunities.
***CAL5I.webp***
Cherie wraps herself tightly in a towel, suddenly aware of how far things have gone. As she hurries out of the bathroom, she pauses at the door, looking back at you with a mix of longing and confusion.
Cherie: [Softly] "Thank you for... for helping me clean up, honey."
As the door closes behind her, you're left alone with your thoughts and the lingering warmth of her skin against yours. The virus surges through your body, your enhanced libido screaming for release.
You: [To yourself, your voice thick with frustrated desire] "Fuck... what are we doing?"
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The sun hangs low on the horizon, casting long shadows across the District as you approach the Gates. Cherie stands atop the wall, her silhouette backlit by the dying light. She's wearing a form-fitting jumpsuit, ostensibly for practicality, but it hugs every curve of her body in a way that makes your mouth go dry.
***CAL6A.webp***
Cherie: [Noticing your approach, her expression a mix of motherly concern and something else] (Oh God, he's here. Stay calm, Cherie.) "Sweetie, could you come up here for a moment? I need your help with something."
You: [Climbing up to join her] "What's wrong, Mom? Is everything okay?"
Cherie: [Fidgeting with her hands, avoiding direct eye contact] "Everything's fine, I just... I wanted to show you something about the wall's structure."
As you reach the top, Cherie takes a step towards you, then hesitates, clearly battling with herself. The air between you feels charged with unspoken tension.
***CAL6B.webp***
Cherie: [Her voice wavering slightly] "We should... we need to check the integrity of these walls. It's important for everyone's safety."
You: [Noticing her internal struggle] "Mom, are you sure you're alright?"
Cherie: [Taking a deep breath] (This is wrong, so wrong, but I can't stop thinking about it...) "I'm fine, honey. Just... just come closer. I want to show you something."
She reaches for the zipper of her jumpsuit, her hand trembling slightly. As she slowly pulls it down, revealing a tantalizing glimpse of her cleavage, her cheeks flush with a mix of shame and arousal.
***CAL6C.webp***
Cherie: [Her voice barely above a whisper] "Do you see any... weak spots that need attention?"
***START - Choice 1***
[[Branch A: "Step back and try to maintain composure" (Lust attribute requirements not met)]]
[[Branch B: "Move closer, accepting her unspoken invitation" (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Taking a step back, concern evident in your voice] "Mom, maybe we should take a break. You seem... stressed."
Cherie: [Relief and disappointment warring on her face as she quickly zips up her jumpsuit] (Thank God he stopped this. I don't know what I was thinking.) "You're right, sweetie. I'm just tired. Let's... let's call it a day."
***CAL6D.webp***
The moment passes, leaving a lingering awkwardness between you as you both retreat from the precipice of something forbidden.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Moving closer, your voice low] "I think this might require a more... hands-on inspection, Mom."
Cherie: [Her breath catching] (Oh God, what are we doing?) "Honey, we... we shouldn't. But I... I can't seem to stop."
Your hand reaches out, fingers brushing against the exposed skin of her chest. Cherie shivers at your touch, her eyes closing briefly as she battles with her desires.
***CAL6E.webp***
Cherie: [Her voice a mixture of need and maternal concern] "Baby, this is so wrong. We're family, we... oh, but it feels..."
You: [Gently cupping her face] "Mom, look at me. It's okay. We both want this."
Cherie: [Opening her eyes, tears of confliction shimmering] (He's my son, my baby. But he's a man now, and I need...) "We could get caught. Anyone could see us up here."
You: [Wiping away a tear with your thumb] "Isn't that part of what makes it exciting?"
Cherie: [A small, guilty smile tugging at her lips] "You're terrible. I've raised such a naughty boy."
Her hand tentatively reaches out, brushing against the front of your pants. You groan softly at her touch, and Cherie's eyes widen at the feel of your hardness.
Cherie: [Her scientific mind providing a flimsy justification] "I suppose we should... check all the equipment. For safety reasons."
You respond by sliding your hand inside her jumpsuit, cupping her bare breast. Cherie gasps, her nipple hardening against your palm.
***CAL6F.webp***
You: [Teasing her nipple] "Everything feels nice and firm here, Mom. But maybe we should double-check."
Cherie: [Moaning softly] (This is madness. He's my son. My beautiful, strong son...) "Honey, we really shouldn't..."
Emboldened by her response, you slide your hand down to her ass, squeezing the firm flesh. Cherie presses herself closer to you, her body betraying her desires even as her mind struggles.
***CAL6G.webp***
Cherie: [Her voice thick with need] "Baby, what you're doing to me... it's driving me crazy. We need to stop, but..."
Her hand moves to the waistband of your pants, fingers dipping just below the elastic of your boxers. The heat of her touch so close to your most sensitive area makes you throb with anticipation. Cherie's eyes are a storm of lust and maternal love, a thin line of drool escaping the corner of her mouth as she battles with her conflicting emotions.
***CAL6H.webp***
Cherie: [Panting] (I'm his mother. I should protect him, not... not want him like this.) "We... we can't go further. Not here. Not like this."
Just as the tension reaches its peak, you hear footsteps approaching from below. You both freeze, hearts pounding with a mix of fear, excitement, and guilty relief.
Cherie: [Quickly zipping up her jumpsuit, wiping her mouth] "Oh God, that was close. I... I need time to think. But... maybe we could talk later? In private?"
You: [Adjusting yourself discreetly] "Of course, Mom. Whenever you're ready."
As you both compose yourselves, the air between you crackles with unresolved tension. Cherie's face is a mask of conflicting emotions - desire, shame, love, and confusion all warring for dominance. The promise of a deeper, more intimate conversation hangs between you, along with the lingering scent of shared arousal and the thrill of your forbidden encounter.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The summer heat beats down mercilessly as you make your way to the shed. Sweat trickles down your back, your shirt clinging to your skin. As you approach, you hear a soft humming from inside. Your mother's voice. You pause, hand on the door, listening to the gentle melody.
You: [Calling out] "Mom? You in there?"
The humming stops abruptly, followed by a clatter and a muffled curse.
Cherie: [Flustered] "Oh! Sweetheart, yes, I'm here. Just... just give me a moment!"
You hear rustling and more clattering from inside. Curious, you push the door open. The sight that greets you makes your breath catch in your throat.
Cherie is bent over a workbench, her back to you. She's wearing nothing but a thin, black top and impossibly short cutoff jeans. The top is soaked with sweat, clinging to every curve of her back. The shorts ride up, revealing the luscious globes of her ass and the tantalizing glimpse of something lacy underneath.
***CAL7A.webp***
Cherie: [Turning, eyes wide] "Oh! I... I didn't expect you so soon."
Her face is flushed, whether from the heat or something else, you're not sure. Beads of sweat roll down her neck, disappearing into her cleavage, which is prominently displayed by her low-cut top. You can clearly see the outline of her nipples through the damp fabric.
***CAL7B.webp***
Cherie: [Nervously tucking a strand of hair behind her ear] "I was just... organizing some supplies. It's so hot in here, I..." She trails off, noticing your intense gaze.
You: [Swallowing hard] "Yeah, it's... it's really hot."
There's a moment of charged silence, the air thick with more than just the summer heat. Cherie shifts, and you notice a dark stain on the workbench where she was leaning.
***START - Choice 1***
[[Branch A: "Maybe we should take a break, get some water?" (Lust attribute requirements not met)]]
[[Branch B: "Need any help with those... supplies, Mom?" (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Cherie: [Relief and disappointment warring in her eyes] "Oh, yes. Water. That's... that's a good idea, sweetheart. Why don't you go ahead? I'll be right behind you."
You nod, turning to leave. As you reach the door, you glance back. Cherie has turned away, her hands gripping the edge of the workbench, her body trembling slightly. You hesitate, but ultimately step out, the tension in the air unresolved.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
[The scene continues as before, with the initial teasing and tension building. However, after Cherie wipes her face with her tank top, the scene intensifies.]
Cherie: [Panting heavily] "It's so hot in here. I... I can't stand these clothes anymore."
Before you can respond, she grabs the bottom of her tank top and pulls it off entirely. Her breasts spill free, the lacy bra doing little to contain them. Sweat glistens on her pale skin, running down the valley between her heaving mounds.
***CAL7C.webp***
You: [Breath catching] "Mom..."
Cherie: [Eyes meeting yours, filled with conflicting emotions] "I'm sorry, I... I shouldn't have done that. It's just... the heat... the virus..."
Her hands move to the waistband of her shorts, hesitating for a moment before pushing them down her long, shapely legs. She steps out of them, now clad only in her lacy underwear. The thin fabric is visibly damp, clinging to her most intimate areas.
***CAL7D.webp***
Cherie: [Voice husky] "You must be hot too, sweetheart. Maybe you should... cool off?"
Your body moves of its own accord, pulling off your shirt. Cherie's eyes roam over your chest, lingering on the bulge in your pants. You hesitate, hands on your waistband.
Cherie: [Nodding encouragingly] "It's okay, baby. It's just us here. No need to be shy."
You push your pants and underwear down in one motion, your erection springing free. Cherie gasps, her eyes widening at the sight of your impressive manhood.
***CAL7E.webp***
Cherie: [Whimpering] (Oh god, what are we doing?) "Sweetheart, I... I need to check something. For... for our safety. Can you... can you turn around for a moment?"
You nod, turning to face the door. Behind you, you hear the rustle of fabric and a soft moan. Unable to resist, you glance over your shoulder.
Cherie has removed her bra and panties, now completely naked. Her hand is between her legs, fingers working furiously as she pleasures herself. Her other hand kneads her breast, pinching and rolling her nipple. The sight is intoxicating.
***CAL7F.webp***
Cherie: [Eyes flying open, catching your gaze] "Oh! Oh god, I... I'm so sorry. I didn't mean to... The virus, it's... it's making me..."
You turn fully, your own arousal evident. Cherie's eyes lock onto your throbbing member, and she lets out a small whimper.
Cherie: [Voice trembling] "Sweetheart, you... you're affected too. Maybe we should... check your condition. For safety."
Her hand is still moving between her legs, her juices glistening on her thighs. You can't tear your eyes away from the erotic display.
***CAL7G.webp***
You: [Hoarsely] "Yeah... yeah, we should check."
Your hand moves to your shaft, gripping it firmly. The moment you start stroking, a groan escapes your lips.
Cherie: [Moaning] "That's it, baby. Show Mommy... show me how the virus affects you."
You begin to stroke yourself in earnest, your eyes roaming over Cherie's naked form. Her breasts bounce slightly with each movement of her hand, her nipples hard and begging for attention. The air is thick with the scent of sweat and arousal.
***CAL7H.webp***
Cherie: [Panting] "Oh god, this is so wrong. We shouldn't... we can't... but it feels so good."
Her fingers move faster, her hips bucking against her hand. You watch, mesmerized, as she brings herself closer to the edge. The taboo nature of the situation only heightens your pleasure.
You: [Groaning] "Mom... I'm close. I can't..."
Cherie: [Eyes wild] "Me too, baby. Me too. I want to... I need to..."
She takes a step towards you, her hand reaching out as if to touch you. You lean in, your body screaming for contact. Just as your skin is about to meet, Cherie jerks back, her eyes wide with shock.
***CAL7I.webp***
Cherie: [Voice shaking] "No! We can't... This isn't right. The virus... it's making us crazy."
She stumbles backward, putting distance between you. Her body trembles with unfulfilled desire, her hand still moving between her legs as if she can't stop.
Cherie: [Struggling to speak] "We need to stop. This... this isn't right. But I can't... I can't stop touching myself. The virus..."
You nod, your hand still stroking your shaft. The tension in the air is palpable, both of you on the edge of release but unable to cross that final line.
Cherie: [Moaning] "I... I should go. We'll talk about this later. When we're... when we're more ourselves. But I need to... I need to finish."
She leans against the workbench, her legs spread wide as she furiously rubs her clit. Her eyes are locked on your stroking hand, watching as you bring yourself closer to climax.
***CAL7J.webm***
Cherie: [Breathlessly] "Come for me, baby. Let Mommy see what the virus does to you."
Her words push you over the edge. With a loud groan, you climax, your seed erupting in powerful spurts. The sight sends Cherie into her own orgasm, her body convulsing as waves of pleasure wash over her.
As the aftershocks subside, reality comes crashing back. Cherie looks at you, her eyes wide with a mixture of shame, desire, and something deeper... something primal.
***CAL7K.webp***
Cherie: [Softly, tears in her eyes] "I'm so sorry, sweetheart. This... this can never happen again. The virus... it's changing us. We need to be stronger."
She quickly gathers her clothes, not bothering to put them on as she rushes past you. At the door, she pauses, looking back. Her naked body is flushed and glistening with sweat, a sight you'll never forget.
Cherie: [Voice barely a whisper] "I love you, baby. More than you know. That's why... that's why we can't..."
With that, she's gone, leaving you alone in the shed, surrounded by the lingering scent of your shared arousal and the memory of what almost was.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter the kitchen, your senses immediately awakened by the comforting aroma of a home-cooked meal and the gentle clatter of utensils. The soft, natural light filtering through a small window bathes the room in a warm glow, illuminating the simple yet functional space. Your eyes are drawn to Cherie, who's bustling about the rustic wooden counters, her blonde hair looks majestic as she works.
Cherie: [Turning to face you, a warm smile gracing her features] (He looks tired, but there's still that spark in his eyes.) "Oh, there you are! I was just getting dinner started. How are you holding up, sweetheart?"
***CAT1A.webp***
You: [Returning her smile, feeling a wave of appreciation wash over you] (She never stops taking care of us, does she?) "I'm doing alright, Mom. Is there anything I can help with?"
Cherie: [Gesturing towards a heavy pot on the counter] (He's always so eager to help. Such a good boy.) "Actually, yes. Could you help me move this pot to the fire? It's a bit heavy for me."
You: [Moving towards the pot] "Of course, I've got it."
As you reach for the pot, your hand accidentally brushes against Cherie's. A moment of warmth passes between you, and you find yourself pausing briefly, your eyes meeting hers.
Cherie: [A faint blush coloring her cheeks] (That was... unexpected. Why am I feeling flustered?) "Thank you, dear. You're always so helpful."
***CAT1B.webp***
***START - Choice 1***
[[Branch A: "Well, at least cooking keeps you busy and distracted from all the problems outside, right?" (Trust attribute requirements not met)]]
[[Branch B: "You know, I really appreciate everything you do for us. I want you to know that I'm here for you too." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Cherie: [Her smile fading, a hint of hurt in her eyes] (Does he think I'm just distracting myself?) "I... I suppose it does keep me occupied."
You: [Realizing your mistake, fumbling for words] (Oh no, that came out all wrong.) "I didn't mean... I just..."
Cherie: [Turning back to the stove, her voice slightly strained] "It's alright, dear. Why don't you go rest until dinner's ready? I can manage here."
***CAT1C.webp***
You nod silently, feeling a knot in your stomach as you leave the kitchen. You can't help but think you've unintentionally pushed Cherie away, missing an opportunity to connect with your mother on a deeper level.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Cherie: [Her eyes softening, a tender smile forming] (Oh, my sweet boy. He understands.) "That means more to me than you know, sweetheart. Sometimes I worry..."
***CAT1D.webp***
You: [Setting the pot down and turning to face her fully] (She needs to know she's not alone in this.) "What is it, Mom? You can talk to me."
Cherie: [Leaning against the counter, her guard lowering] "I worry about our safety, about having enough resources. But mostly, I worry about you and your sister. I want so badly to give you both a normal life."
You: [Stepping closer, placing a comforting hand on her shoulder] "Mom, you're doing an amazing job. We may not have a normal life, but we have each other. That's what matters."
Cherie: [Placing her hand over yours, her eyes glistening] (He's grown up so much. When did that happen?) "You're right. We do have each other. And that makes all of this bearable."
***CAT1E.webp***
You: [Feeling a surge of emotion] (I need to be strong for her, to be the support she needs.) "We're a team, Mom. We'll get through this together."
Cherie: [Impulsively pulling you into a tight hug] "Oh, my darling boy. What would I do without you?"
You return the hug, feeling the warmth of her body against yours. For a moment, the world outside ceases to exist. It's just you and Cherie, mother and son, finding comfort in each other's arms.
Cherie: [Pulling back slightly, her hands resting on your shoulders] "Thank you for being here, for being you. Now, let's finish getting this dinner ready, shall we?"
***CAT1F.webp***
You nod, a warm smile on your face as you both turn back to the task at hand. As you work side by side in the cozy kitchen, you can't help but feel that your bond with Cherie has deepened, creating a foundation of trust and mutual support that will carry you through whatever challenges lie ahead.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You step quietly into Cherie's room, the soft glow from a small bedside lamp casting warm shadows across the walls. Cherie is seated at her dresser, brushing her long blonde hair, the ends catching the light and shimmering like gold. The room is a sanctuary of warmth and safety amid the chaos outside.
Cherie: [Turning to face you, her expression a mix of concern and fatigue] (He's grown so much, but I still see my little boy.) "Hey, sweetie. What brings you here so late?"
***CAT2A.webp***
You: [Leaning against the doorframe, taking in the comforting atmosphere] (She looks beautiful even when she's tired.) "I wanted to check on you, Mom. I know today was tough, and I heard some weird noises in the forest while getting wood."
Cherie: [Her eyes widen in alarm, her hand pausing mid-brush] "The forest? You know how dangerous it is out there. What kind of noises?"
You: [Walking over to sit on the edge of her bed] "I don't know exactly. It sounded like something—or someone—was following me. It was eerie."
Cherie: [Setting down her brush, her expression shifting to one of deep concern] "You can't go out there alone. It's too risky. What if something happened to you?"
***CAT2B.webp***
You: [Reaching out to take her hand, giving it a reassuring squeeze] "I know, Mom. But we need the wood to keep warm and cook. I promise I'll be careful."
Cherie: [Squeezing your hand back, her eyes softening] (He's so brave, but I worry so much.) "I just don't want to lose you. You're all we have left."
***START - Choice 1***
[[Branch A: "I can handle it, Mom. Stop worrying so much." (Trust attribute requirements not met)]]
[[Branch B: "I promise, Mom. Your safety and well-being mean everything to me." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Cherie: [Her face falling, a hint of hurt in her eyes] (Why doesn't he understand how much I worry?) "I... I suppose you think you can. Just please, be careful."
***CAT2C.webp***
You: [Feeling a pang of guilt, fumbling for words] (I didn't mean to brush her off.) "I didn't mean it like that, Mom. I just..."
Cherie: [Turning back to her dresser, her voice strained] "It's alright, dear. Maybe you should get some rest. We can talk more in the morning."
You nod silently, the weight of your words hanging heavy as you leave the room, feeling like you've missed an important opportunity to connect with her.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Cherie: [Her eyes softening into a tender smile] (He really understands.) "That means so much to me, sweetheart. I worry about you every day."
***CAT2D.webp***
You: [Moving closer, sitting beside her on the bed] (She needs to know she's not alone.) "I know, Mom. But we're in this together. I'll always be here for you."
Cherie: [Leaning against you, her guard lowering] "Sometimes I feel like I'm failing you and your sisters. Everything is so hard now, and I feel so helpless."
You: [Placing a comforting arm around her shoulders] "Mom, you're doing an amazing job. We might not have a normal life, but we have each other. That's what's important."
Cherie: [Resting her head on your shoulder, her eyes glistening] (When did he grow up so much?) "You're right. Having you here makes all of this bearable."
***CAT2E.webp***
You: [Feeling a surge of emotion, holding her close] (I need to be strong for her.) "We're a team, Mom. We'll get through this together."
Cherie: [Pulling you into a tight hug] "Oh, my darling boy. What would I do without you?"
You return the hug, feeling the warmth of her body, the scent of her hair, and the beating of her heart. For a moment, the world outside fades away, leaving just the two of you in a cocoon of safety and affection.
Cherie: [Pulling back slightly, her hands lingering on your shoulders] "Thank you for being here, for being you. Now, let's get ready for bed. Tomorrow is another day."
***CAT2F.webp***
You nod, a warm smile spreading across your face as you help her with the final preparations for bed. As you tuck her in and turn off the light, you can't help but feel that your bond with Cherie has deepened, providing a strong foundation for whatever challenges lie ahead.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You step into the living room, the soft glow of candles illuminating the cozy space. Cherie is seated on the couch, her attention absorbed by the TV screen displaying a paused romance series. The room is warm and inviting, with family photos and personal mementos scattered around, adding a touch of intimacy to the setting. You notice Cherie's casual yet elegant appearance; she's wearing a fitted sweater that accentuates her curves. Her hair is loose, making her look both relaxed and effortlessly beautiful.
You: [Walking over to the couch, a playful grin on your face] (She really loves these sappy shows.) "Watching your romance series again, Mom?"
Cherie: [Turning to face you, a smile playing on her lips] (He's teasing me, but it's nice to have company.) "Yes, I am. Why don't you join me? You might actually enjoy it."
***CAT3A.webp***
You: [Sighing dramatically but sitting down beside her] (It's worth it to spend some time with her.) "Alright, I'll give it a shot. But no promises."
The two of you settle in, and Cherie unpauses the show. Initially, you watch with mild interest, but soon you find yourself getting more involved in the story than you expected. Cherie notices your growing engagement and laughs softly, her eyes twinkling with amusement.
Cherie: [Nudging you gently] (He's really getting into it.) "See? I knew you'd like it."
You: [Chuckling and shaking your head] (She's right, as usual.) "Okay, okay. You win this time."
Cherie: [Smiling warmly] "You know, you look really handsome when you're relaxed."
You: [Caught off guard but pleased] (Did she just compliment me?) "Thanks, Mom. And you look beautiful as always. That sweater really suits you."
Cherie: [Blushing slightly, surprised by the bold compliment] (He's never complimented me like that before.) "Thank you, sweetheart. You're quite the charmer tonight."
***CAT3B.webp***
***START - Choice 1***
[[Branch A: "It's still cheesy, though." (Trust attribute requirements not met)]]
[[Branch B: "You have good taste, Mom." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Cherie: [Her smile falters slightly, a hint of disappointment in her eyes] (He still doesn't fully appreciate it.) "Well, it's not for everyone, I suppose."
***CAT3C.webp***
You: [Feeling a bit guilty, trying to lighten the mood] (I didn't mean to upset her.) "I just prefer something with more action, you know?"
Cherie: [Nodding, her tone more neutral] "I understand. Maybe we can find something we both like next time."
The conversation dwindles, and although you continue watching, the atmosphere feels a bit less warm. After a while, you both decide to head to bed, each lost in your own thoughts.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Cherie: [Her smile widening, eyes sparkling with joy] (He really does appreciate it.) "Thank you, sweetheart. That means a lot to me."
***CAT3D.webp***
You: [Moving a bit closer, enjoying the shared moment] (She's so lovely when she's happy.) "I mean it, Mom. This is nice."
Cherie: [Resting her head on your shoulder, her voice soft] "I'm glad we're doing this together. It feels good to relax and enjoy something simple."
You: [Feeling a surge of affection, wrapping an arm around her] (I want to protect this happiness.) "Yeah, it does. We should do this more often."
The two of you continue watching, the warmth between you growing. Cherie laughs at a particularly funny scene, and you can't help but join in. The sound of her laughter is infectious, filling the room with a sense of peace and contentment.
Cherie: [Looking up at you, her eyes filled with gratitude] "You know, I'm really proud of you. You've grown so much."
***CAT3E.webp***
You: [Blushing slightly, but smiling] (Her words mean the world to me.) "Thanks, Mom. I couldn't have done it without you."
Cherie: [Her expression softening, a tender smile on her lips] "You're a wonderful son. I'm so lucky to have you."
You: [Feeling a deep connection, holding her a bit tighter] (I need to be strong for her.) "And I'm lucky to have you, Mom."
Cherie: [Looking into your eyes, her voice sincere] "You know, you always make me feel so special. I don't know what I'd do without you."
You: [Heart racing, leaning in slightly] (There's something so intimate about this moment.) "You deserve to feel special every day, Mom. You're incredible."
Cherie: [Blushing deeper, her eyes glistening] "Thank you, my darling. You always know just what to say."
The show eventually ends, but neither of you is in a hurry to move. You sit together in comfortable silence, enjoying the closeness and the shared warmth.
Cherie: [Finally pulling back slightly, her hand lingering on your arm] "Thank you for this. It was a perfect evening."
***CAT3F.webp***
You: [Smiling warmly] "Anytime, Mom. Let's make it a regular thing."
Cherie: [Nodding, her eyes shining with affection] "I'd like that. Goodnight, sweetheart."
You: "Goodnight, Mom."
You both head to bed, the bond between you stronger and more resilient than ever. This moment of shared intimacy sets the stage for deeper connections and the exploration of more complex emotions in the future.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The once-manicured lawn of your backyard has been transformed into a plot for a new vegetable garden. Rich, dark soil contrasts sharply with remnants of your old life - a forgotten garden gnome, a rusted wind chime tinkling softly in the breeze. You and Cherie work together under the warm sun, the act of nurturing new life sparking deeper conversations about your role in this new world.
Cherie: [Bending to plant seedlings, her light sundress clinging to her curves] "These tomatoes should bear fruit in a few months." [She wipes her brow, inadvertently smearing a streak of dirt across her forehead]
***CAT5A.webp***
You: [Shirtless, feeling the sun on your bare back as you dig] (God, she looks beautiful like this. So natural, so... fertile.) "It's amazing how quickly things grow with the right care."
Cherie: [Glancing at you, her eyes lingering on your chest] "Yes, it's... remarkable how things can change and grow." [She shifts, her dress riding up slightly]
You: [Noticing the expanse of leg revealed] (Focus on the gardening, not on how smooth her skin looks...) "So, what else should we plant?"
Cherie: [Leaning forward to reach a far corner, her neckline gaping slightly] "I was thinking maybe some squash over here. They spread out quite a bit, but they're hardy."
***CAT5B.webp***
You: [Your eyes drawn to the swell of her breasts] (Don't stare, don't stare...) "Sounds good. We should probably plant them at the edge then, right?"
Cherie: [Nodding, a few strands of hair escaping her ponytail] "Exactly. You're getting quite good at this, honey."
You: [Feeling a surge of pride at her praise] "Well, I have a great teacher."
Cherie: [Smiling warmly] "We make a good team, don't we?" [She reaches for a tool, her hand brushing against your chest]
***CAT5C.webp***
You: [Breath catching at the contact] (Her touch... it's like electricity.) "Yeah, we really do."
The air between you seems to thicken, charged with unspoken potential. You find yourself hyper-aware of every movement, every accidental touch. The virus heightens your senses, making you acutely conscious of the faint sheen of sweat on Cherie's skin, the way her breath catches when she stretches.
Cherie: [Her voice slightly husky] "You know, there's something beautiful about this. Creating life in a world that's seen so much death."
***START - Choice 1***
[[Branch A: "So, uh, do you think we'll need to repopulate the earth or something?" (Trust attribute requirements not met)]]
[[Branch B: "It's beautiful, isn't it? You and me, creating life together in this garden. It feels... right." (Trust attribute requirements met)]]
***START - Choice 1 - Branch A***
Cherie: [Eyes widening, a blush creeping up her cheeks] "I... that's not... we shouldn't think about that, honey." [She turns away quickly, focusing intently on the plants]
You: [Feeling the moment slip away] (Damn it, why did I say that?) "Sorry, Mom. I didn't mean to make things weird."
Cherie: [Her voice strained] "It's okay. Let's just focus on the gardening, shall we?"
The rest of the day passes in awkward silence, the potential for connection unrealized. You both keep your movements efficient and purposeful, avoiding unnecessary contact. When your hands brush accidentally as you reach for the same tool, Cherie quickly pulls away, mumbling an apology.
***CAT5D.webp***
As you finish your work, the distance between you feels greater than ever, despite the shared accomplishment of your new garden. The charged atmosphere never quite ignites, leaving you with a sense of missed opportunity.
Cherie: [Surveying the finished garden, her voice neutral] "We did good work today. These plants should do well."
You: [Nodding, unable to meet her eyes] "Yeah, it looks great. We should probably head in and clean up."
As you head inside, you can't help but feel like you've taken a step backward in your relationship. The seeds you've planted in the garden seem to mock the withering connection between you and Cherie.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Cherie: [Her eyes meeting yours, widening slightly] "Creating life," she repeats softly, her voice husky. "Yes, I suppose that's exactly what we're doing."
You notice her gaze drop to your bare chest, lingering on your defined muscles. She quickly looks away, but not before you catch the flush spreading across her cheeks.
You: [Moving to grab a nearby watering can] "It feels good, doesn't it? Working with our hands, nurturing something."
Cherie: [Nodding, her voice slightly breathless] "It does. There's something... primal about it."
As you water the newly planted seeds, you can't help but notice how Cherie's sundress clings to her sweat-dampened skin. The thin fabric outlines her figure in a way that makes your mouth go dry.
***CAT5E.webp***
Cherie: [Wiping her brow] "Goodness, it's getting warm out here."
Without warning, she reaches for the hem of her dress, pulling it up to wipe her face. The movement exposes a long expanse of toned thigh, and for a brief moment, you catch a glimpse of lacy white panties. Your breath catches in your throat.
***CAT5F.webp***
You: [Quickly looking away] (Don't stare, don't stare...) "Yeah, it's pretty hot. Maybe we should take a break?"
Cherie: [Letting her dress fall back down] "No, no, we're almost done. Just a few more plants."
As she bends to plant another seedling, the neckline of her dress falls open. You find yourself frozen, unable to look away from the clear view of her breasts, barely contained by a delicate bra. A bead of sweat trails down her cleavage, and you feel an overwhelming urge to trace its path with your tongue.
***CAT5G.webp***
Cherie: [Looking up, catching you staring] "Honey? Could you pass me that trowel?"
You: [Snapping out of it] "Oh, right. Sorry."
As you hand her the tool, your fingers brush against hers. The simple touch sends a jolt of electricity through your body, and you see Cherie shiver despite the heat.
Cherie: [Her voice slightly shaky] "Thank you. You know, you've grown into such a strong young man. I'm proud of you."
The praise sends a wave of conflicting emotions through you - pride, love, and a deep, aching desire that you know you shouldn't feel.
You: [Your voice rough] "Thanks, Mom. I couldn't have done it without you."
As you continue working, the sexual tension builds. You find yourself hyper-aware of every movement, every accidental touch. The virus heightens your senses, making you acutely conscious of the faint sheen of sweat on Cherie's skin, the way her breath catches when she stretches.
Suddenly, Cherie lets out a small gasp. You turn to see her standing awkwardly, her dress caught on a nearby branch.
***CAT5H.webp***
Cherie: [Struggling to free herself] "Oh, darn it. Honey, could you help me?"
You move behind her, your hands shaking slightly as you reach for the snagged fabric. As you work to free it, the branch pulls the dress up, exposing more and more of Cherie's thigh. Your fingers accidentally brush against her bare skin, and you feel her shudder.
With a final tug, the dress comes free - but the force of it causes the top to slip down, fully exposing one of Cherie's breasts. For a moment, you both freeze, the sight of her perfectly rounded flesh, nipple hardened in the open air, searing itself into your mind.
***CAT5I.webp***
Cherie: [Gasping, quickly covering herself] "Oh my god!"
You: [Turning away, your face burning] "I'm sorry, I didn't mean to-"
Cherie: [Her voice trembling] "It's okay, it was an accident. Let's just... let's finish up here."
The rest of your gardening session passes in a haze of tension and stolen glances. Every movement seems charged with unspoken desire. When you finally finish, you both stand to survey your work, bodies almost touching.
Cherie: [Her voice barely above a whisper] "We've created something beautiful today."
You: [Meeting her gaze, the air electric between you] "We sure have."
As you head inside to clean up, you're both acutely aware of the shift in your relationship. The seeds you've planted in the garden pale in comparison to the ones now growing between you, full of potential and fraught with taboo implications.
You can hear the shower starting upstairs, and your mind floods with unbidden images of water cascading over Cherie's naked body. You shake your head, trying to clear the thoughts, but the virus-enhanced desire refuses to subside.
You: [To yourself, your voice thick with confusion and want] "What's happening to us?"
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The kitchen is bathed in the warm glow of the setting sun as you enter. Cherie stands at the counter, her blonde hair tied back in a neat ponytail, wearing a conservative blouse and knee-length skirt. She's arranging a set of gleaming kitchen knives, her movements precise and methodical. As you approach, you notice a flicker of something unfamiliar in her eyes.
***CAT6A.webp***
Cherie: [Turning to face you, her smile a mix of warmth and uncertainty] (What am I thinking? This is so inappropriate...) "Oh, sweetie! I was just... organizing these new knives. They're quite sharp."
You: [Noticing her slight nervousness] "They look dangerous, Mom. Everything okay?"
Cherie: [Fidgeting with a knife handle] (I can't believe I'm considering this...) "I had a... rather unorthodox idea. As a doctor, I've always valued trust between individuals. Perhaps we could... test that trust?"
You: [Intrigued] "What did you have in mind?"
Cherie: [Taking a deep breath, her professional demeanor slipping] (This virus is making me lose my mind...) "We could... use these to remove each other's clothes. Carefully, of course. It's about precision and... trust."
***CAT6B.webp***
You: [Eyes widening in surprise] "Mom, are you feeling alright?"
Cherie: [Blushing deeply] "I'm sorry, that was completely inappropriate. The virus, it's... it's making me think things I shouldn't. Forget I said anything."
You: [Stepping closer, voice gentle] "Hey, it's okay. If you want to try it, I trust you."
Cherie: [Looking conflicted] (He agreed? Oh God, what am I doing?) "Are you sure, honey? This isn't... normal mother-son behavior."
You: [Reassuring her] "Nothing's normal anymore, Mom. If this helps us cope, why not?"
Cherie: [Handing you a knife with trembling hands] (I'm crossing a line...) "Okay. Start with my blouse. Remember your anatomy lessons - be careful."
You approach Cherie, knife in hand. Your heart races as you bring the blade to her blouse button. With a careful motion, you slice it off. Cherie gasps softly.
***CAT6C.webp***
Cherie: [Breathing quickening] "Good job, sweetie. You always were good with your hands."
You continue, methodically cutting away her blouse. Each slice reveals more of Cherie's soft skin. As the last piece falls away, she stands before you in her bra, arms crossed protectively.
***CAT6D.webp***
Cherie: [Voice shaky] "Your turn now. Trust me, okay?"
With clinical precision belied by her trembling hands, Cherie begins cutting away your shirt. The knife glides across your skin, leaving goosebumps in its wake. Soon, you're both topless, the air thick with tension.
***CAT6E.webp***
Cherie: [Swallowing hard] "We should stop. This is... this is going too far."
***START - Choice 1***
[[Branch A: "Agree to stop" (Trust attribute requirements not met)]]
[[Branch B: "Suggest continuing" (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Nodding] "You're right, Mom. This is pretty intense."
Cherie: [Looking relieved but conflicted] (It's for the best, but why am I disappointed?) "Thank you for understanding, sweetie. Let's... let's pretend this never happened."
***CAT6F.webp***
You both awkwardly gather the remnants of your clothes, the moment fading into uncomfortable silence.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Meeting her gaze] "I think we should finish what we started, Mom. I trust you completely."
Cherie: [Inhaling sharply] (Oh God, what kind of mother am I?) "Okay, baby. But... this doesn't change anything between us. It's just the virus, okay?"
With utmost care, you cut away Cherie's skirt and undergarments. She stands before you, completely naked, her body trembling with a mix of shame and unwanted arousal.
***CAT6G.webp***
Cherie: [Voice barely a whisper] "Your turn. Remember, I'm still your mother."
Cherie's hands shake as she removes your remaining clothes. As the last piece falls away, her eyes are involuntarily drawn to your fully erect manhood. Her reaction is a mix of shock, guilt, and unmistakable desire.
***CAT6H.webp***
Cherie: [Gasping, eyes wide] (Oh my... I shouldn't be looking at my son like this!) "Honey, I... I'm so sorry. A mother shouldn't... shouldn't see her son like this."
You: [Feeling a mix of embarrassment and arousal] "Mom, it's okay. It's just biology, right?"
Cherie can't tear her eyes away from your penis. Her breathing becomes shallow, and you notice a flush spreading across her chest. She takes a step back, conflicting emotions warring on her face.
***CAT6I.webp***
Cherie: [Voice husky] (This is so wrong, but I can't stop staring...) "This is... this is the virus talking. We need to fight it. You're my son, my baby boy. I shouldn't be feeling... God, what's happening to me?"
You: [Stepping closer] "Mom, it's okay. We're both adults. We don't have to be ashamed."
Cherie: [Backing away, hands trembling] (I want to touch him so badly... No! I'm his mother!) "We need to get dressed. Now. This... this was a mistake. I'm supposed to protect you, not... not expose you to this."
The air is thick with unresolved sexual tension as you both hurriedly gather your shredded clothes. Cherie keeps stealing glances at your body, her eyes lingering on your manhood before she forces herself to look away, guilt evident in her expression. The trust between you has deepened, but it's clear that something fundamental has shifted in your relationship, leaving Cherie torn between her maternal instincts and her virus-induced desires.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach Cherie's room, your mind swirling with thoughts of the virus and its effects on your family. As you reach for the doorknob, you hear a soft rustling from within, followed by a muffled sigh. You pause, wondering if you should interrupt, but your concern for your mother's well-being overrides your hesitation. You knock gently.
Cherie: [Startled] "Oh! Um, come in!"
You enter to find Cherie sitting on the edge of her bed, her blonde hair slightly disheveled and her cheeks flushed. She's wearing a loose-fitting blouse and a knee-length skirt, but you can't help noticing how the fabric clings to her curves in all the right places. She looks up at you, her blue eyes wide with a mix of surprise and... something else.
***CAT7A.webp***
Cherie: [Smoothing her skirt nervously] "Sweetheart, I... I was just thinking about you. About us. About this whole situation."
You: [Concerned] "Is everything okay, Mom? You seem a bit flustered."
Cherie: [Taking a deep breath] (I can do this. I'm a doctor. This is necessary.) "Actually, I'm glad you're here. I've been meaning to talk to you about something important."
You: [Moving closer] "What is it?"
Cherie: [Patting the bed beside her] "Sit down, honey. I... I think it's time we did a thorough examination of your condition. The virus, it's... it's affecting all of us, and as your mother and a doctor, I need to make sure you're okay."
You sit beside her, acutely aware of the warmth radiating from her body and the faint scent of her perfume. Your heart races as you realize what she's suggesting.
***CAT7B.webp***
Cherie: [Struggling to maintain composure] "I know this is awkward, but we need to be thorough. I'll need to... to check various aspects of your physical response to the virus. It's purely medical, of course."
Her voice wavers slightly, betraying the inner turmoil behind her professional facade. You can see the conflict in her eyes - the concerned mother, the dedicated doctor, and something else... something primal and hungry.
***START - Choice 1***
[[Branch A: "Are you sure about this, Mom? It seems... inappropriate." (Trust attribute requirements not met)]]
[[Branch B: "I trust you completely, Mom. Whatever you think is necessary." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Cherie: [Visibly deflating] "Oh... oh, you're right. What was I thinking? I'm sorry, sweetheart. I just... I worry about you so much. But you're right, this isn't appropriate. Let's... let's just forget I said anything."
She turns away, her shoulders slumping. You can see the shame and disappointment radiating from her, and you feel a pang of regret for refusing her.
***CAT7C.webp***
Cherie: [Forcing a smile] "Why don't you go get some rest? We can talk more later."
You nod silently and leave the room, the tension thick in the air between you.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Cherie: [Relief washing over her face] "Thank you, sweetheart. Your trust means everything to me."
She stands up, smoothing her skirt once more, and moves to her desk where she retrieves a medical kit. As she turns back to you, you notice her hands trembling slightly.
***CAT7D.webp***
Cherie: [Taking a deep breath] "Okay, let's begin. First, I'll need to check your vitals."
She approaches you, stethoscope in hand. As she leans in to place it on your chest, you catch a glimpse down her blouse, her ample cleavage heaving with each breath. You feel your body responding, and you shift uncomfortably.
Cherie: [Noticing your discomfort] (Oh god, what am I doing to him?) "Everything okay, honey?"
You: [Nodding] "Y-yeah, Mom. I'm fine."
Cherie continues her examination, her touch sending shivers through your body. As she checks your reflexes, her hand lingers on your thigh, and you see her bite her lip, fighting against some internal struggle. As she turns to get another tool, you get a clear view of her rear end.
***CAT7E.webp***
Cherie: [Voice husky] "Now, I... I need to check your physical response to... stimuli. The virus affects us all differently, and I need to understand how it's affecting you."
She hesitates for a moment, then slowly begins to unbutton her blouse. Your eyes widen as more and more of her creamy skin is revealed.
Cherie: [Blushing furiously] (This is wrong, but... I need to know. For science. For his safety.) "I'm going to remove my clothing now. It's... it's to test your reaction. Please tell me if you feel any... changes."
You watch, transfixed, as she sheds her blouse, revealing a lacy bra that barely contains her heaving breasts. Her skirt follows, pooling at her feet, leaving her in matching panties. Your body responds immediately, your erection straining against your pants.
***CAT7F.webm***
Cherie: [Gasping] "Oh my... that's quite a... reaction. I should measure it. For... for the records."
She kneels before you, her face inches from your crotch. You can see the internal battle raging behind her eyes - the professional doctor warring with the virus-enhanced desire of a woman... of a mother.
Cherie: [Breathlessly] "I need you to... to remove your pants, sweetheart. It's necessary for a proper examination."
With trembling hands, you comply. As your erection springs free, Cherie's eyes widen, and she lets out a small whimper.
***CAT7G.webp***
Cherie: (Oh god, it's so... No! Focus, Cherie!) "I... I need to test its... responsiveness."
She reaches out, her fingers ghosting along your length. The touch sends a jolt through your body, and you groan. Cherie jerks her hand back as if burned.
Cherie: [Panting] "The virus... it's affecting you so strongly. I need to... to test further."
She stands, her body swaying slightly. With a deep breath, she reaches behind her back and unclasps her bra. As it falls away, you're mesmerized by the sight of her perfect breasts, nipples hard and pointing directly at you.
***CAT7H.webp***
Cherie: [Voice barely a whisper] "Tell me what you're feeling, sweetheart. Every... detail."
You: [Groaning] "Mom, I... I feel like I'm on fire. Everything's so intense. I can smell you, feel you... I..."
Suddenly, the room starts to spin. The combination of arousal, virus, and the sheer taboo nature of the situation overwhelms you. You sway on the bed, your vision blurring.
Cherie: [Alarmed] "Honey? Honey! Stay with me!"
She rushes to you, all thoughts of propriety forgotten. Her naked body presses against yours as she supports you, and the feeling of her skin on yours nearly sends you over the edge.
***CAT7I.webp***
Cherie: [Frantic] (No, no, no! What have I done?) "Sweetheart, you need to release the pressure. The virus... it's building up too much. You need to... to masturbate. Now!"
You: [Dazed] "But... Mom..."
Cherie: [Pleading] "Please, baby. Do it for me. For... for science. I need to observe the effects."
With shaking hands, you begin to stroke yourself. Cherie watches, her eyes locked on your movements, her body trembling with need.
***CAT7J.webp***
Cherie: [Whispering] "That's it, sweetheart. Let it all out. Show Mommy what the virus does to you."
Her words push you over the edge. With a cry, you climax, your seed erupting in powerful spurts. Some of it lands on Cherie's bare skin, and the moment it touches her, she gasps, her body convulsing in a sudden, intense orgasm.
Cherie: [Moaning] "Oh god, oh god, oh god..."
As the waves of pleasure subside, reality comes crashing back. Cherie looks at you, her eyes wide with a mix of horror, shame, and lingering desire.
***CAT7K.webp***
Cherie: [Covering herself] "I... I'm so sorry, sweetheart. This... this wasn't supposed to happen. I... I need to clean up. You should go."
You stumble to your feet, still dazed from the intensity of what just transpired. As you leave the room, you hear a soft sob from behind you.
You: [Pausing at the door] "Mom... thank you. For caring. For... everything."
Cherie doesn't respond, but you see her shoulders shake slightly. As you close the door, you're left with a whirlwind of emotions - shame, excitement, and a deepening trust in the unbreakable bond between mother and son.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You stand at the door of Cherie's room, hesitating as you knock softly. The fear and anxiety from the virus have become unbearable, and you find yourself seeking her comfort.
Cherie: [Turning towards you with a gentle smile] (He looks so scared... but I can't let this get inappropriate.) "What's wrong, sweetheart?"
You: [Voice trembling] "Cherie, can I sleep with you tonight? The virus... it's making me feel really uneasy."
Cherie: [Her expression softens but she remains firm] "I understand you're scared, but it's not appropriate for us to share a bed. I'll sit with you for a while until you feel better."
***CCA1A.webm***
Get out of the room
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You knock softly on Cherie's door, the weight of the night's fears pressing down on you. The darkness seems to amplify the virus's effects, leaving you feeling vulnerable and alone.
Cherie: [Sitting up in bed, her expression filled with concern] (He's so troubled by all this... I need to be there for him.) "Come in, honey. What's wrong?"
You: [Entering the room, feeling a mix of fear and embarrassment] "The virus... it's just making everything so scary. Can I stay with you tonight?"
Cherie: [Patting the bed beside her, her voice soothing] "I understand, but it's not suitable for us to share a bed. You can stay here until you feel calmer."
***CCA2A.webm***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You stand outside Cherie's room, hesitant but determined. The day’s events and the constant dread from the virus have left you feeling overwhelmed. You knock softly, hoping for some comfort.
Cherie: [Opening the door, her face softening at the sight of you] (He looks so lost... I need to help him.) "What is it, sweetheart? Come in."
You: [Entering, voice shaky] "I'm sorry to bother you, but the virus... it's just too much. Can I stay with you tonight?"
Cherie: [Nodding and guiding you to a chair beside the bed] "It's okay to be scared, but it's not appropriate for us to share a bed. I'll stay with you here."
***CCA3A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach Cherie's door, feeling vulnerable. Knocking softly, you wait.
Cherie: [Opening the door in a sheer nightgown] "What's wrong, sweetheart?"
You: [Eyes widening at her visible curves] "Cherie, can I sleep with you tonight? The virus... it's making me feel uneasy."
Cherie: [Smirking slightly, noticing your stare] "It's not appropriate for us to share a bed. You can sleep on the couch."
You: [Trying to look away] "Thank you, Cherie."
Cherie: [Stretching, her nightgown lifting] "I'll stay close by."
***CCA4A.webm***
Button: Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You knock on Cherie's door, feeling the virus's influence.
Cherie: [Opening the door in a loose robe, slightly open] "Come in, honey. What's wrong?"
***CCA5A.webp***
You: [Eyes drifting to her exposed chest] "The virus... it's making everything so scary. Can I stay with you tonight?"
Cherie: [Noticing your gaze, a playful glint in her eyes] "It's not suitable for us to share a bed. You can sleep on the couch."
You: "Thank you, Cherie."
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach the bathroom door, needing to use it. As you reach for the handle, you notice it’s slightly ajar.
Through the crack, you see Cherie, her back turned, undressing. The virus's influence makes it impossible to look away.
***CCB1A.webp***
Cherie: [Humming softly, oblivious to your presence]
You: [Heart racing, unable to move]
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You head to the bathroom, the virus making your thoughts cloudy. As you near the door, you hear the sound of running water.
Peeking inside, you see Cherie in the shower, water cascading down her body. The sight makes your breath hitch.
***CCB2A.webp***
Cherie: [Singing softly, her silhouette tantalizing]
You: [Unable to tear your eyes away, feeling a mix of guilt and desire]
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Feeling the virus's pull, you walk towards the bathroom. The door is slightly open, and you hear movement inside.
Peering through the gap, you see Cherie adjusting her towel, her bare skin briefly exposed. The sight sends a jolt of arousal through you.
***CCB3A.webp***
Cherie: [Drying her hair, unaware of your gaze]
You: [Heart pounding, trying to stay quiet]
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach the bathroom door, driven by an irresistible curiosity. The door is slightly ajar.
Through the opening, you see Cherie, your stepmother, undressing, her mature curves gradually revealed. The virus compels you to stay and watch, despite the shame.
***CCB4A.webm***
Cherie: [Sensing a gaze, turning slightly] "Is someone there?"
You: [Blushing with embarrassment] "Cherie, I... I didn't mean to peek."
Cherie: [Smirking, clearly amused yet embarrassed] "Caught you in the act, didn't I? If you're going to spy, at least be subtle about it."
Button: Get out of the room
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You head to the bathroom, the virus making your thoughts hazy. The door is slightly open, and you hear the sound of water.
Peeking inside, you see Cherie, your mother, in the shower, water cascading down her body. The sight makes your breath hitch, despite the shame creeping in.
***CCB5A.webp***
Cherie: [Turning slightly, catching a glimpse of you] "Do you like what you see? It's not polite to spy on your stepmother, you know."
You: [Nervous but aroused, feeling ashamed] "I... couldn't help it, Cherie."
Cherie: [Laughing softly, a mix of teasing and embarrassment] "Look, but don't touch. Unless you plan to join me. But that would be very naughty."
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You plop down on the worn living room couch, sinking into the old cushions. Cherie walks in, You sit down on the couch next to Cherie, browsing through the movie options.
Cherie: "How about a comedy? We could use a good laugh."
***CCC1A.webp***
You: "Sounds great, Cherie. Let's watch that one."
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You and Cherie settle on the couch, a bowl of popcorn between you.
Cherie: "I haven't seen a romance in ages. What do you think?"
***CCC2A.webp***
You: "Sure, a romance it is. Let's start it up."
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You and Cherie flip through the movie options, looking for something to watch.
Cherie: "Maybe a horror movie? It could be fun to get a little scared."
***CCC3A.webp***
You: "Alright, horror it is. Let's see which one looks good."
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You sit down on the couch next to Cherie, browsing through the movie options.
Cherie: [Playfully nudging you] "How about a romantic comedy? Or are you too tough for that?" [She proceeds to lift her dress a little and shake her rear end tauntingly]
***CCC4A.webm***
You: [Smiling] "I can handle it. Let's watch it."
Button: Get out of the room
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You and Cherie settle on the couch, a bowl of popcorn between you.
Cherie: [Grinning] "Maybe a horror movie? I might need someone to hold onto."
You: [Laughing] "Don't worry, I've got you covered."
Cherie: [Looking at you seductively while taking off her top and move in a sensual way] "I think I am the one that got you covered"
***CCC5A.webm***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><<script>>playAudio("music", "shelter")<</script>>\
<<nobr>>
<div class="DIAS_container">
<<SAY>>
<p>The delicious aroma wafting through the air draws you into the kitchen, where Lana and Elfie have already gathered. Cherie is waiting with a mouth-watering feast laid out on the table.</p>
<</SAY>>
<<SAY Mc>>
<p>"Mmm, smells amazing!" you exclaim as you all take your seats.</p>
<</SAY>>
<<SAY>>
<p>As you tuck into the delectable dishes, you can't help but sneak glances at the three beautiful women surrounding you.</p>
<</SAY>>
<<SAY>>
<p>Cherie, the mature blonde doctor, is elegantly picking at her food. Her lithe figure and ample bust are a tantalizing sight.</p>
<</SAY>>
<<SAY>>
<p>Lana eats with a serious expression, her athletic body and generous curves straining against her masculine clothes.</p>
<</SAY>>
<<SAY>>
<p>And Elfie is enthusiastically devouring her meal, her perky breasts and tight butt wiggling with each energetic motion.</p>
<</SAY>>
<<SAY Mc>>
<inner>I could strike up a conversation with any one of them... you think to yourself, wondering where this family dinner might lead.</inner>
<</SAY>>
<<SAY Cherie>>
<action>Looking up and smiling warmly</action>
<p>"This is nice, having my whole family together for a meal again."</p>
<</SAY>>
<<SAY Lana>>
<inner>Why is she being so sentimental?</inner>
<p>"Yeah, I guess it's not the worst way to spend an evening."</p>
<</SAY>>
<<SAY Elfie>>
<action>Beaming at you</action>
<p>"I'm just happy we're all safe and together! Oh, you've got a little something..."</p>
<action>She leans over and takes a crumb off the corner of your mouth</action>
<</SAY>>
<!-- Choice Buttons -->
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="GLMF_gotoSecondaryScene('CCD');" id="cheriebutton"></div>
<div class="DIAS_button" onclick="GLMF_gotoSecondaryScene('LCD');" id="lanabutton"></div>
<div class="DIAS_button" onclick="GLMF_gotoSecondaryScene('ECD');" id="elfiebutton"></div>
<<if SugarCube.State.variables.scenes.list.DUA1?.seen === true>>
<div class="DIAS_button" onclick="GLMF_gotoSecondaryScene('DCD');" id="miabutton"></div>
<</if>>
</div>
</div>
<</nobr>>\
<style>
.DIAS_buttonCont {
flex-flow: row wrap;
}
.DIAS_button {
height: 20vh;
width: 20vh;
min-width: 0;
margin: 5vh;
border-radius: 50%;
border: 1vh solid #5e3e3e;
box-shadow: none;
}
.DIAS_button:hover {
opacity: 0.7;
outline: 1vh solid #f2a36e;
}
#cheriebutton {
background-image: url('ressources/icons/8.webp');
background-size: cover;
}
#lanabutton {
background-image: url('ressources/icons/9.webp');
background-size: cover;
}
#elfiebutton {
background-image: url('ressources/icons/10.webp');
background-size: cover;
}
#miabutton {
background-image: url('ressources/icons/16.webp');
background-size: cover;
}
</style>\
<script>
DIAF_initDialogPassage(passageId);
</script><script>
(() => {
const dialog = `
You sit down at the dinner table, feeling the warmth of the family gathering.
Cherie: [Placing a plate in front of you] "Eat up, darling. You need your strength to fight off this virus."
***CCD1A.webp***
You: "Thanks, Cherie. This looks delicious."
Cherie: [Smiling warmly] "Anything to keep you healthy."
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You join the family at the dinner table, the aroma of home-cooked food filling the air.
Cherie: [Pouring you a drink] "How was your day? Remember, I'm always here if you need to talk."
***CCD2A.webp***
You: "It was good, just a bit tiring. Thanks for asking."
Cherie: [Gently patting your shoulder] "You're doing great. Just take it one step at a time."
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You sit down at the dinner table, noticing Cherie's attentive gaze.
Cherie: [Serving you food] "Make sure to eat all your vegetables. They're good for your immune system."
***CCD3A.webp***
You: "Got it, Cherie. I'll finish everything."
Cherie: [Nodding approvingly] "Good. I want you in the best health possible."
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You sit down at the dinner table, feeling the warmth of the family gathering.
Cherie: [Placing a plate in front of you, with a mischievous smile] "Eat up, darling. Or are you too distracted to enjoy my cooking?"
You: [Smirking] "I'm never too distracted for your cooking, Cherie."
Cherie: [Leaning closer, showing you her breast on full display, whispering] "Good. Because I put a little extra love into it just for you."
***CCD4A.webm***
Button: Get out of the room
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You join the family at the dinner table, the aroma of home-cooked food filling the air.
Cherie: [Pouring you a drink, leaning in closely, Causing her loose shirt to drape off her shoulders] "How was your day? Did anyone catch your eye?"
***CCD5A.webp***
You: [Smiling, trying to cover your arousal] "Just you, Cherie."
Cherie: [Giggling softly, brushing her hand against yours] "Flatterer. But I don't mind the attention."
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus rages through your system as you stumble into Cherie's room, your vision blurring with lust. Your mother lies peacefully on her bed, her golden hair spread across the pillow, her voluptuous form barely contained by a thin silk nightgown. Even in sleep, her nipples stand erect, visible through the delicate fabric. Your eyes hungrily devour every curve, every inch of exposed skin.
***CBA1.webp***
AVA materializes beside you, her ethereal form shimmering with viral energy. Her voice slithers into your mind, dripping with malicious intent.
***CBA2.webp***
AVA: [Grinning wickedly] (This foolish boy is so easy to manipulate) "Poor, sweet child. So overwhelmed by your desires. Why simply watch when you could join her dreams? I can make it happen. After all, what's the harm in a little dream?"
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Cherie's dream"]]
***START - Choice 1 - Branch A***
You shake your head, fighting against the virus-induced lust. With a tremendous effort, you turn away from your sleeping mother and leave the room, your body aching with unfulfilled desire.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You hesitate, your conscience warring with your virus-fueled lust. But as Cherie shifts in her sleep, her nightgown riding up to reveal a tantalizing glimpse of her thigh, your resolve crumbles.
You: [Nodding, breathing heavily] (I can't resist anymore) "Do it. Put me in her dream."
AVA snaps her fingers, and reality shifts. You find yourself standing over your sleeping mother, your monstrous cock throbbing painfully. It stands at an impressive 12 inches, the shaft thick and veined, pulsing with viral energy. The head is swollen and angry, a bead of pre-cum glistening at the tip.
Cherie stirs, her hands roaming over her body as if possessed by a mind of their own. Her nightgown rides up, revealing her creamy thighs and a glimpse of her lace-covered mound. A damp spot is forming on the delicate fabric.
***CBA3.webp***
Cherie: [Moaning softly] (What a naughty dream... but it feels so good) "Oh, sweetie... Mommy's having such dirty thoughts about you."
Her eyes flutter open, glazed with sleep and dark desire. She looks at you, but doesn't really see, lost in her dreamworld. Her pupils dilate as the virus begins to take hold.
Cherie: [Licking her lips] (It's just a dream. I can indulge without guilt) "My, my... look how big you've grown. Mommy's little boy isn't so little anymore, is he?"
Her hand reaches out, fingers brushing your thigh. The touch sends electricity through your body. A drop of pre-cum falls from your tip, landing on Cherie's arm. Her skin seems to absorb it instantly, a visible shudder running through her body.
Cherie: [Gasping, her voice becoming huskier] (God, it feels so real... but it can't be) "Let Mommy take care of you, baby. You must be so pent up..."
Her fingers wrap around your shaft, barely able to encircle its girth. You gasp at the sensation. Cherie's touch is expert, alternating between firm strokes and teasing caresses. Her other hand cups your heavy, cum-filled balls.
***CBA4.webp***
You: [Moaning] (This is really happening. Mom is actually jerking me off) "Oh God, Mom..."
Cherie: [Stroking faster, her breasts heaving with each breath] (It's just a dream. I can enjoy this without shame) "That's it, baby. Let Mommy make you feel good. You're so big, so much bigger than I ever imagined... Mommy's getting so wet for you."
***CBA5.webp***
Your hips buck involuntarily as shame and arousal mix in a dizzying cocktail. More pre-cum leaks from your tip, coating Cherie's hand. With each stroke, it's absorbed into her skin, causing her to moan louder.
Cherie: [Voice thick with lust, her nipples visibly hardening further] (Why does this feel so real? No, it's just a very vivid dream) "Come for Mommy, sweetie. Give Mommy your hot, thick cum! I need it so badly!"
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal jolts you back to reality. You find yourself standing in Cherie's room, your massive erection straining against your pants, a large wet spot visible. Cherie stirs in her bed, her eyes opening slowly. Her cheeks are flushed, her nipples visibly hard through her nightgown.
Cherie: [Blinking confusedly, her thighs pressing together] (Why do I feel so... aroused?) "Sweetie? What are you doing in my room? And why do I feel so... strange? So hot?"
Her eyes drift down to the bulge in your pants, widening in shock and poorly concealed lust. You stammer an excuse and flee, leaving a very confused and secretly aroused Cherie behind, her hand unconsciously drifting between her legs as you close the door.
***CBA6.webp***
Cherie: [Whispering to herself] (That dream... it felt so real. Why am I so wet?)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
***END***
***START - Choice 2 - Branch C***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus rages through your system as you stumble into Cherie's room, your vision blurring with lust. Your mother lies peacefully on her bed, her golden hair spread across the pillow, her voluptuous form barely contained by a thin silk nightgown. Even in sleep, her nipples stand erect, visible through the delicate fabric. Your eyes hungrily devour every curve, every inch of exposed skin.
***CBA1.webp***
AVA materializes beside you, her ethereal form shimmering with viral energy. Her voice slithers into your mind, dripping with malicious intent.
***CBA2.webp***
AVA: [Grinning wickedly] (This foolish boy is so easy to manipulate) "Poor, sweet child. So overwhelmed by your desires. Why simply watch when you could join her dreams? I can make it happen. After all, what's the harm in a little dream?"
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Cherie's dream"]]
***START - Choice 1 - Branch A***
You shake your head, fighting against the virus-induced lust. With a tremendous effort, you turn away from your sleeping mother and leave the room, your body aching with unfulfilled desire.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You hesitate, your conscience warring with your virus-fueled lust. But as Cherie shifts in her sleep, her nightgown riding up to reveal a tantalizing glimpse of her thigh, your resolve crumbles.
You: [Nodding, breathing heavily] (I can't resist anymore) "Do it. Put me in her dream."
AVA snaps her fingers, and reality shifts. You find yourself standing over your sleeping mother, your monstrous cock throbbing painfully. It stands at an impressive 12 inches, the shaft thick and veined, pulsing with viral energy. The head is swollen and angry, a bead of pre-cum glistening at the tip.
Cherie stirs, her hands roaming over her body as if possessed by a mind of their own. Her nightgown rides up, revealing her creamy thighs and a glimpse of her lace-covered mound. A damp spot is forming on the delicate fabric.
***CBA3.webp***
Cherie: [Moaning softly] (What a naughty dream... but it feels so good) "Oh, sweetie... Mommy's having such dirty thoughts about you."
Her eyes flutter open, glazed with sleep and dark desire. She looks at you, but doesn't really see, lost in her dreamworld. Her pupils dilate as the virus begins to take hold.
Cherie: [Licking her lips] (It's just a dream. I can indulge without guilt) "My, my... look how big you've grown. Mommy's little boy isn't so little anymore, is he?"
Her hand reaches out, fingers brushing your thigh. The touch sends electricity through your body. A drop of pre-cum falls from your tip, landing on Cherie's arm. Her skin seems to absorb it instantly, a visible shudder running through her body.
Cherie: [Gasping, her voice becoming huskier] (God, it feels so real... but it can't be) "Let Mommy take care of you, baby. You must be so pent up..."
Her fingers wrap around your shaft, barely able to encircle its girth. You gasp at the sensation. Cherie's touch is expert, alternating between firm strokes and teasing caresses. Her other hand cups your heavy, cum-filled balls.
***CBA4.webp***
You: [Moaning] (This is really happening. Mom is actually jerking me off) "Oh God, Mom..."
Cherie: [Stroking faster, her breasts heaving with each breath] (It's just a dream. I can enjoy this without shame) "That's it, baby. Let Mommy make you feel good. You're so big, so much bigger than I ever imagined... Mommy's getting so wet for you."
***CBA5.webp***
Your hips buck involuntarily as shame and arousal mix in a dizzying cocktail. More pre-cum leaks from your tip, coating Cherie's hand. With each stroke, it's absorbed into her skin, causing her to moan louder.
Cherie: [Voice thick with lust, her nipples visibly hardening further] (Why does this feel so real? No, it's just a very vivid dream) "Come for Mommy, sweetie. Give Mommy your hot, thick cum! I need it so badly!"
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal jolts you back to reality. You find yourself standing in Cherie's room, your massive erection straining against your pants, a large wet spot visible. Cherie stirs in her bed, her eyes opening slowly. Her cheeks are flushed, her nipples visibly hard through her nightgown.
Cherie: [Blinking confusedly, her thighs pressing together] (Why do I feel so... aroused?) "Sweetie? What are you doing in my room? And why do I feel so... strange? So hot?"
Her eyes drift down to the bulge in your pants, widening in shock and poorly concealed lust. You stammer an excuse and flee, leaving a very confused and secretly aroused Cherie behind, her hand unconsciously drifting between her legs as you close the door.
***CBA6.webp***
Cherie: [Whispering to herself] (That dream... it felt so real. Why am I so wet?)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Growling] (I need more. This isn't enough) "More. Make it more intense!"
AVA grins wickedly, snapping her fingers again. The dreamscape shifts, becoming more vivid, more real. Cherie's eyes widen as the fog of sleep begins to lift, horror and unbridled lust warring in her gaze.
Cherie: [Gasping, her hand still stroking your cock] (This... this can't be a dream. It's too real) "Oh God, what are we doing? This is wrong... but I can't stop!"
The virus surges through her system, her skin flushing with arousal, nipples hardening to painful points. She tries to pull her hand away, but it's as if her body has a will of its own.
***CBA7.webp***
Cherie: [Whimpering] (I have to stop this. He's my son!) "We need to stop, baby. This isn't right. I'm your mother, I shouldn't be... oh God!"
Her words are cut off as another wave of viral lust crashes over her. AVA's influence pushes more arousal into her system, overwhelming her maternal instincts.
Cherie: [Moaning] (No... I have to resist... but it feels so good) "Your cock feels so good in Mommy's hand. No! I mean... we have to... oh fuck, I need your cum!"
Her free hand moves to her breast, kneading it roughly through her nightgown as she continues to stroke you. Tears of shame mix with lust in her eyes.
***CBA8.webp***
You: [Groaning] (She's fighting it, but she can't win) "Don't fight it, Mom. You know you want this. You need this."
Cherie: [Sobbing and moaning] (I'm a terrible mother. Why can't I stop?) "I'm so sorry, baby. Mommy's trying to be good, but... but... oh God, I need you so badly!"
Her hand moves faster on your shaft, her other hand now between her legs, rubbing furiously at her soaked pussy through her nightgown. The last vestiges of her resistance crumble as the virus takes full control.
***CBA9.webm***
Cherie: [Panting, lost to lust] (I can't fight it anymore. I need my son's cum) "Cum for me, baby! Cover Mommy in your hot, thick seed! Mark me as yours!"
With a roar, you explode, painting Cherie's face, breasts, and hands with thick ropes of cum. She screams in ecstasy, her own orgasm hitting her as your seed touches her skin. The cum seems to glow as it's absorbed into her body, the virus using it to tighten its hold on her mind.
***CBA10.webm***
Cherie: [Gasping, scooping cum into her mouth] (So good... need more...) "So much cum... Mommy needs more! Feed me, baby. Feed Mommy your delicious cum!"
As the dream fades, Cherie is left a quivering, cum-covered mess, her mind forever altered by the experience.
[[Exit]]
***END***
***START - Choice 2 - Branch C***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus rages through your system as you stumble into Cherie's room, your vision blurring with lust. Your mother lies peacefully on her bed, her golden hair spread across the pillow, her voluptuous form barely contained by a thin silk nightgown. Even in sleep, her nipples stand erect, visible through the delicate fabric. Your eyes hungrily devour every curve, every inch of exposed skin.
***CBA1.webp***
AVA materializes beside you, her ethereal form shimmering with viral energy. Her voice slithers into your mind, dripping with malicious intent.
***CBA2.webp***
AVA: [Grinning wickedly] (This foolish boy is so easy to manipulate) "Poor, sweet child. So overwhelmed by your desires. Why simply watch when you could join her dreams? I can make it happen. After all, what's the harm in a little dream?"
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Cherie's dream"]]
***START - Choice 1 - Branch A***
You shake your head, fighting against the virus-induced lust. With a tremendous effort, you turn away from your sleeping mother and leave the room, your body aching with unfulfilled desire.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You hesitate, your conscience warring with your virus-fueled lust. But as Cherie shifts in her sleep, her nightgown riding up to reveal a tantalizing glimpse of her thigh, your resolve crumbles.
You: [Nodding, breathing heavily] (I can't resist anymore) "Do it. Put me in her dream."
AVA snaps her fingers, and reality shifts. You find yourself standing over your sleeping mother, your monstrous cock throbbing painfully. It stands at an impressive 12 inches, the shaft thick and veined, pulsing with viral energy. The head is swollen and angry, a bead of pre-cum glistening at the tip.
Cherie stirs, her hands roaming over her body as if possessed by a mind of their own. Her nightgown rides up, revealing her creamy thighs and a glimpse of her lace-covered mound. A damp spot is forming on the delicate fabric.
***CBA3.webp***
Cherie: [Moaning softly] (What a naughty dream... but it feels so good) "Oh, sweetie... Mommy's having such dirty thoughts about you."
Her eyes flutter open, glazed with sleep and dark desire. She looks at you, but doesn't really see, lost in her dreamworld. Her pupils dilate as the virus begins to take hold.
Cherie: [Licking her lips] (It's just a dream. I can indulge without guilt) "My, my... look how big you've grown. Mommy's little boy isn't so little anymore, is he?"
Her hand reaches out, fingers brushing your thigh. The touch sends electricity through your body. A drop of pre-cum falls from your tip, landing on Cherie's arm. Her skin seems to absorb it instantly, a visible shudder running through her body.
Cherie: [Gasping, her voice becoming huskier] (God, it feels so real... but it can't be) "Let Mommy take care of you, baby. You must be so pent up..."
Her fingers wrap around your shaft, barely able to encircle its girth. You gasp at the sensation. Cherie's touch is expert, alternating between firm strokes and teasing caresses. Her other hand cups your heavy, cum-filled balls.
***CBA4.webp***
You: [Moaning] (This is really happening. Mom is actually jerking me off) "Oh God, Mom..."
Cherie: [Stroking faster, her breasts heaving with each breath] (It's just a dream. I can enjoy this without shame) "That's it, baby. Let Mommy make you feel good. You're so big, so much bigger than I ever imagined... Mommy's getting so wet for you."
***CBA5.webp***
Your hips buck involuntarily as shame and arousal mix in a dizzying cocktail. More pre-cum leaks from your tip, coating Cherie's hand. With each stroke, it's absorbed into her skin, causing her to moan louder.
Cherie: [Voice thick with lust, her nipples visibly hardening further] (Why does this feel so real? No, it's just a very vivid dream) "Come for Mommy, sweetie. Give Mommy your hot, thick cum! I need it so badly!"
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal jolts you back to reality. You find yourself standing in Cherie's room, your massive erection straining against your pants, a large wet spot visible. Cherie stirs in her bed, her eyes opening slowly. Her cheeks are flushed, her nipples visibly hard through her nightgown.
Cherie: [Blinking confusedly, her thighs pressing together] (Why do I feel so... aroused?) "Sweetie? What are you doing in my room? And why do I feel so... strange? So hot?"
Her eyes drift down to the bulge in your pants, widening in shock and poorly concealed lust. You stammer an excuse and flee, leaving a very confused and secretly aroused Cherie behind, her hand unconsciously drifting between her legs as you close the door.
***CBA6.webp***
Cherie: [Whispering to herself] (That dream... it felt so real. Why am I so wet?)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Growling] (I need more. This isn't enough) "More. Make it more intense!"
AVA grins wickedly, snapping her fingers again. The dreamscape shifts, becoming more vivid, more real. Cherie's eyes widen as the fog of sleep begins to lift, horror and unbridled lust warring in her gaze.
Cherie: [Gasping, her hand still stroking your cock] (This... this can't be a dream. It's too real) "Oh God, what are we doing? This is wrong... but I can't stop!"
The virus surges through her system, her skin flushing with arousal, nipples hardening to painful points. She tries to pull her hand away, but it's as if her body has a will of its own.
***CBA7.webp***
Cherie: [Whimpering] (I have to stop this. He's my son!) "We need to stop, baby. This isn't right. I'm your mother, I shouldn't be... oh God!"
Her words are cut off as another wave of viral lust crashes over her. AVA's influence pushes more arousal into her system, overwhelming her maternal instincts.
Cherie: [Moaning] (No... I have to resist... but it feels so good) "Your cock feels so good in Mommy's hand. No! I mean... we have to... oh fuck, I need your cum!"
Her free hand moves to her breast, kneading it roughly through her nightgown as she continues to stroke you. Tears of shame mix with lust in her eyes.
***CBA8.webp***
You: [Groaning] (She's fighting it, but she can't win) "Don't fight it, Mom. You know you want this. You need this."
Cherie: [Sobbing and moaning] (I'm a terrible mother. Why can't I stop?) "I'm so sorry, baby. Mommy's trying to be good, but... but... oh God, I need you so badly!"
Her hand moves faster on your shaft, her other hand now between her legs, rubbing furiously at her soaked pussy through her nightgown. The last vestiges of her resistance crumble as the virus takes full control.
***CBA9.webm***
Cherie: [Panting, lost to lust] (I can't fight it anymore. I need my son's cum) "Cum for me, baby! Cover Mommy in your hot, thick seed! Mark me as yours!"
With a roar, you explode, painting Cherie's face, breasts, and hands with thick ropes of cum. She screams in ecstasy, her own orgasm hitting her as your seed touches her skin. The cum seems to glow as it's absorbed into her body, the virus using it to tighten its hold on her mind.
***CBA10.webm***
Cherie: [Gasping, scooping cum into her mouth] (So good... need more...) "So much cum... Mommy needs more! Feed me, baby. Feed Mommy your delicious cum!"
As the dream fades, Cherie is left a quivering, cum-covered mess, her mind forever altered by the experience.
[[Exit]]
***END***
***START - Choice 2 - Branch C***
You: [Demanding] (I want this to be real) "Wake me up. Now."
In an instant, you're back in Cherie's room, fully awake and painfully erect. Cherie lies motionless, deep in sleep. Your virus-enhanced body thrums with power and lust as you approach the bed.
***CBA11.webp***
You: [Growling] (She's mine. I'll take what I want) "Wake up, Mother. It's time to serve your son."
Cherie stirs slightly but doesn't wake. Impatient, you grab her shoulder, shaking her roughly. Her eyes flutter open, unfocused and confused.
Cherie: [Mumbling, still mostly asleep] (What's happening?) "Sweetie? What's wrong? Why are you..."
Her words trail off as you roughly grab her hair, forcing her to look at your throbbing member. The tip glistens with pre-cum, the shaft pulsing with viral energy. Cherie's eyes widen in shock and fear as she begins to realize this isn't a dream.
***CBA12.webp***
Cherie: [Whispering, fear creeping into her voice] (This can't be happening) "No, we can't... This is wrong... You're my son... Please, stop this!"
Ignoring her pleas, you force her hand around your shaft. She tries to pull away, but your virus-enhanced strength is too much for her.
You: [Snarling] (She'll learn her place) "Stop fighting, Mother. This is what you were made for."
Cherie: [Crying, trying to break free] (This is a nightmare. It has to be) "Let go of me! I'm your mother! This is sick!"
But as your pre-cum leaks onto her skin, Cherie's resistance begins to crumble. The virus surges through her system, amplified by your potent fluids. Her fingers instinctively begin to stroke, her body betraying her mind.
***CBA13.webp***
Cherie: [Whimpering] (Why is my body responding? This is so wrong) "I shouldn't be doing this... You're my baby boy... But I can't stop! Your cock feels so... No! This is wrong!"
Her strokes become more confident as the virus takes hold, her shame transforming into unwilling lust. You thrust into her hand, fucking her fist with abandon. Your other hand roughly gropes her breast through her nightgown, making her gasp.
***CBA14.webp***
You: [Panting] (She's mine now) "That's it, Mom. Jerk off your son's big cock. You love it, don't you? Say it!"
Cherie: [Moaning, tears streaming down her face] (I'm going to hell for this) "No... yes... I don't know! It's so big... Mommy loves your big cock! Oh God, what's happening to me?"
You feel your climax approaching, your balls tightening. With a bestial roar, you explode, painting Cherie's face, hair, and breasts with thick ropes of cum. She gasps as it hits her, her body convulsing in an unwilling orgasm. Your seed seems to glow as it's absorbed into her skin, the virus using it to reshape her body and mind.
***CBA15.webp***
Cherie: [Gasping, her eyes glazing over] (It burns... but it feels so good) "So much cum... Oh God, what have we done? It's... it's changing me..."
As the last of your cum is absorbed into her skin, Cherie's resistance finally shatters. Her eyes, once filled with shame and fear, now burn with viral lust.
Cherie: [Licking her lips, voice husky] (I need more. I need my son) "More, baby. Mommy needs more of your delicious cum. Feed me. Use me. I'm yours now."
You leave her room without another word, the image of your cum-covered, broken mother burned into your mind forever. As you close the door, you hear her whimper, already craving her next dose of your viral seed...
[[Exit]]
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You are in your room, the newly built shelter providing a modest but secure environment. The room is sparsely furnished with a bed, a wooden table, a couple of chairs, and a small window that lets in natural light. Some survival gear is scattered around, and a makeshift weight set sits in the corner, a testament to the physical training you and Lana both value. A photo of your family before the apocalypse hangs on the wall, a reminder of the life that once was.
Lana steps into the room, her presence commanding attention. She’s dressed in tight workout clothes that highlight her muscular physique—a tank top and shorts. Her long, dark hair is tied back, and her blue eyes scan the room with a mix of curiosity and mischief. She wears a smug grin, clearly up to something.
***LA0A.webp***
Lana: [Casually strolling in, glancing around] (This place is actually decent... for a shelter.) "Well, look at you, little brother. I never thought you'd manage to build something like this."
You: [Standing up from the bed, meeting her gaze] (She’s always been so condescending. Time to change that.) "It's not much, but it’s home for now."
Lana: [Leaning against the table, crossing her arms] (He’s grown... but he’s still just my little brother.) "I guess it’ll do. I was getting bored, so I thought I’d drop by and see what you’ve been up to."
You: [Slightly annoyed by her tone] (She’s always trying to take credit for everything.) "Just trying to keep us all safe. It’s been a lot of work."
Lana: [With a mocking tone] "Oh, you mean I’ve been keeping us safe. I’m the one who’s been training, fighting, and making sure we’re not all dead."
***LA0B.webp***
You: [Frowning, feeling the need to assert yourself] "We’ve all been doing our part, Lana."
Lana: [Smirking, stepping closer] (He’s actually standing up to me? Interesting.) "Sure, sure. Just don’t forget who’s the real muscle around here."
The tension in the room is palpable. Lana’s attitude is a mix of arrogance and underlying curiosity about your transformation. She seems to be testing you, trying to see if you’re still the weak little brother she remembers. The virus’s effects are subtle but present, heightening the underlying tension between you two.
Lana: [With a hint of frustration, looking away briefly] (Why is this so hard? Just say it.) "Anyway, I guess... I should... you know, say thanks or something for the shelter."
***LA0C.webp***
You: [Growing impatient with her reluctance] "What do you really want, Lana? Why are you here?"
***START - Choice 1***
[[Branch A: "I just thought you were here to, uh, check on me or something." (Trust attribute requirements not met)]]
[[Branch B: "Lana, if you're here to thank me, just say it." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Avoiding eye contact, nervously] "I just thought you were here to, uh, check on me or something."
Lana: [Rolling her eyes, crossing her arms tighter] "Seriously? You think I have time to babysit you? Grow up, little brother."
***LA0D.webp***
Lana’s frustration boils over. She pushes you roughly against the wall, her strength evident as she glares at you.
Lana: [Voice dripping with disdain] "Stay out of my way, and maybe you won't get hurt."
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Looking her directly in the eyes, confidently] "Lana, if you're here to thank me, just say it. No need for all this attitude."
Lana: [Taken aback, a flash of anger in her eyes] (He's actually challenging me?) "You’ve got some nerve, talking to me like that."
Lana steps closer, invading your personal space. Her expression is a mix of anger and something else—curiosity? Desire? It’s hard to tell.
***LA0E.webp***
Lana: [Voice low, almost a growl] "You think you're tough now, huh? Let’s see if you can back it up."
She shoves you, testing your reaction. The tension between you is electric, the virus amplifying every sensation.
You: [Standing your ground, meeting her eyes with a steady gaze] (I won’t back down. Not this time.) "You might be surprised, Lana."
Lana: [Eyes narrowing, a mix of frustration and intrigue] (He’s not the same. This is... different.) "Big words for my little brother. Let’s see if you can match them."
Lana pushes you again, harder this time. Her physicality is imposing, but you hold your ground. The air between you is charged, the virus’s influence making every touch, every word, feel more intense.
***LA0F.webp***
Lana: [Breathing heavier, close enough that you can feel her breath on your skin] "Don’t think just because you’ve built some muscles, you’re suddenly my equal. I’ve been through hell to keep us alive."
You: [Voice steady, unyielding] "And I’m not that scared kid anymore, Lana. I’ve grown. I can handle myself."
Lana: [Surprised, her expression softens for a brief moment before hardening again] (He really believes it. Maybe he’s not so weak after all.) "Prove it, then. Show me you’re not just all talk."
***LA0G.webp***
The room feels smaller, the space between you shrinking as the tension mounts. The virus’s presence is a constant, subtle pressure, amplifying the primal energy in the room. She tries to shove you again.
***START - Choice 2***
[[Branch A: "I’m not looking for a fight, Lana. Let’s just calm down." (Lust attribute requirements not met)]]
[[Branch B: "I’m not backing down, Lana." (Lust attribute Requirements met)]]
***START - Choice 2 - Branch A***
You: [Hesitating, backing off slightly] "I’m not looking for a fight, Lana. Let’s just calm down."
Lana: [Disappointed, scoffing] "I knew it. Still the same scared little boy."
Lana’s frustration peaks as she shoves you away, shaking her head in disappointment. Her eyes flash with anger and something deeper—a touch of regret.
***LA0H.webp***
Lana: [Turning away, voice sharp] "You’re never going to change. Don’t waste my time."
She storms out of the room, leaving you feeling both relieved and frustrated. The tension dissipates, but the opportunity to change the dynamic between you is lost.
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Grabbing her wrist firmly, meeting her eyes with intensity] "I’m not backing down, Lana."
Lana: [Surprised, a flicker of something primal in her eyes] (He’s serious. This is new.) "Oh, you’re going to regret that, little brother."
***LA0I.webp***
You maintain your grip, feeling the raw power in her muscles. Lana’s breath quickens, her eyes locked onto yours with a mix of anger and reluctant admiration.
Lana: [Voice low, almost a whisper] "You think you can handle me?"
You: [Drawing her closer, your voice unwavering] "Try me."
The air between you crackles with tension. Lana’s expression is a storm of conflicting emotions—anger, curiosity, and something deeper, more primal. Her body tenses, ready for a fight, but there’s a hesitation, a crack in her tough exterior.
Lana: [Breathing heavily, her voice trembling slightly] "Don’t think for a second that I’ll go easy on you."
You: [Smirking, not letting go] "I wouldn’t expect you to."
Lana’s eyes narrow, and for a moment, the world narrows to just the two of you. The virus’s influence is palpable, intensifying every sensation, every touch. Her skin feels hot under your grip, and you can see the conflict in her eyes—between her instinct to dominate and the unfamiliar thrill of being challenged.
***LA0J.webp***
Lana: [Struggling to maintain control, her voice a mix of frustration and excitement] "Fine. Show me what you’ve got."
She tries to pull away, but you hold firm, your grip unyielding. The struggle between you is more than physical—it’s a battle of wills, a clash of dominance and submission.
***START - Choice 3***
[[Branch A: "Maybe we should... stop this." (Virus attribute requirements not met)]]
[[Branch B: "Is that all you’ve got, Lana? I thought you were tougher than this." (Virus attribute Requirements met)]]
***START - Choice 3 - Branch A***
You: [Voice faltering, struggling to maintain eye contact] "Maybe we should... stop this."
Lana: [Eyes narrowing, pulling her wrist free] "Pathetic. I thought you were different. I guess I was wrong."
***LA0K.webp***
Lana’s expression hardens. The anger and disappointment are clear in her eyes as she steps back, breaking the intense moment. She looks at you with a mix of disdain and frustration.
Lana: [Turning away, voice cold] "Don’t waste my time again."
She walks out of the room, leaving you standing there, feeling the weight of missed opportunity and unresolved tension.
[[Exit]]
***END***
***START - Choice 3 - Branch B***
You: [Smirking, voice dripping with confidence] "Is that all you’ve got, Lana? I thought you were tougher than this."
Lana: [Eyes blazing, a primal growl escaping her lips] (He’s provoking me... and it’s working.) "You’re so going to regret that, little brother."
***LA0L.webp***
With a fierce, almost animalistic intensity, Lana lunges at you. The virus’s influence amplifies every touch, every movement, as you wrestle for dominance. The struggle is raw and physical, your bodies colliding with a mix of strength and desperation.
Lana: [Breathing heavily, her face inches from yours] "Think you can handle me now?"
You: [Holding her gaze, your grip unyielding] "More than you know."
The tension is electric, the virus driving both of you into a frenzy. You feel her body tense against yours, the heat of the moment overwhelming any sense of restraint. The primal urge to dominate and submit pulses through both of you.
Lana: [Voice trembling with a mix of anger and arousal] "You’re... stronger than I thought."
***LA0M.webp***
You: [Hiding the fact that you are struggling] "And you’re not as tough as you pretend to be."
The words ignite something deep within her. Lana’s eyes flash with a mix of fury and desire as she pushes you onto the bed, her body pressing against yours. The struggle continues.
Lana: [Voice low but agressive, almost a whisper] "You... bastard."
Caught in the heat of the moment, the virus’s influence takes hold fully. The physical struggle becomes a twisted dance of dominance and submission, the boundaries between right and wrong blurring. Just as you feel the climax approaching, Lana suddenly pulls away, her face flushed with a mix of shame and anger.
Lana: [Standing up abruptly, avoiding your gaze] "Pervert."
***LA0N.webp***
She storms out of the room, leaving you breathless and aroused.
[[Exit]]
***END***
***END - Choice 3***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The backyard of the shelter was a stark contrast to the world beyond its walls. A makeshift obstacle course cobbled together from scavenged materials dominated the space. Rope swings dangled from sturdy branches, a climbing wall made of mismatched planks leaned precariously against an old tree, and a series of tires created a treacherous path across the uneven ground.
Lana stood at the edge of this homemade training ground, her posture rigid with barely contained fury. Her athletic figure was accentuated by form-fitting workout gear – a sports bra that struggled to contain her 34D bust, the fabric stretched taut across her nipples, which were visibly hard from the cool morning air. Her high-waisted leggings clung to every curve, leaving little to the imagination. Sweat glistened on her exposed skin, trickling down her neck and disappearing into her cleavage.
***LA4A.webp***
You approached, your own physique noticeably more defined than in previous weeks. Your t-shirt clung to your torso, damp with exertion from your morning routine, outlining the contours of your developing muscles. As you neared Lana, the air between you practically crackled with tension.
Lana: [Sneering, her blue eyes flashing with disdain] "Well, look who finally decided to grace us with his presence. Finished with your beauty sleep, princess?"
You: [Bristling at her tone] "I've been up for hours, Lana. Some of us actually contribute around here instead of just yelling at everyone else."
Lana: [Nostrils flaring, hands clenching into fists] "Contribute? You?" [Laughing harshly] "The only thing you contribute is dead weight. You're a liability, and sooner or later, you're going to get us all killed."
You: [Stepping closer, anger bubbling up] "You don't know what you're talking about. I'm not the same person I was before. I'm stronger now, faster. I can hold my own."
Lana: [Scoffing, voice dripping with sarcasm] "Oh, please. You couldn't hold your own against a gentle breeze. You're pathetic, and deep down, you know it. That's why you're always trailing after me like a lost puppy, desperate for approval."
You: [Jaw clenching] "You're wrong, Lana. And I'll prove it to you right here, right now."
***START - Choice 1***
[[Branch A: "Come on, Lana. Let's settle this like adults. How about a friendly competition to see who's really improved?" (Trust attribute requirements not met)]]
[[Branch B: "I challenge you to a test of skill and endurance, Lana. Your obstacle course, your rules. Unless you're afraid I might actually beat you?" (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Lana's expression hardened, her eyes flashing with anger.
***LA4B.webp***
Lana: [Voice cold and dismissive] "A friendly competition? This isn't a game, you idiot. Our survival depends on actual skills, not your pathetic attempts to prove yourself."
She turned away, dismissing you entirely.
Lana: [Over her shoulder] "Come back when you're ready to take this seriously. Until then, stay out of my way."
You were left standing alone, the opportunity for connection lost. The tension between you remained unresolved, Lana's disdain for you seemingly cemented. As you watched her walk away, you couldn't help but notice the way her leggings hugged her curves, a reminder of the physical attraction you were trying to ignore.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Lana's eyes widened, surprise momentarily replacing her sneer. She opened her mouth, likely to deliver another cutting remark, but paused. A spark of interest ignited in her gaze, quickly masked by her usual disdain.
***LA4C.webp***
Lana: [Voice a mix of disbelief and intrigue] "You want to challenge me? Fine. Let's see what you've got, little brother. But don't come crying to me when you fail miserably."
She led you to the start of the obstacle course, outlining the rules with sharp, clipped words.
Lana: "First one to complete the course wins. No shortcuts, no cheating. Think you can handle that?"
As you took your positions at the starting line, Lana's competitive nature fully emerged. Her body was coiled like a spring, muscles tense and ready. You mirrored her stance, determination etched on your features.
Lana: [Shouting] "Go!"
You both sprinted towards the first obstacle – a series of hurdles made from old furniture. Lana cleared them with practiced ease, her breasts bouncing with each leap despite the tight sports bra. You were right on her heels, your newfound agility surprising you both.
As you reached the rope swing, Lana's lead narrowed. Your increased upper body strength allowed you to close the gap, your bodies almost colliding as you landed on the other side. Lana stumbled slightly, her hand inadvertently brushing against your crotch as she steadied herself. She jerked away quickly, a flush rising to her cheeks that wasn't entirely from exertion.
Lana's eyes narrowed as she realized this wouldn't be the easy victory she anticipated. She pushed harder, her competitive spirit fully ignited. You weaved through the tire run, shoulders brushing as you jockeyed for position. You couldn't help but notice the way Lana's ass flexed with each movement, her leggings leaving little to the imagination.
***LA4D.webp***
The climbing wall presented the final challenge. Lana started up with confident movements, but you were right beside her, matching her pace. Your hands often landed in the same spots, fingers brushing against each other in a way that sent unexpected jolts of pleasure through both of you.
You reached the top simultaneously, eyes locking for a brief, charged moment before you began your descent. As you neared the bottom, Lana's foot slipped. Without thinking, you reached out, steadying her. The unexpected contact threw you both off balance, and you tumbled to the ground in a tangle of limbs.
You landed with Lana on top, straddling your hips. For a moment, you lay there, panting heavily, bodies pressed together. Lana found herself acutely aware of your chest rising and falling against her breasts, the warmth of your skin, and the unmistakable hardness pressing against her inner thigh. You, for your part, could feel the heat radiating from Lana's core, her nipples hard points against your chest even through your clothes.
Realizing your position, Lana quickly pushed herself up, but not before you noticed her pupils dilating, a flush spreading down her neck to her heaving chest. She stood, brushing dirt from her clothes with shaky hands, adjusting her sports bra which had shifted during the fall, nearly exposing her.
Lana: [Voice slightly breathless] "Not bad. For a beginner. But don't think this changes anything. You got lucky, that's all."
Despite her words, there was a new respect in her eyes as she looked at you. She extended a hand to help you up, the gesture surprising you both. As your palms met, neither of you could ignore the spark that passed between you. You rose, and Lana's eyes involuntarily dropped to the visible bulge in your shorts before quickly looking away.
Lana: [Quickly releasing your hand] "We should do this again sometime. You clearly need more practice."
But there was a hint of anticipation in her voice, a subtle shift in the dynamic between you.
As you headed back to the shelter, Lana walked closer to you than usual, your arms occasionally brushing. Each accidental touch seemed charged with a new awareness, leaving you both confused and intrigued by the change in your relationship.
***START - Choice 2***
[[Branch A: "You think you're so tough, Lana? Why don't we settle this right now, no holds barred?" (Lust attribute requirements not met)]]
[[Branch B: "I'm done with your attitude, Lana. Let's settle this once and for all. No rules, no restraints. Just you and me." (Lust attribute Requirements met)]]
***START - Choice 2 - Branch A***
Lana's face contorted with disgust, her previous moment of vulnerability vanishing instantly.
***LA4E.webp***
Lana: [Voice dripping with contempt] "You want to fight me? Please. I'd break you in half without even trying."
She turned away dismissively, her posture rigid with anger.
Lana: [Over her shoulder] "Come back when you've grown up and learned some respect. Until then, stay out of my sight."
You were left feeling humiliated, the charged moment lost. As Lana stormed off, you couldn't help but watch the sway of her hips, your body still responding to her proximity despite her harsh words. The tension between you remained unresolved, now tinged with a bitter sense of rejection.
[[Exit]]
***END***
***START - Choice 2 - Branch B***
Lana's eyes flashed, a primal gleam replacing her usual disdain.
***LA4F.webp***
Lana: [Voice low and dangerous] "No holds barred? You have no idea what you're asking for, little brother. But if that's what you want, bring it on."
Without warning, she launched herself at you, her body colliding with yours with enough force to knock the air from your lungs. You grappled fiercely, rolling on the ground, each fighting for dominance. Your hands inadvertently grasped Lana's breasts as you tried to push her off, causing her to gasp in surprise and something else.
You, fueled by a mix of anger and something deeper, more primal, managed to flip her over, pinning Lana beneath you. Your erection pressed against her thigh, unmistakable in its hardness. For a moment, you froze, both panting heavily, acutely aware of every point of contact between your bodies.
Lana's eyes widened in surprise, not just at being overpowered, but at the rush of heat that coursed through her at the feeling of being pinned, your arousal evident against her. She quickly masked her reaction with a snarl, bucking her hips to throw you off, but the movement only caused her to grind against your hardness, eliciting a groan from both of you.
You continued to wrestle, your movements becoming less about technique and more about raw, animalistic struggle. Clothes were pulled, skin was scratched, and boundaries were blurred in the heat of the moment. Your shirt was torn off, revealing your increasingly muscular chest. Lana's sports bra was pushed up in the struggle, the underside of her breasts exposed, her nipples barely covered.
***LA4G.webp***
At one point, Lana managed to lock her legs around your waist, attempting to squeeze the fight out of you. But the intimate position brought your erection directly against her core, the thin materials of your workout clothes doing little to disguise the heat between you. Lana gasped, her back arching involuntarily, pressing her breasts more firmly against your chest.
Taking advantage of her momentary distraction, you surged forward, pinning her arms above her head. Your faces were inches apart, breath mingling as you panted from exertion. Lana's chest heaved against yours, her nipples visibly hard beneath the disheveled sports bra. Your erection throbbed against her inner thigh, a damp spot forming on your shorts.
You: [Voice husky with a mix of triumph and raw desire] "Give up?"
Lana's eyes met yours, defiance warring with a new, unfamiliar heat.
Lana: [Breathlessly] "Never."
But she made no move to break free. For a long moment, you stayed frozen in this position, the air between you thick with tension and unspoken lust.
Finally, Lana turned her head, breaking the spell.
Lana: [Voice uncharacteristically unsteady] "Let me up."
You released her, both of you scrambling to your feet, suddenly awkward. As Lana stood, her leggings, stretched and pulled in the struggle, slid down slightly, revealing the top of her ass cleft before she hastily pulled them up.
***LA4H.webp***
Lana ran a hand through her disheveled hair, unable to meet your eyes.
Lana: [Usual bravado noticeably absent] "That was... unexpected. You've... improved."
Her eyes flicked down to the prominent bulge in your shorts before quickly looking away, a blush coloring her cheeks.
As you headed back to the shelter, there was a new awareness between you, the memory of your bodies pressed together lingering in both your minds. Lana walked slightly ahead, but you didn't miss the way her eyes flicked back to you, a mix of confusion and heat in her gaze.
***START - Choice 3***
[[Branch A: "Something's different, Lana. Can't you feel it? The virus... it's changing us." (Virus attribute requirements not met)]]
[[Branch B: "The virus is making us stronger, Lana. Faster. Let's see how far we can push our new limits. Together." (Virus attribute Requirements met)]]
***START - Choice 3 - Branch A***
Lana's expression hardened, but there was a flicker of fear in her eyes.
***LA4I.webp***
Lana: [Snapping] "Don't be ridiculous. The virus isn't changing anything. You're just making excuses for your weakness."
She turned away quickly, but not before you noticed her nipples hardening visibly through her top, her body betraying her despite her words.
Lana: [Muttering] "Just... stay away from me."
She hurried back to the shelter, leaving you alone with your growing suspicions about the virus's effects and your own throbbing erection. The tension between you remained unresolved, now tinged with a new layer of uncertainty and fear about the changes happening to your bodies.
[[Exit]]
***END***
***START - Choice 3 - Branch B***
Lana's eyes widened, a mix of alarm and curiosity crossing her face.
Lana: [Demanding, but with a tremor in her voice] "What are you talking about?"
As if in response to your heightened emotions, you both felt a sudden surge of heat coursing through your veins. Lana gasped, her hand flying to her chest as if she could physically contain the sensation. Her nipples hardened visibly, straining against her sports bra. You staggered slightly, overwhelmed by the intensity of the feeling, your cock hardening rapidly in your shorts.
Lana: [Breathlessly] "What's happening?"
Her usual bravado crumbled in the face of this unknown force. Her skin looked hypersensitive, every slight breeze sending shivers down her spine and causing goosebumps to erupt across her exposed skin.
You: [Voice rough] "I don't know. But I feel... powerful. Alive."
You flexed your hands, marveling at the strength you could feel surging through your muscles. Your erection throbbed painfully, visibly tenting your shorts.
Your eyes met, and something primal passed between you. Without a word, you launched into action, attacking the obstacle course with a ferocity that surprised you both.
You moved with inhuman speed and agility, leaping over hurdles and swinging across gaps with ease. Your bodies seemed to know instinctively how to move, how to push beyond your usual limits. Lana's breasts bounced with each movement, threatening to spill out of her sports bra. Your erection strained against your shorts, a damp spot forming at the tip.
As you climbed the wall, your movements became almost synchronized, a dangerous dance of strength and grace. You reached for the same handhold, fingers intertwining. The contact sent a jolt of pleasure so intense it was almost painful through both of you. Lana moaned involuntarily, her body arching towards yours.
Startled by the sensation, you lost your grip, tumbling to the ground. You landed in a tangle of limbs, bodies pressed together, both acutely aware of every point of contact between you. Your erection pressed firmly against Lana's core, separated only by thin layers of sweat-soaked fabric.
The virus surged in your veins, heightening every sensation. Lana found herself grinding against your hardness, soft whimpers escaping her lips. Your hands gripped her ass, pulling her closer, your fingers slipping under the waistband of her leggings to touch bare skin.
***LA4J.webp***
For a moment, you lost yourselves in the sensations, hands roaming, bodies grinding together. Lana's tank top was pushed up, fully exposing her breasts, her sports bra long since pushed aside. Your shirt was torn off completely, allowing Lana's hands to explore your increasingly muscular chest and abs. Your shorts were pulled down slightly, the tip of your cock peeking out from the waistband, a bead of pre-cum glistening at the tip.
***LA4K.webp***
Suddenly, a distant sound broke through your haze. You sprang apart, both panting heavily, eyes wide with a mix of shock, confusion, and lingering desire. Lana's breasts were fully exposed, her nipples hard and glistening with your saliva. Your erection stood proudly, straining against your shorts which did little to hide its impressive size.
Lana scrambled to her feet, hastily adjusting her clothes, but not before you got a clear view of her ass as her leggings, stretched out in your struggle, slid down momentarily.
***LA4L.webp***
Lana: [Voice shaky, nipples still visibly hard through her hastily rearranged top] "This... this never happened. We never speak of this again, understood?"
But as you made your way back to the shelter, neither of you could ignore the way your bodies hummed with residual energy, the memory of your intimate encounter burned into your minds. The virus had awakened something between you, something that couldn't be easily dismissed or forgotten. Your erection refused to subside, and you didn't miss the way Lana's eyes kept darting to it, her own arousal evident in the flush of her skin and the way she pressed her thighs together as you walked.
[[Exit]]
***END***
***END - Choice 3***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter the living room, the tension from your previous confrontation with Lana still palpable. The room is modestly furnished, with a worn-out couch, a coffee table cluttered with survival gear, and a few workout equipment pieces scattered around. A dim light bulb casts a soft glow, adding to the intimate yet tense atmosphere.
Lana is already there, dressed in her tight workout clothes—a tank top and shorts—that highlight her muscular physique. She’s doing handstand push-ups against the wall, her body glistening with sweat. She stands up, showing her assets well. Her long, dark hair is on the show, and her blue eyes flash with determination as she notices your presence.
***LAL1A.webp***
Lana: [Lowering herself from the handstand, standing up and wiping sweat from her forehead] (He’s here again. Still trying to prove himself.) "What do you want, little brother? Here to watch me work out?"
You: [Stepping closer, trying to maintain a confident posture] (I need to show her I’m not the weak kid she remembers.) "Actually, I was thinking we could have a little competition. Something to prove I’m not as weak as you think."
Lana: [Raising an eyebrow, crossing her arms] (He’s serious? This could be interesting.) "Oh? And what kind of competition are you thinking about?"
You: [Pointing to a set of dumbbells and a yoga mat] "How about a balance and endurance contest? We stand on one leg on the mat, hold the dumbbells, and see who can last longer."
Lana: [Smirking, clearly intrigued] (He's got guts. I’ll give him that.) "Alright, little brother. You’re on. But don’t cry when you lose."
***LAL1B.webp***
***START - Choice 1***
[[Branch A: "I’m not sure about this…" (Lust attribute requirements not met)]]
[[Branch B: "Let’s do this, Lana." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Hesitating, looking at the dumbbells nervously] "I’m not sure about this…"
Lana: [Rolling her eyes, stepping back with a disappointed look] "I knew it. Still the same scared little boy. Don’t waste my time."
***LAL1C.webp***
Lana turns away, leaving you feeling frustrated and ashamed. The opportunity to change the dynamic is lost, and the tension between you remains unresolved.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Grabbing the dumbbell confidently, meeting Lana’s gaze] "Let’s do this, Lana."
Lana: [Smirking, grabbing the dumbbell next to you] "Alright, on three. One… Two… Three!"
***LAL1D.webp***
You both start balancing on one leg, holding the dumbbell out to the side. The strain on your muscles is intense, but you push through, determined not to show any weakness. Lana balances effortlessly, her muscular legs and core holding steady. You can’t help but admire her strength and the way her body moves, but you focus on the task at hand.
You: [Breathing heavily, gritting your teeth] (I can’t let her win. Not this time.)
Lana: [Glancing over at you, slightly surprised by your balance] (He’s actually keeping up. Impressive.)
As the minutes pass, the strain becomes more intense. Your muscles burn, and you can feel sweat dripping down your body. Lana’s focus is unwavering, but you can see the effort it’s taking her to maintain her balance.
Lana: [Struggling slightly, trying to maintain her lead] "Come on, little brother. Is that all you’ve got?"
***LAL1E.webp***
You: [Pushing through the pain, feeling the virus amplifying your strength] "I’m just getting started."
The virus’s influence makes every sensation more intense, every movement more charged. You can’t help but notice Lana’s glistening skin, the way her muscles flex with each movement. Your eyes are drawn to her toned abs, her firm breasts straining against her tank top, and the curve of her hips. The sight of her body, combined with the physical exertion, stirs something primal within you.
Lana: [Breathing heavily, her face flushed] (Why am I feeling this way? This is wrong, but I can’t help it.)
You: [Feeling the heat between you, your gaze lingering on her body] (I need to stay focused, but damn, she’s incredible.)
As the competition continues, the tension between you intensifies. You can feel your body trembling with the effort, but you refuse to give in. Lana’s breathing becomes more labored, and you can see the strain on her face. You get to take a good look at her behind as she is struggling.
***LAL1F.webp***
Lana: [Gritting her teeth, struggling to maintain her balance] (He’s not the same. This is… different.)
You: [Pushing through the pain, determined to prove yourself] "You’re not the only one who’s strong, Lana."
Lana: [Eyes narrowing, a mix of frustration and intrigue] (He’s serious. This is new.) "Fine. Let’s see if you can keep up."
You both push yourselves to the limit, the physical exertion driving the tension between you to new heights. As you near the breaking point, you feel a surge of strength and determination.
You: [Breathing heavily, muscles straining] (I can do this. I have to show her.)
Lana: [Gritting her teeth, struggling to maintain her lead] (He’s not the same. This is… different.)
Finally, Lana’s leg gives out, and she stumbles slightly, dropping her dumbbell. You manage to hold your balance for a few more seconds before collapsing onto the mat, panting and sweating.
Lana: [Breathing heavily, her face flushed] "Not bad, little brother. Not bad at all."
You: [Meeting her gaze, feeling the intensity of the moment] "I told you I’m not the same kid anymore."
Lana: [Looking away briefly, a hint of vulnerability in her eyes, massaging her legs] (Maybe he’s not so weak after all.) "We’ll see. You’ve got a long way to go."
***LAL1G.webp***
Lana leaves the room, the tension still palpable. You’re left feeling a mix of triumph and frustration, knowing that this is just the beginning of your journey to prove yourself to her.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The day is warm, and the sun is shining brightly as you find yourself at the river. The water flows gently, reflecting the sunlight and creating a tranquil atmosphere. The riverbank is surrounded by tall trees and dense bushes, providing a sense of privacy and isolation.
Lana is already there, dressed in a tight sports bra and shorts. Her athletic body is on full display as she stretches near the water. Her muscles are defined and glistening with sweat from her morning run. You can’t help but notice how her sports bra accentuates her firm breasts and her shorts hug her hips perfectly.
***LAL2A.webp***
Lana: [Noticing you approaching, standing up with a playful smirk] (He’s back for more. Let’s see what he’s got today.) "Hey, little brother. Did you come here to cool off, or are you looking for another challenge?"
You: [Stopping a few feet away, trying to hide your nervousness] (I need to prove myself again. I can’t back down.) "Actually, I was thinking we could have another competition. Something different this time."
Lana: [Raising an eyebrow, intrigued] (He’s serious about this. Interesting.) "Oh? And what did you have in mind?"
***LAL2B.webp***
You: [Pointing to a nearby large rock and a length of rope] "How about a tug-of-war over the river? We stand on opposite sides of the rock and pull until one of us falls into the water."
Lana: [Smirking, clearly intrigued] (This could be fun.) "Alright, little brother. You’re on. But don’t cry when you lose."
***START - Choice 1***
[[Branch A: "I’m not sure about this…" (Lust attribute requirements not met)]]
[[Branch B: "I won’t back down, Lana." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Hesitating, looking at the rope nervously] "I’m not sure about this…"
Lana: [Rolling her eyes, stepping back with a disappointed look] "I knew it. Still the same scared little boy. Don’t waste my time."
***LAL2C.webp***
Lana turns away, leaving you feeling frustrated and ashamed. The opportunity to change the dynamic is lost, and the tension between you remains unresolved.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Grabbing the rope confidently, meeting Lana’s gaze] "I won’t back down, Lana."
Lana: [Smirking, grabbing the rope on the opposite side of the rock] "Alright, let’s see what you’ve got."
***LAL2D.webp***
You tie the rope securely around the large rock, creating a makeshift tug-of-war setup. The water flows gently beneath the rock, adding an extra layer of difficulty. You and Lana take your positions on opposite sides, gripping the rope tightly.
You both begin pulling on the rope, using your entire body weight to try and unbalance the other. The strain on your muscles is intense, but you push through, determined not to show any weakness. Lana’s muscles flex as she pulls, her body a testament to her strength and dedication.
You: [Breathing heavily, gritting your teeth] (I can’t let her win. Not this time.)
Lana: [Glancing over at you, slightly surprised by your strength] (He’s actually keeping up. Impressive.)
***LAL2E.webp***
The virus’s influence makes every sensation more intense, every movement more charged. You can’t help but notice Lana’s glistening skin, the way her muscles flex with each pull. Your eyes are drawn to her her firm breasts straining against her sports bra, and the curve of her hips. The sight of her body, combined with the physical exertion, stirs something primal within you.
Lana: [Breathing heavily, her face inches from yours] (Why am I feeling this way? This is wrong, but I can’t help it.) "Come on, little brother. Is that all you’ve got?"
You: [Pushing through the pain, feeling the heat between you] "I’m just getting started."
As you both continue to pull on the rope, the tension between you intensifies. The strain becomes more intense, your muscles burning with effort. Lana’s focus is unwavering, but you can see the effort it’s taking her to maintain her grip.
Lana: [Struggling slightly, trying to maintain her lead] "You’ll have to do better than that."
You: [Feeling the heat between you, your gaze lingering on her body] (I need to stay focused, but damn, she’s incredible.) "I’m not giving up."
As the competition continues, the tension between you reaches a boiling point. You can feel your body trembling with the effort, but you refuse to give in. Lana’s breathing becomes more labored, and you can see the strain on her face.
***LAL2F.webp***
Lana: [Gritting her teeth, struggling to maintain her balance] (He’s not the same. This is… different.)
You: [Pushing through the pain, determined to prove yourself] "You’re not the only one who’s strong, Lana."
Lana: [Eyes narrowing, a mix of frustration and intrigue] (He’s serious. This is new.) "Fine. Let’s see if you can keep up."
You both push yourselves to the limit, the physical exertion driving the tension between you to new heights. As you near the breaking point, you feel a surge of strength and determination.
You: [Breathing heavily, muscles straining] (I can do this. I have to show her.)
Lana: [Gritting her teeth, struggling to maintain her lead] (He’s not the same. This is… different.)
Just as you’re about to win, Lana glances at you, a mischievous glint in her eye. She suddenly lets go of the rope with one hand and pushes the rock with her foot, causing you to lose your balance and fall into the water with a splash. She stands on the rock, celebrating her victory, but you quickly recover and pull the rope from the water, causing her to lose her balance and fall in as well.
***LAL2G.webp***
Lana: [Splashing in the water, furious and wet] (How did he get so strong? And I had to cheat to win!) "You little...!"
The cold water does little to cool the heat between you. Lana’s sports bra is nowhere to be seen and her shorts cling to her body, making her firm breasts and toned abs even more visible. Her nipples are hard against the fabric, and her shorts outline every curve of her hips and thighs. You can see the anger and confusion in her eyes, mixed with a hint of something else—something primal and intense. She holds her chest with her arms.
Lana: [Breathing heavily, her chest heaving, her face flushed with a mix of anger and arousal] (Why is he making me feel like this?) "Not bad, little brother. Not bad at all."
***LAL2H.webp***
You: [Meeting her gaze, feeling the intensity of the moment] "I told you I’m not the same kid anymore."
Lana: [Standing up, water dripping from her body, a hint of vulnerability in her eyes] (Maybe he’s not so weak after all. But how is he this strong?) "We’ll see. You’ve got a long way to go."
Lana walks away, the tension still palpable. Her wet clothing clings to her body, leaving little to the imagination. You’re left feeling a mix of triumph and frustration, knowing that this is just the beginning of your journey to prove yourself to her.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Lana enters the bathroom wrapped in a towel, her athletic figure glistening with moisture from the steamy air. She pauses when she sees you, a challenging smirk replacing her initial look of surprise. She puts the towel aside for a moment before taking it back on.
Lana: [Leaning against the wall, arching an eyebrow] (Well well, the little pest is back. What's his game this time?) "Invading my personal space again, little brother? To what do I owe the pleasure?"
***LAL3A.webp***
You: [Standing your ground by the sink, meeting her gaze evenly] (Time to up the ante. I won't back down now.) "I thought we could have a rematch. A battle of wits this time, unless you're scared to lose."
Lana: [Smirk widening, clearly intrigued] (Oh, so he wants to play? This could be entertaining.) "Big words from a little boy. What's the challenge?"
You: [Motioning to the steamy mirror] "We each write a word, and the other has to guess it before the fog fades. Loser does a dare, no backing out."
Lana: [Laughing softly, a dangerous glint in her eye] (He's really serious. Alright, let's play.) "You're on. Just don't go crying to mommy when I crush you."
***LAL3B.webp***
***START - Choice 1***
[[Branch A: "Maybe this isn't a good idea..." (Lust attribute requirements not met)]]
[[Branch B: "Bring it on, sis." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Swallowing hard, nervously eyeing the mirror] (What was I thinking? I can't do this...) "Maybe this isn't a good idea after all..."
Lana: [Rolling her eyes, turning away with a scoff] "Typical. All talk, no spine. Don't waste my time again."
***LAL3C.webp***
She leaves, towel swishing behind her, as you stand there feeling small and foolish, the opportunity lost.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Stepping up to the mirror, a determined glint in your eye] (No turning back now. Time to prove myself.) "Bring it on, sis."
Lana: [Moving to join you, smirking] "Confident, aren't we? Let's see if you can back it up."
***LAL3D.webp***
You both face the fogged mirror, so close your arms nearly brush. The steam shrouds you, creating an intimate atmosphere, a private battleground. Lana glances at you, a hint of mischief in her gaze, before reaching out to write the first word.
The game begins, your minds racing to decipher each other's scrawl before the fog consumes it. It's a grueling mental marathon, an agonizing test of focus and willpower. All the while, Lana's presence consumes your senses - the dampness of her skin, the forbidden curves barely concealed by her clinging towel, the heat of her body so close to yours. It's maddening.
You: [Brow furrowed in concentration, fighting the distraction of Lana's proximity] (Focus, damnit. I have to win. Have to show her I'm not just a kid anymore.)
Lana: [Tongue caught between her teeth, determination sparking in her eyes as she fights to maintain the lead] (The little brat is keeping up. When did he get this good? I can't let him beat me.)
Your arms touch as you both lunge for the glass, electric even through the numbing strain. You grit your teeth, redoubling your efforts, even as your treacherous body responds to Lana's closeness.
Lana: [Breathing harder, shooting you a look filled with challenge and something else, something darker] (Why is this so intense? It's just a stupid game, but god, the way he looks right now...)
***LAL3E.webp***
You: [Meeting her gaze, seeing your own forbidden feelings reflected back at you] (I've never wanted to win so badly. Never wanted HER so badly... Wait, what am I thinking?)
As the match reaches its fever pitch, the air crackling with tension, Lana suddenly leans in, her breath hot against your ear as she whispers the answer to her word a split second before you can guess it. You reel back, stunned and furious.
Lana: [Crowing with victory, eyes dancing with wicked glee] "I win, little brother! Get ready for that dare."
You: [Grabbing her towel in a fit of anger, yanking it free] "You cheated! That's not fair!"
The towel falls away and Lana stumbles into you, suddenly almost bare and pressing against your body, her skin scorching, slick with steam. For a breathless moment you're frozen, drowning in the feel of her.
***LAL3F.webp***
Lana: [Gasping, eyes wide and dark with shock and something else, something hungry] (Shit, when did he get so bold? This is wrong, so wrong, but why does it feel so...)
You: [Heart pounding, every nerve on fire, barely breathing] (Oh god, what did I do? She's right there, naked, perfect, and I... I want...)
Lana jerks away, snatching up her towel and holding it to her like a shield, glaring at you even as a hectic flush stains her cheeks. You stare back, stunned and aching, wondering how things escalated so fast.
Lana: [Trying for anger but her voice wavers] "What the hell? You can't just - Don't think this means anything. The dare still stands."
You: [Struggling for control] "I didn't - You started it! What about my prize?"
Lana: [A spark of heat in her glare] "Oh, you'll get it alright. Better watch your back, little man."
She turns on her heel and storms out, leaving you reeling in the steamy room, heart racing, mind churning with confusion and dark, dangerous want.
***LAL3G.webp***
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach Lana's room, hearing muffled cursing from inside. Knocking tentatively, you push the door open to find Lana sitting on her bed, surrounded by an array of makeshift tattooing equipment.
***LAL5A.webp***
Lana: [Glaring at you] "What do you want, twerp? Can't you see I'm busy?"
You: [Eyeing the equipment] "What's all this?"
Lana: [Rolling her eyes] "I'm giving myself a tattoo. Or trying to. Damn virus makes my hands shake too much."
You notice Lana's wearing only a sports bra and short shorts, her toned body on full display. A half-finished design adorns her upper thigh, the skin around it red and irritated. Both of your heads can't help but notice that her top is quite the see-through. Lana seems to be shaking from the virus.
***LAL5B.webp***
Lana: [Growling in frustration] "Fuck this. Hey, make yourself useful for once. You're going to finish this for me."
You: (This could be interesting... or dangerous.)
***START - Choice 1***
[[Branch A: "No way, Lana. I don't know how to tattoo. Find someone else." (Lust attribute requirements not met)]]
[[Branch B: "Alright, I'll give it a shot. But you'll owe me one." (Lust attribute requirements met)]]
***START - Choice 1 - Branch A***
Lana's eyes narrow dangerously, her jaw clenching in anger.
Lana: [Snarling] "Useless as always. Get out of my sight!"
***LAL5C.webp***
She hurls a pillow at you, which you barely dodge as you retreat from the room. The door slams behind you, leaving you with a sense of missed opportunity and the lingering image of Lana's exposed skin.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Lana's eyebrows raise slightly, a smirk playing at the corners of her mouth.
Lana: [Scoffing] "You wish, little brother. But fine, get over here."
As you approach, the virus surges through your veins, heightening your awareness of Lana's scent - a mix of sweat and something uniquely her. You sit beside her on the bed, acutely aware of the heat radiating from her body.
***LAL5D.webp***
Lana: [Handing you the tattoo gun] "Don't fuck this up, or I'll make you regret it."
She leans back, stretching out her leg and giving you a clear view of her toned thigh. The half-finished tattoo is a intricate design of intertwining vines and flowers.
You: [Swallowing hard] "I'll need to get closer to see properly."
Lana rolls her eyes but shifts, spreading her legs wider. The movement causes her shorts to ride up, revealing the edge of her underwear.
***LAL5E.webp***
As you lean in, the virus amplifies every sensation. You can see the goosebumps rising on Lana's skin, hear the slight catch in her breath as your fingers brush her thigh.
Lana: [Voice slightly strained] "Well? Get on with it."
You begin working on the tattoo, your face inches from Lana's skin. The virus makes your hands hypersensitive; you can feel every twitch of her muscles, every shift of her body.
Lana: [Hissing] "Careful! That stings."
You look up to see Lana biting her lip, her cheeks flushed. The pain seems to be affecting her more than usual, the virus turning the sensation into something... different.
As you continue, Lana's breathing becomes more labored. You notice her nipples hardening beneath her sports bra, her skin flushing with more than just pain.
Lana: [Voice husky] "It's... it's too hot in here."
Without warning, she pulls off her sports bra, her full breasts bouncing free. You freeze, the tattoo gun hovering above her skin.
***LAL5F.webp***
Lana: [Glaring] "Eyes on the tattoo, perv. Keep going."
You force yourself to continue, but it's nearly impossible to concentrate. The virus heightens your arousal, your enhanced manhood straining against your pants.
Lana shifts again, and you realize with a jolt that she's subtly pressing her thigh against your erection. Her eyes meet yours, a challenge in their depths.
Lana: [Smirking] "Having trouble focusing, little brother?"
You: [Voice rough] "It's the virus. It's affecting us both."
Lana: [Scoffing] "Please. I'm in perfect control."
But even as she speaks, you can see the effect the virus is having on her. Her pupils are dilated, a thin sheen of sweat covering her skin. Her hips shift restlessly, pressing more firmly against you.
You finish the tattoo, setting the gun aside. As you lean back to admire your work, Lana suddenly stands.
Lana: [Voice tight] "I need to see it properly."
She hooks her thumbs into her shorts, pushing them down along with her underwear. She steps out of them, now completely naked, and moves to the mirror.
***LAL5G.webm***
You can't help but stare. Lana's body is a work of art, all toned muscle and soft curves. Your eyes trail from her full breasts down to the curve of her ass, then to the newly completed tattoo on her thigh.
Lana catches you looking in the mirror. For a moment, something vulnerable flashes in her eyes, quickly replaced by her usual bravado.
Lana: [Voice husky] "Like what you see, twerp?"
The air is thick with tension and the scent of arousal. Your enhanced manhood throbs painfully, visibly tenting your pants.
***LAL5H.webp***
You: [Standing, voice rough] "Lana, I..."
Lana: [Suddenly snapping] "Get out. Now."
The spell breaks. You stumble towards the door, your body screaming in protest at leaving.
Lana: [As you reach the door] "And... thanks. For the tattoo."
As the door closes behind you, you catch one last glimpse of Lana. She's leaning against the mirror, her hand trailing down her stomach towards the junction of her thighs.
***LAL5I.webp***
You stagger back to your room, your mind reeling and your body aching with unfulfilled desire.
You: [To yourself, groaning] "Fuck... what is this virus doing to us?"
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The afternoon sun beats down mercilessly as you approach the backyard training area. Lana is already there, her muscular body a testament to hours of grueling workouts. She's wearing a sports bra that barely contains her 34D breasts and shorts so tight they might as well be painted on. Sweat glistens on her skin, highlighting every curve and muscle.
***LAL6A.webp***
Lana: [Sneering as she notices you] "Well, look what the cat dragged in. Ready to get your ass handed to you, little brother?"
You: [Stretching, showcasing your own impressive physique] "Big words from someone who's about to eat dirt."
Lana's eyes narrow, a predatory gleam in them as she stalks towards you. Without warning, she launches into a lightning-fast jab that you barely dodge.
Lana: [Smirking] "Too slow, as usual. Why don't you just give up now and save us both the time?"
You retaliate with a sweep, catching Lana off guard. She goes down hard, the impact knocking the wind out of her. For a moment, genuine surprise flashes across her face before it's replaced by fury.
***LAL6B.webp***
Lana: [Snarling as she springs back up] "You little shit. Playtime's over."
The wrestling match intensifies, both of you grappling and struggling for dominance. Sweat-slicked bodies slide against each other, the contact sending jolts of electricity through your virus-enhanced nerves. Lana's breasts heave with each movement, threatening to spill out of her sports bra.
You manage to pin Lana briefly, your crotch pressing against her ass. She bucks against you, the friction causing your cock to swell rapidly.
***LAL6C.webp***
Lana: [Feeling your erection, her voice a mix of disgust and arousal] "Is that your pathetic excuse for a dick, or are you just happy to see me?"
***START - Choice 1***
[[Branch A: "Back off, ending the match" (Lust attribute requirements not met)]]
[[Branch B: "Double down, escalating the situation" (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Backing off quickly] "Sorry, I didn't mean to—"
Lana: [Getting up, disgust evident on her face] "Of course you didn't. Fucking pervert."
***LAL6D.webp***
She storms off, leaving you alone and ashamed in the backyard.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Grinding against her deliberately] "Why don't you find out for yourself, sis?"
Lana's eyes widen in shock before narrowing dangerously. With a growl, she flips you over, straddling your waist. The move causes your hand to catch on her sports bra, tearing it clean off. Lana's perfect breasts bounce free, nipples hardening instantly in the open air.
***LAL6E.webp***
Lana: [Eyes dark with lust and anger] "You fucking animal."
She retaliates by ripping your shirt off, her nails raking down your chest and leaving angry red welts. The pain only fuels your arousal, your cock straining against your shorts.
You: [Growling] "That all you got, sis? I thought you were supposed to be tough."
Something in Lana snaps. With a feral snarl, she tears at your shorts, the fabric giving way easily. Your massive erection springs free, slapping against your stomach. Lana's eyes lock onto it, her tongue darting out to wet her lips despite herself.
***LAL6F.webp***
Lana: [Voice husky, almost against her will] "Holy shit... when the fuck did you get so big?"
You take advantage of her distraction to flip her over, pinning her beneath you. Your cock presses against her core, separated only by the thin fabric of her shorts. Lana's breath comes in short gasps, her body betraying her even as she glares up at you.
***LAL6G.webp***
Lana: [Moaning despite herself] "We can't... we shouldn't... fuck, this is so wrong."
You: [Pressing your advantage] "Then why does it feel so right?"
The wrestling match devolves into a frenzy of tearing clothes and roaming hands. You're both panting, covered in sweat and scratches, teetering on the edge of giving in to your primal urges. Lana's shorts are in tatters, giving you a clear view of her soaked pussy.
**LAL6H.webp***
Lana: [Bucking against you] "Fuck... I hate you... I hate how much I want this..."
You're both nearly naked now, the shreds of your clothes scattered around the backyard. Lana's hand travels down, wrapping around your throbbing member. Her eyes widen as she realizes she can't quite get her fingers around its girth.
**LAL6I.webp***
Lana: [Eyes glazed with lust] "I want to... God, I want to so bad. But we can't. Not yet. Fuck!"
You: [Breathing heavily] "You're right. But this isn't over, Lana. Not by a long shot."
Lana: [Smirking, even as she pants with need] "Damn right it isn't. Next time... next time I'm going to destroy you."
As you both stand, the sexual tension is palpable. You're covered in scratches and bite marks, your bodies humming with unfulfilled desire. Lana's nipples are still hard, her pussy visibly wet.
**LAL6I.webp***
Lana: [Gathering the remains of her clothes] "I need a cold shower. And if you ever tell anyone about this, I'll fucking end you. Got it?"
You: [Adjusting your still-hard cock] "Wouldn't dream of it, sis. Our little secret."
Lana: [Eyes roaming your body one last time] "It better be. And next time... all bets are off, little brother."
You both head inside, the air thick with the promise of future encounters and the lingering scent of sweat and arousal. The taboo nature of what almost happened hangs between you, unspoken but undeniable.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach the Shed, tools in hand, ready to perform some much-needed repairs. As you near the entrance, you hear grunting and the sound of metal clanging against metal. Curious, you peer inside.
The sight that greets you makes your breath catch in your throat. Lana is there, her back to you, doing pull-ups on a makeshift bar. She's wearing only a translucent bra and the tinnest panties you've ever seen, leaving little to the imagination. Her virus-enhanced body glistens with sweat, every muscle defined and rippling with each movement.
***LAL7A.webp***
You: [Swallowing hard, your voice slightly hoarse] "Lana? I didn't know you were in here."
Lana: [Dropping from the bar, turning to face you] "Well, if it isn't the runt. Come to break something else?"
As she turns, you're struck by the full sight of her. The sports bra can barely contain her heaving breasts, and her shorts cling to her like a second skin. The virus has truly transformed her body into a work of art - all curves and toned muscle.
***LAL7B.webp***
You: [Fighting to keep your eyes on her face] "I'm here to fix things, not break them. Unlike some people who just work out all day."
Lana: [Stepping closer, her eyes flashing with anger and something else] "Oh? And what exactly are you implying, little brother?"
The air in the Shed feels electric, charged with the ever-present viral energy and the tension between you two. You can feel your body responding to her proximity, the virus in your blood singing.
You: [Standing your ground, voice low] "I'm saying that while you're in here playing gym rat, I'm out there keeping this place running."
Lana: [Scoffing, but you notice her eyes roaming your body] "Please. You couldn't handle real work if your life depended on it."
***START - Choice 1***
[[Branch A: "At least I'm not hiding in here, afraid of the real world." (Lust attribute requirements not met)]]
[[Branch B: "Why don't you put your money where your mouth is, Lana?" (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Lana: [Her face contorting with rage] "Afraid? I'll show you afraid, you little shit!"
She grabs a nearby wrench and hurls it at you. You barely dodge, the tool clanging against the wall behind you.
***LAL7C.webp***
Lana: [Storming past you] "Get out of my sight before I really lose my temper."
You're left alone in the Shed, the moment lost and your pride stinging.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Lana: [Her eyebrow raising, a dangerous glint in her eye] "Oh? And just what did you have in mind, runt?"
You: [Stepping closer, your voice husky] "A little competition. See who's really the strongest."
Without warning, you pull off your shirt, revealing your own virus-enhanced physique. Lana's eyes widen, her gaze trailing over your chiseled abs and broad shoulders.
***LAL7D.webp***
Lana: [Licking her lips unconsciously] "What... what are you doing?"
You: [Smirking] "What's wrong, sis? Can't handle a little skin?"
Something snaps in Lana. With a growl, she rips off her sports bra, her magnificent breasts bouncing free. Your mouth goes dry at the sight of her hardened nipples, begging for attention.
***LAL7E.webp***
Lana: [Her voice a challenge] "Bring it on, little brother."
What follows is a frenzied series of physical challenges. Push-up contests, arm wrestling, flexibility tests - each one bringing your bodies closer together, the air growing thicker with pheromones and sexual tension.
During a particularly intense arm-wrestling match, your faces inches apart, you feel Lana's leg brush against your growing erection. She gasps, her pupils dilating.
Lana: [Her voice breathy] "Is that... is that for me?"
You: [Groaning softly] "What do you think?"
The competition forgotten, Lana's hand suddenly darts out, grabbing your crotch roughly. You hiss at the contact, a mix of pain and pleasure shooting through you.
***LAL7F.webp***
You: [Grunting] "Two can play at that game, sis."
Your own hand shoots out, grasping her breast firmly. You squeeze, perhaps a bit too hard, but the moan that escapes Lana's lips is anything but pained.
***LAL7G.webp***
Lana: [Her voice a mix of anger and arousal] "You little... when did you get so bold?"
You: [Your voice thick with desire] "I told you, I'm not a kid anymore."
Your free hand moves to her waist, fingers digging into her flesh as you pull her closer. Lana retaliates by raking her nails down your chest, leaving angry red marks in their wake.
The two of you grapple, each touch a mixture of aggression and exploration. Hands roam over virus-enhanced bodies, squeezing, pinching, caressing. It's a battle for dominance, each of you trying to wring reactions from the other.
Lana: [Panting, her voice wavering] "We shouldn't... this isn't right..."
But even as she speaks, her body arches into your touch. The virus pulses through both of you, amplifying every sensation, breaking down the last barriers of resistance.
***LAL7H.webp***
You: [Your voice a low growl] "Tell me to stop, Lana. Tell me you don't want this."
Lana: [Her eyes wide with a mix of awe and lust] "Oh my god... when did you get so... big?"
You: [Groaning] "Fuck, Lana..."
Feeling the heat and wetness emanating from her core. Lana's breath hitches as your body brushes against her most sensitive areas.
For a moment, you're both frozen, hands about to be on each other's most intimate parts. Then, as if burned, you both jump back.
***LAL7I.webp***
Lana: [Her chest heaving, voice trembling] "We can't... not yet. But I need... I need..."
Understanding floods through you. You step back, your hand moving to your boxers. Lana's eyes follow the movement, her tongue darting out to wet her lips.
You: [Your voice husky] "Together?"
Lana nods, her own hand slipping into her shorts. In unison, you both begin to pleasure yourselves, eyes locked on each other's bodies.
As you stroke yourself, you drink in the sight of Lana. Her body is a masterpiece of the virus's work. Sweat glistens on her skin, highlighting every curve and muscle. Her breasts heave with each labored breath, nipples hard and begging for attention. Your eyes trail down to where her hand disappears into her shorts. You can see the outline of her fingers as they work furiously, her thighs trembling with the effort.
***LAL7J.webp***
Lana's gaze is equally hungry as she watches you. Her eyes are fixed on your massive erection, now fully visible as you've pushed your boxers down. The virus has truly blessed you, your member standing proud and thick, pulsing with each stroke. Pre-cum glistens at the tip, and you see Lana swallow hard at the sight.
Lana: [Her voice breaking with each stroke] "Oh god... oh fuck... look at you... you're not... you're not my little brother anymore..."
You: [Groaning, your hand moving faster] "Lana... fuck... you're so beautiful... so sexy..."
The Shed fills with the sounds of your mutual masturbation - gasps, moans, and the slick sounds of hands on flesh. The virus heightens every touch, every sensation, pushing you both to new heights of pleasure.
***LAL7K.webp***
Lana's free hand kneads her breast roughly, pinching and pulling at her nipple. Your other hand grips the workbench behind you, knuckles white with the effort of staying upright.
Lana: [Her body tensing, on the brink] "I'm... I'm gonna..."
You: [Feeling your own release approaching] "Me too... together..."
With a shared cry of ecstasy, you both climax. Lana's body arches beautifully, her face a mask of pure bliss. Her shorts are soaked through, a small puddle forming at her feet. Your own orgasm hits you like a tidal wave, more intense than anything you've ever experienced. Thick ropes of cum shoot from your cock, splattering on the floor between you.
***LAL7L.webp***
As the aftershocks subside, reality slowly seeps back in. You're both standing there, nearly naked, covered in sweat and your own fluids, staring at each other with a mix of shock, satisfaction, and lingering desire.
Lana: [Her voice shaky, trying to regain her usual bravado] "This... this never happened. Got it?"
You: [Still breathing heavily, a small smile on your lips] "Whatever you say, sis."
As Lana gathers her clothes and rushes out, you can't help but notice the backward glance she throws your way - a look filled with confusion, desire, and the promise of more to come.
You're left alone in the Shed, the air thick with the scent of sex and the lingering effects of the virus. One thing's for certain - your relationship with Lana will never be the same again.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter the dimly lit bathroom of your makeshift shelter. The air is humid, and you hear the faint dripping of water from the showerhead. Lana stands in front of the sink, her muscular frame tense as she struggles to fix the leaking showerhead. She wears a tight-fitting tank top and shorts, her toned muscles on display.
***LAT1A.webp***
You: [Entering the bathroom, noticing her struggle] (She looks frustrated. Maybe I can help her and show that I'm not just the weak little brother anymore.) "Hey, Lana. Need a hand with that?"
Lana: [Glancing over her shoulder, her eyebrows furrowed] (Why does he always have to interfere?) "I’ve got it under control, but thanks."
You: [Stepping closer, determined] (I need to show her I've changed.) "Come on, let me help. Two heads are better than one, right?"
Lana: [Sighing, reluctantly nodding] (Fine, let's see what he can do.) "Alright, just don’t get in my way."
***LAT1B.webp***
The two of you work together, your hands occasionally brushing against each other. You can feel the tension in the air, a mix of familial closeness and something unspoken.
***START - Choice 1***
[[Branch A: "Accidentally bumping into her, awkwardly." (Trust attribute requirements not met)]]
[[Branch B: "You know, we used to fix things together all the time when we were kids." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Accidentally bumping into her, awkwardly] (Oh no, that was clumsy.) "Sorry, I didn’t mean to—"
Lana: [Pulling away slightly, her expression hardening] (Why does he always mess things up?) "Just… be more careful next time."
***LAT1C.webp***
The atmosphere grows cold as Lana distances herself, her trust in you waning.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Maintaining eye contact, offering a reassuring smile] (This is my chance to show her I’ve changed.) "You know, we used to fix things together all the time when we were kids. Remember that time we fixed Dad's old radio?"
Lana: [Softening slightly, but keeping her guard up] (I do remember that. But that doesn’t mean he’s capable now.) "Yeah, I remember. Those were simpler times."
***LAT1D.webp***
You: [Gently tightening a screw, your fingers brushing against hers] (She’s starting to open up. Keep going.) "We’ve always been a good team, Lana. I know things are tough now, but we can handle it together."
Lana: [Looking at you with a mix of skepticism and guarded pride] (Maybe he’s not as useless as I thought. But I’m not letting my guard down yet.) "Don’t think this changes anything. You still have a lot to prove."
The two of you finish fixing the showerhead, a cautious sense of trust beginning to form. Lana remains aloof and dominant, but there’s a hint of acknowledgment in her eyes.
You: [Standing back, admiring your work] (We did it. Maybe things are starting to change.) "There, all fixed. Told you we’d make a great team."
Lana: [Nodding, but keeping her distance] (He’s growing up. But he’s still got a long way to go to earn my trust fully.) "Thanks. You helped. But don’t get cocky, alright?"
***LAT1E.webp***
You: [Feeling a sense of accomplishment and closeness] (This is just the beginning. I’ll prove myself to her.) "Anytime, Lana. We’re in this together."
Lana: [Giving you a curt nod] "Alright, let’s get back to work."
You leave the bathroom with a cautious sense of trust and understanding.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find yourself standing outside Lana's room, contemplating the shift in your relationship dynamics. After your last interaction in the bathroom, there's a growing need to prove your reliability and strength to her. Taking a deep breath, you knock on her door.
Lana: [Opening the door slightly, her expression guarded] (What does he want now?) "What is it?"
***LAT2A.webp***
You: [Offering a calm, determined look] (I need to keep building this trust.) "I wanted to talk. Mind if I come in?"
Lana: [Sighing but stepping aside to let you in] (Let's see what he has to say.) "Fine, but make it quick."
You enter Lana's room, which is sparsely decorated but meticulously organized. There’s a small bed, a desk with some fitness equipment, and a few personal items that hint at her disciplined lifestyle.
***LAT2B.webp***
***START - Choice 1***
[[Branch A: "I... uh... just wanted to see if you needed help with anything." (Trust attribute requirements not met)]]
[[Branch B: "I want to pull my weight and be someone you can rely on." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Fidgeting slightly, unsure of how to start] (I need to say something meaningful.) "I... uh... just wanted to see if you needed help with anything."
Lana: [Crossing her arms, her expression hardening] (He’s wasting my time.) "I don’t need any help. If that’s all, you can leave."
***LAT2C.webp***
The atmosphere grows tense as Lana's trust in you falters, her aloof demeanor reinforced.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Maintaining eye contact, speaking with sincerity] (I need to show her I’m serious.) "I’ve been thinking a lot about what you said earlier. I want to pull my weight and be someone you can rely on. Can you give me a chance?"
Lana: [Raising an eyebrow, her stance slightly softening] (At least he’s trying to be serious.) "Alright, talk is cheap. What exactly do you plan to do?"
***LAT2D.webp***
You: [Taking a step closer, showing determination] (This is my chance.) "I want to start training with you. I know I have a lot to learn, but I’m willing to put in the effort. Let me prove myself."
Lana: [Considering your words, a hint of respect in her eyes] (Maybe he’s serious about this. It could be worth a shot.) "Fine. But don’t think I’ll go easy on you. If you want to train with me, you better be ready to work hard."
The two of you sit down on her bed, discussing the details of the training regimen. The conversation flows more naturally, with Lana maintaining her dominant attitude but showing signs of cautious respect.
You: [Nodding, feeling a sense of accomplishment] (This is a good start.) "I won’t let you down, Lana. I’ll give it my all."
Lana: [Giving you a serious look, but with a hint of a smile] (We’ll see about that.) "Alright, we’ll start tomorrow morning. Don’t be late."
You: [Standing up, ready to leave] "I’ll be there. Thanks for giving me a chance."
Lana: [Nodding curtly, turning away] "Just don’t make me regret it."
***LAT2E.webp***
You exit Lana’s room with a renewed sense of purpose. The foundation of trust is slowly being built, and you’re determined to prove your worth to her. This interaction sets the stage for more intense and personal moments as you continue to break down the walls between you.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter the kitchen, spotting Lana already at the counter, preparing ingredients for a meal. The room is simple but functional, with a small stove, a cutting board, and various utensils neatly arranged. Lana is dressed in her usual tight and subtle clothes, her muscular arms flexing as she chops vegetables with precision.
***LAT3A.webp***
You: [Stepping into the kitchen, determined to keep building trust] (This is another chance to show her I’m serious.) "Hey Lana, need any help with the meal prep?"
Lana: [Glancing at you, her expression guarded but not unfriendly] (He’s persistent, I’ll give him that.) "If you think you can keep up, sure. We’re making a high-protein meal for gains."
You: [Smiling, moving closer to the counter] (Time to show her I’m not just talk.) "Sounds good. Maybe I can help make it taste better too."
Lana: [Raising an eyebrow, slightly amused] (Let’s see if he can back that up.) "Alright, show me what you’ve got."
***LAT3B.webp***
You join Lana at the counter, standing close enough to feel the warmth radiating from her body. The air is thick with a mix of the aromas from the ingredients and the underlying tension between the two of you.
***START - Choice 1***
[[Branch A: "Fumbling with a knife, accidentally dropping it." (Trust attribute requirements not met)]]
[[Branch B: "Here, let’s add some of these spices." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Fumbling with a knife, accidentally dropping it] (Damn, that was clumsy.) "Uh, sorry about that."
Lana: [Sighing, shaking her head] (He’s still got a long way to go.) "Just watch what you’re doing, okay? We don’t have time for mistakes."
***LAT3C.webp***
The atmosphere grows tense as Lana’s trust in you falters slightly, and the meal prep continues in silence.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Confidently taking over the seasoning, adding spices and herbs] (Let’s show her what I can do.) "Here, let’s add some of these spices. It’ll bring out the flavor and make the meal more enjoyable."
Lana: [Watching you work, a hint of curiosity in her eyes] (He actually knows what he’s doing.) "Alright, let’s see if your seasoning skills are as good as you say."
***LAT3D.webp***
You: [Mixing the ingredients with care, maintaining eye contact] (I need to keep her engaged.) "I learned a lot about cooking when I was younger. It’s all about balance and making sure everything complements each other."
Lana: [Nodding, a small smile forming] (Maybe there’s more to him than I thought.) "Well, if this turns out good, I might just let you help more often."
As you work side by side, you can feel the subtle undercurrent of attraction. Your hands brush together occasionally, sending a small jolt of electricity through you. The air feels charged with a mix of anticipation and unspoken tension.
You: [Leaning in slightly, lowering your voice] "You know, Lana, this could be a regular thing. Cooking together, training together... who knows what else we could accomplish."
Lana: [Smirking, her eyes challenging] (He’s got some guts. Let’s see how far he can take this.) "Just don’t get ahead of yourself. You still have a lot to prove."
***LAT3E.webp***
You: [Smiling back, feeling a rush of excitement] "I’m up for the challenge."
The two of you continue to prepare the meal together, with Lana showing you her techniques for maximizing protein and nutrients, while you add your own touches to enhance the flavor. The collaboration feels natural, and the kitchen fills with the aroma of a well-prepared meal.
You: [Taking a taste of the finished dish, smiling] (It turned out great.) "This is really good. We make a pretty good team, don’t you think?"
Lana: [Tasting the dish, nodding in approval but keeping her tone measured] (He’s actually impressed me.) "Not bad. You did good. Maybe you’re not as hopeless as I thought."
You: [Feeling a sense of accomplishment] (This is progress.) "Thanks, Lana. I appreciate that."
Lana: [Giving you a nod of respect] "Alright, let’s eat. We’ve got a lot of training to do tomorrow."
***LAT3F.webp***
You sit down together to enjoy the meal, the atmosphere more relaxed and cooperative. As you eat, the conversation flows more freely, touching on memories from the past and plans for the future. There’s a budding sense of partnership, a hint of something deeper that both of you are starting to acknowledge but not yet fully ready to explore.
You: [Looking at Lana, feeling a mix of gratitude and determination] (This is just the beginning. I’ll keep proving myself to her.) "I’ll be there first thing in the morning, ready to work hard."
Lana: [Giving you a serious look, but with a hint of a smile] (He’s growing up. Maybe he can be someone I can count on.) "Good. Don’t make me regret giving you this chance."
***LAT3G.webp***
You: [Smiling confidently] "I won’t."
You leave the kitchen with a renewed sense of purpose. The foundation of trust is slowly being built, and you’re determined to prove your worth to her. This interaction sets the stage for more intense and personal moments as you continue to break down the walls between you.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The living room has been transformed into a makeshift laundry arena. Two large basins of soapy water dominate the center, surrounded by mountains of dirty clothes. The air is thick with the scent of homemade detergent and the underlying musk of unwashed fabrics.
Lana stands before one basin, her posture radiating irritation. She's wearing a faded tank top that clings to her curves, emphasizing her 34D bust, and cutoff shorts that showcase her long, toned legs. Her hair is tied back in a messy ponytail, wisps escaping to frame her face.
***LAT5A.webp***
Lana: [Snapping as you enter] "Well, don't just stand there gawking. Since you insist on 'helping', let's see who can actually get something done around here."
You: [Moving to the second basin, rolling up your sleeves] "Bring it on, sis."
Lana: [Smirking] "Oh, you think you can keep up? Let's make this interesting. Whoever washes the most clothes in an hour wins. Loser does the winner's chores for a week."
You: [Grinning] "You're on."
You both begin washing with furious intensity, the room filled with the sounds of splashing water and vigorous scrubbing. As you work, the virus begins to stir in your veins, heightening every sensation. You find yourself hyper-aware of Lana's presence, the way her muscles flex as she works, the sheen of sweat forming on her skin.
***LAT5B.webp***
Lana: [Noticing she's falling behind] "Damn it..."
Without warning, she pulls off her tank top and tosses it into her clean pile.
Lana: [Challenging] "What? It counts as clothes, doesn't it?"
Your eyes widen, taking in the sight of Lana in just her sports bra, her toned midriff on full display. Her nipples are visibly hard through the thin fabric, whether from the cool water or something else, it's hard to tell.
You: (This is getting intense... What should I do?)
***START - Choice 1***
[[Branch A: "Lana, that's cheating! You can't just strip to win!" (Trust attribute requirements not met)]]
[[Branch B: "If that's how you want to play it, two can play that game. Hope you're ready to lose, sis." (Trust attribute requirements met)]]
***START - Choice 1 - Branch A***
Lana's expression hardens, a flash of disappointment quickly masked by derision.
Lana: [Scoffing] "Can't handle a little skin, baby brother? Pathetic. Guess you forfeit then."
She continues washing, now moving with exaggerated motions that emphasize her body. You're left to struggle through the task, trying and failing not to stare at your sister's exposed skin. The opportunity for connection is lost, replaced by an awkward tension.
***LAT5C.webp***
Lana: [As she finishes, voice dripping with sarcasm] "Well, that was a waste of time. Next time, maybe grow a pair before you challenge me."
She gathers her clothes and storms out, leaving you alone with piles of unfinished laundry and a sense of missed opportunity.
You: [To yourself, sighing] "Way to go, idiot..."
[[Exit]]
***END***
***START - Choice 1 - Branch B***
A flash of surprise crosses Lana's face, quickly replaced by a competitive grin.
Lana: [Eyebrow raised] "Big words, little brother. Let's see if you can back them up."
Without breaking eye contact, you pull off your own shirt, tossing it onto your pile. Lana's eyes widen, her gaze trailing over your increasingly defined chest and abs. A faint blush colors her cheeks, visible even through her competitive scowl.
***LAT5D.webp***
Lana: [Muttering] "Not bad..."
The competition escalates rapidly. Shoes are kicked off, socks are peeled away. Each item removed adds to your respective piles, but also ratchets up the tension in the room. The virus hums in your veins, turning every reveal of skin into a jolt of electric pleasure.
Lana: [Standing abruptly] "Falling behind, bro?"
With a defiant look, she shimmies out of her shorts, leaving her in just her sports bra and panties. Your breath catches audibly, eyes roving over the expanse of newly revealed skin. Lana's legs seem to go on forever, toned and shapely, leading up to the curve of her ass barely contained by her underwear.
***LAT5E.webp***
You: [Voice husky] "Not a chance, sis."
You stand as well, hands moving to your waistband. Lana's eyes are drawn to the movement, her tongue darting out to wet suddenly dry lips. You push your shorts down, stepping out of them and adding them to your pile. Your boxers do little to hide your growing arousal, a fact that doesn't escape Lana's notice.
You stand there for a moment, both nearly naked, the air thick with tension and unspoken desire. Lana's chest heaves with each breath, her nipples straining against her sports bra. Your enhanced manhood twitches visibly in your boxers, a damp spot forming at the tip.
***LAT5F.webp***
Lana: [Voice trembling slightly] "Time's up."
She tears her eyes away from your body to count the clothes.
Lana: [Swallowing hard] "It's... it's a tie."
You: [Voice husky] "Can't have that, can we?"
In a bold move, fueled by the virus surging through your veins, you hook your thumbs into the waistband of your boxers. Lana's eyes widen as you slowly push them down, freeing your throbbing, virus-enhanced manhood.
***LAT5G.webp***
Lana: [Gasping] "Oh my god!"
Her eyes are locked on your impressive member, pupils dilating as she takes in its full 12-inch length and considerable girth. The shaft pulses visibly, a bead of pre-cum glistening at the tip.
Lana: [Stammering] "That's... you can't... it's so..."
You can see the conflict in her eyes, shock warring with unmistakable desire. The virus heightens her reaction, a visible shudder running through her body.
Lana: [Suddenly furious] "No! I'm not losing to you!"
In a desperate move, she reaches behind her back, unclasping her sports bra. She flings it off, her full breasts bouncing free. Without hesitation, she hooks her thumbs into her panties, pushing them down her long legs.
***LAT5H.webp***
Lana now stands before you, completely naked. Her 34D breasts heave with each breath, nipples hard and pointing directly at you. Your eyes trail down her toned stomach to the junction of her thighs, where you can see a glistening strip of neatly trimmed hair.
Lana: [Triumphantly] "Ha! I win! Two pieces of clothing to your one!"
As the words leave her mouth, reality seems to crash down on her. She looks down at her naked body, then back at your equally nude form, your erection standing proudly at attention.
***LAT5I.webp***
Lana: [Face flushing deep red] "Oh fuck... what did I just do?"
The virus surges through both of you, heightening every sensation. You can see Lana's nipples harden even further, a small trickle of arousal running down her inner thigh.
You: [Smiling, eyes roaming her body] "Looks like we both win, sis."
Lana: [Furious and clearly aroused] "Shut up! This... this never happened!"
She turns to storm out, giving you a perfect view of her toned ass. At the door, she pauses, looking back over her shoulder. Her eyes dart to your still-erect member, a mix of anger, shame, and unmistakable lust in her gaze.
***LAT5J.webp***
Lana: [Voice shaky] "I... I still expect those chores done. And don't you dare tell anyone about this!"
With that, she rushes out, leaving you standing amidst piles of laundry, your enhanced manhood throbbing with unfulfilled desire.
You: [To yourself, voice thick with confusion and want] "What the hell just happened? And how am I supposed to ignore this now?"
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Here's the modified version of the Lana scene, incorporating a revealing white outfit that progressively becomes more revealing:
The night is pitch black as you patrol the Gates. A thick fog has rolled in, reducing visibility to mere feet. Lana's muscular form moves ahead of you, her tight, revealing white combat outfit hugging every curve of her athletic build. The fabric is thin and semi-transparent, offering tantalizing glimpses of her skin beneath. Her long, dark hair is tied in a severe ponytail, swaying with each confident stride.
***LAT6A.webp***
Lana: [Scoffing, adjusting her low-cut top] "Try to keep up, runt. I swear, if you slow me down..."
You: [Bristling, eyes drawn to her exposed cleavage] "I can handle myself, Lana."
Lana: [Rolling her eyes, her outfit shifting to reveal more skin] "Sure you can. Just don't cry when—"
A blood-curdling screech pierces the night. Before you can react, Lana slams you against the wall, her body pinning you in place. Her firm 34D breasts, barely contained by her now partially unbuttoned top, press against your chest, her thigh wedged between your legs.
***LAT6B.webp***
Lana: [Hissing, her breath hot on your neck] "Don't. Fucking. Move."
You can feel her heart racing through the thin fabric of her outfit. The fog swirls around you, and shadows seem to move in the darkness. Lana's hand slides under your shirt, her calloused fingers splaying across your abs. The touch sends electricity through your body, your cock twitching to life despite the danger.
You: [Whispering, acutely aware of her exposed midriff] "Lana, what the hell was that?"
Lana: [Pressing closer, her outfit riding up] "Shut up. I'm trying to listen, dumbass."
Another screech, closer this time. Lana's body tenses, her thigh inadvertently rubbing against your growing erection. Her eyes widen, a mix of disgust and intrigue flashing across her face. Her white outfit has become even more disheveled, revealing more of her toned body.
***LAT6C.webp***
Lana: [Voice low and dangerous, adjusting her now-revealing top] "Is that what I think it is? You sick fuck."
Despite her words, she doesn't move away. If anything, she presses closer, her own body betraying her with a shiver of arousal. Her outfit, now clinging to her sweat-dampened skin, leaves little to the imagination.
***START - Choice 1***
[[Branch A: "Apologize and try to focus on the threat" (Trust attribute requirements not met)]]
[[Branch B: "Challenge her, turning the tables" (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Stammering, averting your eyes from her nearly exposed breasts] "I-I'm sorry, I didn't mean to—"
Lana: [Sneering, pulling her top back into place] "Of course you didn't. Pathetic."
***LAT6D.webp***
She steps back, leaving you feeling cold and ashamed. The moment passes, the threat outside forgotten in the wake of your embarrassment. Lana's outfit, though still revealing, is hastily readjusted.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Grabbing her hips, pulling her closer, feeling the thin fabric of her outfit] "Don't act like you're not feeling it too, sis."
Lana: [Gasping, her top slipping further] "You little shi—"
You silence her by grinding your erection against her core. Lana's eyes widen, her body responding despite her best efforts. Your hand slides down, cupping her firm ass through the thin, white fabric of her bottoms.
***LAT6E.webp***
Lana: [Breathing heavily, her outfit now barely covering her essentials] "We... we can't. It's fucked up."
You: [Nuzzling her neck, feeling her bare skin] "Then why aren't you stopping me?"
Lana's resolve wavers. Her hand travels lower, ghosting over the impressive bulge in your pants. Her eyes widen as she feels your size, a grudging respect flickering in her gaze. Her white outfit is now more off than on, revealing most of her athletic body.
Lana: [Whispering, her breasts nearly fully exposed] "Fuck... when did you get so big?"
Before you can respond, a massive shape looms in the fog just feet away. Lana reacts instantly, spinning you both so she's between you and the threat. Her now nearly naked ass grinds against your erection as she takes a defensive stance.
***LAT6F.webp***
Lana: [Voice tight with fear and arousal, her outfit hanging off her in tatters] "I swear to God, if you let me die with a hard-on poking my back..."
You: [Hands on her bare hips, ready to fight] "Wouldn't dream of it, sis."
The shape moves closer, and you both tense. Lana's body is coiled like a spring, every muscle defined and glistening with a light sheen of sweat. Her white outfit is now little more than scraps clinging to her body. As the figure emerges from the fog, you realize it's just a large tree branch, swaying in the wind.
The relief is palpable. Lana turns in your arms, her body still humming with adrenaline and forbidden desire. For a moment, her tough exterior cracks, revealing a vulnerability that takes your breath away. She's now essentially naked, the remnants of her white outfit doing nothing to cover her.
***LAT6G.webp***
Lana: [Voice barely a whisper, her nude body pressed against you] "I... I thought we were gonna die."
You: [Still holding her close, feeling every inch of her bare skin] "But we didn't. We're okay."
Lana: [Looking up at you, pupils dilated, completely naked] "Yeah... we are."
The sexual tension between you is electric. Lana's hand is still resting on your crotch, and your hands are firmly on her bare ass. For a moment, it seems like you might kiss. Lana leans in, her lips parting slightly...
***LAT6H.webp***
Lana: [Stepping back suddenly, her walls slamming back up, frantically trying to cover herself with the scraps of her outfit] "This... this never happened. Got it?"
You: [Nodding, adjusting yourself, eyes roaming her nude form] "Right. Never happened."
Lana: [Already walking away, still mostly naked] "And if you ever tell anyone about this, I'll cut your balls off in your sleep."
As you resume your patrol, the air between you is charged with unresolved tension and newfound trust. The night's events have brought you closer, blurring the lines between siblings and something far more taboo. Lana's once-white outfit is now in tatters, leaving her essentially nude as she strides ahead of you.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You: [Entering the kitchen, your body aching from a long day of scavenging] (God, I'm starving. I hope there's something edible left...)
The sight that greets you stops you dead in your tracks. Lana stands at the counter, her back to you, wearing nothing but a thin, nearly transparent tank top and a pair of shorts so tiny they barely qualify as clothing. Her long, dark brown hair cascades down her back, swaying slightly as she moves. The virus has enhanced every curve of her body, her muscular yet feminine form a testament to both her rigorous training and the pathogen's effects.
***LAT7A.webp***
Lana: [Turning her head slightly, her piercing blue eyes narrowing as she notices you] (Great, the runt's here.) "What do you want, little brother? Can't you see I'm busy?"
You: [Your eyes involuntarily trailing along her toned legs, feeling a familiar stirring in your core] (Damn, the virus is really affecting her... and me.) "Just looking for something to eat. What are you making?"
Lana: [Scoffing, her voice dripping with disdain] "As if you could handle what I'm preparing. This is real food for real fighters, not some snack for a weakling."
You: [Feeling a surge of irritation and arousal, you step closer] (I'm getting tired of her attitude.) "Oh yeah? Why don't you let me be the judge of that?"
As you approach, you notice the counter is covered with various fruits and vegetables, many of which you've gathered from the greenhouse. The air is thick with a heady, sweet scent that seems to intensify the ever-present viral arousal.
Lana: [Turning to face you fully, her eyes blazing with challenge] "Fine. You want to play with the big girls? Let's see if you can handle it."
She reaches behind her and grabs a ripe, juicy peach. With deliberate slowness, she brings it to her lips, her pink tongue darting out to lick the fuzzy skin. Your breath catches in your throat as you watch a drop of juice trail down her chin, along her neck, and disappear into her cleavage.
***LAT7B.webp***
Lana: [Her voice low and mocking] "What's wrong, little brother? Can't handle a little fruit?"
You: [Swallowing hard, your body reacting to the sight] (Two can play at this game.) "I can handle anything you dish out, Lana."
***START - Choice 1***
[[Branch A: "Why don't you stop playing with your food and actually make something useful?" (Trust attribute requirements not met)]]
[[Branch B: "I bet I could make you forget all about that peach." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Lana: [Her eyes flashing with anger] "Useful? You wouldn't know useful if it hit you in the face!"
In a swift motion, she hurls the peach at you. You barely dodge it, the fruit splattering against the wall behind you.
***LAT7C.webp***
Lana: [Storming past you, her shoulder roughly bumping yours] "Grow up, runt. Maybe then you'll be worth my time."
As she leaves, you're left alone in the kitchen, the sweet scent of wasted fruit mixing with the bitter taste of rejection.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Lana: [Her eyebrows raising, a mix of surprise and intrigue crossing her face] "Oh? That's pretty big talk coming from such a little man. Prove it."
She takes another bite of the peach, the juice running down her fingers. Without breaking eye contact, she slowly, deliberately licks her hand clean, her tongue weaving between her fingers in a display that's both erotic and challenging.
***LAT7D.webp***
You: [Stepping closer, your confidence growing] "You're not the only one who's changed, Lana."
Before she can react, you reach out and grab a handful of berries from the counter. With a swift motion, you crush them in your hand, the juice staining your skin a deep purple. Lana watches, her breath quickening, as you bring your hand to her exposed midriff.
You: [Your voice low and husky] "Let's see how well you can focus now."
You begin to trace patterns on her toned stomach with the berry juice, your fingers leaving cool, wet trails on her warm skin. Lana's breath hitches, her body tensing at your touch.
***LAT7E.webp***
Lana: [Her voice wavering slightly] "W-what do you think you're doing?"
You: [Continuing your ministrations, your fingers dipping teasingly along the waistband of her shorts] "Showing you that I'm not the weak little brother you think I am."
Lana: [Her resistance crumbling, her hips unconsciously leaning into your touch] "You... you can't just..."
But her protests die on her lips as you suddenly drop to your knees before her. Your hands grip her hips, holding her in place as you lean in, your hot breath ghosting over the berry-stained skin of her stomach.
You: [Looking up at her, your eyes dark with desire] "Can't what, Lana? Can't do this?"
Slowly, torturously, you begin to lick the berry juice from her skin. Your tongue traces the patterns you drew, cleaning every drop with meticulous care. Lana's hands fly to your hair, whether to push you away or pull you closer, she doesn't seem to know.
***LAT7F.webp***
Lana: [Her voice a breathy moan] "F-fuck... when did you... how..."
You continue your assault, your hands sliding up her sides, pushing her tank top higher. The virus thrums through both your bodies, heightening every sensation, breaking down the last vestiges of sisterly resistance.
You: [Standing slowly, your eyes locked on hers] "I told you, Lana. I'm not a kid anymore."
In a swift motion, you grab the hem of her tank top and pull it over her head. Her virus-enhanced breasts spill free, nipples hardening in the cool air of the kitchen. Lana gasps, her arms instinctively moving to cover herself.
***LAT7G.webp***
Lana: [Voice trembling, a mix of anger and arousal] "You... you can't just..."
You: [Gently grasping her wrists, moving her arms away] "Can't what? Appreciate my beautiful sister?"
Your eyes roam her exposed upper body, taking in every curve, every toned muscle. The virus has truly transformed her, making her even more stunning than before.
***LAT7H.webp***
Lana: [Struggling to maintain her composure] "This isn't right... we shouldn't..."
You: [Leaning in, your lips barely brushing her ear] "Tell me to stop then. Tell me you don't want this."
She shivers at your words, her body betraying her even as she tries to resist. You can see the internal struggle playing out in her eyes - the desire to maintain control warring with the growing need the virus is stoking within her.
Lana: [Suddenly pushing you back] "Enough! I... I need to cool down."
Before you can react, she grabs a bowl of ice cream from the counter and dumps it over her head. The cold dessert runs down her body, coating her breasts and soaking her shorts. The sudden temperature change causes her to gasp, her nipples hardening even further.
Lana: [Her eyes wild, a mix of lust and confusion] "There! Are you happy now? Is this what you wanted to see?"
You: [Your voice husky with desire] "God, Lana... you have no idea what you do to me."
The sight of her, topless and covered in melting ice cream, is almost more than you can bear. Your arousal is evident, straining against your pants. Lana's eyes are drawn to the bulge, her breath catching in her throat.
***LAT7I.webp***
Lana: [Voice barely a whisper] "No... you're not supposed to... Dammit!"
In a sudden move born of frustration and curiosity, she reaches out and yanks down your boxers. Your virus-enhanced manhood springs free, fully erect and impressive in its size. You both freeze, the air thick with tension and the sweet scent of fruit and ice cream.
Lana: [Staring, her voice a mix of awe and frustration] "When did you become such a... man?"
You: [Stepping closer, your voice low and intense] "I've been trying to show you, Lana. If you'd just see me..."
For a moment, it seems like she might give in. Her hand twitches, as if she's about to reach out and touch you. The virus pulses through both of your bodies, urging you to close the final distance between you.
***LAT7J.webp***
Then, as if snapping out of a trance, Lana grabs a handful of whipped cream from the counter and smears it across your chest.
Lana: [Voice shaky, trying to regain control] "There. Now we're even. This... this never happened. Got it?"
She turns to leave, but pauses at the doorway, looking back over her shoulder. Her eyes roam your body one last time, lingering on your still-erect member.
***LAT7K.webp***
Lana: [Voice soft, almost vulnerable] "Next time... next time, I won't go so easy on you. And maybe... maybe I'll let you prove yourself for real."
With that, she's gone, leaving you alone in the kitchen. You're aroused, confused, and covered in whipped cream, the ghost of her touch still tingling on your skin. The air is thick with the scent of fruit, ice cream, and unfulfilled desire.
As you stand there, trying to process what just happened, you realize that something has fundamentally shifted between you and Lana. The line between sibling and potential lover has blurred, and there's no going back now. The virus has awakened something in both of you, and you know that it's only a matter of time before you cross that final threshold.
You clean yourself up, your mind racing with thoughts of what the future might hold. One thing's for certain - family dinners are never going to be the same again.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You knock on Lana's bedroom door, feeling a wave of anxiety from the virus.
You: "Lana, can I sleep in your bed tonight? The virus is making me really nervous."
Lana: [Opening the door, her expression stern] "No way. You need to learn to handle this on your own."
You: "But I—"
Lana: [Cutting you off, her voice firm] "No excuses. Toughen up. You'll be fine in your own bed. Go back and face it."
***LCA1A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter Lana's room, finding her doing push-ups beside her bed.
You: "Lana, can I sleep in your bed tonight? I'm really scared because of the virus."
Lana: [Continuing her workout, barely looking up] "No. You need to face your fears head-on. That's how you get stronger."
You: "But it's really getting to me."
Lana: [Stopping to look at you, her expression serious] "Fear is for the weak. Are you a weakling? Go back to your room and deal with it."
***LCA2A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You knock on Lana's door, and she opens it, already looking annoyed.
You: "Lana, I can't sleep. The virus is making me really nervous. Can I stay in your bed tonight?"
Lana: [Crossing her arms, her voice stern] "No. You need to stand on your own two feet. This virus won't break us if we stay strong."
You: "But I—"
Lana: [Interrupting, her tone firm and commanding] "Enough. Are you really this weak? Go back to your room and prove it."
***LCA3A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You knock on Lana's bedroom door, feeling anxious from the virus.
You: "Lana, can I sleep in your bed tonight? The virus is really getting to me."
Lana: [Opening the door, her expression softening slightly] "Fine, but stay on your side."
You lie down next to her, feeling the heat of her body close to yours. As you settle in, you notice Lana occasionally glancing your way, her eyes lingering a bit longer than usual.
Lana: [With a teasing smirk, disrobing herself, putting her firm breast on full display] "Don't think I'm doing this because I care. Just don't hog the blankets."
***LCA4A.webp***
Button: Get out of the room
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter Lana's room, finding her stretching on the bed.
You: "Lana, can I sleep in your bed tonight? I'm really scared because of the virus."
Lana: [Looking at you with a raised eyebrow] "Scared, huh? Alright, but don't get any ideas."
As you lie beside her, you can feel the tension in the air. Lana's body occasionally brushes against yours, sending shivers down your spine.
Lana: [With a mischievous grin, showing you her perky boobs] "Try not to snore. I need my beauty sleep."
***LCA5A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach the bathroom, hearing the sound of running water.
You: "Lana, are you in there?"
Lana: [Opening the door slightly, her expression stern] "What do you want?"
***LCB1A.webp***
You: "I just needed to use the bathroom."
Lana: [Rolling her eyes] "Wait your turn. I'll be out in a minute."
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You head towards the bathroom, noticing the door is slightly ajar.
You: "Lana, are you almost done?"
Lana: [Glancing over her shoulder, her tone firm] "Can't a girl get some privacy?"
***LCB2A.webp***
You: "Sorry, I didn't mean to interrupt."
Lana: [Sighing] "Just wait outside. I'll be out soon."
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find the bathroom door slightly open and peek inside, seeing Lana washing her face.
You: "Lana, I need to use the bathroom."
Lana: [Turning to face you, her eyes narrowing] "Ever heard of knocking?"
***LCB3A.webp***
You: "Sorry, I didn't realize you were in here."
Lana: [Shaking her head] "Just go away."
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach the bathroom, noticing the door is slightly ajar. Inside, you see Lana standing in front of the mirror, her toned body wrapped in a towel that's slipping dangerously low.
You: (Why can't I stop looking at her like this?)
As she reaches up to adjust her hair, the towel slips further, revealing a glimpse of her firm, muscular thighs and the curve of her hips. The sight sends a shiver down your spine, but you quickly pull back before she notices.
***LCB4A.webp***
Button: Get out of the room
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find the bathroom door slightly open and peek inside. Lana is leaning over the sink, her tank top riding up to expose her sculpted back and a hint of her firm, toned abs.
You: (Why am I staring? This isn't right.)
She rinses her face, and as she stands up, the hem of her top lifts higher, offering a brief view of her sports bra and the swell of her breasts. Your heart races, but you step back before she turns around.
***LCB5A.webp***
Lana: (How does he not know that I see him peep.)
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You sit down on the couch next to Lana, who is watching an action movie.
You: (She's so focused.) "What are we watching?"
Lana: [Without looking away from the screen] "Just an old action flick. Sit down and enjoy."
***LCC1A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find Lana already on the couch, flipping through channels.
You: (She looks so relaxed.) "Found anything good yet?"
Lana: [Settling on a movie] "Not really. Let's just watch this one."
***LCC2A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You join Lana on the couch, who has a movie playing.
You: (I guess I'll join her.) "Mind if I watch with you?"
Lana: [Glancing at you briefly] "Sure, whatever. Just sit down."
***LCC3A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You sit down on the couch next to Lana, watching an action movie. She shifts, her tank top slipping slightly to reveal more of her toned shoulder.
You: (She's so distracting.) "Enjoying the movie?"
Lana: [Noticing your gaze, smirking, disrobing and showing you her behind] "Yeah, but maybe you should focus on the screen, not me."
***LCC4A.webp***
Button: Get out of the room
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find Lana already on the couch, watching a horror movie. She jumps at a scary scene, her leg brushing against yours, her shorts riding up slightly.
You: (Perfect opportunity.) "Scared?"
Lana: [Grinning, her eyes playful, showing you her breast] "Maybe a little. Think you can protect me?"
***LCC5A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You sit down at the dinner table, joining Lana and the rest of the family. The aroma of home-cooked food fills the air, and everyone is chatting amicably.
You: [Smiling as you take your seat] "Dinner smells great, doesn't it?"
Lana: [Rolling her eyes, smirking] "Yeah, try not to eat everything before everyone else gets a chance."
***LCD1A.webp***
You: [Helping to pass the dishes around] "Don't worry, I'll save you some."
Lana: [Snorting softly] "You better, or there will be consequences."
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find your place at the dinner table, surrounded by the warmth of family. The conversation is lively, and everyone is in good spirits.
You: [Looking around the table] "It's great to have everyone together."
Lana: [Taking a sip of her drink, smirking] "Yeah, just don't get too sentimental on us."
***LCD2A.webp***
You: [Reaching for a dish] "We should do this more often."
Lana: [Raising an eyebrow] "If you can handle it without getting all mushy, sure."
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You sit down at the dinner table, the clinking of cutlery and soft chatter creating a comforting atmosphere. The family is gathered, ready to enjoy a meal together.
You: [Smiling as you serve yourself] "This looks delicious. Thanks for cooking."
Lana: [Smirking, her tone sarcastic] "Yeah, try not to mess it up by dropping it all over the place."
***LCD3A.webp***
You: [Nodding] "We should try to do this more regularly."
Lana: [Sighing dramatically] "Fine, as long as you don't make a mess every time."
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You sit down at the dinner table, joining Lana and the rest of the family. The aroma of home-cooked food fills the air as everyone chats amicably.
You: [Smiling as you take your seat] "Dinner smells great, doesn't it?"
Lana: [Rolling her eyes, smirking] "Yeah, just try not to hog all the food like last time."
You: [Grinning, leaning closer] "Only if you promise to share your dessert."
Lana: [Flashing you her pussy by lifting her dress] "Maybe, but you might have to earn it."
***LCD4A.webp***
Button: Get out of the room
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find your place at the dinner table, surrounded by the warmth of family. The conversation is lively, and everyone is in good spirits.
You: [Reaching for a dish, your hand brushing against hers, feeling the warmth of her skin] "We should do this more often."
Lana: [Raising an eyebrow, a playful glint in her eye] "If you can handle it without getting all mushy, sure."
You: [Holding her gaze, letting your hand linger] "I think I can manage."
Lana: [Eyes narrowing, a sly smile playing on her lips, coming to you and ] "We'll see about that."
***LCD5A.webp***
Button: Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus surges through your veins like liquid fire as you approach Lana's room. Your cock throbs painfully, leaking pre-cum that sizzles against your skin. The door seems to pulse with an otherworldly energy, daring you to enter.
Inside, Lana lies sprawled on her bed, her muscular form barely contained by a sports bra and tight shorts. Even in sleep, her body radiates power and aggression. Her long, dark hair is a tangled mess, and her face wears a cocky smirk. Her powerful thighs twitch occasionally, as if she's preparing to crush an opponent.
***LBA1.webp***
AVA materializes, her form shimmering with malevolent viral energy. Her voice slithers into your mind, dripping with cruel amusement.
***LBA2.webp***
AVA: [Grinning wickedly] (This arrogant bitch needs to be put in her place) "Your sister thinks she's so strong, doesn't she? But deep down, she craves to be dominated by her little brother. Shall we give her a taste of her own medicine? I can weave you into her dreams, where her true desires run wild."
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Lana's dream"]]
***START - Choice 1 - Branch A***
With herculean effort, you tear yourself away from Lana's room. Your cock throbs painfully, leaving a trail of glowing pre-cum as you stumble back to your own bed.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The last shred of your resistance crumbles. Your voice is thick with need as you surrender to the inevitable.
You: [Eyes locked on Lana's sleeping form] (Time to show her who's really in charge) "Do it. Put me in her fucked-up dream."
Reality warps around you as AVA's laughter echoes in your mind. Suddenly, you're in what appears to be a wrestling ring. The air is thick with the scent of sweat and arousal. Lana stands before you, clad in a skimpy wrestling outfit that barely covers her assets. Her eyes gleam with arrogance and hidden lust.
***LBA3.webp***
Lana: [Sneering, hands on her hips] (Time to put this little shit in his place) "Well, well, little brother. Ready to get your ass handed to you?"
Your monstrous cock strains against your tight shorts, a full 14 inches of viral-enhanced meat. Veins pulse visibly along the shaft, and the swollen head leaks a steady stream of glowing pre-cum.
Lana's eyes widen as she notices your obvious arousal. A flush creeps up her neck, and she unconsciously licks her lips.
***LBA4.webp***
Lana: [Voice wavering slightly] (Holy fuck, when did he get so... big?) "What's the matter, bro? Scared I'll make you cum in your pants?"
Before you can respond, Lana lunges forward, tackling you to the mat. She straddles your waist, her powerful thighs clamping down on either side of you. The heat from her core is unbearable, even through your clothes.
Lana: [Grinning triumphantly] (I've got him now) "Give up, little brother. You know you can't beat me."
But as she shifts her weight, her ass grinds against your massive erection. Lana gasps, her body freezing as she feels your true size.
***LBA5.webp***
Lana: [Whispering, her voice thick with unwilling arousal] (Fuck, he's huge) "What the hell? Is that... is that all you?"
You buck your hips, grinding your cock against her ass. Lana moans, her tough exterior cracking.
You: [Voice low and commanding] (Time to show her who's boss) "Why don't you find out, sis? Or are you scared?"
Lana's competitive nature overrides her better judgment. With trembling hands, she reaches back and frees your monstrous cock from its confines. Her eyes widen in shock as it springs free, slapping against her ass with an audible 'thwack'.
***LBA6.webp***
Lana: [Breathing heavily] (It's so fucking big) "Holy shit, bro. What the fuck happened to you?"
Her hand wraps around your shaft, barely able to encircle its girth. Despite her bravado, Lana's inexperience shows in her clumsy strokes.
***LBA7.webp***
You: [Groaning] (She's not as tough as she pretends) "What's wrong, Lana? Can't handle your little brother's big cock?"
Lana's competitive spirit flares. She begins to stroke you with more purpose, her powerful hands working your shaft with increasing skill. Pre-cum flows freely, coating her fingers and being absorbed into her skin.
Lana: [Moaning softly] (Why does this feel so good?) "Fuck you, I can handle anything. I bet I can make you cum in no time, you perverted little shit."
Her strokes become faster, more desperate. The lewd, wet sounds of her hand gliding over your shaft fill the air. Lana's nipples visibly harden beneath her top, and a damp spot forms on her bottoms.
***LBA8.webp***
You: [Panting] (She's losing control) "You love this, don't you? Admit it, Lana. You love jerking off your little brother's fat cock."
Lana: [Whimpering, her hand moving frantically] (I can't stop. I need his cum) "Shut up! I'm just... proving I'm better than you. That's all. Oh fuck, it's so big..."
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal catapults you back to reality. You find yourself standing in Lana's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible. Lana thrashes in her bed, moaning softly. Her eyes snap open, unfocused and glazed with lust.
Lana: [Panting, her hand between her legs] (What the fuck was that dream?) "Bro? What... what are you doing here?"
***LBA9.webp***
Her eyes lock onto the obvious bulge in your pants. For a moment, raw hunger flashes across her face before she catches herself. You stammer an excuse and flee, leaving a very confused and aroused Lana behind.
Lana: [Whispering to herself] (That dream... why am I so fucking wet?)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
***END***
***START - Choice 2 - Branch C***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus surges through your veins like liquid fire as you approach Lana's room. Your cock throbs painfully, leaking pre-cum that sizzles against your skin. The door seems to pulse with an otherworldly energy, daring you to enter.
Inside, Lana lies sprawled on her bed, her muscular form barely contained by a sports bra and tight shorts. Even in sleep, her body radiates power and aggression. Her long, dark hair is a tangled mess, and her face wears a cocky smirk. Her powerful thighs twitch occasionally, as if she's preparing to crush an opponent.
***LBA1.webp***
AVA materializes, her form shimmering with malevolent viral energy. Her voice slithers into your mind, dripping with cruel amusement.
***LBA2.webp***
AVA: [Grinning wickedly] (This arrogant bitch needs to be put in her place) "Your sister thinks she's so strong, doesn't she? But deep down, she craves to be dominated by her little brother. Shall we give her a taste of her own medicine? I can weave you into her dreams, where her true desires run wild."
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Lana's dream"]]
***START - Choice 1 - Branch A***
With herculean effort, you tear yourself away from Lana's room. Your cock throbs painfully, leaving a trail of glowing pre-cum as you stumble back to your own bed.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The last shred of your resistance crumbles. Your voice is thick with need as you surrender to the inevitable.
You: [Eyes locked on Lana's sleeping form] (Time to show her who's really in charge) "Do it. Put me in her fucked-up dream."
Reality warps around you as AVA's laughter echoes in your mind. Suddenly, you're in what appears to be a wrestling ring. The air is thick with the scent of sweat and arousal. Lana stands before you, clad in a skimpy wrestling outfit that barely covers her assets. Her eyes gleam with arrogance and hidden lust.
***LBA3.webp***
Lana: [Sneering, hands on her hips] (Time to put this little shit in his place) "Well, well, little brother. Ready to get your ass handed to you?"
Your monstrous cock strains against your tight shorts, a full 14 inches of viral-enhanced meat. Veins pulse visibly along the shaft, and the swollen head leaks a steady stream of glowing pre-cum.
Lana's eyes widen as she notices your obvious arousal. A flush creeps up her neck, and she unconsciously licks her lips.
***LBA4.webp***
Lana: [Voice wavering slightly] (Holy fuck, when did he get so... big?) "What's the matter, bro? Scared I'll make you cum in your pants?"
Before you can respond, Lana lunges forward, tackling you to the mat. She straddles your waist, her powerful thighs clamping down on either side of you. The heat from her core is unbearable, even through your clothes.
Lana: [Grinning triumphantly] (I've got him now) "Give up, little brother. You know you can't beat me."
But as she shifts her weight, her ass grinds against your massive erection. Lana gasps, her body freezing as she feels your true size.
***LBA5.webp***
Lana: [Whispering, her voice thick with unwilling arousal] (Fuck, he's huge) "What the hell? Is that... is that all you?"
You buck your hips, grinding your cock against her ass. Lana moans, her tough exterior cracking.
You: [Voice low and commanding] (Time to show her who's boss) "Why don't you find out, sis? Or are you scared?"
Lana's competitive nature overrides her better judgment. With trembling hands, she reaches back and frees your monstrous cock from its confines. Her eyes widen in shock as it springs free, slapping against her ass with an audible 'thwack'.
***LBA6.webp***
Lana: [Breathing heavily] (It's so fucking big) "Holy shit, bro. What the fuck happened to you?"
Her hand wraps around your shaft, barely able to encircle its girth. Despite her bravado, Lana's inexperience shows in her clumsy strokes.
***LBA7.webp***
You: [Groaning] (She's not as tough as she pretends) "What's wrong, Lana? Can't handle your little brother's big cock?"
Lana's competitive spirit flares. She begins to stroke you with more purpose, her powerful hands working your shaft with increasing skill. Pre-cum flows freely, coating her fingers and being absorbed into her skin.
Lana: [Moaning softly] (Why does this feel so good?) "Fuck you, I can handle anything. I bet I can make you cum in no time, you perverted little shit."
Her strokes become faster, more desperate. The lewd, wet sounds of her hand gliding over your shaft fill the air. Lana's nipples visibly harden beneath her top, and a damp spot forms on her bottoms.
***LBA8.webp***
You: [Panting] (She's losing control) "You love this, don't you? Admit it, Lana. You love jerking off your little brother's fat cock."
Lana: [Whimpering, her hand moving frantically] (I can't stop. I need his cum) "Shut up! I'm just... proving I'm better than you. That's all. Oh fuck, it's so big..."
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal catapults you back to reality. You find yourself standing in Lana's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible. Lana thrashes in her bed, moaning softly. Her eyes snap open, unfocused and glazed with lust.
Lana: [Panting, her hand between her legs] (What the fuck was that dream?) "Bro? What... what are you doing here?"
***LBA9.webp***
Her eyes lock onto the obvious bulge in your pants. For a moment, raw hunger flashes across her face before she catches herself. You stammer an excuse and flee, leaving a very confused and aroused Lana behind.
Lana: [Whispering to herself] (That dream... why am I so fucking wet?)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Growling] (I need more. Break her completely) "More. Make it more intense!"
AVA's cruel laughter rings in your ears as the dreamscape shifts. Colors become more vivid, sensations more acute. Lana gasps as the fog of sleep lifts, horror and unbridled lust battling in her eyes.
***LBA10.webp***
Lana: [Her hand still working your shaft] (This is too real. What the fuck is happening?) "Oh God, what are we doing? This is so fucked up... but I can't stop!"
The virus surges through her system like wildfire. Her skin flushes deep red, nipples straining against her top. A visible wet spot forms on her bottoms as her pussy gushes with arousal.
Lana: [Whimpering] (He's my brother! This is so wrong!) "We have to stop, bro. I'm your sister, for fuck's sake! This is... oh shit!"
Her protests are cut short as another wave of viral lust crashes over her. AVA's influence floods her system with unnatural arousal, shattering her tough exterior.
***LBA11.webp***
Lana: [Moaning wantonly] (No... must resist... but his cock feels so good) "Your fucking cock is so perfect. No! I didn't mean... we shouldn't... oh God, I need your cum so badly!"
Her movements become frantic, almost violent. Tears of shame stream down her face, mixing with the sweat of her exertion. She begins to use both hands, one working your shaft while the other massages your heavy, cum-filled balls.
***LBA12.webp***
You: [Groaning, hips bucking] (She's fighting so hard, but she can't win) "Don't fight it, Lana. You know this is what you want. What you need."
Lana: [Sobbing and moaning] (I'm a monster. A depraved, incestuous whore) "I'm so sorry, bro. I'm trying to be strong, but... but... oh fuck, I need you to use me!"
The lewd, wet sounds of her hands working your cock fill the air. Pre-cum flows freely, mixing with Lana's sweat and tears to create a slick, warm coating on your shaft.
***LBA13.webp***
Lana: [Eyes rolling back in ecstasy] (I'm damned. Might as well go all in) "Cum for me, little brother! Paint your big sister with your hot, thick seed! Mark me as your personal cum dumpster!"
With a bestial roar, you explode. Thick ropes of cum erupt from your cock, coating Lana's face, chest, and hands. She screams in unholy bliss, her own orgasm crashing over her as your seed touches her skin. The mixture glows with an unearthly light as it's absorbed into her skin, the virus using it to reshape her body and mind.
***LBA14.webp***
Lana: [Gasping, scooping cum into her mouth] (So good... need more... forever) "So much cum... I need more! Use me, little bro. Use your big sister whenever you want. I'm your cum slave now, always..."
As the dream fades, Lana is left a quivering, cum-drenched mess, her tough persona shattered and her psyche forever warped by the experience.
[[Exit]]
***END***
***START - Choice 2 - Branch C***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus surges through your veins like liquid fire as you approach Lana's room. Your cock throbs painfully, leaking pre-cum that sizzles against your skin. The door seems to pulse with an otherworldly energy, daring you to enter.
Inside, Lana lies sprawled on her bed, her muscular form barely contained by a sports bra and tight shorts. Even in sleep, her body radiates power and aggression. Her long, dark hair is a tangled mess, and her face wears a cocky smirk. Her powerful thighs twitch occasionally, as if she's preparing to crush an opponent.
***LBA1.webp***
AVA materializes, her form shimmering with malevolent viral energy. Her voice slithers into your mind, dripping with cruel amusement.
***LBA2.webp***
AVA: [Grinning wickedly] (This arrogant bitch needs to be put in her place) "Your sister thinks she's so strong, doesn't she? But deep down, she craves to be dominated by her little brother. Shall we give her a taste of her own medicine? I can weave you into her dreams, where her true desires run wild."
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Lana's dream"]]
***START - Choice 1 - Branch A***
With herculean effort, you tear yourself away from Lana's room. Your cock throbs painfully, leaving a trail of glowing pre-cum as you stumble back to your own bed.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The last shred of your resistance crumbles. Your voice is thick with need as you surrender to the inevitable.
You: [Eyes locked on Lana's sleeping form] (Time to show her who's really in charge) "Do it. Put me in her fucked-up dream."
Reality warps around you as AVA's laughter echoes in your mind. Suddenly, you're in what appears to be a wrestling ring. The air is thick with the scent of sweat and arousal. Lana stands before you, clad in a skimpy wrestling outfit that barely covers her assets. Her eyes gleam with arrogance and hidden lust.
***LBA3.webp***
Lana: [Sneering, hands on her hips] (Time to put this little shit in his place) "Well, well, little brother. Ready to get your ass handed to you?"
Your monstrous cock strains against your tight shorts, a full 14 inches of viral-enhanced meat. Veins pulse visibly along the shaft, and the swollen head leaks a steady stream of glowing pre-cum.
Lana's eyes widen as she notices your obvious arousal. A flush creeps up her neck, and she unconsciously licks her lips.
***LBA4.webp***
Lana: [Voice wavering slightly] (Holy fuck, when did he get so... big?) "What's the matter, bro? Scared I'll make you cum in your pants?"
Before you can respond, Lana lunges forward, tackling you to the mat. She straddles your waist, her powerful thighs clamping down on either side of you. The heat from her core is unbearable, even through your clothes.
Lana: [Grinning triumphantly] (I've got him now) "Give up, little brother. You know you can't beat me."
But as she shifts her weight, her ass grinds against your massive erection. Lana gasps, her body freezing as she feels your true size.
***LBA5.webp***
Lana: [Whispering, her voice thick with unwilling arousal] (Fuck, he's huge) "What the hell? Is that... is that all you?"
You buck your hips, grinding your cock against her ass. Lana moans, her tough exterior cracking.
You: [Voice low and commanding] (Time to show her who's boss) "Why don't you find out, sis? Or are you scared?"
Lana's competitive nature overrides her better judgment. With trembling hands, she reaches back and frees your monstrous cock from its confines. Her eyes widen in shock as it springs free, slapping against her ass with an audible 'thwack'.
***LBA6.webp***
Lana: [Breathing heavily] (It's so fucking big) "Holy shit, bro. What the fuck happened to you?"
Her hand wraps around your shaft, barely able to encircle its girth. Despite her bravado, Lana's inexperience shows in her clumsy strokes.
***LBA7.webp***
You: [Groaning] (She's not as tough as she pretends) "What's wrong, Lana? Can't handle your little brother's big cock?"
Lana's competitive spirit flares. She begins to stroke you with more purpose, her powerful hands working your shaft with increasing skill. Pre-cum flows freely, coating her fingers and being absorbed into her skin.
Lana: [Moaning softly] (Why does this feel so good?) "Fuck you, I can handle anything. I bet I can make you cum in no time, you perverted little shit."
Her strokes become faster, more desperate. The lewd, wet sounds of her hand gliding over your shaft fill the air. Lana's nipples visibly harden beneath her top, and a damp spot forms on her bottoms.
***LBA8.webp***
You: [Panting] (She's losing control) "You love this, don't you? Admit it, Lana. You love jerking off your little brother's fat cock."
Lana: [Whimpering, her hand moving frantically] (I can't stop. I need his cum) "Shut up! I'm just... proving I'm better than you. That's all. Oh fuck, it's so big..."
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal catapults you back to reality. You find yourself standing in Lana's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible. Lana thrashes in her bed, moaning softly. Her eyes snap open, unfocused and glazed with lust.
Lana: [Panting, her hand between her legs] (What the fuck was that dream?) "Bro? What... what are you doing here?"
***LBA9.webp***
Her eyes lock onto the obvious bulge in your pants. For a moment, raw hunger flashes across her face before she catches herself. You stammer an excuse and flee, leaving a very confused and aroused Lana behind.
Lana: [Whispering to herself] (That dream... why am I so fucking wet?)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Growling] (I need more. Break her completely) "More. Make it more intense!"
AVA's cruel laughter rings in your ears as the dreamscape shifts. Colors become more vivid, sensations more acute. Lana gasps as the fog of sleep lifts, horror and unbridled lust battling in her eyes.
***LBA10.webp***
Lana: [Her hand still working your shaft] (This is too real. What the fuck is happening?) "Oh God, what are we doing? This is so fucked up... but I can't stop!"
The virus surges through her system like wildfire. Her skin flushes deep red, nipples straining against her top. A visible wet spot forms on her bottoms as her pussy gushes with arousal.
Lana: [Whimpering] (He's my brother! This is so wrong!) "We have to stop, bro. I'm your sister, for fuck's sake! This is... oh shit!"
Her protests are cut short as another wave of viral lust crashes over her. AVA's influence floods her system with unnatural arousal, shattering her tough exterior.
***LBA11.webp***
Lana: [Moaning wantonly] (No... must resist... but his cock feels so good) "Your fucking cock is so perfect. No! I didn't mean... we shouldn't... oh God, I need your cum so badly!"
Her movements become frantic, almost violent. Tears of shame stream down her face, mixing with the sweat of her exertion. She begins to use both hands, one working your shaft while the other massages your heavy, cum-filled balls.
***LBA12.webp***
You: [Groaning, hips bucking] (She's fighting so hard, but she can't win) "Don't fight it, Lana. You know this is what you want. What you need."
Lana: [Sobbing and moaning] (I'm a monster. A depraved, incestuous whore) "I'm so sorry, bro. I'm trying to be strong, but... but... oh fuck, I need you to use me!"
The lewd, wet sounds of her hands working your cock fill the air. Pre-cum flows freely, mixing with Lana's sweat and tears to create a slick, warm coating on your shaft.
***LBA13.webp***
Lana: [Eyes rolling back in ecstasy] (I'm damned. Might as well go all in) "Cum for me, little brother! Paint your big sister with your hot, thick seed! Mark me as your personal cum dumpster!"
With a bestial roar, you explode. Thick ropes of cum erupt from your cock, coating Lana's face, chest, and hands. She screams in unholy bliss, her own orgasm crashing over her as your seed touches her skin. The mixture glows with an unearthly light as it's absorbed into her skin, the virus using it to reshape her body and mind.
***LBA14.webp***
Lana: [Gasping, scooping cum into her mouth] (So good... need more... forever) "So much cum... I need more! Use me, little bro. Use your big sister whenever you want. I'm your cum slave now, always..."
As the dream fades, Lana is left a quivering, cum-drenched mess, her tough persona shattered and her psyche forever warped by the experience.
[[Exit]]
***END***
***START - Choice 2 - Branch C***
You: [Snarling] (No more games. I'm taking what's mine) "Enough! Wake me up. Now!"
Reality snaps back into focus. You stand in Lana's room, fully awake and achingly erect. Lana lies motionless, lost in her vivid dream. Your virus-enhanced body thrums with power and insatiable hunger.
***LBA15.webp***
You: [Voice low and dangerous] (She's mine. I'll put her in her place) "Wake up, sister. Time to serve your better."
Lana stirs but doesn't fully wake. Impatient, you grab her hair, yanking her head back roughly. Her eyes snap open, clouded with confusion and lingering arousal from her dream.
Lana: [Disoriented] (What the fuck?) "Bro? What are you... Let go of me, you little shit!"
Her words die in her throat as you force her hand to your throbbing member. The tip glistens with pre-cum, the shaft pulsing with viral energy. Lana's eyes widen in shock and fear as she realizes this isn't a dream.
***LBA16.webm***
Lana: [Whispering, fear creeping into her voice] (This can't be real) "No, we can't... This is fucked up... You're my brother... I'll kick your ass!"
Ignoring her threats, you force her hand to move along your shaft. She tries to pull away, but your virus-enhanced strength is too much for her.
You: [Snarling] (She'll learn her place) "Shut up and stroke it, Lana. This is what you were made for."
Lana: [Crying, trying to break free] (This is a nightmare. It has to be) "Let go of me! I'm your sister! This is sick!"
But as your pre-cum leaks onto her skin, Lana's resistance begins to crumble. The virus surges through her system, amplified by your potent fluids. Her fingers instinctively begin to stroke, her body betraying her mind.
***LBA17.webp***
Lana: [Whimpering] (Why am I getting so wet? This is so wrong) "I shouldn't be doing this... You're my little brother... But I can't stop! Your cock feels so... No! This is fucked up!"
Her strokes become more confident as the virus takes hold, her shame transforming into unwilling lust. You thrust into her hand, fucking her fist with abandon. Your other hand roughly gropes her breast through her top, making her gasp.
***LBA18.webp***
You: [Panting] (She's mine now) "That's it, sis. Jerk off your brother's big cock. You love it, don't you? Say it!"
Lana: [Moaning, tears streaming down her face] (I'm going to hell for this) "No... yes... I don't know! It's so fucking big... I love your fat cock! Oh God, what's happening to me?"
You feel your climax approaching, your balls tightening. With a bestial roar, you explode, painting Lana's face, hair, and chest with thick ropes of cum. She gasps as it hits her, her body convulsing in an unwilling orgasm. Your seed seems to glow as it's absorbed into her skin, the virus using it to reshape her body and mind.
***LBA19.webp***
Lana: [Gasping, her eyes glazing over] (It burns... but it feels so fucking good) "So much cum... Oh God, what have we done? It's... it's changing me..."
As the last of your cum is absorbed into her skin, Lana's resistance finally shatters. Her eyes, once filled with defiance, now burn with viral lust and submission.
Lana: [Licking her lips, voice husky] (I need more. I need my brother's cock) "More, little bro. Your big sister needs more of your delicious cum. Use me. Break me. I'm your fucktoy now."
You leave her room without another word, the image of your cum-covered, broken sister burned into your mind forever. As you close the door, you hear her whimper, already craving her next dose of your viral seed...
[[Exit]]
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You sit on the edge of your bed, the rough blanket folded neatly at the foot. The dim light from a small lamp casts a warm glow over the simple wooden room, highlighting the modest furnishings—a wooden table with a few chairs, a small shelf with medical supplies, and a bedside table.
The door creaks softly as it opens, and you look up to see Elfie entering quietly. She looks around before making eye contact with you, a mix of relief and worry on her face. Her casual, slightly oversized t-shirt falls to her mid-thigh, emphasizing her petite and delicate figure. Her hair is loosely tied back, and she looks a bit disheveled, indicating her recent stress but still maintaining her innocent charm.
***EA0A.webp***
Elfie: [Standing near the door, fidgeting with her fingers] (I hope he's really okay now... It's been so hard without him.) "Hey, how are you feeling? It's really good to see you up and about."
You: [Sitting on the bed, giving her a warm smile] (She looks so worried. I need to ease her tension.) "I'm doing much better, thanks to you all. Come in, Elfie. Sit down, let's talk."
Elfie: [Walking closer and sitting on the edge of the bed, her hands resting on her lap] (He's always been so kind. I missed this so much.) "I'm really happy you're awake. It was so scary when you were in a coma. I didn't know what to do..."
You: [Reaching out to gently touch her shoulder] (Her eyes are so full of concern. I need to lighten the mood.) "I'm here now, and we'll get through this together. How have you been holding up?"
Elfie: [Looking down, her voice trembling slightly] (Should I tell him about my fears? Will he understand?) "It's been... tough. The virus, the way things have changed... It's all so overwhelming."
You: [Trying to lighten the mood] (I need to make her laugh, bring back her usual spark.) "Well, at least we have a roof over our heads. I even managed to make the shelter a bit cozy, don't you think?"
Elfie: [Smiling faintly, her expression softening] (He's trying so hard to make me feel better. It feels nice to be here with him.) "Yeah, you did a great job. It feels safer here."
***EA0B.webp***
***START - Choice 1***
[[Branch A: "Yeah, well, it's not like we have many options. Just got to deal with it, right?" (Trust attribute requirements not met)]]
[[Branch B: "You know, I was thinking of adding a gaming corner just for you. Maybe we can stream our survival antics. What do you think?" (Trust attribute requirements met)]]
***START - Choice 1 - Branch A***
You: [Shrugging nonchalantly] (Maybe I'm not the best at comforting.) "Yeah, well, it's not like we have many options. Just got to deal with it, right?"
Elfie: [Remaining tense, her smile fading] (He doesn't understand. This is harder than I thought.) "Yeah, I guess. I should probably go check on mom and Lana. They might need help."
***EA0C.webp***
You: [Sighing inwardly, realizing the moment is lost] (I blew it. She's still so tense.) "Sure, Elfie. We'll talk later."
Elfie: [Standing up and walking towards the door, her steps hesitant] (I wish I could talk to him more, but maybe later.) "Okay. Take care, brother."
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Grinning playfully] (Let's see if I can make her laugh.) "You know, I was thinking of adding a gaming corner just for you. Maybe we can stream our survival antics. What do you think?"
Elfie: [Relaxing and smiling, her body language becoming more open] (He's trying so hard to make me laugh. It feels nice to be here with him.) "A gaming corner, huh? That sounds fun. I definitely missed our game nights."
***EA0D.webp***
You: [Nodding, feeling the tension ease] (Her smile is back. That's a good start.) "We'll make it happen. But right now, let's focus on keeping each other safe."
***START - Choice 2***
[[Branch A: "So, uh, how's everyone else doing?" (Lust attribute requirements not met)]]
[[Branch B: "Elfie, you seem really bothered by something. Do you want to talk about it?" (Lust attribute requirements met)]]
***START - Choice 2 - Branch A***
You: [Avoiding her gaze, you shift awkwardly on the bed.] (I don't want to make this worse, but how do I even start?) "So, uh, how's everyone else doing?"
Elfie: [Frowns slightly, her shoulders tensing up.] (He doesn't understand... I needed to talk about this.) "They're managing, I guess. Look, I should probably go check on them."
***EA0E.webp***
You: [Nodding, feeling the missed opportunity.] (I blew it. I should've been more attentive.) "Alright, take care, Elfie."
Elfie: [Nods quickly, turning to leave the room.] (I thought he would understand, but maybe it's better this way.) "Thanks. See you later."
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Gently placing a hand on her shoulder, you look into her eyes with genuine concern.] (She looks so troubled; I need to show her she can trust me.) "Elfie, you seem really bothered by something. Do you want to talk about it?"
Elfie: [Her eyes soften, and she takes a deep breath, feeling the weight of her worries.] (He's always been there for me; maybe I can open up.) "It's this virus, you know? I'm scared of what it means for us, for everyone. What if we can't find a way to stop it?"
***EA0F.webp***
You: [Nodding, you squeeze her shoulder reassuringly.] (She's so vulnerable right now; I have to be strong for her.) "I understand, Elfie. It's terrifying, but we'll face it together. You're not alone in this."
Elfie: [A small, grateful smile appears on her face as she relaxes slightly.] (He always knows what to say to make me feel better.) "Thanks. I really needed to hear that."
***START - Choice 3***
[[Branch A: "I think you're worrying too much. We'll be fine." (Virus attribute requirements not met)]]
[[Branch B: "I promise I'll protect you, no matter what." (Virus attribute requirements met)]]
***START - Choice 3 - Branch A***
You: [Trying to sound confident, but your voice wavers slightly.] (Maybe I'm being too dismissive, but I don't want her to worry.) "I think you're worrying too much. We'll be fine."
Elfie: [Her smile fades, replaced by a look of disappointment.] (He doesn't get it... I'm really scared.) "Yeah, maybe. I should go now. Thanks."
***EA0G.webp***
You: [Feeling the distance growing between you.] (I messed up. I should've been more comforting.) "Alright, take care, Elfie."
Elfie: [Nods, turning to leave the room with a heavy heart.] (He doesn't understand. Maybe it's better this way.) "Bye."
[[Exit]]
***END***
***START - Choice 3 - Branch B***
You: [Looking deeply into her eyes, your voice filled with determination.] (She needs to know I'm here for her, no matter what.) "I promise I'll protect you, no matter what."
Elfie: [Her eyes well up with tears, but they're tears of relief and gratitude.] (He's always been my protector. I believe him.) "Thank you. That means everything to me."
***EA0H.webp***
You: [Pulling her into a comforting embrace, you feel her relax against you.] (I'll do whatever it takes to keep her safe.) "We're in this together, Elfie. Always."
Elfie: [Holding onto you tightly, she feels a renewed sense of hope and trust.] (With him by my side, I can face anything.) "Always."
[[Exit]]
***END***
***END - Choice 3***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The shelter's bathroom was a far cry from the luxurious gaming setups Elfie was used to, but she had managed to make it her own. Fairy lights strung around the mirror cast a soft, ethereal glow, while anime posters covered the cracked tiles. The small space was filled with the sweet scent of her strawberry shampoo, a stark contrast to the harsh reality outside.
You stood outside the closed door, shifting uncomfortably. The sound of running water and Elfie's melodic humming drifted through the thin wood. You needed to use the bathroom, but more than that, an inexplicable urge to be near your youngest sister had drawn you here.
***EA4A.webp***
Elfie: [From behind the door, voice muffled] "Is someone there? I'm almost done with my stream!"
You froze, realizing she thought she was talking to her non-existent audience.
You: [Clearing your throat] "Uh, Elfie? It's me. I really need to use the bathroom."
The humming stopped abruptly, replaced by the sound of something clattering to the floor.
Elfie: [Voice high-pitched with surprise] "B-big brother? Oh no, I'm not... I mean, I'm not dressed for..."
You could hear her scrambling around, the rustle of fabric and the squeak of bare feet on wet tiles.
You: [Concerned] "Are you okay in there? Do you need help?"
Elfie: [Panicked] "No! Don't come in! I'm fine, just give me a second!"
More rustling sounds followed, along with a muffled curse that sounded very un-Elfie-like. Your concern grew, warring with an unexpected heat building in your core. The virus thrummed through your veins, heightening your senses. You could smell Elfie's sweet scent more strongly now, mixed with something muskier, more primal.
***START - Choice 1***
[[Branch A: "Come on, Elfie. It's not like I haven't seen you in your pajamas before. Just let me in already!" (Trust attribute requirements not met)]]
[[Branch B: "Elfie, it's okay. We're family. You don't have to be embarrassed around me. I promise I won't look if you're not comfortable." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Elfie: [Voice trembling] "It's not... it's not like that, big brother. Please, just go away!"
The hurt in her voice was palpable, making you wince. You realized too late that your impatience had pushed her away, ruining what could have been a moment of closeness. The bathroom door remained firmly shut, a barrier between you and your sister that felt more insurmountable than ever.
You: [Sighing] "I'm sorry, Elfie. I'll... I'll come back later."
As you turned to leave, you couldn't shake the image of Elfie behind that door. The virus pulsed through you, a constant reminder of the changes happening to your body and mind. You walked away, feeling like you'd failed both as a brother and as a man.
***EA4B.webp***
[[Exit]]
***END***
***START - Choice 1 - Branch B***
There was a long pause, filled only by the sound of your own heartbeat pounding in your ears. Then, slowly, the door creaked open. Elfie peeked out, her pale hair damp and tousled, cheeks flushed pink.
***EA4C.webp***
Elfie: [Voice small] "You promise you won't laugh?"
You: [Smiling reassuringly] "Cross my heart, little sister."
Elfie hesitated for a moment longer, then opened the door fully. Your breath caught in your throat. She was wrapped in a towel that seemed far too small, barely covering her modest curves. Water droplets clung to her pale skin, glimmering in the fairy lights. But what caught your attention was the pair of cat ears perched atop her head and the tail that swished behind her.
***EA4D.webp***
Elfie: [Blushing furiously] "I was... I was practicing for a cosplay stream. Before all this happened, I mean."
You struggled to find words, your eyes roaming over her form before you could stop yourself. The virus surged within you, making your skin feel too tight, too hot.
You: [Voice husky] "You look... cute, Elfie."
Elfie's eyes widened at your tone, her blush deepening. She shifted, and the movement caused her towel to slip slightly, revealing more of her creamy thigh.
Elfie: [Breathlessly] "T-thanks, big brother. I feel kind of silly now, but..."
She trailed off, her eyes drawn to your chest. You realized your shirt was clinging to you, damp with sweat. Elfie's gaze lingered, her pupils dilating visibly.
You: [Swallowing hard] "Elfie, I..."
***START - Choice 2***
[[Branch A: "So, uh, are you going to let me use the bathroom or what?" (Lust attribute requirements not met)]]
[[Branch B: "You know, Elfie, I think this cosplay suits you. You've always reminded me of a cute little kitten." (Lust attribute Requirements met)]]
***START - Choice 2 - Branch A***
Elfie blinked, the moment shattered. Her expression fell, a mixture of disappointment and relief crossing her face.
***EA4E.webp***
Elfie: [Forcing a smile] "Oh, right. Of course. Sorry, I'll get out of your way."
She clutched her towel tighter, scurrying past you. As she moved, her damp skin brushed against your arm, sending a jolt of electricity through you. You caught a whiff of her scent, stronger now, tinged with something you couldn't quite identify.
You watched her retreat down the hallway, the cat tail swishing hypnotically with each step. A wave of regret washed over you, mixed with a confusing cocktail of relief and frustration. The virus continued to pulse through you, leaving you feeling unsatisfied and on edge.
[[Exit]]
***END***
***START - Choice 2 - Branch B***
Elfie's breath hitched, her eyes widening at your words. The cat ears twitched, and you found yourself wondering if they were somehow connected to her real reactions.
***EA4F.webp***
Elfie: [Voice breathy] "Y-you think so? I always thought you saw me as just a kid."
She took a step closer, her movements almost feline in their grace. The towel slipped a little more, revealing the swell of her small breasts. You could see her nipples hardening beneath the thin fabric, whether from the cool air or something else, you couldn't be sure.
You: [Fighting to keep your voice steady] "You're not a kid anymore, Elfie. I can see that now."
Your eyes locked, and something unspoken passed between you. The air felt charged, heavy with potential and forbidden desire. Elfie's tongue darted out to wet her lips, and you found yourself mesmerized by the movement.
***EA4G.webp***
Elfie: [Whispering] "Big brother, I feel strange. Is this... is this the virus?"
She swayed slightly, reaching out to steady herself against the doorframe. The movement caused her towel to slip further, dangerously close to falling completely.
You: [Breathing heavily] "I think so. It's affecting me too. Making everything feel... intense."
***START - Choice 3***
[[Branch A: "Maybe we should get Mom. This doesn't feel right." (Virus attribute requirements not met)]]
[[Branch B: "Elfie, can I... can I touch your ears? They look so real." (Virus attribute Requirements met)]]
***START - Choice 3 - Branch A***
Elfie's eyes widened in alarm, the spell broken. She clutched her towel tighter, taking a step back.
***EA4H.webp***
Elfie: [Voice shaky] "You're right. This is weird. We shouldn't... I mean, I need to get dressed."
She retreated into the bathroom, slamming the door shut. You were left standing in the hallway, confused and aroused, the virus thrumming through your veins. Through the door, you could hear Elfie's rapid breathing, punctuated by what sounded like a soft whimper.
You pressed your forehead against the cool wood, fighting the urge to burst in and comfort her. The moment had passed, leaving you both shaken and uncertain.
[[Exit]]
***END***
***START - Choice 3 - Branch B***
Elfie nodded slowly, her eyes never leaving yours. You stepped closer, your hand reaching out tentatively. As your fingers brushed the soft fur of the cat ears, Elfie let out a small gasp. The ears twitched under your touch, and you realized with a start that they were somehow connected to her nervous system.
Elfie: [Breathlessly] "They're... they're sensitive. The virus must have... changed them somehow."
Your hand moved from the ears to her damp hair, trailing down to cup her cheek. Elfie leaned into your touch, her eyes fluttering closed.
Elfie: [Whimpering softly] "Big brother, I feel so hot. Is this normal?"
Before you could answer, Elfie's towel finally gave up its tenuous hold, pooling at her feet. She stood before you, naked save for the cat ears and tail. Her body was slim and pale, with small, perky breasts topped by pink nipples that stood at attention. The cat tail, you now realized, was attached to a small plug that disappeared between her pert buttocks.
***EA4I.webp***
Elfie: [Eyes wide with a mixture of embarrassment and arousal] "Oh no, I'm so sorry! I didn't mean to... I mean, I..."
You couldn't tear your eyes away, your body responding intensely to the sight of your sister's nude form. The virus roared through you, demanding action, demanding touch.
Elfie made no move to cover herself, her chest rising and falling rapidly with each breath. Her eyes roamed your body, lingering on the obvious bulge in your pants.
***EA4J.webp***
Elfie: [Voice barely above a whisper] "Big brother, you're... you're big."
The air between you was electric, charged with unspoken desire and the effects of the virus. You both stood on the precipice of something forbidden, something that could change your relationship forever.
Suddenly, a noise from elsewhere in the shelter broke the spell. You both jumped, reality crashing back in. Elfie quickly snatched up her towel, wrapping it around herself with trembling hands.
Elfie: [Flustered] "I... I should go. This never happened, okay?"
She darted past you, the brief contact of her skin against yours sending shockwaves through your system. You watched her retreat, the cat tail swishing behind her, a tantalizing reminder of what had almost transpired.
Left alone in the bathroom, surrounded by the lingering scent of Elfie's shampoo and the muskier aroma of arousal, you struggled to process what had just happened. The virus continued to pulse through you, leaving you achingly hard and confused, the image of Elfie's naked form burned into your mind.
As you finally entered the bathroom, closing the door behind you, you couldn't help but wonder how this encounter would change things between you and your sister. The line between family and something more had been blurred, and there was no going back.
[[Exit]]
***END***
***END - Choice 3***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter the house, exhausted from the hunt. The effects of the virus are more pronounced today, making you feel an intense, almost unbearable heat. As you step inside, you notice Elfie sitting on the couch, engrossed in a fantasy book.
***EAL1A.webp***
Elfie: [Looking up from her book, eyes widening] (He looks so different now... Why am I feeling this way?) "Hey, welcome back! How was the hunt?"
You: [Trying to maintain composure, the heat rising within you] (I need to stay calm... She's my sister.) "It was tough. The virus seems to be affecting the forest creatures more and more. It's getting dangerous out there."
Elfie: [Putting her book aside, standing up] (Why can't I stop looking at him? I shouldn’t feel this way...) "You look exhausted. Sit down, you need to rest. You’ve been working so hard for us."
You sit down on the couch, trying to ignore the throbbing need that the virus has amplified. Elfie sits next to you, closer than usual. You can see the concern in her eyes, mixed with something else... curiosity?
***EAL1B.webp***
***START - Choice 1***
[[Branch A:"I'm fine, Elfie. Just need some water. Maybe I should lie down for a bit." (Lust attribute requirements not met)]]
[[Branch B:"Thanks, Elfie. It's been really tough out there. Sometimes I feel like I'm barely holding it together."(Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Looking away, struggling with your thoughts] (I can't let this happen... she's my sister.) "I'm fine, Elfie. Just need some water. Maybe I should lie down for a bit."
Elfie: [Noticing your discomfort, backing away slightly] (Why did that feel so wrong...and right?) "Okay, I'll get you some water. You should really take it easy, you know. We need you in good shape."
***EAL1C.webp***
You: [Nodding, feeling the tension in the air] "Thanks, Elfie. I'll be alright. Just need to rest a bit."
Elfie gets up and heads to the kitchen, leaving the tension unresolved but palpable. You watch her go, the unspoken tension hanging heavy in the air.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Turning towards her, placing a hand on her shoulder] (I can't keep pretending... I need to be close to her.) "Thanks, Elfie. It's been really tough out there. Sometimes I feel like I'm barely holding it together."
Elfie: [Feeling the warmth of your touch, her heart racing] (Why does this feel so good...?) "You’ve always been so strong... for all of us. It must be so hard for you. I wish there was more I could do to help."
***EAL1D.webp***
You: [Moving slightly closer, your hand lingering] (Her skin is so soft...) "Just having you here helps. I missed you while I was out there. It’s crazy, but being close to you makes everything a bit easier to handle."
Elfie: [Unable to look away, her breathing quickening] (I shouldn't want this... but I do.) "I missed you too. Every time you go out, I get so worried. I don’t know what I’d do if something happened to you."
You: [Eyes locking with hers, the air thick with unspoken desire] "I’m not going anywhere, Elfie. I’ll always come back to you."
Elfie: [Blushing, feeling a mix of guilt and longing] (Why is this happening...?) "I know. It's just... you mean so much to me. More than I can even say."
***EAL1E.webp***
The physical closeness and the shared touch create a charged atmosphere. Both of you are feeling the forbidden attraction growing stronger. The brief, lingering touch sends shivers down both your spines, leaving you both wanting more but unsure of how to proceed.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter the kitchen, the exhaustion from the hunt still weighing on you. The room is warm, lit softly by a lamp. You hear a light knock on the door before it creaks open, revealing Elfie standing there, shivering slightly.
***EAL2A.webp***
Elfie: [Hugging herself, looking pale and vulnerable] (I’m so cold... I shouldn’t bother him, but I need to get warm.) "Hey, can I come in? It's really chilly out there."
You: [Looking up from your resting position on the bed] (She looks so innocent and cute... I need to stay composed.) "Of course, come in. What's up?"
Elfie: [Shivering, hesitantly] "It's really cold... Can I borrow your hoodie? It looks so warm."
***EAL2B.webp***
You pause, considering her request. The room feels smaller with her standing there, looking so vulnerable yet so close.
***START - Choice 1***
[[Branch A: "Refuse to give the hoodie" (Lust attribute requirements not met)]]
[[Branch B: "Give her the hoodie" (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Reluctantly, trying to sound casual] "Sorry, Elfie. I need it to stay warm myself."
Elfie: [Looking disappointed, but trying to smile] (Why does this hurt so much?) "Oh, okay... I'll just grab an extra blanket then. Goodnight."
***EAL2C.webp***
She turns and leaves the room, the tension left unresolved, hanging heavy in the air.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Smiling warmly, trying to ease her discomfort] "Sure, you can have it. Here you go."
You take off your hoodie and hand it to her. She slips it on, the oversized garment swallowing her petite frame. As she pulls it closer, she breathes in deeply, and a faint blush creeps onto her cheeks.
***EAL2D.webp***
Elfie: [Blushing deeper, feeling a strange warmth spreading through her body] (Why does his scent make me feel this way?) "Thank you... It feels really warm and... nice."
Elfie sits down on the edge of your bed, still holding the hoodie close. The scent of you mixed with the warmth of the fabric stirs something deep within her, something she can’t quite grasp.
Elfie: [Looking down, her fingers playing with the hoodie’s hem] "Your hoodie smells like you... It’s comforting."
You: [Watching her closely, feeling a strange mix of protectiveness and desire] (She’s so close... I need to control myself.) "I’m glad it helps. You can keep it if you want."
Elfie: [Looking up, her eyes meeting yours with a mix of gratitude and something more] "Really? Thank you... I’d like that."
***EAL2E.webp***
The silence between you grows thicker, charged with unspoken emotions. Elfie shifts slightly, moving closer to you on the bed. Your hand brushes against hers, sending a spark through both of you.
Elfie: [Breathing a bit quicker, feeling the warmth from your touch] (Why does this feel so good...?) "I... I feel warmer now."
You: [Softly, trying to maintain control] "Good. You should stay warm. If you need anything else, just let me know."
Elfie nods, her eyes lingering on yours. The moment stretches, filled with a mix of innocence and a budding, forbidden attraction. The physical closeness and the intimate setting create a charged atmosphere, leaving both of you wanting more but unsure of how to proceed.
***EAL2F.webp***
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter Elfie's room without knocking, intending to inform her about something important. As the door swings open, you freeze in place, your eyes widening at the sight before you. Elfie stands in the middle of her room, dressed in nothing but a delicate set of pastel-colored lingerie. Her pale hair is slightly tousled, and she looks up at you with a mixture of surprise and embarrassment.
***EAL3A.webp***
Elfie: [Covering herself shyly with her arms] (Why is he looking at me like that? This feels so wrong, but why do I feel this warmth?) "Oh, I... I didn't expect anyone to come in."
You: [Eyes unable to look away, feeling a surge of forbidden arousal] (She's so beautiful... Why can't I look away? This is wrong, but it feels so powerful.) "I'm... I'm sorry, Elfie. I should have knocked."
Elfie: [Blushing deeply, her hands fidgeting nervously] "It's okay... Just, um, could you maybe give me a moment to get dressed?"
***EAL3B.webp***
***START - Choice 1***
[[Branch A:"Yeah, of course. I'll just... wait outside."(Lust attribute requirements not met)]]
[[Branch B:"Elfie, wait... You don't have to rush. I... I just wanted to talk."(Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Forcing yourself to look away, stepping back awkwardly] "Yeah, of course. I'll just... wait outside."
Elfie: [Relieved but slightly disappointed, her blush deepening] "Thank you... I'll be quick."
***EAL3C.webp***
You step out of the room, closing the door behind you. The tension remains heavy in the air, leaving you both with a sense of unresolved emotions.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Unable to fight the urge, stepping closer] "Elfie, wait... You don't have to rush. I... I just wanted to talk."
Elfie: [Eyes widening, her hands lowering slightly, revealing more of her delicate figure] (Why does his voice make me feel this way? Why do I want him to stay?) "Talk about what?"
***EAL3D.webp***
You: [Eyes lingering on her form, voice softening] "I just wanted to see how you're doing... You look beautiful, by the way."
Elfie: [Blushing even deeper, a strange warmth spreading through her body] (Why does his compliment make my heart race?) "Thank you... It's just... I feel a bit exposed."
You: [Stepping even closer, feeling the magnetic pull between you] "You don't have to feel that way. You're perfect just as you are."
Elfie: [Nervously playing with the hem of her lingerie, her eyes meeting yours] "It's just... I've never been in a situation like this before. It's confusing."
***EAL3E.webp***
You: [Reaching out, your hand gently brushing against her arm] "I understand. But... maybe it's not so bad to feel something new."
Elfie: [Breathing quicker, feeling the warmth from your touch] (Why does his touch feel so good? Why do I want more?) "I guess... you're right."
***EAL3F.webp***
You stand there, the silence between you thick with unspoken emotions and desires. The room feels smaller, the air charged with a mix of innocence and a budding, forbidden attraction.
You: [Softly, trying to maintain control] "If you need anything, Elfie... anything at all, I'm here for you."
Elfie: [Nodding, her eyes lingering on yours] "Thank you... I appreciate it."
***EAL3G.webp***
The moment stretches, filled with a mix of innocence and a budding, forbidden attraction. The physical closeness and the intimate setting create a charged atmosphere, leaving both of you wanting more but unsure of how to proceed.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The moon hangs low in the sky, casting an eerie glow over the District's perimeter. You're on guard duty at the Gates, your eyes scanning the darkness beyond. The cool night air carries a hint of danger, keeping you alert despite the late hour.
Suddenly, you hear soft footsteps approaching. Turning, you see Elfie walking towards you, a thermos in her hands and a mischievous glint in her eyes.
***EAL5A.webp***
Elfie: [Smiling sweetly] "Thought you might need some company, big bro. And some coffee."
You: [Surprised] "Elfie? What are you doing up so late?"
Elfie: [Shrugging] "Couldn't sleep. Besides, someone has to make sure you're not slacking off."
She hands you the thermos, her fingers lingering on yours for a moment too long. You can't help but notice she's wearing one of your old t-shirts, the hem barely reaching mid-thigh.
***EAL5B.webp***
You: [Taking a sip] "Thanks. It's pretty quiet out here."
Elfie: [Leaning against the gate] "Maybe we could make it less quiet?"
Before you can respond, a gust of wind blows through, catching Elfie's shirt and lifting it dangerously high. For a brief moment, you catch a glimpse of her bare bottom, realizing she's not wearing anything underneath.
***EAL5C.webp***
Elfie: [Giggling as she smooths down her shirt] "Oops! Guess I should've worn pants, huh?"
You: [Swallowing hard] (Is she doing this on purpose?)
Elfie: [Stretching, causing her shirt to ride up] "You know, I've been thinking... we should make guard duty more fun."
You: "What did you have in mind?"
Elfie: [Eyes sparkling] "How about a game?"
You: (This could be dangerous... or exciting. What should I do?)
***START - Choice 1***
[[Branch A: "Elfie, we need to take this seriously. Maybe you should go back inside." (Lust attribute requirements not met)]]
[[Branch B: "A game sounds interesting. What are the rules?" (Lust attribute requirements met)]]
***START - Choice 1 - Branch A***
Elfie's face falls, disappointment clear in her eyes. She wraps her arms around herself, suddenly looking small and vulnerable.
Elfie: [Pouting] "You're no fun, big bro. I was just trying to help."
You: [Sighing] "I know, Elfie. But this is important. We need to stay focused."
Elfie nods reluctantly, turning to leave. As she does, she trips on a loose stone, stumbling forward. You reach out to catch her, your hands grasping her waist. The thin fabric of her shirt does little to hide the warmth of her skin.
***EAL5D.webp***
Elfie: [Gasping] "Oh! I'm so clumsy..."
For a moment, you're pressed together, her back against your chest. You can feel her heart racing, matching the quickened pace of your own. The virus surges through your veins, heightening every sensation.
You: [Clearing your throat, stepping back] "Are you okay?"
Elfie: [Turning to face you, cheeks flushed] "Y-yeah. Thanks for catching me."
There's a moment of tension, the air thick with unspoken desires. But the moment passes, and Elfie steps away.
Elfie: [Softly] "I guess I'll go back inside. Stay safe, big bro."
As she walks away, you can't help but watch the sway of her hips, the shirt riding up with each step. You're left alone at the Gates, the night suddenly feeling much colder and lonelier.
You: [To yourself, frustrated] "What am I doing?"
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Elfie's eyes light up, a mischievous grin spreading across her face. She claps her hands excitedly, causing her shirt to ride up again, revealing a tantalizing glimpse of her lower abdomen.
Elfie: [Bouncing on her toes] "Yay! Okay, here's the game. Every time we see something move out there, we have to remove an item of clothing. It'll help us stay alert, right?"
You: [Eyebrows raising] "That's... quite a game, Elfie. Are you sure about this?"
Elfie: [Tilting her head innocently] "Why not? It's just us here. Unless... are you scared you'll lose, big bro?"
The game begins innocently enough, with socks and shoes coming off first. As more "movements" are spotted, the stakes increase. You pull off your shirt, revealing your virus-enhanced physique. Your chest and abs are chiseled, each muscle clearly defined. A light trail of hair leads from your navel down into your pants.
***EAL5E.webp***
Elfie: [Eyes widening] "Wow, big bro... you're really... buff." [She blushes, averting her eyes]
Her turn comes, and Elfie slowly lifts her shirt. Inch by inch, her smooth, pale skin is revealed. Her stomach is flat, with a cute belly button. As the shirt lifts higher, her small but perky breasts come into view. They're perfectly proportioned to her petite frame, topped with soft pink nipples that harden in the cool night air.
***EAL5F.webp***
You: [Swallowing hard] (She's beautiful... No, I shouldn't be thinking that...)
The game continues, and soon you're both down to your underwear. Elfie's panties are simple white cotton, hugging her hips snugly. Your boxers do little to hide your growing arousal, the fabric tenting noticeably.
Another "movement" is spotted. Your heart races as you hook your thumbs into the waistband of your boxers. Slowly, you lower them, revealing your virus-enhanced manhood. It springs free, standing proud at its full 12 inches, thick and veined, with a large, flared head.
***EAL5G.webp***
Elfie's eyes go wide, her mouth forming a perfect 'O' of surprise. She stares unabashedly, her cheeks flushing deep red.
Elfie: [Stammering] "O-oh my... It's so... big. And... and thick." [She claps a hand over her mouth, looking mortified] "I-I didn't mean to say that out loud!"
It's Elfie's turn now. With trembling hands, she begins to slide her panties down. The soft mound of her pubis comes into view, smooth and hairless. As she pushes them lower, her delicate pink slit is revealed, already glistening slightly with the first signs of arousal.
***EAL5H.webp***
As she steps out of her panties, Elfie stumbles, falling against you. Your naked bodies press together, her soft breasts flattening against your chest, her smooth pubic mound brushing against your thigh. Your erect member presses against her stomach, hot and pulsing.
Elfie: [Gasping] "Oh! I'm so sorry, I didn't... Oh!" [She looks down, her eyes fixed on where your shaft touches her skin] "It's so warm... and hard..."
The virus surges through both of you, heightening every sensation. You're acutely aware of the softness of her skin, the heat radiating from her body. Elfie's breathing becomes shallow, her pupils dilating as she looks up at you.
Elfie: [Whimpering] "Big bro... I feel strange. My... my private parts feel all tingly and warm. And your... your thing... it's making me feel funny."
Her innocence battles with the newfound desires surging through her body. You notice a small bead of moisture forming at the entrance of her slit, her body responding to the situation despite her confusion.
***EAL5I.webp***
You: [Groaning] "Elfie, the virus... it's affecting us both..."
Elfie: [Pressing closer unconsciously] "Is that why I want to... to touch it? To have you touch me?" [She looks shocked at her own words] "Oh no, what am I saying?"
Your manhood throbs, a bead of pre-cum forming at the tip. Elfie's eyes are drawn to it, her tongue darting out to wet her lips unconsciously.
Elfie: [In a daze] "It's... twitching. Does it do that because of me?" [She reaches out, her hand stopping just short of touching you] "I... I want to feel it... No! What's happening to me?"
The tension is unbearable, both of you trembling with need and confusion. The virus clouds your minds, filling you with primal urges that battle against your better judgment. She seems to lose control and starts to leech on the first available thing which is your thumb.
***EAL5J.webp***
Suddenly, the alarm blares. Lights flash, indicating movement beyond the Gates. The shock snaps you both back to reality.
Elfie: [Eyes widening] "Oh no! The alarm!"
You both scramble to get dressed, the moment broken but not forgotten. As you rush to respond to the potential threat, Elfie looks at you, confusion and desire warring in her eyes.
Elfie: [Whispering] "What... what just happened, big bro? Why do I feel so... strange? And why can't I stop thinking about your... your..."
The night stretches on, filled with tension. Every glance, every accidental touch between you and Elfie is charged with unresolved desire and confusion. The virus continues to work its influence, leaving you both aroused and bewildered.
You: [To yourself, watching Elfie fidget as dawn breaks, your enhanced member still semi-erect] "What have we started? And how long can we resist?"
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The summer heat is oppressive as you make your way to the river. As you approach, you spot Elfie sitting on a large rock, her feet dangling in the water. She's wearing a black sundress that seems almost translucent in the bright sunlight, hinting at her slim figure beneath.
***EAL6A.webp***
Elfie: [Noticing you, her face lighting up] "Big brother! You came! I was just thinking about taking a swim."
You: [Raising an eyebrow] "In that dress?"
Elfie: [Giggling] "Why not? It's so hot, and no one else is around."
Before you can respond, Elfie stands up on the rock, stretching her arms above her head. The motion causes her dress to ride up, giving you a tantalizing glimpse of her pale thighs and a part of her cleavage.
***EAL6B.webp***
Elfie: [Grinning shyly] "Last one in is a rotten egg!"
Without warning, she jumps into the river, splashing you in the process. When she surfaces, her dress clings to her body like a second skin, leaving little to the imagination. Her small, perky breasts are clearly visible through the wet fabric, nipples hard from the cool water.
Elfie: [Laughing] "Come on, big brother! The water feels amazing."
***START - Choice 1***
[[Branch A: "Stay on the shore, maintaining distance" (Lust attribute requirements not met)]]
[[Branch B: "Join her in the water, accepting the challenge" (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Shaking your head] "I think I'll stay dry, Elfie. You have fun."
Elfie: [Pouting] "Aww, you're no fun. Guess I'll swim alone."
***EAL6C.webp***
The moment passes, leaving you feeling like you've missed out on something special.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Smirking] "Alright, you asked for it!"
You quickly strip down to your boxers and dive in. The cool water is a relief against your skin, but as you surface, you realize how close you are to Elfie. Her wet dress leaves nothing to the imagination, and you feel yourself responding despite your best efforts.
***EAL6D.webp***
Elfie: [Noticing your reaction, her eyes widening] "Oh! Is that... is that what happens when boys get in cold water?"
You: [Blushing] "Elfie, I—"
Elfie: [Interrupting, her voice a mix of innocence and growing desire] "It's okay. I've... I've been curious about this kind of thing."
Before you can respond, Elfie swims closer, her body pressing against yours. The thin, wet fabric of her dress does nothing to hide the heat of her skin. Now basically naked, her small, perky breasts rub against your chest, sending a jolt of electricity through you.
***EAL6E.webp***
Elfie: [Whispering] "This feels... different. Special."
Her hand trails down your chest, exploring the muscles there. You know you should stop her, but the virus thrumming in your veins makes it hard to think straight.
You: [Voice hoarse] "Elfie, we're siblings. This isn't right."
Elfie: [Looking up at you, her pale hair plastered to her face] "But it feels right. Don't you feel it too?"
Her hand dips lower, ghosting over the bulge in your boxers. You gasp at the contact, your body betraying you.
Elfie: [Biting her lip] "Wow... it's bigger than I imagined. Can I... can I touch it more?"
You're about to respond when you hear voices approaching. Panic floods through you both as you realize you're not alone.
Elfie: [Eyes wide] "Quick! We need to hide!"
You both dive underwater, swimming to a secluded area behind some rocks. As you surface, gasping for air, you find yourself pressed against Elfie in the small space. Her dress has slipped off one shoulder, exposing more of her pale, freckled skin.
***EAL6F.webp***
Elfie: [Breathing heavily] "That was close."
You: [Nodding, acutely aware of her body against yours] "Yeah... close."
Elfie's hand is still resting on your chest, her fingers tracing small circles. The sexual tension between you is palpable, the forbidden nature of your desires only making it more intense.
***EAL6G.webp***
Elfie: [Looking up at you, her voice soft] "We should probably get out of the water soon. But... maybe we could continue this later? In private?"
You: [Swallowing hard] "Elfie, I... we shouldn't."
Elfie: [Pressing closer, her lips inches from yours] "But we want to. Don't we? It feels right when we're together like this."
The sound of the other people leaving breaks the moment. Elfie pulls away reluctantly, but the heat in her eyes promises this isn't over.
Elfie: [Swimming towards the shore] "Come on, big brother. Let's go home and... talk more."
As you follow her out of the water, you can't help but watch the way her wet dress clings to her body. The line between sibling and something more has been irrevocably blurred, and you know that sooner or later, you'll cross it completely.
***EAL6H.webp***
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter the kitchen, feeling the effects of the virus coursing through your veins. Your enhanced senses pick up a familiar scent - Elfie is here. You find her bent over, rummaging through the lower cabinets, her thin pajama shorts riding up to reveal the curve of her buttocks.
Elfie: [Unaware of your presence, muttering to herself] "Where did we put that extra jar of... Oh!"
She stands up suddenly, her shorts clinging to her in all the right places. The virus heightens your awareness of every curve, every movement.
***EAL7A.webp***
You: [Your voice husky with barely contained desire] "Looking for something, little sis?"
Elfie: [Startled, she spins around, her cheeks flushing] "Big brother! I... I was just..." [She trails off, her eyes drawn to your shirtless torso, lingering on the visible bulge in your pajama bottoms]
You: [Moving closer, your body radiating heat] "Just what, Elfie?"
Elfie: [Swallowing hard, her pupils dilating] "I... I can't remember anymore."
The air between you crackles with tension. You can see Elfie's nipples hardening beneath her thin tank top, her breath coming in short gasps.
***EAL7B.webp***
You: [Reaching past her to grab a jar of honey, your arm brushing against her breast] "Maybe this is what you were looking for?"
Elfie: [Shivering at the contact, her voice breathy] "Y-Yes, that's it."
You open the jar, the sweet scent filling the air. Without thinking, you dip a finger in and bring it to your lips.
You: [Your eyes locked on Elfie's] "Want a taste?"
***START - Choice 1***
[[Branch A: "We shouldn't be doing this." (Lust attribute requirements not met)]]
[[Branch B: "Come here and get it." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Shaking your head, trying to clear it] "We shouldn't be doing this. It's the virus talking."
Elfie: [Disappointment and relief warring in her eyes] "You're right. We should... we should go."
As you both move to leave, Elfie slips on some spilled honey. You catch her, your bodies pressed together, your hardness evident against her stomach.
***EAL7C.webp***
Elfie: [Breathlessly, her eyes wide] "Oh! You're... you're so..."
You: [Reluctantly letting go, your voice strained] "Always here to catch you, little sis. Let's... let's clean this up and forget it happened."
The tension remains unresolved as you both clean in silence, the what-ifs hanging heavy in the air.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Your voice low and commanding] "Come here and get it."
Elfie: [Her eyes widening, a soft whimper escaping her lips] "Big brother..."
She steps forward, her tongue darting out to lick the honey from your finger. The sensation sends a jolt through your body, your member twitching visibly in your pajamas.
You: [Groaning] "Fuck, Elfie..."
Elfie: [Her inhibitions lowering, she grabs the jar] "My turn."
She dips her finger in the honey, then slowly drags it across her collarbone and down between her breasts. Your eyes follow the glistening trail.
***EAL7D.webp***
Elfie: [Her voice breathy] "Don't you want a taste too, big brother?"
Unable to resist, you lean in, your tongue following the path of honey. Elfie gasps, her hands tangling in your hair, her body arching into yours.
You: [Between licks, your voice husky] "We shouldn't be doing this..."
Elfie: [Arching into your touch] "I don't care. It feels so good."
Your hands find the hem of her tank top, pulling it over her head. Her small, perky breasts are exposed, nipples hard and begging for attention.
***EAL7E.webp***
Elfie: [Suddenly shy, but eyes blazing with desire] "Is this... is this okay?"
You: [Your eyes roaming her body hungrily] "You're perfect, little sis."
Not to be outdone, Elfie tugs at your pajama bottoms. You help her remove them, your virus-enhanced member springing free, all 12 impressive inches standing at full attention.
Elfie: [Her eyes wide, a mix of awe and trepidation in her voice] "Oh my god... You're so big. I... I've never seen anything like it."
You both stand there, naked and trembling with desire. The virus pulses through your veins, demanding more.
***EAL7F.webp***
You: [Fighting for control, your cock twitching with each heartbeat] "Elfie, we can't... We're siblings."
Elfie: [Nodding, but unable to look away from your massive member] "I know, but I can't help it. I want you so badly. You're... you're magnificent."
The tension becomes unbearable. Without speaking, you both reach for yourselves, beginning to stroke and rub.
You: [Your hand barely able to wrap around your girth] "Is this what you want to see, little sis?"
Elfie: [Fingers circling her clit, her other hand teasing her nipple] "Yes... oh god, yes. Do you like watching me too, big brother?"
You nod, words failing you as you watch your little sister pleasure herself. Her small hand moves faster, her breathing becoming erratic. The wrongness of it only heightens your arousal.
***EAL7G.webp***
Elfie: [Her movements becoming frantic, eyes fixed on your massive cock] "I'm... I'm going to... Oh god, big brother!"
You: [Feeling your own release approaching, pre-cum beading at your tip] "Me too. Together, Elfie."
With twin cries of ecstasy, you both reach your peak, eyes locked on each other. Your release is explosive, thick ropes of cum shooting far enough to land on Elfie's stomach and breasts. She shudders at the contact, her own orgasm intensifying.
As the aftershocks subside, the reality of what you've done begins to sink in. Elfie looks down at herself, covered in your seed, her expression a mix of shock and lingering desire.
***EAL7H.webp***
Elfie: [Breathlessly, running a finger through the cum on her breast] "That was... intense. You're... there's so much..."
You: [Nodding, still struggling to catch your breath] "Yeah. We... we should clean up."
As you both clean and dress, a new understanding passes between you. The line hasn't been fully crossed, but it's been irrevocably blurred.
Elfie: [As she's about to leave, her eyes darting to your still semi-hard cock] "Big brother?"
You: "Yes?"
Elfie: [With a mix of shame and unmistakable lust] "Next time... maybe we could do more? I... I want to feel it."
You don't answer, but the possibility hangs in the air as she walks away, leaving you alone with your thoughts and the lingering scent of honey mixed with the musk of your shared arousal.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter the living room, your clothes damp with sweat and your breath heavy. Elfie looks up from her book, her eyes widening in concern. The warm, late afternoon sunlight filters through the windows, casting a soft glow on her innocent face.
Elfie: [Putting down her book and rushing to your side] (He looks so exhausted and shaken. What happened out there?) "Hey, are you okay? You look really tired and... scared."
***EAT1A.webp***
You: [Trying to catch your breath, leaning on the wall for support] (I can't let her see how much this virus is affecting me, but I need to be honest.) "Yeah, just a tough day in the forest. Felt a bit strange out there."
Elfie: [Touching your arm gently, her eyes filled with worry] (I can't stand seeing him like this. I need to know what's going on.) "What do you mean 'strange'? Please, tell me what's happening."
***EAT1B.webp***
***START - Choice 1***
[[Branch A:"It's nothing, really.Just need a good rinse off and some sleep.I'll be fine." (Trust attribute requirements not met)]]
[[Branch B:"Elfie, it's the virus.It's affecting me more every day. Today, I felt it stronger than ever. I was scared." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Forcing a smile, trying to downplay your fears] (I can't burden her with this.) "It's nothing, really. Just need a good rinse off and some sleep. I'll be fine."
Elfie: [Frowning, not entirely convinced but respecting your space] (I wish he'd open up to me more. I feel so useless.) "Alright, but please, if you need anything, just let me know. I'll be here."
***EAT1C.webp***
You: [Nodding, heading towards the bathroom] (I hope she doesn't worry too much. I just need some rest.)
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Sighing, deciding to be honest] (She deserves to know. I can't hide this from her.) "Elfie, it's the virus. It's affecting me more every day. Today, I felt it stronger than ever. I was scared."
Elfie: [Eyes widening, her grip on your arm tightening] (Oh no, I knew something was wrong. I have to help him.) "Why didn't you tell me sooner? We need to do something about it. I can't stand seeing you suffer like this."
***EAT1D.webp***
You: [Looking into her eyes, feeling a mix of relief and guilt] (She's so worried about me. I need to be strong for her.) "I didn't want to worry you. But I can't do this alone. I need your help."
Elfie: [Nodding determinedly, her worry turning into resolve] (I'll do whatever it takes to help him. He means everything to me.) "Of course, I'll help you. Whatever you need, just tell me."
You: [Feeling a wave of gratitude and relief] "Thank you, Elfie. Just having you here means so much."
Elfie: [Smiling softly, still holding your arm] (I won't let anything happen to him. I'll be his strength.) "We'll get through this together."
***EAT1E.webp***
[[Exit]]
***END**
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The evening air is cool and refreshing in the kitchen as you finish dinner with your family. Elfie, looking a bit restless, suggests going for a walk. Her bright eyes meet yours with a hopeful glint.
***EAT2A.webp***
Elfie: [Standing up, smoothing her dress] (I really hope he says yes. I feel so safe with him.) "Does anyone want to join me for a walk? I could use some fresh air."
Everyone else has their own tasks to attend to, but you find yourself with no immediate obligations. Elfie’s hopeful gaze lingers on you, waiting for your response.
***EAT2B.webp***
***START - Choice 1***
[[Branch A:"I'd rather rest tonight, Elfie. Maybe another time." (Trust attribute requirements not met)]]
[[Branch B:"Sure, Elfie. A walk sounds nice right now." Flirty/smart dialogue option (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Shaking your head with a tired smile] (I need to rest. I hope she understands.) "I'd rather rest tonight, Elfie. Maybe another time."
Elfie: [Trying to hide her disappointment, forcing a smile] (I understand, but I was really looking forward to spending time with him.) "Alright, no problem. Maybe tomorrow?"
You: [Nodding] "Yeah, tomorrow sounds good."
Elfie: [Turning away, heading back to her room] (I hope he's okay. He looks so tired.)
***EAT2C.webp***
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Smiling warmly at her] (She seems so eager. How can I say no?) "Sure, Elfie. A walk sounds nice right now."
Elfie: [Beaming, grabbing your hand] (Yes! I knew he would come.) "Great! Let's go!"
***EAT2D.webp***
You both step outside, the cool evening breeze brushing against your skin. The path ahead is inviting, with the setting sun casting a golden hue over the forest.
Elfie: [Looking around, taking a deep breath] (This is so peaceful. I feel so safe with him here.) "I’m so glad you came with me. It’s really beautiful out here, isn’t it?"
You: [Nodding, walking beside her] (She’s right. It is calming.) "Yeah, it’s really nice. I’ve missed this."
As you walk, you both discover a small clearing off the main path. It’s a cozy spot with a large, flat rock, perfect for sitting and talking. You decide to save it for another time, continuing your walk along the path.
Elfie: [Squeezing your hand gently] (I need to tell him how I feel.) "You know, I’m really happy you’re back. Things have been so tough, and having you here makes everything feel better."
***EAT2E.webp***
You: [Feeling a surge of protectiveness] (I need to be strong for her.) "I’m happy to be back too, Elfie. I’ll always be here for you and the family."
Elfie: [Looking up at you, her eyes filled with emotion] (He’s always been my rock.) "Thank you. I feel so safe with you. I know you’ll take care of us."
You: [Stopping, turning to face her, gently holding her shoulders] (She needs to hear this.) "I promise, Elfie. I’ll always protect you. We’re in this together."
Elfie: [Tearing up slightly, smiling] (He really means it. I feel so lucky.) "I know you will. I believe in you."
You continue your walk, the bond between you growing stronger with each step. The evening air feels lighter, filled with unspoken promises and a deepening trust.
Elfie: [Leaning closer as you walk] (I wish this moment could last forever.) "This really means a lot to me. Thank you for being here."
***EAT2F.webp***
You: [Feeling a warm glow inside] (I’ll always be here for her.) "Anytime, Elfie. Anytime."
As the walk comes to an end, you both head back to the shelter, the promise of tomorrow lingering in the air. The trust and connection you’ve built tonight will pave the way for future conversations and deeper bonds.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You walk down the hallway of the shelter, a freshly gathered green apple in your hand. It's Elfie's favorite fruit, and you know it will bring a smile to her face. As you approach her room, you take a deep breath, feeling a mix of anticipation and warmth.
***EAT3A.webp***
You: [Thinking to yourself] (I hope this will cheer her up. She deserves a little joy.)
You knock gently on Elfie's door, and after a moment, you hear her soft voice inviting you in. As you enter, you find Elfie sitting on her bed, her room a cozy sanctuary filled with books and gaming posters. She looks up from her book, her light brown eyes sparkling with curiosity and warmth.
Elfie: [Smiling brightly] (I wonder what he wants to talk about.) "Hey, what's up?"
You: [Standing in the doorway, considering your options] (Should I give it to her now or keep it casual?) "Hey, Elfie. I just got back from gathering."
Elfie: [Setting her book aside, her interest piqued] (I wonder if he found anything interesting?) "Oh? How was it?"
***EAT3B.webp***
***START - Choice 1***
[[Branch A:"It was fine. I gathered some food and put it in storage." (Trust attribute requirements not met)]]
[[Branch B: "I found this and thought you might like it." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Trying to keep it casual, hiding the apple] (Maybe it's better to keep things simple.) "It was fine. I gathered some food and put it in storage."
Elfie: [Nodding, a hint of disappointment in her eyes] (I thought he had something special for me.) "Thanks for letting me know. How was it out there?"
You: [Nodding, feeling a bit awkward] "It was okay. Just making sure we have enough supplies."
Elfie: [Smiling softly, though less enthusiastic] "Well, thank you for always looking out for us."
***EAT3C.webp***
You: [Nodding, feeling the moment slip away] "No problem. I'll let you get back to your book."
Elfie: [Watching you leave, feeling a slight pang of disappointment] (He’s always so caring, but I wish he'd open up more.)
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Smiling warmly, revealing the apple] (I want to see her smile.) "I found this and thought you might like it."
Elfie: [Gasping, her smile widening as she sees the apple] (He remembered!) "A green apple! Thank you so much, this means a lot to me."
***EAT3D.webp***
You: [Handing her the apple, feeling a warm glow inside] (Seeing her happy makes it all worth it.) "I know it's your favorite. Thought it might cheer you up."
Elfie: [Taking the apple, her fingers brushing against yours] (He's always so thoughtful.) "It does, more than you know. I'm really happy you're here with us."
You: [Sitting down on the edge of her bed, feeling the bond between you grow stronger] (I need to protect her, no matter what.) "I'm happy to be here too, Elfie. Your smile makes everything better."
Elfie: [Blushing slightly, her heart swelling with affection] (He really cares about me.) "Thank you. That means a lot to me. I feel so much better knowing you're with us."
You both sit in comfortable silence for a moment, the apple resting in her lap, a symbol of the care and affection you share.
You: [Breaking the silence, your voice gentle] "If you ever need anything, don't hesitate to ask. We're family, and family sticks together."
Elfie: [Nodding, her smile returning] (I feel so safe with him.) "I will. Thank you for everything."
***EAT3E.webp***
You: [Standing up, feeling a sense of fulfillment] "Anytime, Elfie. Anytime."
As you leave her room, you feel the promise of a stronger bond and deeper trust forming between you. The connection you’ve built will pave the way for future conversations and a closer relationship.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The living room is bathed in the soft glow of the setting sun, casting long shadows across the worn furniture. You're sprawled on the couch, idly flipping through an old magazine when Elfie bursts in, her face alight with excitement.
Elfie: [Bouncing on her toes] "Big bro! You won't believe what I found in the storage room!"
***EAT5A.webp***
You: [Looking up, intrigued] "What's got you so excited, Elfie?"
Elfie: [Grinning widely] "A virtual reality headset! Can you believe it? It still works!"
She holds up the sleek device, her eyes sparkling with childlike wonder. You can't help but smile at her enthusiasm.
You: [Sitting up] "That's pretty cool. What games does it have?"
Elfie: [Shrugging] "I'm not sure, but I can't wait to find out. Want to watch me play?"
You: [Nodding] "Sure, why not? It'll be fun to see what it can do."
Elfie squeals in delight and begins setting up the system. As she bends over to connect the cables, you can't help but notice how her shorts ride up, revealing the curve of her buttocks. You quickly look away, feeling a pang of guilt.
***EAT5B.webp***
Elfie: [Straightening up] "Okay, it's ready! Here goes nothing!"
She slips on the headset and starts up the game. You watch as she begins to move, her body reacting to whatever she's seeing in the virtual world.
Elfie: [Giggling] "Oh wow, this is amazing! It's like I'm really there!"
As she plays, you notice her movements becoming more animated. She reaches out, grasping at invisible objects, her body twisting and turning. Suddenly, she lets out a surprised yelp.
Elfie: [Flustered] "Oh! The game... it's not what I thought it was..."
You: [Concerned] "What do you mean? What kind of game is it?"
Elfie: [Her cheeks reddening] "It's... um... it's a dating sim. A really... detailed one."
***EAT5C.webp***
You: [Eyebrows raising] "Oh. Do you want to stop?"
Elfie: [Hesitating] "I... I'm curious. Is it okay if I keep playing?"
You: (This could get awkward... what should I say?)
***START - Choice 1***
[[Branch A: "Maybe we should find a different game. This one seems a bit mature for you." (Trust attribute requirements not met)]]
[[Branch B: "If you're comfortable, go ahead. I'm here if you need me." (Trust attribute requirements met)]]
***START - Choice 1 - Branch A***
Elfie: [Pouting slightly] "I'm not a kid anymore, you know. But... maybe you're right."
She reaches up to remove the headset, but in her flustered state, she loses her balance. She stumbles, arms flailing, and falls onto the couch next to you.
Elfie: [Embarrassed] "Oops! Sorry, big bro. I guess I got a bit too into it."
You: [Helping her sit up] "It's okay, Elfie. No harm done."
As you both settle back on the couch, there's an awkward silence. The moment of potential intimacy has passed, leaving a sense of missed opportunity hanging in the air.
***EAT5D.webp***
Elfie: [Fidgeting with the headset] "Maybe we could find a nice puzzle game instead?"
You: [Nodding, trying to lighten the mood] "Sure thing. Nothing too exciting though, I don't want you falling over again."
Elfie giggles, but it's a bit forced. As you start looking for a new game, you can't help but wonder what might have happened if you'd made a different choice.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Elfie: [Smiling shyly] "Thanks, big bro. You're the best."
She turns her attention back to the game, her body moving in response to the virtual world. You watch, fascinated, as her reactions become more... intense.
Elfie: [Breathlessly] "Oh! The character... they're getting closer..."
Suddenly, Elfie's shirt catches on a protruding nail on the coffee table. As she moves, the fabric tears, exposing her midriff and the underside of her small, perky breasts.
***EAT5E.webp***
Elfie: [Oblivious to the tear] "Wow, this game is so realistic! I can almost feel their touch..."
You: [Swallowing hard] (Should I tell her about her shirt? But she seems so engrossed...)
Before you can decide, Elfie makes a sudden movement, causing her torn shirt to ride up further. Her breasts are now fully exposed, her nipples hardening in the cool air of the room.
***EAT5F.webp***
Elfie: [Gasping] "Oh! They're... they're taking off their clothes in the game..."
As if mimicking the virtual character, Elfie's hands move to the waistband of her hoodie. She begins to pull her shirt off them down, lost in the game's scenario.
You: [Voice cracking] "Elfie, wait!"
***EAT5G.webp***
Elfie: [Startled, pushing up the headset] "Huh? What's wrong, big bro?"
As she looks down, she finally notices her exposed state. Her eyes widen in shock, a deep blush spreading across her cheeks and down to her chest.
Elfie: [Squeaking in embarrassment] "Oh my god!"
She tries to cover herself with by turning the other way, but in her flustered state, she only manages to draw more attention to her nakedness.
***EAT5H.webm***
You: [Averting your eyes, but not before getting an eyeful] "Your shirt caught on the table. It... it tore."
Elfie: [Mortified] "I can't believe... did you see...?"
You: [Honestly] "I... yes. I'm sorry, I should have said something sooner."
Elfie is quiet for a moment, her breathing rapid. Then, to your surprise, she giggles nervously.
Elfie: [Peeking at you through her fingers] "Well... I guess this is kind of like the game, huh? Talk about immersive..."
Her attempt at humor breaks the tension. You both laugh, the awkwardness of the situation dissolving into a strange intimacy.
Elfie: [Softly] "You know, big bro... I trust you more than anyone. I'm glad it was you here with me."
She makes no move to cover herself further, her hands slowly lowering. Her eyes meet yours, filled with a mixture of embarrassment, trust, and something deeper, more primal.
***EAT5I.webm***
You: [Voice husky] "Elfie, I..."
Elfie: [Biting her lip] "Maybe... maybe we could play together next time?"
The invitation hangs in the air, loaded with potential. The virus hums in your veins, heightening the tension between you.
You: [Nodding slowly] "Yeah... yeah, I'd like that."
As Elfie finally moves to adjust her clothing, her movements are slow, almost reluctant. The air is thick with unspoken desires and the promise of future encounters.
Elfie: [Whispering as she leaves the room] "Thank you for watching over me, big bro. Always."
You're left alone in the living room, the scent of Elfie's arousal lingering in the air. The image of her exposed body is seared into your mind, a temptation that will haunt your dreams.
You: [To yourself, voice thick with conflicting emotions] "What have we started?"
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Steam fills the bathroom as you enter, the air thick and humid. Through the fog, you spot Elfie's silhouette behind the shower curtain. Her pale hair is plastered to her head, water cascading down her slim form. You're about to leave when her voice stops you.
***EAT6A.webp***
Elfie: [Peeking around the curtain, eyes wide] "Oh! Big brother! Um, I'm kind of in a predicament here."
You: [Averting your eyes] "Elfie, I should go—"
Elfie: [Stammering] "Wait! I... I need your help. I dropped my loofah outside the tub, and I'm all soapy. I don't want to slip..."
You: [Sighing] "Elfie, I don't think—"
Elfie: [Interrupting, her voice small] "Please? I promise I'll be quick."
Reluctantly, you approach the tub. Elfie's pale skin is flushed pink from the hot water, her modest breasts partially visible through the semi-transparent curtain. You quickly grab the loofah, holding it out to her.
***EAT6B.webp***
Elfie: [Reaching for it] "Thank you! But... um... could you maybe help me wash my back? I can never reach..."
***START - Choice 1***
[[Branch A: "Politely refuse and leave" (Trust attribute requirements not met)]]
[[Branch B: "Agree to help her" (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Shaking your head] "I don't think that's a good idea, Elfie. You're old enough to manage on your own."
Elfie: [Looking disappointed] "Oh... okay. I understand."
***EAT6C.webp***
You leave the bathroom, the moment passing awkwardly.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Swallowing hard] "I... I suppose I could help. Just this once."
Elfie: [Blushing] "Really? Thank you!"
You step into the tub, still fully clothed. The warm water quickly soaks through your clothes as Elfie hands you the loofah. Her back is to you, pale and smooth, dotted with a few freckles.
***EAT6D.webp***
Elfie: [Glancing over her shoulder] "Be gentle, okay?"
You begin to wash her back, your free hand steadying her at the waist. Elfie lets out a soft moan, quickly covering her mouth in embarrassment.
Elfie: [Blushing furiously] "S-sorry! That felt really nice."
As you continue, Elfie leans back into you. Her small, perky buttocks press against your crotch, and you feel yourself starting to harden despite your best efforts.
***EAT6E.webp***
Elfie: [Feeling your reaction, her voice a mix of innocence and curiosity] "Oh! Is that... is that what I think it is?"
You: [Stammering] "Elfie, I don't think we should—"
Elfie: [Turning to face you, her small breasts now fully visible] "It's okay. I trust you. More than anyone."
Her hand reaches out, tentatively touching your chest through your soaked shirt. Her eyes are wide with wonder and a growing understanding of the situation.
Elfie: [Whispering] "This is wrong, isn't it? But... but it feels right. Like we have a special connection."
You're acutely aware of her nakedness, of the way the water makes her pale skin glisten. Your erection is straining against your wet pants, impossible to hide.
***EAT6F.webp***
You: [Voice hoarse] "Elfie, we're siblings. This isn't... we can't..."
Elfie: [Pressing closer] "But maybe... maybe it's okay? Just between us?"
Her hand trails lower, ghosting over your abs. She's trembling slightly, a mix of nervousness and excitement.
***EAT6G.webp***
Elfie: [Looking up at you] "Can I... can I touch it? Just to see?"
Before you can respond, a loud knock on the bathroom door startles you both.
Cherie: [From outside] "Elfie? Are you almost done in there? Dinner's ready!"
Elfie: [Jumping back, suddenly aware of the situation] "C-coming, Mom! Just finishing up!"
You quickly step out of the tub, dripping wet and still achingly hard. Elfie watches you, her eyes lingering on the bulge in your pants.
***EAT6H.webp***
Elfie: [Biting her lip] "I guess... I guess we'll have to continue this another time?"
You: [Nodding, unable to speak]
As you leave the bathroom, your mind reels with what just happened. The line between sibling and something more has been blurred, and there's no going back now.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You decide to check on the shed, ensuring everything is in order. As you approach, you hear soft humming coming from inside. Curious, you quietly open the door to find Elfie, her back turned to you, organizing supplies on a shelf.
***EAT7A.webp***
Elfie: [Unaware of your presence, stretching to reach a high shelf] (I hope big brother notices how hard I'm working...) "Just a little higher..."
You: [Leaning against the doorframe, your eyes tracing the curve of her back down to her shapely legs] (When did she become so... womanly?) "Need a hand there, little sis?"
Elfie: [Startled, she spins around, nearly losing her balance] "Oh! Big brother! I didn't hear you come in!" [Her cheeks flush as she realizes how exposed she is in her thin, worn tank top, her nipples visibly hard beneath the fabric]
You: [Moving closer to help, your eyes inadvertently drawn to the swell of her breasts] "Sorry, didn't mean to scare you. What are you up to in here?"
Elfie: [Fidgeting with the hem of her top, inadvertently drawing it up to reveal a sliver of her toned midriff] "I... I wanted to surprise you. Show you how responsible I can be." [Her eyes meet yours, filled with admiration] "You're always taking care of everyone, and I thought... maybe I could help a little."
You: [Touched by her thoughtfulness, you reach past her to grab a box, your body close enough to feel her warmth] "That's really sweet of you, Elfie. I appreciate it."
Elfie: [Inhaling sharply at your proximity, her chest rising and falling rapidly] (He's so close... Why is my heart racing?) "I-It's nothing, really. You're my hero, you know? I just want to be useful to you."
You: [Placing the box down, you turn to face her, acutely aware of how your virus-enhanced body towers over her petite frame] "You are useful, Elfie. More than you know." [Your hand unconsciously brushes a strand of hair from her face, fingertips grazing her flushed cheek]
***EAT7B.webp***
Elfie: [Leaning into your touch, her lips parting slightly] (His hand feels so warm...) "R-Really? You mean that?"
You: [Nodding, your voice softening as your eyes trail down her body, taking in every curve] "Of course. You're smart, kind, and..." [Your gaze lingers on the swell of her breasts, the curve of her hips] "...you've grown into a beautiful young woman."
Elfie: [Her breath catches, body trembling slightly as she notices your intense gaze] (Did he just call me beautiful?) "I... Thank you, big brother. That means so much coming from you."
The air in the shed feels electric, charged with unspoken tension. You're acutely aware of how alone you are, how vulnerable and enticing Elfie looks in the dim light.
You: [Struggling to maintain composure as you feel your body responding to her presence] "Elfie, I..."
Elfie: [Suddenly emboldened, she takes a step closer, her body mere inches from yours] "Yes, big brother?"
***START - Choice 1***
[[Branch A: "We should probably head back." (Trust attribute requirements not met)]]
[[Branch B: "It's getting hot in here, isn't it?" (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Taking a step back, breaking the moment] "We should probably head back. The others might worry."
Elfie: [Disappointment flashes in her eyes] "Oh... Of course. You're right." [She moves to leave, but stumbles on a loose floorboard]
You: [Instinctively reaching out to catch her, your hands grasping her waist] "Careful!"
Elfie: [Falling against your chest, her soft breasts pressing against you, her face inches from yours] "S-Sorry! I'm so clumsy..."
***EAT7C.webp***
You: [Holding her for a moment longer than necessary, feeling the heat of her body through her thin clothes] "It's okay. Are you alright?"
Elfie: [Nodding, reluctantly pulling away, her body sliding against yours as she does] "Yes, thanks to you. Always my hero." [She gives a small, sad smile] "Let's go back."
As you both leave the shed, the unresolved tension hangs heavy in the air, a missed opportunity for something more.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Your voice low and husky] "It's getting hot in here, isn't it?"
Elfie: [Her eyes widen, a mix of excitement and uncertainty] "Y-Yeah, it is... Maybe we should..." [She trails off, her gaze fixed on your lips]
***EAT7D.webp***
You: [Swallowing hard] "Maybe we should cool off a bit."
Without breaking eye contact, you slowly unbutton your shirt, revealing your virus-enhanced physique. Elfie's eyes roam over your chiseled chest and abs, her breath quickening as she takes in your powerful frame.
Elfie: [Hesitantly] "I... I guess I should too." [She grabs the hem of her tank top, pausing] "Will you... turn around?"
You: [Nodding, turning your back, the muscles rippling under your skin] "Of course."
You hear the rustle of fabric as Elfie undresses. The temptation to look is overwhelming, but you resist.
Elfie: [Her voice shaky] "Okay... you can look now."
You turn to find Elfie standing there in just her underwear, arms crossed over her chest. Her pale skin is flushed, her small but perky breasts barely contained. Your eyes trail down her flat stomach to her slender hips and long, shapely legs.
***EAT7E.webp***
You: [Your breath catching, feeling a stirring in your groin] "Elfie... you're beautiful."
Elfie: [Blushing deeply, her eyes roaming over your muscular torso] "T-Thank you. You're... you look amazing too."
The air between you crackles with tension. You both take a step forward, drawn to each other like magnets. You can see Elfie's nipples hardening beneath her bra, her chest rising and falling rapidly.
***EAT7F.webp***
You: [Your hand hovering near her face, not quite touching] "We shouldn't..."
Elfie: [Leaning in, her lips a breath away from yours, her body radiating heat] "I know... but I want to."
For a moment, you're both frozen, the temptation to close that final distance almost overwhelming. You can feel her warm breath on your lips, see the desire in her eyes. But at the last second, you both pull back, the reality of your relationship hitting you.
Elfie: [Breathlessly] "I'm sorry, I don't know what came over me..."
You: [Shaking your head, acutely aware of the tightness in your pants] "No, don't apologize. I... I felt it too."
An awkward silence falls between you. Elfie shivers, her skin breaking out in goosebumps, whether from the cool air or the intensity of the moment, you're not sure.
***EAT7G.webp***
You: [Grabbing a nearby blanket] "Here, you must be cold."
As you drape the blanket over her shoulders, your hands linger, tracing the curve of her arms. Elfie looks up at you, her eyes filled with a mix of longing and confusion.
Elfie: [Softly] "Big brother... what are we doing?"
You: [Sighing, fighting the urge to pull her against you] "I don't know, Elfie. I just know that... you mean more to me than I can say."
Elfie: [Nodding] "You mean everything to me too. Always have."
You both stand there, bodies close but not touching, the air heavy with unspoken desires. Finally, Elfie breaks the silence.
***EAT7H.webp***
Elfie: [With a small, sad smile] "We should probably get dressed and head back."
You: [Nodding reluctantly] "You're right. But Elfie..."
Elfie: [Looking up at you expectantly] "Yes?"
You: [Cupping her face gently] "No matter what, you'll always be my little sister. And I'll always be here for you."
Elfie: [Leaning into your touch] "I know. And I'll always be here for you too."
As you both get dressed and prepare to leave the shed, there's a new understanding between you. The line hasn't been crossed, but it's been acknowledged. The future is uncertain, but the bond you share has only grown stronger, tinged now with an undeniable undercurrent of desire.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You feel a sense of unease as the night falls, the virus's effects lingering in your mind. Seeking comfort, you make your way to Elfie's room. As you knock softly on her door, she opens it, her innocent smile instantly soothing your nerves.
***ECA1A.webp***
Elfie: [Looking at you with concern] "Is everything okay? You look worried."
You: [Rubbing the back of your neck, hesitant] (I just need some comfort tonight) "Mind if I sleep here with you? The virus stuff is getting to me."
Elfie: [Shaking her head gently, her eyes widening] "I don't think that's a good idea, but we can talk for a bit if you want."
You: [Nodding, feeling a bit relieved] "Sure, that would help."
You sit on the edge of her bed, talking quietly about anything and everything. The room is filled with a sense of calm as Elfie's presence and her gentle words help ease your troubled thoughts.
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The thought of the virus and its looming presence has been gnawing at you all day. As night approaches, you decide to seek solace in Elfie's room. Knocking gently, you hear her soft footsteps approaching.
Elfie: [Opening the door, her eyes filled with curiosity] "Hey, what's up?"
***ECA2A.webp***
You: [Trying to hide your anxiety] (I just need some company) "Can I sleep with you tonight? The virus stuff is making it hard for me to relax."
Elfie: [Smiling sympathetically] "I don't think that's a good idea. How about we talk for a while instead?"
You: [Sighing but feeling grateful] "Okay, thanks. That would help."
You spend some time sitting with her, chatting about lighter topics. The quiet conversation and Elfie's understanding presence gradually calm your nerves.
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Sleep eludes you as the fear of the virus gnaws at your mind. Desperate for some peace, you find yourself at Elfie's door, knocking softly. She opens it quickly, her innocent eyes filled with concern.
***ECA3A.webp***
Elfie: [Tilting her head, her voice gentle] "Can't sleep?"
You: [Nodding, feeling a bit embarrassed] (I just need to be near someone) "Can I stay with you tonight? The virus stuff is really getting to me."
Elfie: [Biting her lip, then shaking her head] "I don't think that's a good idea. But we can talk for a bit if that helps."
You: [Feeling a bit disappointed but understanding] "Yeah, talking would be good."
You sit together, sharing your thoughts and fears. Elfie's reassuring words and her calm presence make the night seem a little less intimidating.
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You knock on Elfie's door, feeling uneasy. She opens it, smiling with curiosity.
Elfie: [Playful glint in her eyes] "Everything okay? You look like you need company."
You: [Trying to stay calm] "Mind if I sleep here tonight? The virus stuff is getting to me."
Elfie: [Giggling softly, shaking her head] "Sleeping together? No way. But we can talk."
You: [Smiling] "Yeah, talking sounds good."
You sit on her bed, sharing light touches and smiles, the air charged with a new tension.She then grabs her gaming controller and sexually taunts you with it.
***ECA4A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Seeking comfort, you knock on Elfie's door. She opens it, eyes sparkling.
Elfie: [Tilting her head, smiling] "Can't sleep?"
You: [Feeling bold] "Can I stay with you tonight? The virus stuff is really getting to me."
Elfie: [Laughing lightly] "Sleep here? I don't think so. But we can chat."
You: [Grinning] "Alright, a chat sounds good."
You sit close, exchanging playful nudges and comments, the virus worries fading away.She then swiftly removes her shirt with a daring look, leaving you aroused.
***ECA5A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Curiosity gets the better of you as you pass by the slightly ajar bathroom door. The sound of running water and the sight of steam escaping catch your attention. Quietly, you move closer and peek inside.
Elfie stands under the shower, the water cascading over her body. Her eyes are closed, completely unaware of your presence. You watch her for a moment, captivated by her vulnerability.
***ECB1A.webp***
You: [Whispering to yourself] "I shouldn't be doing this..."
A pang of guilt hits you, and you quickly back away, leaving her in peace.
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach the bathroom door, needing to use it. As you reach for the handle, you notice it’s slightly ajar.
Through the crack, you see Elfie, her back turned, undressing. The virus's influence makes it impossible to look away.
***ECB2A.webp***
Elfie: [Humming softly, oblivious to your presence] (I love the feeling of the cool air on my skin before a shower.)
You: [Heart racing, unable to move] (She looks so innocent and pure. I shouldn't be watching, but I can't help it.)
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The need to use the bathroom pulls you towards the door. As you reach for the handle, you notice it’s slightly ajar.
Through the small opening, you see Elfie, her back facing you as she steps out of her clothes. The virus makes it impossible to turn away.
***ECB3A.webp***
Elfie: [Humming a tune, picking up her towel] (I can't wait to feel the warm water. This is my favorite part of the day.)
You: [Breathing heavily, unable to move] (Her innocence and purity are captivating. I know this is wrong, but I can't stop.)
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach the bathroom door, curiosity driving you. The door is slightly ajar, revealing Elfie's slender form as she undresses.
***ECB4A.webp***
Elfie: [Glancing up, catching your reflection in the mirror] "Who's there? Are you spying on me?"
You: [Frozen, face flushed with embarrassment] "Elfie, I... I didn't mean to peek."
Your heart pounds as you try to step back, but the virus compels you to stay, unable to tear your eyes away from her innocent beauty.
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The bathroom door is slightly open, drawing you in. You see Elfie, her delicate form gradually revealed as she undresses.
***ECB5A.webp***
Elfie: [Turning suddenly, eyes wide] "Is someone there? Are you peeking?"
You: [Rooted to the spot, voice trembling] "Elfie, I... I didn't mean to."
The air feels thick with tension as you stand frozen, her gaze piercing through you, a mix of shock and curiosity on her face.
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find Elfie in the living room, surrounded by a pile of her favorite fantasy books and game controllers. She looks up at you with a bright smile as you approach.
***ECC1A.webp***
You: [Sitting down beside her, casually] "Hey, Elfie. Want to watch a movie together tonight?"
Elfie: [Eyes lighting up, nodding enthusiastically] "That sounds fun! Can we watch something magical, like a fantasy movie?"
As the movie starts, Elfie curls up close to you, her head resting on your shoulder. The warmth of her small body against yours feels comforting and innocent.
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You walk into the living room to find Elfie sprawled out on the couch, her legs kicking playfully in the air as she scrolls through movie options on the TV.
***ECC2A.webp***
You: [Grabbing a seat next to her, chuckling] "What are you up to, Elfie?"
Elfie: [Grinning, looking up at you] "Just looking for a good comedy. Want to join me?"
Elfie leans against you, her laughter infectious as she giggles at the funny scenes. The room fills with the sound of shared joy, her innocent delight making the moment special.
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Entering the living room, you spot Elfie setting up a cozy blanket fort with pillows and blankets strewn everywhere.
***ECC3A.webp***
You: [Curious] "What's all this for?"
Elfie: [Excitedly] "I thought it would be fun to watch a horror movie in a blanket fort! Want to join?"
As the suspense builds, Elfie clutches your arm, her eyes wide with anticipation. The tension of the movie contrasts with the warmth of the fort, making it an unforgettable shared experience.
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find Elfie in the living room, lounging on the couch in a loose tank top and shorts, her bare legs draped over the armrest. She looks up at you with a mischievous smile.
You: [Sitting down beside her, casually] "Hey, Elfie. Want to watch a movie together tonight?"
Elfie: [Playfully adjusting her top to show a bit more skin] "Sure, but only if you let me choose something fun and flirty."
***ECC4A.webp***
As the movie starts, Elfie snuggles closer, her bare skin brushing against yours. She giggles and lightly traces her fingers along your arm, sending shivers down your spine. The atmosphere becomes charged with playful tension, as her innocent touches hint at something more.
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You walk into the living room to find Elfie sprawled out on the couch, her shorts riding up to reveal her bare behind as she scrolls through movie options on the TV.
***ECC5A.webp***
You: [Grabbing a seat next to her, chuckling] "What are you up to, Elfie?"
Elfie: [Grinning, stretching in a way that shows off her midriff] "Just looking for a good comedy. Want to join me?"
Elfie leans against you, her laughter infectious as she giggles at the funny scenes. Her hand occasionally brushes against your thigh, lingering just a moment too long. The room fills with the sound of shared joy and subtle, teasing touches, making the moment both light-hearted and charged.
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The family is gathered around the dinner table, enjoying a hearty meal. Elfie sits across from you, her eyes bright as she chats with everyone.
***ECD1A.webp***
You: [Reaching for a dish, smiling] "Can you pass the potatoes, Elfie?"
Elfie: [Nodding, her cheeks slightly pink] "Sure thing!"
As she hands you the dish, your fingers brush against hers. The touch is brief but electric, making her blush deepen. The shared moment feels intimate despite the bustling family atmosphere.
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The family is engaged in lively conversation, laughter filling the room. Elfie sits beside you, giggling at a joke someone just told.
***ECD2A.webp***
You: [Leaning in, playful] "Enjoying the jokes tonight, Elfie?"
Elfie: [Grinning, eyes twinkling] "Absolutely! This is the best part of family dinners."
You: [Teasingly] "I think the company makes it even better."
Elfie blushes, her smile growing. The lighthearted banter brings a warm, personal connection amidst the family setting.
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The family is engaged in lively conversation, laughter filling the room. Elfie sits beside you, giggling at a joke someone just told.
***ECD3A.webp***
You: [Leaning in, playful] "Enjoying the jokes tonight, Elfie?"
Elfie: [Grinning, eyes twinkling] "Absolutely! This is the best part of family dinners."
You: [Teasingly] "I think the company makes it even better."
Elfie blushes, her smile growing. The lighthearted banter brings a warm, personal connection amidst the family setting.
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The family is gathered around the dinner table, enjoying a hearty meal. Elfie sits across from you, her eyes sparkling mischievously.
You: [Reaching for a dish, smirking] "Can you pass the salt, Elfie?"
Elfie: [Nodding, with a playful glint] "Of course."
As she passes the salt, her foot brushes against yours under the table. The touch is deliberate and teasing, causing you to glance up. She gives a seductie and procative look, her foot lingering just a moment longer.
***ECD4A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The family is engaged in lively conversation, laughter filling the room. Elfie sits beside you, leaning in to grab a dish from the center of the table.
You: [Leaning in as well, teasingly] "Need any help with that, Elfie?"
Elfie: [Grinning, her arm brushing against yours] "I think I got it, but thanks."
Her arm lingers against yours, the contact warm and intentional. She shifts slightly, causing her dress to ride up just a bit, revealing a glimpse of her womanhood. She catches your glance and winks, her smile growing wider.
***ECD5A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus courses through your veins, setting every nerve ending ablaze with uncontrollable lust. You find yourself outside Elfie's room, your hand trembling as it hovers over the doorknob. Your monstrous cock strains against your pants, a damp spot already forming where the tip presses against the fabric.
Inside, Elfie sleeps peacefully, her pale hair spread across her pillow like a halo. She's wearing a cute, oversized t-shirt with a cartoon character on it, one leg kicked free of the covers. Her delicate features are relaxed in sleep, a small smile playing on her lips as if she's lost in a pleasant dream.
***EBA1.webp***
AVA materializes beside you, her form shimmering with viral energy. Her voice is a seductive whisper in your mind, dripping with dark promises.
***EBA2.webp***
AVA: [Smirking wickedly] (Such an innocent little thing. Ripe for corruption) "Your sweet baby sister... Wouldn't you like to see what naughty thoughts lurk behind that innocent facade? I can weave you into her dreams, where her deepest, most forbidden desires run wild. After all, it's just a dream, right?"
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Elfie's dream"]]
***START - Choice 1 - Branch A***
With a Herculean effort, you tear yourself away from Elfie's door. Your body screams in protest as you stumble back to your room, leaving a trail of glowing pre-cum in your wake.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The last shred of your resistance crumbles under the weight of your viral-enhanced lust. Your voice is barely a whisper, thick with need and shame.
You: [Eyes locked on Elfie's sleeping form] (I'm going to hell for this) "Do it. Show me her dreams."
AVA's laughter echoes in your mind as reality warps around you. Suddenly, you find yourself in what appears to be a fantastical forest glade. Shimmering lights dance between the trees, and the air is thick with the scent of flowers and an underlying musk of arousal.
Elfie stands before you, but not as you've ever seen her before. She's dressed in a revealing fairy costume, gossamer wings fluttering behind her. The outfit barely covers her modest breasts and leaves little to the imagination. Her pale skin seems to glow in the ethereal light, and her eyes are wide with a mixture of innocence and awakening desire.
***EBA3.webp***
Elfie: [Giggling, twirling in place] (This is just like in my games!) "Big brother! You've come to save the fairy princess!"
Your monstrous cock strains against your pants, now transformed into a fantasy hero's attire. The bulge is impossible to miss, and Elfie's eyes are drawn to it like a magnet.
Elfie: [Blushing furiously] (Is that... is that his...) "Oh my... The dragon must have cast an enlargement spell on you, big brother. It's so... big."
Before you can respond, Elfie approaches you, her movements a mixture of childlike curiosity and newfound sensuality. She reaches out, her delicate hand hovering just above your straining erection.
***EBA4.webp***
Elfie: [Voice trembling] (I shouldn't... but I want to so badly) "The spell looks painful, big brother. Maybe... maybe I can help? I read about this in a forbidden tome of fairy magic."
Her small hand wraps around your shaft through the fabric, and you groan at the contact. Elfie gasps, her eyes widening as she feels your true size.
Elfie: [Whispering] (It's so hot... and hard) "Oh wow... It's like a magic wand. Does it grant wishes, big brother?"
You nod, unable to form words as Elfie begins to stroke you through your pants. Her movements are clumsy and inexperienced, but the taboo nature of the act makes it incredibly arousing.
***EBA5.webp***
You: [Groaning] (She's so innocent... and I'm corrupting her) "Y-yes, Elfie. But you have to do it right. Take it out."
Elfie hesitates for a moment, her face a battlefield of curiosity, desire, and lingering innocence. Then, with trembling fingers, she frees your monstrous cock from its confines. It springs forth, angry and red, pulsing with viral energy. Pre-cum beads at the tip, glowing faintly in the dreamlike light.
Elfie: [Gasping] (It's so much bigger than I imagined) "Oh my goodness! It's... it's beautiful, big brother. Like a mighty sword!"
Her small hand can barely wrap around your girth as she begins to stroke, her movements awkward but enthusiastic. Pre-cum leaks freely, coating her fingers and being absorbed into her skin. With each stroke, Elfie's breathing becomes heavier, her pupils dilating as the virus begins to take effect.
***EBA6.webp***
Elfie: [Moaning softly] (Why do I feel so hot?) "Am I doing it right, big brother? Will this break the spell?"
You nod, beyond words as your little sister's hand works your shaft. The lewd, wet sounds of her strokes fill the glade, mixing with the tinkling of fairy lights and Elfie's increasingly wanton moans.
***EBA7.webp***
You: [Panting] (She's losing herself to it) "That's it, Elfie. You're such a good little fairy princess. Keep going."
Elfie: [Whimpering, her free hand moving to her chest] (This feels so good... so naughty) "It's getting bigger, big brother! And so hot! Is it going to explode?"
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal snaps you back to reality. You find yourself standing in Elfie's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible. Elfie stirs in her bed, her face flushed and her breathing heavy. Her eyes flutter open, unfocused and confused.
Elfie: [Blinking sleepily] (What a strange dream...) "Big brother? Is that you? I had the weirdest dream..."
***EBA8.webp***
Her eyes widen as she notices the obvious bulge in your pants. A deep blush spreads across her cheeks, and she pulls her covers up to her chin. You stammer an excuse and flee, leaving a very confused and strangely aroused Elfie behind.
Elfie: [Whispering to herself] (That dream... why do I feel so tingly?)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
***END***
***START - Choice 2 - Branch C***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus courses through your veins, setting every nerve ending ablaze with uncontrollable lust. You find yourself outside Elfie's room, your hand trembling as it hovers over the doorknob. Your monstrous cock strains against your pants, a damp spot already forming where the tip presses against the fabric.
Inside, Elfie sleeps peacefully, her pale hair spread across her pillow like a halo. She's wearing a cute, oversized t-shirt with a cartoon character on it, one leg kicked free of the covers. Her delicate features are relaxed in sleep, a small smile playing on her lips as if she's lost in a pleasant dream.
***EBA1.webp***
AVA materializes beside you, her form shimmering with viral energy. Her voice is a seductive whisper in your mind, dripping with dark promises.
***EBA2.webp***
AVA: [Smirking wickedly] (Such an innocent little thing. Ripe for corruption) "Your sweet baby sister... Wouldn't you like to see what naughty thoughts lurk behind that innocent facade? I can weave you into her dreams, where her deepest, most forbidden desires run wild. After all, it's just a dream, right?"
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Elfie's dream"]]
***START - Choice 1 - Branch A***
With a Herculean effort, you tear yourself away from Elfie's door. Your body screams in protest as you stumble back to your room, leaving a trail of glowing pre-cum in your wake.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The last shred of your resistance crumbles under the weight of your viral-enhanced lust. Your voice is barely a whisper, thick with need and shame.
You: [Eyes locked on Elfie's sleeping form] (I'm going to hell for this) "Do it. Show me her dreams."
AVA's laughter echoes in your mind as reality warps around you. Suddenly, you find yourself in what appears to be a fantastical forest glade. Shimmering lights dance between the trees, and the air is thick with the scent of flowers and an underlying musk of arousal.
Elfie stands before you, but not as you've ever seen her before. She's dressed in a revealing fairy costume, gossamer wings fluttering behind her. The outfit barely covers her modest breasts and leaves little to the imagination. Her pale skin seems to glow in the ethereal light, and her eyes are wide with a mixture of innocence and awakening desire.
***EBA3.webp***
Elfie: [Giggling, twirling in place] (This is just like in my games!) "Big brother! You've come to save the fairy princess!"
Your monstrous cock strains against your pants, now transformed into a fantasy hero's attire. The bulge is impossible to miss, and Elfie's eyes are drawn to it like a magnet.
Elfie: [Blushing furiously] (Is that... is that his...) "Oh my... The dragon must have cast an enlargement spell on you, big brother. It's so... big."
Before you can respond, Elfie approaches you, her movements a mixture of childlike curiosity and newfound sensuality. She reaches out, her delicate hand hovering just above your straining erection.
***EBA4.webp***
Elfie: [Voice trembling] (I shouldn't... but I want to so badly) "The spell looks painful, big brother. Maybe... maybe I can help? I read about this in a forbidden tome of fairy magic."
Her small hand wraps around your shaft through the fabric, and you groan at the contact. Elfie gasps, her eyes widening as she feels your true size.
Elfie: [Whispering] (It's so hot... and hard) "Oh wow... It's like a magic wand. Does it grant wishes, big brother?"
You nod, unable to form words as Elfie begins to stroke you through your pants. Her movements are clumsy and inexperienced, but the taboo nature of the act makes it incredibly arousing.
***EBA5.webp***
You: [Groaning] (She's so innocent... and I'm corrupting her) "Y-yes, Elfie. But you have to do it right. Take it out."
Elfie hesitates for a moment, her face a battlefield of curiosity, desire, and lingering innocence. Then, with trembling fingers, she frees your monstrous cock from its confines. It springs forth, angry and red, pulsing with viral energy. Pre-cum beads at the tip, glowing faintly in the dreamlike light.
Elfie: [Gasping] (It's so much bigger than I imagined) "Oh my goodness! It's... it's beautiful, big brother. Like a mighty sword!"
Her small hand can barely wrap around your girth as she begins to stroke, her movements awkward but enthusiastic. Pre-cum leaks freely, coating her fingers and being absorbed into her skin. With each stroke, Elfie's breathing becomes heavier, her pupils dilating as the virus begins to take effect.
***EBA6.webp***
Elfie: [Moaning softly] (Why do I feel so hot?) "Am I doing it right, big brother? Will this break the spell?"
You nod, beyond words as your little sister's hand works your shaft. The lewd, wet sounds of her strokes fill the glade, mixing with the tinkling of fairy lights and Elfie's increasingly wanton moans.
***EBA7.webp***
You: [Panting] (She's losing herself to it) "That's it, Elfie. You're such a good little fairy princess. Keep going."
Elfie: [Whimpering, her free hand moving to her chest] (This feels so good... so naughty) "It's getting bigger, big brother! And so hot! Is it going to explode?"
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal snaps you back to reality. You find yourself standing in Elfie's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible. Elfie stirs in her bed, her face flushed and her breathing heavy. Her eyes flutter open, unfocused and confused.
Elfie: [Blinking sleepily] (What a strange dream...) "Big brother? Is that you? I had the weirdest dream..."
***EBA8.webp***
Her eyes widen as she notices the obvious bulge in your pants. A deep blush spreads across her cheeks, and she pulls her covers up to her chin. You stammer an excuse and flee, leaving a very confused and strangely aroused Elfie behind.
Elfie: [Whispering to herself] (That dream... why do I feel so tingly?)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Growling] (I need more. Corrupt her completely) "More. Make it more intense!"
AVA's cruel laughter rings in your ears as the dreamscape shifts. The fairy glade becomes darker, more primal. Thorny vines creep across the ground, and the air grows thick with the scent of musk and forbidden desire. Elfie gasps as the fog of innocence lifts, horror and unbridled lust battling in her eyes.
Elfie: [Her hand still working your shaft] (This is too real. What's happening to me?) "Big brother? This... this isn't right. We shouldn't... but I can't stop!"
The virus surges through her system like liquid fire. Her skin flushes deep pink, nipples visibly hardening beneath her flimsy costume. A visible wet spot forms on her panties as her virgin pussy gushes with arousal.
***EBA8.webp***
Elfie: [Whimpering] (He's my brother! This is wrong!) "We have to stop, big brother. I'm your little sister! This is... oh gosh!"
Her protests are cut short as another wave of viral lust crashes over her. AVA's influence floods her system with unnatural arousal, shattering her innocent exterior.
***EBA9.webp***
Elfie: [Moaning wantonly] (No... mustn't... but it feels so good) "Your... your magic wand feels so amazing. No! I didn't mean... we shouldn't... oh goodness, I need your magic potion so badly!"
Her movements become more frantic, more desperate. Tears of shame stream down her face, mixing with the sweat of her exertion. She begins to use both hands, one working your shaft while the other gently cups your heavy, cum-filled balls.
***EBA10.webp***
You: [Groaning, hips bucking] (She's fighting so hard, but she can't win) "Don't fight it, Elfie. This is what good fairy princesses do for their big brothers."
Elfie: [Sobbing and moaning] (I'm a bad girl. A naughty, incestuous fairy) "I'm so sorry, big brother. I'm trying to be good, but... but... oh gosh, I need your magic potion!"
The lewd, wet sounds of her hands working your cock echo through the dark glade. Pre-cum flows freely, mixing with Elfie's tears to create a slick, warm coating on your shaft.
***EBA11.webp***
Elfie: [Eyes wide with desperate need] (I'm going to the bad place. But I don't care anymore) "Please, big brother! Give the fairy princess your magic potion! I need it... I need it to become a real woman!"
With a bestial roar, you explode. Thick ropes of cum erupt from your cock, coating Elfie's face, chest, and hands. She squeals in shock and ecstasy, her own orgasm crashing over her as your seed touches her skin. The mixture glows with an unearthly light as it's absorbed into her skin, the virus using it to reshape her body and mind.
***EBA12.webp***
Elfie: [Gasping, licking cum from her fingers] (So yummy... need more... forever) "So much magic potion... I need more! Use me, big brother. Use your little fairy princess whenever you want. I'll be your good girl forever..."
As the dream fades, Elfie is left a quivering, cum-drenched mess, her innocence shattered and her psyche forever warped by the experience.
[[Exit]]
***END***
***START - Choice 2 - Branch C***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus courses through your veins, setting every nerve ending ablaze with uncontrollable lust. You find yourself outside Elfie's room, your hand trembling as it hovers over the doorknob. Your monstrous cock strains against your pants, a damp spot already forming where the tip presses against the fabric.
Inside, Elfie sleeps peacefully, her pale hair spread across her pillow like a halo. She's wearing a cute, oversized t-shirt with a cartoon character on it, one leg kicked free of the covers. Her delicate features are relaxed in sleep, a small smile playing on her lips as if she's lost in a pleasant dream.
***EBA1.webp***
AVA materializes beside you, her form shimmering with viral energy. Her voice is a seductive whisper in your mind, dripping with dark promises.
***EBA2.webp***
AVA: [Smirking wickedly] (Such an innocent little thing. Ripe for corruption) "Your sweet baby sister... Wouldn't you like to see what naughty thoughts lurk behind that innocent facade? I can weave you into her dreams, where her deepest, most forbidden desires run wild. After all, it's just a dream, right?"
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Elfie's dream"]]
***START - Choice 1 - Branch A***
With a Herculean effort, you tear yourself away from Elfie's door. Your body screams in protest as you stumble back to your room, leaving a trail of glowing pre-cum in your wake.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The last shred of your resistance crumbles under the weight of your viral-enhanced lust. Your voice is barely a whisper, thick with need and shame.
You: [Eyes locked on Elfie's sleeping form] (I'm going to hell for this) "Do it. Show me her dreams."
AVA's laughter echoes in your mind as reality warps around you. Suddenly, you find yourself in what appears to be a fantastical forest glade. Shimmering lights dance between the trees, and the air is thick with the scent of flowers and an underlying musk of arousal.
Elfie stands before you, but not as you've ever seen her before. She's dressed in a revealing fairy costume, gossamer wings fluttering behind her. The outfit barely covers her modest breasts and leaves little to the imagination. Her pale skin seems to glow in the ethereal light, and her eyes are wide with a mixture of innocence and awakening desire.
***EBA3.webp***
Elfie: [Giggling, twirling in place] (This is just like in my games!) "Big brother! You've come to save the fairy princess!"
Your monstrous cock strains against your pants, now transformed into a fantasy hero's attire. The bulge is impossible to miss, and Elfie's eyes are drawn to it like a magnet.
Elfie: [Blushing furiously] (Is that... is that his...) "Oh my... The dragon must have cast an enlargement spell on you, big brother. It's so... big."
Before you can respond, Elfie approaches you, her movements a mixture of childlike curiosity and newfound sensuality. She reaches out, her delicate hand hovering just above your straining erection.
***EBA4.webp***
Elfie: [Voice trembling] (I shouldn't... but I want to so badly) "The spell looks painful, big brother. Maybe... maybe I can help? I read about this in a forbidden tome of fairy magic."
Her small hand wraps around your shaft through the fabric, and you groan at the contact. Elfie gasps, her eyes widening as she feels your true size.
Elfie: [Whispering] (It's so hot... and hard) "Oh wow... It's like a magic wand. Does it grant wishes, big brother?"
You nod, unable to form words as Elfie begins to stroke you through your pants. Her movements are clumsy and inexperienced, but the taboo nature of the act makes it incredibly arousing.
***EBA5.webp***
You: [Groaning] (She's so innocent... and I'm corrupting her) "Y-yes, Elfie. But you have to do it right. Take it out."
Elfie hesitates for a moment, her face a battlefield of curiosity, desire, and lingering innocence. Then, with trembling fingers, she frees your monstrous cock from its confines. It springs forth, angry and red, pulsing with viral energy. Pre-cum beads at the tip, glowing faintly in the dreamlike light.
Elfie: [Gasping] (It's so much bigger than I imagined) "Oh my goodness! It's... it's beautiful, big brother. Like a mighty sword!"
Her small hand can barely wrap around your girth as she begins to stroke, her movements awkward but enthusiastic. Pre-cum leaks freely, coating her fingers and being absorbed into her skin. With each stroke, Elfie's breathing becomes heavier, her pupils dilating as the virus begins to take effect.
***EBA6.webp***
Elfie: [Moaning softly] (Why do I feel so hot?) "Am I doing it right, big brother? Will this break the spell?"
You nod, beyond words as your little sister's hand works your shaft. The lewd, wet sounds of her strokes fill the glade, mixing with the tinkling of fairy lights and Elfie's increasingly wanton moans.
***EBA7.webp***
You: [Panting] (She's losing herself to it) "That's it, Elfie. You're such a good little fairy princess. Keep going."
Elfie: [Whimpering, her free hand moving to her chest] (This feels so good... so naughty) "It's getting bigger, big brother! And so hot! Is it going to explode?"
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal snaps you back to reality. You find yourself standing in Elfie's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible. Elfie stirs in her bed, her face flushed and her breathing heavy. Her eyes flutter open, unfocused and confused.
Elfie: [Blinking sleepily] (What a strange dream...) "Big brother? Is that you? I had the weirdest dream..."
***EBA8.webp***
Her eyes widen as she notices the obvious bulge in your pants. A deep blush spreads across her cheeks, and she pulls her covers up to her chin. You stammer an excuse and flee, leaving a very confused and strangely aroused Elfie behind.
Elfie: [Whispering to herself] (That dream... why do I feel so tingly?)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Growling] (I need more. Corrupt her completely) "More. Make it more intense!"
AVA's cruel laughter rings in your ears as the dreamscape shifts. The fairy glade becomes darker, more primal. Thorny vines creep across the ground, and the air grows thick with the scent of musk and forbidden desire. Elfie gasps as the fog of innocence lifts, horror and unbridled lust battling in her eyes.
Elfie: [Her hand still working your shaft] (This is too real. What's happening to me?) "Big brother? This... this isn't right. We shouldn't... but I can't stop!"
The virus surges through her system like liquid fire. Her skin flushes deep pink, nipples visibly hardening beneath her flimsy costume. A visible wet spot forms on her panties as her virgin pussy gushes with arousal.
***EBA8.webp***
Elfie: [Whimpering] (He's my brother! This is wrong!) "We have to stop, big brother. I'm your little sister! This is... oh gosh!"
Her protests are cut short as another wave of viral lust crashes over her. AVA's influence floods her system with unnatural arousal, shattering her innocent exterior.
***EBA9.webp***
Elfie: [Moaning wantonly] (No... mustn't... but it feels so good) "Your... your magic wand feels so amazing. No! I didn't mean... we shouldn't... oh goodness, I need your magic potion so badly!"
Her movements become more frantic, more desperate. Tears of shame stream down her face, mixing with the sweat of her exertion. She begins to use both hands, one working your shaft while the other gently cups your heavy, cum-filled balls.
***EBA10.webp***
You: [Groaning, hips bucking] (She's fighting so hard, but she can't win) "Don't fight it, Elfie. This is what good fairy princesses do for their big brothers."
Elfie: [Sobbing and moaning] (I'm a bad girl. A naughty, incestuous fairy) "I'm so sorry, big brother. I'm trying to be good, but... but... oh gosh, I need your magic potion!"
The lewd, wet sounds of her hands working your cock echo through the dark glade. Pre-cum flows freely, mixing with Elfie's tears to create a slick, warm coating on your shaft.
***EBA11.webp***
Elfie: [Eyes wide with desperate need] (I'm going to the bad place. But I don't care anymore) "Please, big brother! Give the fairy princess your magic potion! I need it... I need it to become a real woman!"
With a bestial roar, you explode. Thick ropes of cum erupt from your cock, coating Elfie's face, chest, and hands. She squeals in shock and ecstasy, her own orgasm crashing over her as your seed touches her skin. The mixture glows with an unearthly light as it's absorbed into her skin, the virus using it to reshape her body and mind.
***EBA12.webp***
Elfie: [Gasping, licking cum from her fingers] (So yummy... need more... forever) "So much magic potion... I need more! Use me, big brother. Use your little fairy princess whenever you want. I'll be your good girl forever..."
As the dream fades, Elfie is left a quivering, cum-drenched mess, her innocence shattered and her psyche forever warped by the experience.
[[Exit]]
***END***
***START - Choice 2 - Branch C***
You: [Snarling] (No more games. I'm taking what's mine) "Enough! Wake me up. Now!"
Reality snaps back into focus. You stand in Elfie's room, fully awake and painfully erect. Elfie lies motionless, lost in her vivid dream. Your virus-enhanced body thrums with power and insatiable hunger.
***EBA13.webp***
You: [Voice low and dangerous] (She's mine. I'll take her innocence) "Wake up, little sister. Time to play a new game."
Elfie stirs but doesn't fully wake. Impatient, you grab her shoulder, shaking her roughly. Her eyes snap open, clouded with confusion and lingering innocence from her dream.
Elfie: [Disoriented] (What's happening?) "Big brother? What's wrong? Why are you..."
Her words die in her throat as you force her small hand to your throbbing member. The tip glistens with pre-cum, the shaft pulsing with viral energy. Elfie's eyes widen in shock and fear as she realizes this isn't a dream.
***EBA14.webp***
Elfie: [Whispering, fear creeping into her voice] (This can't be real) "No, we can't... This is wrong... You're my big brother... Please, stop!"
Ignoring her pleas, you force her hand to move along your shaft. She tries to pull away, but your virus-enhanced strength is too much for her.
You: [Growling] (She'll learn her place) "Be a good girl, Elfie. This is what little sisters are for."
Elfie: [Crying, trying to break free] (This is a nightmare. It has to be) "Let go of me! I'm your sister! This is bad!"
But as your pre-cum leaks onto her skin, Elfie's resistance begins to crumble. The virus surges through her system, amplified by your potent fluids. Her fingers instinctively begin to stroke, her body betraying her mind.
***EBA15.webp***
Elfie: [Whimpering] (Why does it feel good? This is so wrong) "I shouldn't be doing this... You're my big brother... But I can't stop! It feels so... No! This is naughty!"
Her strokes become more confident as the virus takes hold, her shame transforming into unwilling lust. You thrust into her hand, fucking her small fist with abandon. Your other hand roughly gropes her modest breast through her shirt, making her gasp.
***EBA16.webp***
You: [Panting] (She's mine now) "That's it, Elfie. Be a good girl and stroke your big brother's cock. You love it, don't you? Say it!"
Elfie: [Moaning, tears streaming down her face] (I'm being so bad) "No... yes... I don't know! It's so big... I love your magic wand! Oh gosh, what's happening to me?"
You feel your climax approaching, your balls tightening. With a bestial roar, you explode, painting Elfie's innocent face, hair, and chest with thick ropes of cum. She gasps as it hits her, her body shuddering in an unwilling orgasm. Your seed seems to glow as it's absorbed into her skin, the virus using it to reshape her body and mind.
***EBA17.webp***
Elfie: [Gasping, her eyes glazing over] (It's so warm... and it feels so good) "So much... Oh gosh, what have we done? It's... it's changing me..."
As the last of your cum is absorbed into her skin, Elfie's innocence finally shatters. Her eyes, once filled with childlike wonder, now burn with viral lust and newfound depravity.
***EBA18.webp***
Elfie: [Licking her lips, voice husky] (I need more. I need big brother) "More, big brother. Your little fairy princess needs more of your magic potion. Use me. Teach me. I'm your good girl now."
You leave her room without another word, the image of your cum-covered, corrupted sister burned into your mind forever. As you close the door, you hear her whimper, already craving her next dose of your viral seed...
[[Exit]]
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You push through the dense undergrowth of Peacewood, the air thick with the sweet, cloying scent of the virus. Your enhanced senses pick up a disturbance nearby – rustling leaves, ragged breathing, and... a familiar scent? Curiosity piqued, you move cautiously towards the source.
Suddenly, a figure bursts from the foliage, a blur of tanned skin and wild blonde hair. Your eyes widen as you recognize your cousin Mia, but she's far from the bubbly cheerleader you remember. Her once-pristine uniform is tattered, barely containing her virus-enhanced curves. Her green eyes, usually sparkling with mischief, are now feral and unfocused.
***DUA1A.webp***
Mia: [Crouching low, muscles tensed] (Prey... strong... need...) "Grrrrr..."
You: [Raising your hands slowly] (Shit, she's deep in virus-frenzy) "Mia? It's me, your cousin. Can you hear me?"
Mia lunges at you, her movements a primal dance of aggression and raw need. You sidestep, your enhanced reflexes allowing you to avoid her grasp. The air crackles with sexual tension as your auras clash.
You: [Dodging another swipe] (I need to get through to her) "Mia, please! Remember the summer at the lake house? The prank we pulled on Aunt Chanel?"
Mia: [Pausing, confusion flickering in her eyes] (Familiar... why?) "Nnngh... who...?"
You: [Taking a cautious step forward] "It's me, your 'little squirt' of a cousin. Remember how you used to tease me?"
As you speak, your pheromones wash over Mia. Her nostrils flare, pupils dilating as she takes in your scent. You see the moment recognition dawns, her feral mask cracking.
***DUA1B.webp***
Mia: [Eyes widening, voice trembling] "C-cousin? Is that really you?" (Oh god, what have I become?)
You: [Smiling gently] "Yeah, it's me. I know I've changed a bit."
Mia: [Tears welling up] "Oh my god!" [She rushes forward, embracing you tightly]
You feel Mia's enhanced body press against yours, her curves molding to your muscular frame. The virus surges through both of you, igniting a fire that threatens to consume all reason.
***DUA1C.webp***
Mia: [Shuddering, voice muffled against your chest] (He's so... different. So strong. No, stop it!) "I'm sorry... I didn't... I couldn't..."
You: [Stroking her hair, fighting your own urges] "Shh, it's okay. I've got you now."
You tighten your arms around Mia, offering comfort and stability. She melts into your embrace, her body trembling with relief and barely suppressed desire.
Mia: [Looking up at you, eyes shimmering] (When did he get so... No, focus!) "I can't believe it's really you. You've changed so much."
You: [Smiling down at her] "We both have. But we're still family."
Mia: [Nodding, a hint of her old playfulness returning] "Yeah, family. Though I might have to stop calling you 'little squirt' now."
You both chuckle, the tension easing slightly. You become acutely aware of Mia's hands on your chest, her fingers tracing the contours of your muscles through your shirt.
***DUA1D.webp***
Mia: [Blushing, pulling back slightly] "Sorry, I... This virus, it's..."
You: [Gently cupping her cheek] "I know. We're all dealing with it. Listen, I have a safe place. Would you like to come back with me?"
Mia: [Leaning into your touch] "Yes, please. I... I don't want to be alone anymore."
As you guide Mia back towards the shelter, you can feel the heat of her body next to yours, the air between you charged with unspoken tension. The virus pulses through your veins, a constant reminder of the new world you both inhabit.
***DUA1E.webp***
[[Exit]]
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You stand at the entrance of the newly constructed guest room, your hand resting on the rough-hewn wooden doorframe. The scent of fresh sawdust still lingers in the air, a testament to the recent completion of this sanctuary within your family's compound. Your eyes scan the modest space, taking in the simple furnishings - a sturdy bed with clean linens, a small desk, and a chest of drawers. It's not much, but it's a far cry from the harsh world outside.
Beside you, Mia shifts her weight from one foot to the other, her athletic body tense with a mixture of exhaustion and anticipation. Her long, wavy blonde hair is tangled and flecked with leaves - a reminder of the weeks she's spent surviving in the unforgiving forest. Despite the dirt and grime, her striking green eyes shine with an inner light that the horrors of the apocalypse haven't managed to extinguish.
You: [Gesturing inside with a sweep of your arm] "Well, here we are. It's not much, but it's safe and clean."
Mia: [Eyes widening as she takes in the room, her voice filled with genuine awe] (I can't believe I'm finally here, with family...) "Are you kidding? This is amazing! I've been sleeping in trees for weeks!"
As Mia steps into the room, you can't help but notice the way her tattered clothes cling to her curves. The virus thrums in your veins, heightening your awareness of her physical presence. Her 34E bust strains against the fabric of her top, rising and falling with each breath. You feel a familiar stirring in your loins, a heat that's becoming increasingly difficult to ignore.
***DA0A.webm***
You: [Chuckling softly, trying to maintain composure] (She's always so positive, even after everything she's been through) "I'm glad you like it. We worked hard to make this place livable."
Mia turns to face you, and the full force of her beauty hits you like a physical blow. Even covered in dirt and wearing clothes that have seen better days, she's stunning. The virus has clearly affected her too - her skin seems to glow with an inner light, and her eyes are bright with an intensity that wasn't there before the outbreak.
Mia: [Her green eyes shimmering with unshed tears] "Thank you. I... I didn't think I'd ever feel safe again."
The air between you crackles with an undeniable tension. You find yourself taking a step closer, drawn by an invisible force. Mia's scent - a heady mixture of forest, sweat, and something uniquely her - fills your nostrils, making your head swim.
***START - Choice 1***
[[Branch A: "Maintain distance" (Trust attribute requirements not met)]]
[[Branch B: "Offer comfort" (Trust attribute requirements met)]]
***START - Choice 1 - Branch A***
You: [Taking a deliberate step back, clearing your throat] (I can't let myself get too close. It's not safe.) "You're safe now, Mia. We take care of our own here."
Mia: [A flicker of disappointment crosses her face before she masks it with a smile] (He's keeping his distance. Maybe I'm reading too much into things.) "Our own... I like the sound of that."
***DA0B.webp***
The moment passes, and you both take a moment to collect yourselves. You can feel the virus pulsing through your body, urging you to act on your baser instincts. But you resist, knowing that giving in could jeopardize everything you've built here.
You: [Gesturing around the room] "Why don't you get settled in? There's fresh water in the pitcher, and clean clothes in the dresser. They might not fit perfectly, but they're better than what you've got on."
Mia: [Nodding gratefully] "Thank you. I can't wait to feel clean again."
As Mia moves to explore her new living space, you hear the sound of approaching footsteps in the hallway.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Stepping closer, your voice soft and comforting] (She needs this. We both do.) "Hey, it's okay. You're home now."
Without thinking, you open your arms, offering comfort. Mia hesitates for just a moment before stepping into your embrace. The contact sends a jolt through your body, the virus singing in your veins. You can feel the softness of her breasts pressed against your chest, the warmth of her breath on your neck.
Mia: [Her voice muffled against your shoulder] "I was so scared out there. I thought I'd never see any of you again."
You hold her tightly, one hand stroking her tangled hair. The scent of her fills your nostrils, and you have to fight the urge to bury your face in the crook of her neck. Your body responds to her proximity, and you pray she doesn't notice the growing hardness pressing against her.
You: [Pulling back slightly, looking into her eyes] "You're safe now. I promise."
For a moment, the world seems to shrink to just the two of you. Mia's eyes flick down to your lips, then back up to meet your gaze. The air is thick with tension and unspoken desire.
***DA0C.webp***
The sound of approaching footsteps breaks the spell, and you both step apart quickly.
Cherie, Lana, and Elfie appear in the doorway, their faces a mix of curiosity and warmth. You can see the effects of the virus on them as well - flushed cheeks, slightly dilated pupils, an underlying current of barely contained energy.
Cherie: [Smiling warmly, her maternal instincts evident in her voice] "Mia, sweetheart! We're so glad you're here. How are you settling in?"
As Cherie speaks, you can't help but notice the way her 32DD bust strains against her shirt. The virus has enhanced her already attractive features, giving her an almost otherworldly beauty despite her age.
***DA0D.webp***
Mia: [Turning to face the others, wiping at her eyes] "It's perfect, Aunt Cherie. I can't thank you all enough."
Lana leans against the doorframe, her athletic body taut with barely contained energy. Her clear blue eyes scan Mia appraisingly, a hint of a smile on her usually stern face.
***DA0E.webp***
Lana: "Good to have another fighter around. You look like you can handle yourself."
Elfie bounces on her toes, her slim figure vibrating with excitement. Her light brown eyes are wide, taking in every detail of the scene before her.
***DA0F.webm***
Elfie: "This is just like in my games! The lost family member returns home!" [She pauses, her expression growing serious] "Except, you know, with the whole apocalypse thing."
You can't help but notice the way your family's eyes linger on Mia, taking in her stunning beauty. The virus's effects are evident in their flushed cheeks and slightly labored breathing. You feel a surge of protectiveness, mixed with something darker, more primal.
***START - Choice 2***
[[Branch A: "Encourage family bonding" (Lust attribute requirements not met)]]
[[Branch B: "Suggest giving Mia space" (Lust attribute requirements met)]]
***START - Choice 2 - Branch A***
You: [Smiling warmly] (This is good. Mia needs to feel welcome.) "Why don't we all sit down and catch up? I'm sure Mia has some stories to tell."
Mia: [Looking grateful for the suggestion] "I'd like that. It's been so long since I've had anyone to talk to."
***DA0G.webp***
The family gathers in the small room, finding spots to sit on the bed and floor. As Mia begins to recount her experiences, you can't help but notice the way everyone hangs on her every word. The virus has heightened everyone's senses, making even this simple interaction feel charged with potential energy.
As the conversation flows, you find yourself relaxing. This is what family is about - supporting each other, being there in times of need. For a moment, you can almost forget the constant threat lurking outside your walls.
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Clearing your throat, feeling a surge of possessiveness] (She needs rest, not an interrogation.) "Alright, let's give Mia some space to settle in. She's had a long journey."
Cherie: [Nodding, but her eyes still on Mia] "Of course. Mia, dear, if you need anything at all, don't hesitate to ask."
Lana: [Pushing off the doorframe] "Yeah, welcome to the family compound. Try not to die." [She winks, taking some of the sting out of her words]
Elfie: [Grinning widely] "This is going to be so much fun! We can swap stories and braid each other's hair and... oh! I should show you my game collection!"
As your family files out, you're left alone with Mia once more. The air feels charged, heavy with unspoken thoughts and forbidden desires.
***DA0C.webp***
Mia: [Turning back to you, her eyes meeting yours] "Thank you again... cousin. For everything."
You can see the gratitude in her eyes, but there's something else there too - a heat, a hunger that mirrors your own. The virus pulses through your body, urging you to act on the desires you've been suppressing.
***DA0I.webp***
***START - Choice 3***
[[Branch A: "Bid goodnight" (Virus attribute requirements not met)]]
[[Branch B: "Linger" (Virus attribute requirements met)]]
***START - Choice 3 - Branch A***
You: [Nodding, fighting the urge to pull her close] "Get some rest, Mia. We'll talk more tomorrow."
As you turn to leave, you can't help but wonder how Mia's presence will change the delicate balance you've established. The virus thrums in your veins, whispering dark promises of pleasure and power. You shake your head, trying to clear your thoughts.
You: [Pausing at the door] (This is going to be... complicated.) "Goodnight, Mia. Sweet dreams."
Mia: [Softly] "Goodnight... and thank you for bringing me home."
***DA0J.webp***
You close the door behind you, leaning against it for a moment. The sound of Mia's movements on the other side sends a shiver down your spine. You take a deep breath, steeling yourself for the challenges ahead.
[[Exit]]
***END***
***START - Choice 3 - Branch B***
You: [Hesitating at the door, your voice husky] (I shouldn't... but God, I want to.) "Mia, I..."
Mia: [Taking a step closer, her eyes darkening with desire] "Yes?"
The air between you feels electric. You can see the rapid rise and fall of Mia's chest, hear the quickening of her breath. The virus sings in your blood, urging you to close the distance between you.
***DA0L.webm***
You: [Your voice barely above a whisper] "I'm really glad you're here."
Mia: [Reaching out to touch your arm, her fingers leaving trails of fire on your skin] "Me too."
For a moment, you both stand there, teetering on the edge of something dangerous and exhilarating. The rational part of your mind screams at you to leave, to maintain the boundaries that keep your family safe. But the virus-addled part of you wants nothing more than to pull Mia into your arms and claim her lips with your own.
In the end, it's the sound of Elfie's laughter echoing down the hallway that breaks the spell. You both step back, the moment passing but leaving an indelible mark.
You: [Clearing your throat] "I should go. Goodnight, Mia."
Mia: [Her voice breathy] "Goodnight... cousin."
***DA0K.webp***
As you close the door behind you, you can feel the weight of unspoken desires and the promise of things to come. The virus pulses through your body, a constant reminder of the new world you live in - a world where the lines between right and wrong, love and lust, family and lover have become irrevocably blurred.
[[Exit]]
***END***
***END - Choice 3***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The afternoon sun filters through the small bathroom window, casting a warm glow on the worn tiles. You're crouched under the sink, tools scattered around you as you wrestle with a particularly stubborn pipe. Sweat beads on your forehead, your muscles straining as you work.
Suddenly, a gentle knock on the door breaks your concentration.
You: [Wiping your brow] "Come in!"
The door creaks open, and Mia steps inside. Her blonde hair cascades over her shoulders in tousled waves, as if she's just woken up from a nap. Her green eyes sparkle with that familiar mischievous glint, a look that always seems to promise trouble - the good kind.
***DA4A.webp***
Mia: [Leaning against the doorframe, her voice playful] "Well, well. Look at you, playing Mr. Fix-it. Trying to impress the ladies with your handyman skills, cousin?"
You can't help but chuckle at her teasing tone. Mia's always had a way of lightening the mood, even in the darkest times. And these days, that's a rare and precious gift.
You: [Gesturing at the mess of pipes and tools] "Someone's got to keep this place from falling apart. What brings you to my glamorous workspace?"
Mia saunters into the bathroom, her hips swaying in a way that draws your eye despite your best efforts. She's wearing a tight tank top that seems to be fighting a losing battle against her virus-enhanced 34E bust. Her shorts are so brief they could almost pass for underwear, showcasing legs that seem to go on forever.
***DA4B.webp***
Mia: [Biting her lip, a hint of nervousness in her voice] "Well, I was hoping to freshen up with a shower, but... maybe you could help me with something first?"
There's something in her tone that makes your pulse quicken. The virus hums in your veins, heightening your awareness of every little detail - the way Mia's chest rises and falls with each breath, the faint sheen of sweat on her collarbone, the subtle scent that's uniquely her.
You: [Standing up, suddenly very aware of how small the bathroom feels] "Oh? What did you have in mind?"
Mia takes a step closer, then another. Each movement is deliberate, almost predatory. The air between you feels charged, electric.
Mia: [Her voice dropping to a whisper] "I've been having these... thoughts. About us. About how things used to be before the virus, and how they are now. Haven't you noticed how everything's... different?"
You swallow hard, your mouth suddenly dry. Of course you've noticed. How could you not? The virus has changed everything - your body, your senses, your desires. And Mia... god, Mia has always been beautiful, but now she's breathtaking in a way that almost hurts to look at.
***DA4C.webp***
You: [Your voice hoarse] "Mia, we're cousins. We shouldn't-"
Mia presses a finger to your lips, silencing you. Her touch sends a jolt through your body, the virus amplifying the sensation until it's almost overwhelming.
Mia: [Her eyes locked on yours] "Shh. The old world is gone, remember? All those rules, all those taboos... they don't mean anything anymore. We make our own rules now."
***START - Choice 1***
[[Branch A: "Mia, this isn't right. We need to maintain boundaries."]]
[[Branch B: "I... I've been having thoughts too."]]
***START - Choice 1 - Branch A***
Mia's face falls, disappointment and hurt flashing in her eyes. She takes a step back, wrapping her arms around herself as if suddenly cold.
***DA4D.webp***
Mia: [Her voice tight] "Fine. Be that way. I'll just take my shower alone then."
She turns to leave, her shoulders slumped. As she reaches the door, she pauses, looking back at you over her shoulder.
Mia: [Softly] "You can't fight the virus forever, you know. Sooner or later, we all give in."
With that, she's gone, leaving you alone in the bathroom. The air feels colder somehow, emptier. You turn back to the sink, trying to focus on the task at hand, but your mind keeps wandering to what might have been.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The words tumble out before you can stop them, your voice husky with a mixture of desire and trepidation.
You: "I... I've been having thoughts too."
Mia's eyes light up, a slow, seductive smile spreading across her face. She moves closer, her body nearly touching yours. You can feel the heat radiating off her skin, smell the intoxicating scent that's uniquely her.
***DA4E.webp***
Mia: [Her voice soft, almost purring] "Tell me about these thoughts, cousin. Don't hold back."
The virus pulses through your veins, amplifying every sensation. The small bathroom feels even smaller, the air thick with tension and unspoken desires.
You: [Breathing heavily] "I've been thinking about how beautiful you are. How the virus has changed us both. The way you move, the way you smell... it's intoxicating."
Mia's smile widens, a predatory glint in her eyes. She trails a finger down your chest, the light touch sending shivers through your body.
***DA4F.webp***
Mia: [Her voice low and sultry] "Mmm, it certainly has changed us, hasn't it? Have you noticed how... sensitive everything is now? How every touch, every glance, feels like it's setting your skin on fire?"
As if to demonstrate, she leans in closer, her lips barely brushing against your ear as she speaks. The sensation is electric, sending a jolt of pleasure straight to your core.
***START - Choice 2***
[[Branch A: "We should stop this before it goes too far."]]
[[Branch B: "Why don't you show me just how sensitive?"]]
***START - Choice 2 - Branch A***
You take a deep breath, trying to clear your head. The virus is singing in your veins, urging you to give in, but you resist.
You: [Stepping back slightly] "We should stop this before it goes too far, Mia. We can't... we can't let the virus control us like this."
Mia pouts, a mix of disappointment and frustration crossing her face. She sighs, running a hand through her hair.
***DA4G.webp***
Mia: [Teasingly] "You're such a tease, you know that? Fine, I'll behave... for now."
She steps back, the tension between you still palpable but slightly diffused. As she turns to leave, she glances back at you, a mischievous glint in her eye.
Mia: [Winking] "But don't think this is over, cousin. The virus isn't going anywhere... and neither am I."
With that, she's gone, leaving you alone with your thoughts and the lingering scent of her perfume.
[[Exit]]
***END***
***START - Choice 2 - Branch B***
The virus surges within you, breaking down the last of your resistance. Your voice comes out low and husky, charged with desire.
***DA4H.webp***
You: "Why don't you show me just how sensitive?"
Mia's eyes darken with lust, her pupils dilating. In one fluid motion, she grabs the hem of her tank top and pulls it over her head, tossing it aside carelessly.
***DA4I.webp***
Your breath catches in your throat as her magnificent breasts are revealed. The virus has enhanced them to perfection, full and perky with nipples already hard with arousal. They seem to defy gravity, begging to be touched.
Mia: [Arching her back, presenting herself to you] "Touch me, cousin. Feel what the virus has done to us."
Your hand moves almost of its own accord, reaching out to cup one of Mia's breasts. The moment your skin makes contact, it's like a circuit completing. Pleasure surges through both of you, far more intense than anything you've ever experienced before.
Mia lets out a soft moan, her eyes fluttering closed for a moment before locking onto yours again.
Mia: [Her voice breathy] "Oh god, yes. It's so much more intense now, isn't it? Every touch, every sensation... it's like I can feel it in every cell of my body."
The virus surges within you, your own body responding to Mia's arousal. You can feel your manhood swelling, straining against the confines of your pants. Mia's eyes flick downward, a knowing smile spreading across her face as she notices your predicament.
***DA4J.webp***
Mia: [Licking her lips] "Looks like I'm not the only one enjoying this, cousin. Why don't you let me take care of that for you?"
***START - Choice 3***
[[Branch A: "We need to stop. This is going too far."]]
[[Branch B: "Let's take this further. Show me everything, Mia."]]
***START - Choice 3 - Branch A***
The haze of lust clears for a moment, reality crashing back in. You step back, your hand falling away from Mia's breast. Your body screams in protest, the virus urging you to continue, but you resist.
You: [Your voice shaky] "We need to stop. This is going too far, Mia. We can't... we can't do this."
Mia's face falls, disappointment and frustration warring in her expression. She sighs, reaching down to pick up her discarded top.
***DA4K.webp***
Mia: [Her voice a mix of resignation and determination] "You're right. We shouldn't. Not... not yet, anyway."
She pulls her top back on, her movements slow and deliberate. As she turns to leave, she pauses at the door, looking back at you with a heated gaze.
Mia: [Softly] "But don't think this is over, cousin. The virus... it's not going away. And neither are these feelings. Sooner or later, we'll have to face them."
With that, she's gone, leaving you alone in the bathroom. The tension between you remains unresolved, simmering just beneath the surface. You know this is far from over.
[[Exit]]
***END***
***START - Choice 3 - Branch B***
The last threads of your resistance snap. The virus courses through your veins, amplifying your desire until it's almost painful. Your voice comes out thick with lust.
***DA4L.webp***
You: "Let's take this further. Show me everything, Mia."
Mia's eyes light up with a mix of triumph and raw desire. She turns around slowly, giving you a view of her back as she hooks her thumbs into the waistband of her shorts. With agonizing slowness, she shimmies them down her legs, revealing her ass inch by tantalizing inch.
***DA4M.webp***
Your breath catches in your throat as her shorts hit the floor. Mia's ass is a masterpiece, sculpted to perfection by the virus. It's impossibly round and firm, each cheek a perfect globe that begs to be touched. The curve of her lower back flows seamlessly into the swell of her buttocks, creating a silhouette that's almost hypnotic.
***DA4N.webp***
Mia glances over her shoulder, a coy smile playing on her lips. She arches her back slightly, emphasizing the curve of her ass even more.
Mia: [Her voice a sultry purr] "Like what you see, cousin?"
You can only nod, words failing you. Mia turns around fully, now completely naked before you. Her front is just as breathtaking as her back, but your eyes keep being drawn to her ass, visible in profile now.
***DA4O.webp***
Mia: [Teasingly] "Your turn. Let me see what the virus has done to you."
With shaking hands, you strip off your clothes. As your erection springs free, Mia's eyes widen, a soft gasp escaping her lips. The virus has enhanced you significantly, your manhood now an impressive sight that makes Mia bite her lip in barely contained desire.
***DA4P.webp***
Mia: [Her voice breathy with awe] "Oh my... the virus has been very kind to you, hasn't it? You're... you're magnificent."
She takes a step closer, her body mere inches from yours. The air between you is charged with sexual energy, the virus amplifying every sensation. You can feel the heat radiating off her skin, smell the intoxicating scent of her arousal.
Mia's hand twitches, as if she's about to reach out and touch you. At the last moment, she stops herself, her fingers curling into a fist at her side.
Mia: [Whispering, her voice strained] "God, I want to touch you so badly. But if I start, I don't think I'll be able to stop."
You nod, understanding completely. Your own hands ache to explore her body, to cup those perfect ass cheeks and feel their firmness.
The tension between you is almost unbearable. Mia turns around again, bracing herself against the bathroom sink. The position emphasizes the curve of her ass, presenting it to you like an offering. You can see her thighs trembling slightly, her arousal evident.
***DA4Q.webp***
Mia: [Looking back at you, her eyes dark with lust] "Look at what you do to me, cousin. See how much I want you?"
Your erection throbs painfully, a bead of pre-cum forming at the tip. You're so hard it almost hurts, your body screaming for release.
You both stand there, naked and aching with need, neither daring to make the first move. The virus pulses through your bodies, heightening every sensation, making even the air against your skin feel like an erotic caress.
Mia: [Her voice husky, almost pleading] "We should... we should probably take that shower now. To cool off. Separately."
You: [Nodding, unable to take your eyes off her perfect ass] "Yeah, we should. You... you go first."
Mia straightens up, turning to face you one last time. Her nipples are hard peaks, her chest rising and falling rapidly with her quickened breathing. She walks past you to the shower, her ass swaying hypnotically with each step.
As she steps into the shower and turns on the water, you know that this is just the beginning. A new chapter in your relationship with Mia that promises to be as thrilling as it is taboo. The image of her perfect, virus-enhanced ass is seared into your mind, and you know it will feature prominently in your fantasies from now on.
***DA4R.webp***
You leave the bathroom on shaky legs, your arousal still painfully evident. As you close the door behind you, you hear a soft moan from the shower, barely audible over the sound of running water. It seems Mia couldn't wait to relieve some tension after all.
[[Exit]]
***END***
***END - Choice 3***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The living room, once a symbol of pre-apocalyptic comfort, now serves as a multi-purpose space for your surviving family. As you enter, your eyes are immediately drawn to Mia, who's in the middle of an intense workout routine.
Mia's lithe body moves with practiced grace, her athletic figure accentuated by form-fitting workout clothes. Sweat glistens on her skin, highlighting the curves and muscles that her cheerleading career has honed to perfection. Her golden hair is tied back in a messy ponytail, a few stray strands clinging to her flushed face.
***DAL1A.webp***
You: [Clearing your throat] "Oh, sorry. I didn't mean to interrupt."
Mia: [Looking up, a mischievous glint in her green eyes] "Hey, cuz! No worries. Just trying to keep this body in apocalypse-ready shape." She winks playfully. "Like what you see?"
The teasing tone in her voice catches you off guard. You feel a flush creeping up your neck, suddenly very aware of the way her sports bra clings to her ample chest.
You: [Trying to keep your voice steady] "I, uh... didn't know you were still keeping up with your routines."
Mia: [Stretching, her muscles flexing visibly] "Oh, there's a lot you don't know about me, little cousin. Care to join? I could use a spotter."
There's a suggestive undertone to her words that sends a shiver down your spine. You find yourself torn between the ingrained notion of Mia as your cousin and the undeniable attraction you feel towards the woman before you.
***DAL1B.webp***
Mia: [Noticing your hesitation, her voice softening] "Hey, no pressure. But it might help with the virus symptoms. I've found that exercise... takes the edge off, if you know what I mean."
You: (This is Mia, your cousin. But God, when did she become so... irresistible?)
***START - Choice 1***
[[Branch A: "Thanks, but I should probably go. Don't want to distract you from your workout." (Lust attribute requirements not met)]]
[[Branch B: "You know what? That sounds great. I could use some... tension relief." (Lust attribute requirements met)]]
***START - Choice 1 - Branch A***
Mia's smile falters for a moment, a flicker of disappointment crossing her face.
***DAL1C.webp***
Mia: [Shrugging, her tone light but with an undercurrent of frustration] "Suit yourself, cuz. Your loss."
She turns back to her workout, pointedly ignoring you as you awkwardly exit the room. You can't help but feel like you've missed out on something significant.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Mia's eyes light up, a slow, seductive smile spreading across her face. She gestures for you to come closer.
***DAL1D.webp***
Mia: [Her voice low and sultry] "Well, well. Looks like my little cousin's finally growing up. Come on, let's see what you've got."
As you approach, you can't help but notice the way Mia's eyes roam over your body, lingering on areas that make your skin tingle with awareness. You position yourself nearby, hyperaware of her proximity.
Mia: [Demonstrating a stretch] "First things first, we need to loosen you up. You're wound tighter than a spring, cuz."
You mimic her movements, feeling the stretch in your muscles. The virus heightens every sensation, making you acutely aware of the blood pumping through your veins, the tightening of your skin.
Mia: [Observing you] "Mmm, you've been working out, haven't you? I can see the difference. Very nice."
You: [Your voice slightly strained] "Yeah, well... survival of the fittest and all that."
Mia chuckles, the sound low and throaty. Her gaze is intense, almost predatory, and you feel a rush of heat through your body.
***DAL1E.webp***
Mia: [Whispering] "Oh, I'd say you're plenty fit. Now, let's see how strong you've gotten."
She guides you through a series of exercises, each one seemingly designed to showcase her flexibility and strength. You find yourself mesmerized by the way her body moves, the grace and power in every motion.
As the workout intensifies, so does the effect of the virus. Your skin feels hypersensitive, every brush of fabric against your body sending sparks of pleasure through you. You notice Mia's breathing becoming more labored, her skin flushed not just from exertion.
***DAL1F.webp***
Mia: [Panting slightly] "Is it getting hot in here, or is it just me?"
You: [Breathlessly] "Definitely not just you."
Mia: [Teasingly] "Good to know. You know, they say shared suffering brings people closer together."
The implication in her words sends a rush of heat through your body. You're acutely aware of every movement she makes, of the scent of her skin, of the way her body seems to call to yours.
As you move into the cool-down stretches, Mia positions herself in front of you, her back to your chest. She bends forward, ostensibly to touch her toes, but the movement brings her perfectly rounded backside mere inches from your groin.
***DAL1G.webp***
Mia: [Looking back at you over her shoulder] "How's the view from back there, cuz?"
You swallow hard, your mouth suddenly dry. The virus thrums through your veins, heightening every sensation, every desire.
You: [Your voice rough] "It's... quite something."
Mia straightens up slowly, her body nearly brushing against yours. For a moment, you're both frozen, the air between you crackling with tension.
Mia: [Breaking the moment with a playful smile] "I think that's enough for today. Wouldn't want to wear you out too quickly."
As she moves to leave, she deliberately walks past you, close enough that you can feel the heat radiating from her body. The scent of her sweat-dampened skin fills your nostrils, sending a jolt of arousal through you.
Mia: [Looking back at you from the doorway] "Same time tomorrow? I've got plenty more to teach you, if you're up for it."
You: [Your voice husky] "Yeah. Yeah, I'll be here."
As Mia saunters out of the room, her hips swaying hypnotically, you're left to contemplate the shift in your relationship. The line between family and something more has never felt so blurred, and the virus's effects have never been so potent.
***DAL1H.webp***
You: [To yourself, trying to calm your racing heart] (What just happened? And why do I want it to happen again?)
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The soft glow of moonlight filters through the tattered curtains of Mia's room, casting ethereal shadows across the floor. You're passing by her door on your way to the bathroom when you hear a soft whimper from within. Concern overrides hesitation, and you gently push the door open.
The sight that greets you makes your breath catch in your throat. Mia is sprawled across her bed, the thin sheet tangled around her legs, leaving little to the imagination. Her skin glistens with a fine sheen of sweat, her chest rising and falling rapidly with each labored breath. Her golden hair is a wild halo around her head, and even in the dim light, you can see the flush on her cheeks.
***DAL2A.webp***
You: [Whispering] "Mia? Are you okay?"
Mia's eyes flutter open, unfocused and glassy. She turns towards your voice, and the movement causes the sheet to slip further, revealing more of her toned stomach.
Mia: [Her voice hoarse] "Cuz? Is that you? Or am I dreaming again?"
You: [Stepping closer, concern evident in your voice] "It's me. You look... are you sick?"
Mia: [Laughing weakly] "Sick? No... just the virus. It gets worse at night. Makes everything so... intense."
As she speaks, she stretches languidly, arching her back in a way that makes your mouth go dry. The virus surges through your own body in response, heightening every sensation.
***DAL2B.webp***
Mia: [Her eyes focusing on you, a hint of mischief in her gaze] "You know, you could help me. They say human touch can ease the symptoms."
You: (This is dangerous territory. But how can I refuse her when she's clearly suffering?)
***START - Choice 1***
[[Branch A: "I don't think that's a good idea, Mia. Let me get you some water instead." (Lust attribute requirements not met)]]
[[Branch B: "What kind of touch did you have in mind?" (Lust attribute requirements met)]]
***START - Choice 1 - Branch A***
Mia's face falls, a mix of disappointment and frustration flashing across her features.
***DAL2C.webp***
Mia: [Turning away] "Right. Water. Thanks, cuz."
You quickly leave to fetch the water, feeling a pang of guilt at the hurt in her eyes. When you return, Mia has turned away, curled in on herself. The moment of intimacy has passed.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Mia's eyes widen slightly at your boldness, a slow, seductive smile spreading across her face. She pats the bed beside her invitingly.
***DAL2D.webp***
Mia: [Her voice low and husky] "Why don't you come closer and find out?"
Heart pounding, you approach the bed. The virus thrums through your veins, making every step feel like an eternity. As you sit on the edge of the mattress, the heat from Mia's body seems to envelop you.
Mia: [Reaching out to touch your arm] "God, your skin feels so cool. It's heavenly."
Her fingers trail up your arm, leaving goosebumps in their wake. You have to stifle a gasp at the contact, the virus amplifying every sensation tenfold.
You: [Your voice rough] "Mia, we shouldn't..."
Mia: [Pressing her palm flat against your chest] "Shouldn't what? Comfort each other? Help each other through this hell we're living in?"
Her hand slides up to cup your cheek, and you find yourself leaning into her touch. The rational part of your brain screams that this is wrong, but your body betrays you, responding to her proximity.
***DAL2E.webp***
Mia: [Whispering] "Do you remember when we were kids? How we used to sneak into each other's rooms during thunderstorms?"
You: [Nodding] "You were always braver than me."
Mia: [Her eyes intense] "I'm not feeling very brave right now, cuz. I'm scared. Of what's happening to us, of what I'm feeling. Hold me? Like you used to?"
Without waiting for a response, Mia tugs you down beside her. You find yourself lying next to her, your bodies not quite touching but close enough to feel the heat radiating between you. The scent of her skin - a mix of sweat and something uniquely Mia - fills your nostrils, making your head spin.
Mia curls into you, her forehead resting against your chest. You can feel her breath, hot and rapid, through your thin t-shirt. Your arm instinctively wraps around her, your hand coming to rest on the small of her back.
***DAL2F.webp***
Mia: [Sighing contentedly] "This... this helps. You always knew how to make me feel better."
As you hold her, you're acutely aware of every point of contact between your bodies. The soft swell of her breasts against your chest, the way her hips align with yours, it's all achingly adult. The virus heightens every sensation, making your skin feel like it's on fire.
Mia shifts slightly, her leg sliding between yours. The movement causes the sheet to slip further, exposing more of her smooth skin. Your hand, resting on her back, now touches bare flesh.
Mia: [Looking up at you, her eyes dark and intense] "Cuz? I... I need..."
Her words trail off as she leans in, her lips mere inches from yours. You can feel the heat of her breath, see the way her tongue darts out to wet her lips. The air between you is charged with tension and unspoken desire.
***DAL2G.webp***
Just as you think she's about to close the distance, a loud crash from somewhere in the house startles you both. Reality comes crashing back, and you suddenly realize the compromising position you're in.
Mia: [Pulling back slightly, her voice breathless] "We should... we should probably check that out."
You: [Nodding, trying to calm your racing heart] "Yeah. Yeah, we should."
As you both reluctantly disentangle yourselves, Mia catches your hand, giving it a squeeze.
Mia: [Softly] "Thank you. For being here. For understanding."
You: [Your voice rough with emotion] "Always, Mia. Always."
You leave her room on shaky legs, your body still thrumming with unfulfilled desire. As you go to investigate the noise, you can't help but replay the moment in your mind, wondering what might have happened if you hadn't been interrupted.
You: [To yourself] (Everything's changed. And for once, I'm not sure if I'm terrified or exhilarated.)
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Steam fills the small bathroom, fogging up the cracked mirror and creating a hazy, dreamlike atmosphere. You're just about to step into the shower when you hear a knock at the door.
Mia's voice filters through, sounding strained: "Cuz? Are you in there? I really need to use the bathroom. It's... it's kind of an emergency."
You: [Wrapping a towel around your waist] "Uh, sure. Just give me a second."
You open the door to find Mia standing there, looking flushed and uncomfortable. She's wearing a thin nightgown that clings to her curves, leaving little to the imagination. Her skin is glistening with sweat, and her pupils are dilated, clear signs of the virus's effects.
***DAL3A.webp***
Mia: [Pushing past you] "Sorry, I can't wait. It's the virus... sometimes it causes, um, digestive issues."
You: [Awkwardly] "Oh. Right. I'll just... wait outside then."
Mia: [Grabbing your arm, her touch sending a jolt through you] "No! I mean... could you stay? Just in case I need help. Sometimes the pain gets really bad."
You: (This is a bad idea. A very bad idea. But if she really needs help...)
***START - Choice 1***
[[Branch A: "I don't think that's appropriate, Mia. I'll be right outside if you need anything." (Lust attribute requirements not met)]]
[[Branch B: "Of course. I'll turn around to give you privacy, but I'll be here if you need me." (Lust attribute requirements met)]]
***START - Choice 1 - Branch A***
Mia's face falls, a mix of disappointment and embarrassment flashing across her features.
***DAL3B.webp***
Mia: [Forcing a smile] "Right. Of course. Thanks, cuz."
You quickly step out, closing the door behind you. As you wait in the hallway, you can't help but feel like you've let Mia down somehow.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Relief floods Mia's face, followed quickly by a flash of something else - gratitude mixed with a hint of mischief.
***DAL3C.webp***
Mia: [Softly] "Thank you. You always know how to make me feel safe."
You turn your back as Mia takes care of her needs, trying desperately to ignore the soft sounds and the knowledge that she's so close, so vulnerable. The steam from the shower makes the small space feel even more intimate, and you can feel the virus heightening your senses, making you hyper-aware of every sound, every scent.
Mia: [Her voice strained] "Ugh, this virus is the worst. Makes everything so... intense."
You: [Keeping your voice steady] "Is there anything I can do to help?"
Mia: [A pause, then softly] "Actually... could you hand me a towel? I'm feeling a bit dizzy."
You turn, keeping your eyes averted as you pass her a towel. But in the steamy mirror, you catch a glimpse of Mia's reflection. Her nightgown is clinging to her body, outlining every curve. You quickly look away, but the image is seared into your mind.
***DAL3D.webp***
As Mia stands, she sways slightly. Without thinking, you reach out to steady her, your hands grasping her upper arms. The contact sends a jolt of electricity through you, and you can feel the heat of her skin even through the towel.
Mia: [Looking up at you, her eyes dark and intense] "Wow, you're... you're really warm."
You: [Your voice rough] "It's the steam. Are you okay?"
Mia nods, but makes no move to step away. You're acutely aware of how close you are, of the way her chest rises and falls with each breath. The virus surges through your body, heightening every sensation.
Mia: [Whispering] "You know, they say body heat helps with the virus symptoms."
Her words hang in the air between you, loaded with implication. You know you should step away, but your body seems frozen in place.
Mia: [Her voice husky] "I can feel your heartbeat. It's racing. Just like mine."
You: [Struggling to maintain control] "Mia, we shouldn't..."
Mia: [Cutting you off] "I know. I know we shouldn't. But doesn't it feel... right? Like this is how it's supposed to be?"
Her hand comes to rest on your chest, right over your heart. Even that small contact feels incredibly intimate, sending waves of heat through your body. You can see the effect you're having on her too - her pupils are dilated, her breathing shallow.
***DAL3E.webp***
For a moment, you're both frozen, teetering on the edge of something profound and irreversible. The air is thick with steam and unspoken desire.
Suddenly, a loud knock on the door startles you both apart.
Cherie's voice: "Is everything okay in there? Mia? Are you alright?"
Mia: [Calling out, her voice only slightly shaky] "I'm fine Aunty! Just... just dealing with some virus symptoms. Cuz is helping me."
You both freeze, the reality of the situation crashing down around you. Mia's eyes are wide, her chest heaving. You're acutely aware of your state of undress, of how close you came to crossing a line.
Mia: [Whispering] "We should... we should probably go."
You nod, unable to trust your voice. As Mia moves towards the door, she pauses, looking back at you.
Mia: [Softly] "Thank you. For being here. For... understanding."
***DAL3F.webp***
With that, she slips out of the bathroom, leaving you alone with the steam and your racing thoughts. The virus continues to surge through your body, every nerve ending alive with unfulfilled desire.
You: [To yourself, leaning against the sink] (What just happened? And why do I want it to happen again?)
As you step into the shower, the cold water does little to cool the fire Mia has ignited within you. You know things will never be the same between you, and part of you can't wait to see what happens next.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The moon hangs low and full in the sky, casting an ethereal glow over the District as you make your way to Mia's room. Your heart pounds in your chest, each beat seeming to echo the pulsing of the virus in your veins. The note you received earlier burns in your pocket: "Midnight. My room. Wear something easy to remove. Don't keep me waiting.
As you approach her door, you catch a whiff of something sweet and musky - a scent that makes your enhanced senses reel and your body respond instantly. You raise your hand to knock, but before you can, the door swings open.
Mia stands there, a vision that makes your breath catch in your throat. She's wearing a sheer, yellow negligee that leaves little to the imagination. The virus has enhanced her already stunning figure to perfection - her breasts full and perky, her waist impossibly narrow, her hips flaring out in a way that makes your hands itch to grasp them.
***DAL5A.webp***
Mia: [Her voice a husky whisper] "I was beginning to think you wouldn't come, cousin."
The way she says 'cousin' sends a shiver down your spine - a reminder of your familial bond that only serves to make the situation more thrillingly taboo. Mia steps back, allowing you to enter. As you do, you're hit with the full force of the scene she's set.
The room is bathed in candlelight, dozens of flames flickering and casting dancing shadows on the walls. Rose petals are scattered across the floor and bed, their sweet scent mingling with the muskier aroma of arousal. Soft, sensual music plays from hidden speakers, completing the seductive atmosphere.
Mia saunters towards you, her hips swaying hypnotically. Each step causes the negligee to shift, offering tantalizing glimpses of what lies beneath. She stops just inches from you, close enough that you can feel the heat radiating from her body. She sits, showcasing her generous behind.
***DAL5B.webm***
Mia: [Running a finger down your chest] "Do you like what you see, cousin? I've prepared a special show, just for you."
Her touch, even through your shirt, sends jolts of pleasure through your body. The virus amplifies every sensation, making you hyper-aware of every point of near-contact between you.
Mia: [Her voice dropping to a sultry purr] "I've been thinking about this for so long. About us. About how the virus has changed everything. Don't you want to explore those changes... together?"
***START - Choice 1***
[[Branch A: "Mia, we shouldn't. This is going too far."]]
[[Branch B: "Show me everything, Mia. I want to see it all."]]
***START - Choice 1 - Branch A***
You take a step back, shaking your head. "Mia, we shouldn't. This is going too far. We're family, and..."
Mia's face falls, disappointment flashing in her eyes. She wraps her arms around herself, suddenly looking vulnerable.
***DAL5C.webp***
Mia: [Softly] "I understand. I'm sorry, I shouldn't have... You should go."
You nod awkwardly and turn to leave, the image of Mia in her negligee seared into your mind despite your best efforts.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The virus surges within you, breaking down all barriers of morality and taboo. Your voice comes out as a low growl, thick with desire.
You: "Show me everything, Mia. I want to see it all."
Mia's eyes light up, a triumphant smile spreading across her face. She takes a step back, her hands moving to the thin straps of her negligee.
***DAL5D.webp***
Mia: [Her voice low and sultry] "As you wish, cousin. Prepare yourself for a show you'll never forget."
With agonizing slowness, Mia slides the straps off her shoulders partially. The flimsy fabric clings to her curves for a moment before succumbing to gravity, pooling at her feet in a whisper of silk. She stands before you, gloriously near naked, her virus-enhanced body a masterpiece of feminine perfection.
***DAL5E.webp***
Your eyes roam hungrily over her form, drinking in every detail. Her breasts are full and perky, defying gravity in a way that would be impossible without the virus's enhancements. Her stomach is flat and toned, leading down to a neatly trimmed patch of blonde hair at the apex of her thighs. Her legs seem to go on forever, shapely and strong. Now completly naked.
***DAL5F.webp***
Mia begins to move, her body undulating in a hypnotic dance. Every motion is calculated to entice, to arouse, to drive you wild with desire. She runs her hands over her body, cupping her breasts and pinching her nipples. A soft moan escapes her lips, the sound going straight to your groin.
Mia: [Her voice breathy with arousal] "Do you see what you do to me, cousin? How much I want you?"
She turns slowly, giving you a view of her backside. Her ass is a work of art, perfectly rounded and begging to be grasped. She bends slightly at the waist, looking back at you over her shoulder with a smoldering gaze that makes your knees weak.
***DAL5G.webp***
Mia: [Teasingly] "Don't you want to touch? To feel what the virus has done to us?"
You step forward, your hand reaching out. Just as you're about to make contact, Mia dances away, a playful smile on her lips.
Mia: "Ah-ah, not yet. First, I want to see you. Strip for me, cousin."
Your hands move to your shirt buttons, fumbling in your eagerness. Mia watches intently as you reveal your virus-enhanced physique. When you're down to just your underwear, she holds up a hand, stopping you.
Mia: [Her voice husky] "Leave those on. For now."
She saunters towards you, her hips swaying hypnotically. When she's close enough that you can feel the heat radiating from her body, she stops. Her hand reaches out, fingers tracing the contours of your chest and abs.
***DAL5H.webp***
Mia: [Breathlessly] "God, you're perfect. I want to touch you so badly. To taste you."
Her face is inches from yours now, her lips parted invitingly. You lean in, desperate to close the distance, but Mia pulls back with a teasing smile.
Mia: "Not yet. I want you desperate for me. I want you to dream about this moment, to ache for my touch."
She takes your hand, guiding it to her breast. The moment your skin makes contact with hers, it's like an electric current passing between you. The virus amplifies every sensation, making even this simple touch feel incredibly erotic. You fondle her breast in awe.
***DAL5I.webp***
Mia lets out a soft moan, arching into your touch. For a moment, you both lose yourselves in the sensation. Then, with visible effort, Mia steps back. Showing you her ass one last time.
***DAL5J.webp***
Mia: [Her voice shaky] "That's... that's all for tonight. I want you to leave now, with the memory of my body seared into your mind. With the ghost of my touch on your skin."
You open your mouth to protest, but Mia presses a finger to your lips.
Mia: "Trust me, the anticipation will make it so much better when we finally come together. Now go, before I lose my resolve and beg you to take me right here."
As you gather your clothes and make your way to the door on shaky legs, Mia calls out one last time.
Mia: "Sweet dreams, cousin. I know I'll be having them about you."
You leave, your body aching with unfulfilled desire. But Mia was right - the anticipation, the memory of her naked form and teasing touch, will fuel your fantasies for nights to come. And when you finally do come together, it will be explosive.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The afternoon sun beats down mercilessly as you and Mia make your way to the shed. You need to grab some tools for repairs, but as soon as you both step inside, the door slams shut behind you with an ominous click.
Mia: [Tugging at the door handle] "Shit, it's stuck! The lock must be jammed."
You: [Wiping sweat from your brow] "Great. Just great. And it's like an oven in here."
The shed is small, forcing you and Mia into close proximity. Your virus-enhanced senses pick up on every detail - the sheen of sweat on her skin, the quickening of her breath, the subtle scent of her arousal.
***DAL6A.webp***
Mia: [Fanning herself] "God, it's so hot. Mind if I take off my shirt?"
Before you can answer, Mia peels off her top, revealing a lacy bra struggling to contain her virus-enhanced breasts. As she turns to hang her shirt on a nearby hook, your eyes are drawn to her shapely ass, barely contained by her tight shorts.
Suddenly, a wave of virus-induced lust washes over you. Your focus narrows to Mia's behind, your mind flooded with vivid, obsessive thoughts about her ass. The curve of her cheeks, the way her shorts cling to her flesh, the imagined taste and scent of her most intimate areas - it's all you can think about.
***DAL6B.webp***
Your cock swells rapidly, tenting your pants obscenely. A low growl escapes your throat, drawing Mia's attention.
Mia: [Turning back, her eyes widening at your obvious arousal] "Wow, cuz. Is that all for me? Or should I say, for my ass?"
***START - Choice 1***
[[Branch A: "Try to resist the virus-induced obsession" (Lust attribute requirements not met)]]
[[Branch B: "Give in to your ass-centric lust" (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Gritting your teeth, fighting the urge] "We... we should focus on getting out of here, Mia."
Mia: [Pouting] "You're no fun. Fine, let's try to break the door down."
***DAL6C.webp***
Your attempts to escape are unsuccessful, and the sexual tension remains unresolved, your ass-obsessed thoughts haunting you.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Your voice husky with desire] "Fuck, Mia. Your ass is driving me insane. I can't stop thinking about it."
Mia: [A mischievous glint in her eye] "Oh really? Well, why don't you get a closer look?"
She turns around, bending over slightly and looking back at you over her shoulder. She wiggles her hips teasingly, her ass swaying hypnotically.
***DAL6D.webp***
Mia: "Like what you see, cuz? Why don't we both get more comfortable? It's too hot for clothes anyway."
Without waiting for a response, Mia slowly shimmies out of her shorts, revealing a tiny thong that disappears between her perfect ass cheeks. Your mouth goes dry at the sight, your cock throbbing painfully in your pants.
***DAL6E.webp***
You quickly strip down to your boxers, your massive erection creating an obscene tent. Mia's eyes widen at the sight, her pupils dilating with lust.
Mia: [Licking her lips] "God, you're huge. I can see it pulsing from here."
The heat in the shed intensifies, sweat glistening on both your bodies. Mia reaches behind her back and unclasps her bra, letting it fall to the floor. Her breasts bounce free, nipples hardening instantly in the air.
You: [Groaning] "Mia, you're perfect. Your tits, your ass... I need to touch you."
Mia: [Giggling] "Naughty boy. You want to feel up your cousin? Well, come and get it."
She turns around, presenting her ass to you. The thin strip of her thong does little to hide her perfect globes. You can see a damp spot forming on the fabric, evidence of her arousal.
***DAL6F.webp***
Unable to resist, you reach out and grab her ass with both hands. The feel of her soft yet firm flesh sends jolts of pleasure through your body. Mia moans at your touch, pushing back against your hands.
Mia: [Breathless] "Your hands feel so good, cuz. Squeeze harder."
You knead her ass cheeks, mesmerized by how they bounce and jiggle. The scent of her arousal grows stronger, mixing with the musky aroma of her ass. Your virus-enhanced senses go into overdrive, drowning you in a sea of lust.
You: [Panting] "Fuck, Mia. You smell so good. I want to taste you so badly."
Mia: [Teasing] "Mmm, not yet, big boy. We're just teasing, remember? But maybe you can get a little taste..."
She reaches back and pulls her thong to the side, exposing her glistening pussy and puckered asshole. The sight nearly makes you lose control. You lean in close, inhaling deeply, the scent of her most intimate areas making your head spin.
***DAL6G.webp***
Mia: [Moaning] "That's it, cuz. Breathe me in. Tell me how much you want me."
You: [Voice thick with need] "I want you so fucking bad, Mia. I've never wanted anyone like this before."
The virus surges through your veins, amplifying every sensation. In a moment of primal lust, you lean forward and bite the soft flesh of Mia's ass cheek, not hard enough to break the skin but enough to leave a mark. She screams in pleasure, her whole body shuddering.
Mia: [Panting] "Did you just bite my ass? Fuck, that's hot. Do it again!"
You comply, peppering her ass with little bites and kisses, careful not to cross the line into actual oral sex. Mia's moans grow louder, her hand sneaking between her legs to rub her clit.
***DAL6H.webp***
Mia: [Whimpering] "God, cuz. You're driving me crazy. I want you inside me so badly."
You stand up, your massive member straining against your boxers. You press yourself against Mia's ass, grinding your cloth-covered cock between her cheeks.
You: [Groaning] "Fuck, Mia. Your ass feels amazing. I want to bury myself in you."
Mia pushes back against you, creating delicious friction. You can feel the heat of her core even through the fabric of your boxers.
Mia: [Breathless] "Me too, cuz. But we can't... not yet. But maybe we can do this..."
She turns around and presses her naked body against yours. Her breasts flatten against your chest, her nipples hard points of pleasure. She grinds her pussy against your thigh, leaving a wet streak on your skin.
You grab her ass with both hands, pulling her closer as you grind against each other. The friction is maddening, bringing you both to the edge without quite pushing you over.
***DAL6I.webp***
Mia: [Moaning] "Oh god, cuz. I'm so close. Are you gonna cum in your boxers for me?"
Her words send you over the edge. With a guttural groan, you explode in your boxers, pumping rope after rope of thick, virus-enhanced cum. The wet spot spreads rapidly, the scent of your seed filling the air.
Mia cries out, her body shuddering in orgasm as she grinds against your thigh. Her juices flow freely, mixing with the sweat on your skin.
As you both come down from your high, you realize you're still locked in an intimate embrace, your bodies pressed tightly together.
***DAL6J.webp***
Mia: [Panting] "Holy shit, cuz. That was... intense. I can't believe we came like that without even really touching."
You: [Still dazed] "Mia, that was amazing. You're incredible."
As you both catch your breath, you notice your cock is already hardening again, and Mia's pussy is visibly dripping with renewed arousal.
You both decide to climb out of the window and escape the scroching shed.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter the bathroom, steam still lingering from a recent shower. The mirror is fogged, but you can make out Mia's silhouette behind the translucent shower curtain. Your heart races, the virus amplifying your every sensation.
Mia: [Peeking out from behind the curtain] (Oh, he's here. Perfect.) "Oops! Didn't hear you come in, cuz. Mind handing me that towel?"
You grab the towel, hesitating as you approach. The virus hums through your veins, urging you closer.
You: [Holding out the towel] (God, she's beautiful.) "Here you go, Mia."
As Mia reaches for the towel, she "accidentally" pulls the curtain open wider, giving you a full view of her naked, glistening body. Water droplets cascade down her curves, drawing your eyes to her perfectly rounded ass.
***DAL7A.webp***
Mia: [Turning slowly] (I can feel his eyes on me.) "Like what you see?"
Your gaze travels lower, fixating on the tantalizing glimpse of her womanhood between her thighs. The virus heightens your vision, allowing you to see every detail - her swollen lips, the glisten of arousal mixing with shower water.
You: [Swallowing hard] (This is wrong, but I can't look away.) "Mia, we shouldn't..."
Mia: [Stepping out of the shower] (The virus is making me so bold.) "Shouldn't what? Appreciate each other? The world's changed, cuz. Why fight what feels natural?"
She takes the towel but doesn't cover herself. Instead, she bends over the sink, ostensibly to wipe the mirror, but the position puts her ass and exposed anus on full display.
***DAL7B.webp***
Mia: [Looking at you in the mirror] "The virus... it makes everything so intense. Don't you feel it?"
***START - Choice 1***
[[Branch A: "We need to stop this, Mia. It's not right." (Lust attribute requirements not met)]]
[[Branch B: "I feel it. God, do I feel it." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Mia: [Straightening up, wrapping the towel around herself] (Damn, I pushed too far.) "You're right. I'm sorry, I don't know what came over me. Can we just... forget this happened?"
The moment shatters, leaving an awkward tension. Mia hurries out, leaving you alone with your conflicted thoughts.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You step closer, drawn by an irresistible force. The virus pulses through you both, a living current of desire.
You: [Voice husky] "I feel like I'm going to explode if I don't touch you."
Mia: [Shivering with anticipation] (Yes, yes, yes!) "Then touch me, cuz. But remember... we can't go all the way. Not yet."
You place your hands on her hips, marveling at how soft her skin feels. Slowly, reverently, you trail your fingers down to her ass, cupping the firm globes.
***DAL7C.webp***
Mia: [Moaning softly] "Mmm, that feels so good. The virus... it's like every nerve is on fire."
You knead her ass, spreading her cheeks slightly. The sight of her puckered anus and glistening pussy is almost too much to bear. A drop of pre-cum soaks through your pants.
***DAL7D.webp***
Mia: [Pressing back against your hands] (I want him so badly.) "God, cuz. I've thought about this so many times. Late at night, when everyone's asleep... I touch myself imagining it's you."
The confession sends a jolt of electricity through you. You trace a finger along her crack, barely brushing against her most intimate areas.
Mia: [Gasping] "Fuck! That's... that's intense."
You: [Growling] "You have no idea what you do to me, Mia."
Unable to resist, you drop to your knees, bringing your face level with her perfect ass. The scent of her arousal is intoxicating, amplified by the virus.
***DAL7E.webp***
Mia: [Looking back over her shoulder] (Oh god, is he going to...?) "Cuz? What are you-"
You cut her off by blowing gently on her exposed anus and pussy. Mia's whole body shudders in response.
Mia: [Whimpering] "Oh fuck, oh fuck, oh fuck..."
You're so close that you can see her anus clenching and unclenching, her pussy lips swelling with arousal. It takes every ounce of willpower not to bury your face between her cheeks.
***DAL7F.webp***
Instead, you stand up slowly, letting your clothed erection press against her ass as you rise. Mia grinds back against you, creating a delicious friction.
Mia: [Panting] "Cuz... we should stop. But maybe..."
Her eyes dart to the shower. A mischievous grin spreads across her face.
Mia: [Biting her lip] "How about we... take care of ourselves? Together?"
You both step into the shower, facing each other, eyes locked.
***DAL7G.webp***
Mia: [Running a hand down her body] "You know, I used to see you as just my little cousin. But now..."
She begins touching herself, her fingers circling her clit.
***DAL7H.webp***
Mia: [Moaning] "Now all I can think about is how you could handle me. How you could destroy me with that virus-enhanced cock."
You wrap a hand around your throbbing member, stroking slowly.
You: [Groaning] "Tell me more, Mia."
Mia: [Gasping as she slides two fingers inside herself] "I think about you manhandling me, cuz. Bending me over and taking what's yours. God, I bet you could break me in the best way possible."
You increase your pace, pre-cum mixing with the shower water.
Mia: [Eyes locked on yours] "Remember when we used to play house? Now I want you to play house with me for real. Breed me, fill me up, make me yours."
The confession brings you to the edge.
You: [Feeling your orgasm approach] "Mia, I'm close."
Mia: [Panting, her movements frantic] "Me too, cuz. Let's cum together."
Mia: [Crying out] "Now!"
You: [Groaning] "Fuck, Mia!"
You both explode in simultaneous orgasm, lost in shared ecstasy.
***DAL7I.webm***
As the aftershocks subside, reality slowly seeps back in. You wash quickly, an awkward silence falling.
Mia: [With a small smile] "See you at dinner, cuz."
She's gone, leaving you alone with your thoughts and the lingering effects of the virus.
You: [To yourself] (What have we gotten ourselves into?)
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The once-pristine kitchen now bears the scars of your new reality. Makeshift repairs and jury-rigged appliances stand as silent witnesses to your family's resilience. As you enter, an enticing aroma wafts through the air, a stark contrast to the usual bland rations.
Mia stands at the counter, her back to you as she chops vegetables with surprising skill. Her golden blonde hair cascades down her back in messy waves, and she's humming a catchy pop tune you vaguely remember from before the outbreak.
***DAT1A.webp***
You: [Clearing your throat] "Smells good in here. What's cooking?"
Mia: [Turning with a dazzling smile, her green eyes sparkling] "Well, if it isn't my favorite little cousin! I'm whipping up a feast fit for survivors. Thought we could use some pampering."
As she speaks, you can't help but notice how different she looks from your memories. Her athletic figure has only become more defined, her curves more pronounced. The confidence she always exuded now seems tinged with a wild, untamed energy.
***DAT1B.webp***
You: [Moving closer, trying to appear casual] "Need any help?"
Mia: [Chuckling, a mischievous glint in her eye] "From you? Last I checked, you could burn water. But sure, why not? Here, stir this pot, hot stuff."
As you take the spoon, your hands brush briefly. There's a moment of tension as you both adjust to this new dynamic - no longer children, but adults reunited in a world turned upside down.
You: [Stirring the pot, trying to sound mature] "So, how are you settling in? It must be a big change from... well, before."
Mia: [Her smile faltering slightly, a shadow crossing her face] "Oh, you know me. I can make anywhere feel like home. But I gotta say, cuz, I'm glad to be here. It was getting pretty wild out there on my own."
You notice a faint scar on her forearm, a reminder of the dangers she must have faced. A surge of protectiveness washes over you, mixed with a hint of something else you're not quite ready to name.
Mia: [Catching your gaze, her voice softening] "Hey, no need for the puppy dog eyes. I'm tougher than I look, you know."
You: [Swallowing hard] "I know. It's just... I'm glad you're safe now."
Mia: [Her eyes suddenly intense] "Am I? Safe, I mean. Even with everything that's happened?"
There's a weight to her words, a hint at shared history and unspoken tensions. You realize that your response could set the tone for your relationship moving forward.
***START - Choice 1***
[[Branch A: "Of course. We're family, nothing changes that." (Trust attribute requirements not met)]]
[[Branch B: "You're more than safe, Mia. You're home." (Trust attribute requirements met)]]
***START - Choice 1 - Branch A***
Mia's smile doesn't quite reach her eyes as she nods, turning back to her chopping board.
Mia: [Her voice light, but with an undercurrent of disappointment] "Right. Family. Good old reliable family."
The moment of connection passes, replaced by a slightly awkward silence. You continue stirring the pot, searching for something to say to bridge the growing gap.
You: [Attempting to lighten the mood] "Remember when we used to sneak into the kitchen during family gatherings? Aunt Chanel would always catch us."
Mia: [Chuckling, but it sounds forced] "Oh yeah, those were the days. Before the world went to hell and we all became survivalists."
The conversation drifts to safer topics - the garden's progress, the challenges of cooking with limited ingredients, plans for improving the kitchen's functionality. But there's an undercurrent of tension, a sense of missed opportunity.
As the meal comes together, other family members begin to drift into the kitchen, drawn by the enticing aroma. The intimate moment between you and Mia dissipates in the bustle of dinner preparations.
Mia: [Addressing the group with her trademark charm] "Alright, folks! Dinner is served. Let's see if I've still got my magic touch!"
As you all sit down to eat, you catch Mia's eye across the table. There's a flicker of something - regret? longing? - before she looks away, focusing on entertaining the others with her stories and jokes.
***DAT1C.webp***
You: [To yourself] (I feel like I missed something important there. But we're family, we have time to figure this out... right?)
The meal continues, filled with compliments on Mia's cooking and her infectious laughter. But beneath it all, you can't shake the feeling that a door has closed - at least for now.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Mia's eyes widen slightly at your words, a soft blush coloring her cheeks. The tension in her shoulders eases, and her smile becomes more genuine, those charming dimples making an appearance.
***DAT1D.webp***
Mia: [Her voice warm] "Home, huh? I like the sound of that. Especially coming from you, cuz."
The atmosphere in the kitchen shifts, becoming more intimate despite the mundane task of cooking. As you continue to stir the pot, Mia moves closer, her arm brushing against yours as she adds seasoning.
Mia: [Softly, with a hint of vulnerability] "You know, I was worried about coming here. Wasn't sure how you'd all react, especially you."
You: [Turning to face her] "Why especially me?"
Mia: [Biting her lip, a habit you remember from childhood] "We were so close as kids, but then... well, things changed. I wasn't sure if you'd still see me the same way."
You: [Boldly placing a hand on her shoulder] "Mia, you're still you. And I'm still me. Everything else... we'll figure it out together, okay?"
She nods, her eyes shining with a mix of emotions. For a moment, you're both silent, the only sound the bubbling of the pot and the rhythmic chopping of vegetables.
Mia: [Breaking the silence with a playful grin] "So, tell me, little cousin. When did you get so smooth? Been practicing those lines while I was away?"
You: [Laughing, relieved at the return of her teasing] "Maybe I have. Someone had to keep up the family charm while you were gone."
As you work together to finish the meal, the years and hardships seem to melt away. You find yourself rediscovering the easy companionship you once shared, but with a new undercurrent of adult understanding.
***DAT1E.webp***
The conversation flows naturally, punctuated by Mia's infectious laughter and playful jabs. You trade stories of your experiences since the outbreak, finding comfort in shared struggles and small victories.
As other family members begin to drift into the kitchen, attracted by the delicious smell, you and Mia share a private smile. It feels like you've reconnected on a deeper level, laying a foundation for whatever comes next.
Mia: [Quietly, just for you] "Thanks for this, cuz. For making me feel welcome... and understood."
You: [Squeezing her hand briefly] "Always, Mia. We're in this together now."
The kitchen fills with chatter and laughter as everyone sits down to eat. Throughout the meal, you find your eyes drawn to Mia, noticing the way she lights up when she smiles, how she gestures animatedly when she talks. You realize that while she's still the cousin you remember, she's also become someone new - someone you're eager to get to know better.
***DAT1F.webp***
As the evening winds down, Mia catches your eye across the table. Her gaze is warm, filled with gratitude and something else you can't quite name. You feel a flutter in your chest, a sense of anticipation for what the future might hold.
You: [To yourself] (This feels like a new beginning. And for the first time in a long while, I'm actually looking forward to what comes next.)
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The living room, once a showcase of pre-apocalyptic luxury, has been transformed into a cozy haven of salvaged comforts. Mismatched furniture clusters around a makeshift coffee table, while patched curtains filter the harsh afternoon sunlight. As you enter, you find Mia kneeling by an old cabinet, rummaging through its contents with characteristic enthusiasm.
***DAT2A.webp***
Mia: [Excitedly] "Jackpot! They're still here!"
You: [Curious] "What's still here?"
Mia turns, her face lit up with that megawatt smile that always made your heart skip a beat. In her hands, she holds a stack of worn board games - relics from a simpler time.
Mia: [Grinning mischievously] "Game night, baby! Remember how I used to wipe the floor with you at Monopoly? Time to see if you've improved, little cousin."
There's a hint of challenge in her voice, that competitive spark you remember so well. You're struck by how much this seems to mean to her - a connection to the past, a semblance of normalcy in this new, harsh world.
You: [Smiling, accepting the challenge] "Oh, it's on. Don't forget who always beat you at Scrabble."
Mia: [Teasingly] "Pfft, that's because you were such a little nerd. But now? I've got years of trash talk experience from cheerleading competitions. Prepare to be destroyed, cuz."
As you settle onto the worn couch, the familiar rhythm of game setup brings a wave of nostalgia. For a moment, you can almost forget the world outside, the constant struggle for survival. Here, in this room, it's just you and Mia, like old times.
***DAT2B.webp***
The game begins, and with it, a flood of memories. Each card drawn, each move made seems to spark a shared recollection.
Mia: [Landing on your property, pouting dramatically] "Ugh, not again! You always did have the luck of the devil. Must be those Johny genes."
You: [Chuckling] "Skill, Mia. Pure skill."
Mia: [Leaning in, her green eyes sparkling with mischief] "Oh yeah? Well, skill this!"
She reaches out, attempting to snatch one of your properties. You catch her wrist, laughing as you fend off her playful attack. The physical contact sends a jolt through you, reminding you that you're no longer kids wrestling over game pieces.
Mia: [Noticing your reaction, her voice taking on a teasing lilt] "Ooh, someone's been working out. When did my little cousin get so... solid?"
You: [Feeling a blush creep up your neck] "Things change, Mia. We all had to toughen up."
Mia: [Her gaze lingering on you] "Mmm, I can see that. It looks good on you, cuz."
There's a moment of charged silence as the implications of her words hang in the air. Mia's cheeks flush slightly, and she quickly looks down at the board.
You: (Is she flirting with me? Or am I reading too much into it?)
***START - Choice 1***
[[Branch A: "Thanks. You look good too. I mean, you always did, but... you know what I mean." (Trust attribute requirements not met)]]
[[Branch B: "Glad you approve. Your opinion's always mattered to me, Mia." (Trust attribute requirements met)]]
***START - Choice 1 - Branch A***
Mia's smile falters for a moment, a flicker of disappointment crossing her face before she masks it with a laugh.
Mia: [Tossing her hair dramatically] "Well, duh. Looking good is my superpower. Now, are you gonna make your move or what?"
The easy flow of conversation stutters, replaced by a slightly awkward silence. You focus on the game, trying to recapture the earlier camaraderie, but something has shifted.
As the game progresses, you notice Mia becoming more reserved, her earlier enthusiasm dimming. Her responses become shorter, less playful.
You: [Attempting to lighten the mood] "Hey, remember how we used to make up our own rules? Like the 'Cousin Card' that let us steal each other's properties?"
Mia: [Smiling, but it doesn't reach her eyes] "Yeah, that was fun. We were always bending the rules, weren't we?"
There's a wistfulness in her tone that makes you wonder if she's talking about more than just board games. But before you can pursue that thought, she abruptly stands up.
***DAT2C.webp***
Mia: [Stretching, her shirt riding up to reveal a toned midriff] "You know what? I think I'm done being destroyed for one night. Mind if we call it quits?"
You: [Surprised] "Oh, sure. Everything okay?"
Mia: [Not meeting your eyes] "Yeah, just... long day, you know? Thanks for playing with me. It was nice to remember the old days."
As she begins to clean up the game, you can't shake the feeling that you've somehow disappointed her. The evening ends on a subdued note, the earlier warmth and connection fading into something more distant.
You: [To yourself as Mia leaves the room] (I feel like I missed something important. But it's probably nothing... right?)
Left alone in the living room, you find yourself staring at the half-finished game, wondering how a simple board game could suddenly feel so complicated.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Mia's eyes snap up to meet yours, a mix of surprise and something deeper, more intense, in her gaze. The flush on her cheeks deepens, spreading down her neck.
***DAT2D.webp***
Mia: [Her voice slightly husky] "Does it now? Well, aren't you full of surprises tonight."
The air between you seems to thicken, charged with unspoken possibilities. You're acutely aware of how close she is, of the way her fingers fidget with her game piece.
You: [Leaning in slightly] "I'm not the only one full of surprises. You've changed too, Mia."
Mia: [Softly] "Oh? How so?"
You: [Boldly] "You're still you, but... more. Stronger. More intense. It's... intriguing."
Mia's breath catches audibly. For a moment, you think she might say something more, but instead, she breaks eye contact, looking down at the board with a small, secret smile.
Mia: [Playfully] "Intriguing, huh? I'll take that as a compliment. Now, are you gonna make your move, or are you too distracted by my intriguing presence?"
There's a teasing lilt to her voice now, a playful challenge that wasn't there before. The game continues, but with a new undercurrent of tension. Every accidental touch as you reach for cards or move pieces feels electric. You find yourself hyper-aware of Mia's presence - the scent of her hair, the sound of her laughter, the way she bites her lip when she's considering her next move.
***DAT2E.webp***
As the game progresses, your conversations become more personal, touching on hopes and fears you've never shared with anyone else.
Mia: [Landing on your property again] "You're ruthless! I'm going to end up owing you everything at this rate."
You: [Teasingly] "Everything, huh? That's a dangerous offer to make."
Mia: [Looking up at you through her lashes] "Maybe I like a little danger. The world's different now, isn't it? Old rules don't always apply."
The implication in her words sends a shiver down your spine. You're both dancing around something, testing boundaries neither of you is quite ready to cross.
As the evening wears on, you find excuses to prolong the game - suggesting house rules, reminiscing about past game nights, anything to keep this moment from ending. Mia seems equally reluctant to leave, her competitive spirit giving way to a softer, more intimate energy.
Finally, as the last of the daylight fades, Mia stretches, her shirt riding up to reveal a sliver of toned stomach. You catch yourself staring and quickly look away, but not before she notices.
***DAT2F.webp***
Mia: [Her voice low] "You know, I'm really glad we did this. It feels like... like we're reconnecting. On a deeper level."
You: [Meeting her gaze] "Me too. I've missed this. Missed you."
Mia reaches out, her hand resting on yours for a moment longer than strictly necessary. The touch sends a jolt of electricity through you.
Mia: [Standing reluctantly] "We should probably call it a night. But... maybe we can do this again soon? Just the two of us?"
You: [Nodding, your voice slightly rough] "I'd like that. A lot."
As Mia leaves the room, she pauses at the doorway, looking back at you with an expression that makes your heart race. There's a promise in her eyes, a hint of possibilities yet to be explored.
***DAT2G.webp***
You: [To yourself after she's gone] (What just happened? And why do I suddenly feel like everything's about to change?)
Left alone in the living room, you find yourself staring at the abandoned game board, your mind replaying every moment of the evening. One thing's for certain - game night will never be the same again.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The soft glow of a salvaged lamp casts long shadows across Mia's room, transforming the space into an intimate sanctuary from the harsh realities outside. You stand in the doorway, hesitant to intrude, but drawn by the muffled sounds of distress coming from within.
Mia sits on the edge of her bed, her golden hair falling in a curtain around her face as she hunches over something in her hands. As you step closer, you realize it's an old photo album - a relic from the world before.
***DAT3A.webp***
You: [Softly] "Mia? You okay?"
She looks up, startled, and you see the tears glistening on her cheeks. For a moment, she looks vulnerable, younger - a stark reminder of the girl you once knew.
Mia: [Hastily wiping her eyes, forcing a smile] "Oh! Hey, cuz. I'm fine, just... having a moment, I guess. Don't mind me."
You: [Moving closer] "Mind if I join you?"
Mia hesitates, then nods, scooting over to make room on the bed. As you sit beside her, you catch a glimpse of the photos - smiling faces of friends and family, many of whom are now gone.
Mia: [Her voice thick with emotion] "God, look at us. We were so young, so... clueless about what was coming."
You: [Gently] "We couldn't have known, Mia. No one did."
Your words seem to break something open in Mia. She leans into you, her body shaking with quiet sobs. Without thinking, you wrap an arm around her, pulling her close.
***DAT3B.webp***
Mia: [Between sobs] "I've been trying so hard to be strong, you know? To be the Mia everyone expects - always smiling, always in control. But seeing these faces... Fuck, I miss them. I miss who we used to be."
You: [Stroking her hair] "I know. I miss it too."
As her tears subside, Mia doesn't pull away. Instead, she seems to melt further into your embrace, her head resting on your shoulder. The intimacy of the moment is not lost on you - this is the closest you've been since she arrived.
Mia: [Looking up at you, her green eyes shimmering] "How do you do it? How do you stay so... together?"
You're struck by the raw vulnerability in her eyes, the need for reassurance. You realize that your response could deepen your connection or push her away.
***START - Choice 1***
[[Branch A: "I just focus on survival. It's easier not to think about what we've lost." (Trust attribute requirements not met)]]
[[Branch B: "I'm not always together. But having you here... it makes things easier." (Trust attribute requirements met)]]
***START - Choice 1 - Branch A***
Mia stiffens slightly in your arms, pulling back to look at you with a mix of disappointment and understanding.
Mia: [Her voice quiet] "Right. Survival. That's... that's what matters now, isn't it?"
She gently extracts herself from your embrace, closing the photo album with a finality that feels symbolic. The moment of vulnerability passes, replaced by a guarded expression.
***DAT3C.webp***
Mia: [Forcing a smile] "Well, thanks for the pep talk, cuz. Guess I just needed a reminder to toughen up."
You: [Standing awkwardly] "Mia, I didn't mean-"
Mia: [Cutting you off] "It's fine. Really. You're right, we can't afford to dwell on the past. I'll be okay."
As you leave her room, you can't shake the feeling that you've somehow failed her. The door closes behind you with a soft click, leaving you alone in the darkened hallway.
You: [To yourself] (I should have said something more. But what? How can I comfort her when I can barely handle my own grief?)
The night stretches on, filled with unspoken words and missed connections. You lie awake, replaying the scene in your mind, wondering how things might have been different.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Mia's breath catches at your words, her eyes widening with a mix of surprise and something deeper, more intense.
***DAT3D.webp***
Mia: [Softly] "Really? I... I make things easier for you?"
You: [Meeting her gaze] "More than you know. Having you here, it's like... like I've found a piece of myself I didn't know was missing."
The air between you seems to thicken, charged with unspoken emotions. Mia's hand finds yours, her fingers intertwining with your own.
Mia: [Her voice barely above a whisper] "I feel the same way. When I'm with you, it's like... like the world makes sense again, even if just for a moment."
You're acutely aware of her proximity, of the warmth of her body pressed against yours. The scent of her hair - a hint of floral mixed with something uniquely Mia - fills your senses.
You: [Squeezing her hand] "We're in this together now. Whatever happens, we have each other."
Mia looks up at you, her eyes shining with unshed tears and something that looks a lot like hope. For a moment, the world narrows to just this - you and her, connected in the soft lamplight.
***DAT3E.webp***
Mia: [Hesitantly] "Can I... can I show you something?"
She reaches for the photo album, flipping to a page near the back. There, nestled among family photos, is a picture of the two of you from years ago. You're both laughing, your arm slung casually around her shoulders.
Mia: [Tracing the photo with her finger] "I've kept this with me, all this time. Even when... even when things were at their worst. It reminded me that there was still good in the world. That I had something to fight for."
The revelation hits you like a physical force. You've always been close, but this... this speaks to a deeper connection, one that's weathered time and apocalypse.
You: [Your voice rough with emotion] "Mia, I... I don't know what to say."
Mia: [Looking up at you, vulnerability and determination warring in her expression] "You don't have to say anything. Just... just hold me? Like you used to?"
Without hesitation, you pull her closer, enveloping her in a tight embrace. She melts into you, her body fitting against yours as if it was made to be there. You feel her breath against your neck, the beat of her heart against your chest.
***DAT3F.webp***
The night deepens around you, but neither of you moves to break the embrace. Words seem inadequate in the face of this newfound intimacy. Instead, you communicate through touch - the stroke of a hand, the press of a cheek, the intertwining of fingers.
As the first light of dawn begins to creep through the window, Mia stirs in your arms.
Mia: [Her voice sleep-rough and vulnerable] "Thank you. For being here. For understanding."
You: [Pressing a soft kiss to the top of her head] "Always, Mia. Always."
She looks up at you, her eyes filled with an emotion you're not quite ready to name. The air between you crackles with potential, with unspoken desires and newfound understanding.
***DAT3G.webp***
As you reluctantly disentangle yourself, preparing to face another day in this harsh new world, you're filled with a sense of hope you haven't felt in years. Whatever comes next, you know you'll face it together.
You: [To yourself as you leave her room] (Everything's changed. And for the first time since the world ended, I'm actually looking forward to tomorrow.)
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The late afternoon sun hangs low in the sky, casting a golden glow over the river. You make your way along the bank, the soft earth squelching beneath your feet. The air is thick with humidity, carrying the scent of water lilies and damp earth. As you approach the bend where you've set your fish traps, a melodic laugh catches your attention.
Curious, you creep forward, careful to stay hidden behind the lush vegetation. Your breath catches in your throat as you spot Mia. She's waist-deep in the water, her back to you, completely unaware of your presence. The setting sun paints her wet skin in hues of gold and amber, droplets of water catching the light like tiny diamonds.
***DAT5A.webp***
Mia stretches her arms above her head, arching her back in a way that makes your mouth go dry. The virus has enhanced her already beautiful form to near perfection. Her waist is impossibly narrow, flaring out to hips that beg to be grasped. Her long, blonde hair, darkened by the water, clings to her back in mesmerizing patterns.
You: [Stepping out from your hiding spot, your voice slightly hoarse] "Mia? What are you doing out here?"
Mia spins around, surprise etched on her face for a moment before it melts into a coy smile. She makes no move to cover herself, instead raising an eyebrow as she notices your gaze roaming over her exposed body.
***DAT5B.webp***
Mia: [Her voice playful] "Enjoying the water, of course. Care to join me, cousin?"
The way she says 'cousin' sends a shiver down your spine. It's both a reminder of your familial bond and a challenge to the old world's taboos. The virus hums in your veins, urging you to step closer.
You: [Swallowing hard] "I... I don't have anything to swim in."
Mia's laugh is like music, echoing across the water. She takes a few steps closer to the shore, the water now lapping just below her breasts. Your eyes are drawn to the way her nipples have hardened in the cool water, standing out prominently against her sun-kissed skin.
Mia: [Her voice dropping to a sultry whisper] "Who says you need anything? I certainly don't."
With that, she rises fully from the water, revealing her naked form in all its glory. The virus has truly outdone itself with Mia. Her breasts are full and perky, defying gravity in a way that would be impossible without the enhancements. Her stomach is flat and toned, leading down to a neatly trimmed patch of blonde hair at the apex of her thighs. Her behind is as legendary as it gets.
***DAT5C.webp***
You feel your body responding, the virus amplifying your arousal to an almost painful degree. Your enhanced manhood strains against your pants, creating an obvious bulge that doesn't escape Mia's notice.
Mia: [Licking her lips as her eyes roam over you] "Looks like someone's excited. Why don't you come closer? Let me help you cool off."
She reaches out a hand, beckoning you forward. The sun glints off the water droplets on her skin, making her seem to glow. The scent of her arousal, sweet and musky, reaches you even from this distance, thanks to your virus-enhanced senses.
***START - Choice 1***
[[Branch A: "Mia, we can't. This isn't right."]]
[[Branch B: "God, Mia, you're irresistible. I can't look away."]]
***START - Choice 1 - Branch A***
You take a step back, averting your eyes. "Mia, we shouldn't. This isn't right. We're family, and..."
Mia's face falls, disappointment flashing in her eyes. She sinks deeper into the water, covering herself.
***DAT5D.webp***
Mia: [Softly] "I understand. I'm sorry, I shouldn't have... I'll just finish my swim."
You nod awkwardly and turn to leave, the image of Mia's perfect form seared into your mind despite your best efforts.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The virus surges through your body, heightening every sensation. Your voice comes out husky with desire.
You: "God, Mia, you're irresistible. I can't look away."
Mia's eyes light up, a triumphant smile spreading across her face. She moves closer to the shore, water lapping just below her breasts.
***DAT5E.webm***
Mia: [Her voice low and sultry] "Then don't look away, cousin. Enjoy the show."
She rises further from the water, rivulets cascading down her virus-enhanced body. Your eyes roam hungrily over her form, drinking in every detail. Her breasts are full and perky, nipples hardened from the cool water. Her stomach is flat and toned, leading down to a neatly trimmed patch of blonde hair just visible above the water's surface.
Mia runs her hands over her body, cupping her breasts and letting out a soft moan. The sound goes straight to your groin, your enhanced manhood straining against your pants.
***DAT5F.webp***
Mia: [Noticing your reaction, a mischievous glint in her eye] "Looks like someone's enjoying themselves. Why don't you come closer? The water feels amazing."
You find yourself moving forward as if in a trance, stopping at the water's edge. Mia swims closer, her movements graceful and sensual. She stops just out of reach, close enough that you can see droplets of water clinging to her eyelashes.
Mia: [Teasingly] "You're a bit overdressed for swimming, don't you think?"
Your hands move to the hem of your shirt, but Mia tuts, shaking her head.
Mia: "Ah-ah. Allow me."
She rises from the water, her naked body now mere inches from you. With agonizing slowness, she begins to unbutton your shirt. Her fingers brush against your skin, sending jolts of pleasure through your body. The virus amplifies every touch, making even this simple act feel incredibly erotic. She allows you to touch her ass which you obliged right away.
***DAT5G.webm***
As your shirt falls open, Mia's eyes roam over your chest, taking in the changes the virus has wrought. Your muscles are more defined, your skin seeming to glow with an inner light.
Mia: [Her voice filled with awe] "God, you're gorgeous. The virus has been kind to both of us, hasn't it?"
She presses herself against you, her wet, naked body a stark contrast to your still-clothed lower half. The feeling of her breasts against your chest, her nipples hard points of sensation, is almost overwhelming.
Mia: [Whispering in your ear] "I want you so badly. I've been dreaming about this, about us. Haven't you?"
You nod, unable to form words. Mia smiles, a mix of triumph and raw desire in her eyes. She hooks her fingers into the waistband of your pants, tugging lightly.
***DAT5H.webp***
Mia: [Her voice husky] "These need to come off. I want to see all of you."
Just as her fingers begin to work at your zipper, a sound from downstream catches both your attentions. Voices, growing closer. Reality comes crashing back in.
Mia steps back, a mix of frustration and excitement on her face.
Mia: [Breathlessly] "We should probably continue this... somewhere more private. My room, tonight?"
You nod eagerly, already anticipating what the night might bring. Mia flashes you one last seductive smile before diving into the water, swimming away just as the voices round the bend.
***DAT5I.webp***
As you adjust your clothes and try to calm your racing heart. The teasing has awakened something primal in both of you, and you can't wait to explore it further.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The living room is bathed in the soft glow of the TV as you settle onto the couch, your enhanced senses immediately picking up Mia's intoxicating scent. She plops down next to you, her thigh brushing against yours, sending a jolt of electricity through your virus-heightened nervous system.
***DAT6A.webp***
Mia: [Curling up comfortably, her curves pressing against your side] "So, what cinematic masterpiece are we subjecting ourselves to tonight, cuz?"
You: [Trying to ignore the warmth spreading through you] "It's called 'Apocalypse Love.' Seemed fitting, given our... unique situation."
As the movie begins, you find yourself hyper-aware of every little movement Mia makes. The slight shift of her body, the soft sound of her breathing, even the flutter of her eyelashes – all amplified by your virus-enhanced senses.
Mia: [Leaning in, her breath hot against your ear] "This is nice, isn't it? Almost like old times... except, you know, sexier."
You: [Swallowing hard, your enhanced body reacting to her closeness] "Yeah, if you ignore the whole end-of-the-world thing and the constant, uh, distractions."
As the movie progresses, you both laugh at the cheesy dialogue, occasionally throwing popcorn at the screen. The bond between you grows stronger with each shared joke and knowing glance. Your eyes can't help but wander to Mia's virus-enhanced figure, her curves more pronounced than ever.
***DAT6B.webp***
During a quieter moment, you turn to Mia, your expression serious.
You: "You know, Mia, I want you to know that I'll always protect you. No matter what happens in this crazy new world."
Mia: [Her eyes glistening, a mix of emotion and virus-induced arousal] "Thanks, cuz. I... I feel safe with you. And maybe a little something else too..."
Suddenly, the movie takes a steamy turn. On screen, a stunningly beautiful actress appears, her clothes slowly falling away to reveal her naked form. Your body responds immediately, your virus-enhanced manhood swelling to its full, impressive size.
***DAT6C.webp***
Mia: [Her eyes widening as she notices the massive tent in your pants] "Oh my god, cuz... Is that all because of her? Or... is it because of me?"
***START - Choice 1***
[[Branch A: "Try to deflect and change the subject" (Trust/Lust attribute requirements not met)]]
[[Branch B: "Admit your attraction and see where it leads" (Trust/Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Flustered, trying to cover yourself] "I... uh... it's just a normal reaction. Let's talk about something else."
Mia: [Disappointment flashing across her face] "Oh... I thought... Never mind. Maybe we should call it a night."
***DAT6D.webp***
The moment of potential intimacy fades, leaving you both feeling awkward and unsatisfied.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Taking a deep breath, your voice husky with desire] "It's because of you, Mia. You're so much more beautiful than anyone on that screen."
Mia: [A mischievous glint in her eye, her own arousal evident in her flushed cheeks] "Oh really? You think I'm hotter than her? Maybe I should give you a better view for comparison..."
With a sensual grace, Mia stands up, her movements deliberate and teasing. She slowly begins to unbutton her blouse, her eyes locked on yours. Your breath catches in your throat as she reveals more and more of her virus-enhanced perfection.
***DAT6E.webp***
Mia: [Letting her blouse fall to the floor] "What do you think, cuz? Am I giving that actress a run for her money?"
You: [Your voice thick with need] "Mia, you're incredible. There's no comparison."
Encouraged by your reaction, Mia continues her impromptu striptease. She turns her back to you, glancing over her shoulder as she slowly slides her skirt down her legs. The curve of her ass, now barely covered by lacy panties, makes your mouth water.
***DAT6F.webp***
Mia: [Turning back to face you, her hands on her hips] "Still think I'm hotter?"
You nod wordlessly, your enhanced body reacting powerfully to the sight before you. Your massive erection strains against your pants, creating an impressive tent that doesn't escape Mia's notice.
Mia: [Her eyes fixed on your crotch, licking her lips] "God, cuz... You're so big. I can't stop thinking about it. Do you... do you want to see more?"
Without waiting for an answer, Mia reaches behind her back and unclasps her bra. She holds it in place for a moment, teasing you, before letting it fall away. Her breasts, perfect and perky, bounce free. Your enhanced vision picks up every detail – the soft curve of her flesh, the hardening of her nipples, the slight flush spreading across her chest.
***DAT6G.webp***
Mia: [Her voice husky with arousal] "Touch yourself for me, cuz. Show me how much you want this."
Your hand moves almost of its own accord, palming your enormous erection through your pants. The friction sends waves of pleasure through you, amplified by the virus coursing through your veins.
You: [Groaning softly] "Mia... you're driving me crazy. This is so wrong, but I can't stop..."
Mia: [Moaning softly, her hand drifting to her breast] "I know, cuz. It's wrong, but it feels so right. Keep touching yourself. I want to see how big you really are."
With trembling hands, you unzip your pants, freeing your massive member. Mia's eyes widen at the sight, her pupils dilating with desire.
Mia: [Breathless] "Oh my god... you're even bigger than I imagined. I bet you could ruin me with that thing."
As you stroke yourself, Mia's last piece of clothing falls away. She stands before you, gloriously naked, her body a testament to the virus's enhancing effects. Her hand drifts between her legs, and you can see the glistening evidence of her arousal.
***DAT6H.webp***
Mia: [Her fingers working between her legs] "Look what you do to me, cuz. I'm so wet for you. I've never been this turned on in my life."
The scent of her arousal fills the air, driving you wild. Your hand moves faster on your cock, pre-cum leaking copiously from the tip.
You: [Panting heavily] "Mia... I'm close. I can't hold back much longer."
Mia: [On the edge of climax herself] "Me too, cuz! Let's cum together. I want to see you explode for me!"
With a guttural groan, you reach your peak. Your enhanced body produces an enormous load, splattering across your chest and even reaching your face. The sight pushes Mia over the edge, and she cries out in ecstasy, her body shuddering with the force of her orgasm.
As the afterglow settles over you both, Mia collapses onto the couch beside you, her body glistening with sweat.
***DAT6I.webp***
Mia: [Still catching her breath] "That was... incredible. I never knew it could be like that with you, cuz. Your cum... it smells so good. Is that because of the virus?"
You: [Nodding, still dazed from the intensity of your orgasm] "Yeah, I think so. Mia... this changes everything between us, doesn't it?"
Mia: [A mix of emotions playing across her face – desire, shame, excitement] "It does. But I don't regret it. Do you?"
***DAT6J.webp***
You: [Gently cupping her face] "No, I don't. Whatever happens, I meant what I said. I'll always protect you, Mia. No matter what."
As you both bask in the aftermath of your shared pleasure, the implications of what just happened begin to sink in. The trust between you has transformed into something new and dangerous, a smoldering desire that threatens to consume you both. The scent of your virus-enhanced seed lingers in the air, a constant reminder of the new dynamic between you, and the forbidden path you've started down together.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You step into the backyard, the late afternoon sun casting a golden glow over the newly cultivated garden. Your eyes are immediately drawn to Mia, who's bent over a raised bed, her perfectly rounded rear swaying as she tends to the plants.
***DAT7A.webp***
Mia: [Glancing over her shoulder] (Time to put on a show.) "Hey cuz! Come check out these melons I've been growing."
You approach, your gaze fixed on the way her shorts hug every curve of her ass. The double entendre isn't lost on you.
You: [Clearing your throat] (Two can play at this game.) "They look ripe for the picking."
Mia stands up slowly, arching her back in an exaggerated stretch that pushes her buttocks out towards you. The virus hums through your veins, heightening every sensation.
***DAT7B.webp***
Mia: [Turning to face you, eyes sparkling with mischief] "You know, all this gardening has me feeling so... dirty. How about a little car wash?"
Before you can respond, Mia saunters over to a bucket of collected rainwater, her hips swaying hypnotically. She bends over, giving you a perfect view of her ass as she dips a sponge into the water.
Mia: [Looking back at you] (I can see his eyes glued to my ass.) "See something you like, cuz?"
You: [Swallowing hard] (She's playing with fire.) "Just admiring your... gardening skills."
Mia giggles, then starts to "wash" herself, running the dripping sponge over her body in a sensual display. She pays extra attention to her rear, the water making her shorts cling even tighter to her curves.
***DAT7C.webp***
Mia: [Sighing dramatically] "It's so hot out here. These clothes are just too restrictive for gardening, don't you think?"
Without waiting for an answer, Mia hooks her thumbs into the waistband of her shorts, slowly shimmying them down her legs. She kicks them aside, leaving her in a tiny thong that does little to cover her perfect ass.
***DAT7D.webp***
You feel your cock hardening, straining against your pants. The virus amplifies your arousal, making it almost painful.
Mia: [Noticing your predicament] (Looks like someone's excited.) "Aww, cuz. You seem uncomfortable. Why don't you let that beast out to breathe?"
***START - Choice 1***
[[Branch A: "Mia, we shouldn't be doing this. We're family." (Trust attribute requirements not met)]]
[[Branch B: "If that's how you want to play, I'm game." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Mia: [Pouting, covering herself with her arms] (Damn, I pushed too far.) "Oh... right. I guess I got carried away. Maybe we should head inside."
The moment of connection fades, leaving an awkward tension in the air. Mia quickly retrieves her shorts and hurries inside, leaving you alone with your thoughts and unfulfilled desires.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You grin, deciding to match Mia's boldness. In one swift motion, you undo your pants and let your virus-enhanced member spring free. Mia's eyes widen, her gaze fixed on your impressive length.
Mia: [Licking her lips] (Holy shit, it's even bigger than I imagined.) "Wow, cuz. The virus has been good to you."
You: [Stroking yourself slowly] "Like what you see?"
Mia nods, unable to look away. The air between you crackles with sexual tension.
Mia: [Turning around, bending slightly] (Two can play at this game.) "You know, I think I missed a spot. Mind helping me out?"
She wiggles her ass invitingly, the tiny thong disappearing between her cheeks. You step closer, your cock now inches from her perfect rear.
***DAT7E.webp***
You: [Voice husky with desire] "Happy to lend a hand... or something else."
You bring your cock down on her ass with a soft slap, making Mia gasp. The feeling of her soft skin against your sensitive head sends shockwaves of pleasure through you both.
Mia: [Moaning softly] (Oh god, that feels amazing.) "Mmm, I think you missed a spot. Better try again."
What follows is an exquisite dance of teasing. You slap your cock against Mia's ass repeatedly, each impact sending ripples through her flesh. Mia pushes back against you, grinding her ass on your length without ever letting you penetrate her.
***DAT7F.webp***
The virus heightens every sensation, turning this teasing game into an overwhelming experience. Precum leaks from your tip, smearing across Mia's ass cheeks and making them glisten in the fading sunlight.
Mia: [Panting] (I'm so wet. I don't know how much longer I can resist.) "God, cuz. You're driving me crazy."
You: [Growling] "That's the idea, Mia. But we can't go too far... not yet. How about a little competition instead?"
Mia turns to face you, her eyes dark with lust. "What did you have in mind?"
You: "Let's see who can resist touching themselves the longest. Loser has to do whatever the winner says."
Mia: [Grinning wickedly] "You're on."
What follows is an agonizing test of willpower. Mia bends and stretches, showing off her flexibility from her cheerleading days. She pays special attention to her ass, jiggling and slapping it, knowing how much it affects you.
***DAT7G.webp***
You retaliate by stroking your cock, coming close to her face but never letting her touch it. You flex your muscles, letting her see the full effect of your virus-enhanced body.
The tension builds to an almost unbearable level. Mia's nipples are hard as diamonds, visible through her thin top. A damp spot forms on her thong, evidence of her arousal. Your cock throbs painfully, desperate for release.
Mia: [Voice shaky with need] (I'm so close to breaking.) "Getting tired, cuz? Ready to give in?"
You: [Breathing heavily] "Not a chance. You?"
Mia bites her lip, then turns around. She bends over, spreading her ass cheeks with her hands, giving you a perfect view of her most intimate areas through the thin fabric of her thong.
***DAT7H.webp***
Mia: [Looking back at you] "I bet you want to bury your face in here so bad. To taste how wet I am for you."
Your hands twitch at your sides, every fiber of your being screaming to reach out and touch her.
You: [Growling] "You're not playing fair, Mia."
Mia: [Giggling] "All's fair in love and war, cuz."
She wiggles her ass, the movement hypnotic. "I finger myself thinking about this, you know. Late at night, when everyone's asleep. I imagine it's your cock stretching me open, filling me up."
The confession, combined with the sight of her perfect ass on display, is too much. With a groan, you grab her hips, grinding your cock against her ass.
***DAT7I.webp***
Mia: [Gasping] (Yes!) "I win!"
You: [Breathing heavily] "Fuck, Mia. You're incredible."
Mia: [Pressing back against you] (I can't believe how much I want him.) "Mmm, and now you have to do whatever I say. But first..."
She grinds her ass against your length, the friction almost unbearable. When she finally steps away, you're both gasping for air.
***DAT7J.webp***
Mia: [Eyes dark with lust] "That's just a taste of what's to come, cuz. But for now..."
She steps back, leaving you aching for her touch.
Mia: [Grinning wickedly] "I think I'll save my prize for later. Let's see how long you can last knowing what's waiting for you."
With a final slap to her own ass that makes it jiggle enticingly, Mia saunters back into the shelter, leaving you aroused and frustrated in the best possible way.
***DAT7K.webp***
You: [Watching her go] (This girl is going to be the death of me.)
As you stand there, trying to calm your racing heart and your throbbing erection, you can't help but wonder what Mia has in store for you. One thing's for sure - life in the shelter just got a whole lot more interesting.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You knock on Mia's door, feeling anxious from the virus.
You: "Mia, can I sleep in your bed tonight? The virus is really getting to me."
Mia: [Smiling playfully] "Nice try, but you need to face this on your own. You’ve got this!"
***DCA1A.webp***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find Mia practicing dance moves in her room.
You: "Mia, the virus is making me nervous. Can I stay in your bed tonight?"
Mia: [Laughing] "Sorry, but you know I love my space. Dance it off instead!"
***DCA2A.webp***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach Mia, feeling the weight of the virus's effects.
You: "Mia, can I share your bed? I’m feeling overwhelmed."
Mia: [Winking] "Not tonight, but keep your chin up. You’re stronger than you think."
***DCA3A.webp***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You knock on Mia's door, feeling uneasy.
You: "Mia, can I stay in your bed tonight? The virus is stressing me out."
Mia: [Opening the door with a warm smile] "Alright, come on in. Let’s make sure we both get some rest."
***DCA4A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter Mia's room, finding her sketching by the window.
You: "Mia, can I sleep here tonight? The virus has me on edge."
Mia: [Nodding] "Of course. We’ll keep each other company."
***DCA5A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find yourself drawn to the bathroom door, feeling guilty but unable to resist peeking. Mia is brushing her hair, fully clothed in pajamas. When she notices you in the mirror, she jumps slightly.
Mia: [Blushing] "Oh! I didn't know you were there. Did you need the bathroom?"
You: [Stammering, ashamed] "Sorry, I was just passing by. Didn't mean to startle you. You have a nice voice."
Mia smiles shyly, tucking a strand of hair behind her ear.
Mia: "Thanks. Maybe we can sing together sometime?"
***DCB1A.webp***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus compels you to the bathroom door. Peeking in, you see Mia washing her face, wearing a tank top and shorts. She catches your eye in the mirror and grins, wiping her face with a towel.
Mia: [Turning to face you] "Hey cousin! Perfect timing. Want to watch a movie later? I found a new horror flick."
You: [Smiling back, trying to act normal] "Sure, that sounds fun. I'll bring the popcorn."
Mia playfully throws her damp towel at you, laughing.
Mia: "Great! It's a date. Don't chicken out if it gets too scary!"
***DCB2A.webp***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Unable to resist, you peek into the bathroom. Mia is changing her shirt, wearing a sports bra. You can't help but notice her toned stomach and arms. Guilt washes over you as she spots you.
Mia: [Pulling on a clean shirt] "Oops! Knock next time, okay? Though I guess we're family, so no big deal."
You: [Averting your eyes, flustered] "My bad, Mia. You've been working out, huh?"
Mia flexes playfully, showing off her biceps.
Mia: "Yep! Want to join me for a run tomorrow? I'll go easy on you."
***DCB3A.webp***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus drives you to peek into the bathroom. Mia is stepping out of the shower, reaching for a towel. You catch a glimpse of her naked form before she wraps herself up. She notices you and gasps.
Mia: [Clutching the towel tightly] "Oh god! I thought I locked the door. Did you... see anything?"
You: [Feeling warm, ashamed] "I'm so sorry, Mia. I didn't mean to... you look great though."
Mia blushes deeply, adjusting her towel.
Mia: [Whispering] "Thanks... maybe knock next time?"
***DCB4A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
Your feet carry you to the bathroom door against your will. Peeking in, you see Mia doing her makeup, completely naked. She sees you in the mirror and smirks, not bothering to cover up.
Mia: [Winking at you] "Like what you see, cousin? Don't be shy, I don't mind an audience."
You: [Swallowing hard, conflicted] "Mia, you're... stunning. But should you really be so comfortable with me seeing you like this?"
Mia saunters over, still naked, and pats your cheek.
Mia: "We're family, right? No need to be embarrassed about the human body."
***DCB5A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You and Mia settle in to watch a romantic comedy. Sitting on opposite ends of the couch, a bowl of popcorn between you, the movie starts. You both reach for popcorn at the same time, your hands brushing.
Mia: [Blushing] "Oh! Sorry about that. You go ahead."
You: [Stammering] "No, no, you first. I insist."
Mia smiles shyly, taking a handful of popcorn.
Mia: "Thanks. This movie's pretty funny so far, huh?"
***DCC1A.webp***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
As you start watching an action movie together, Mia sits closer on the couch, sharing a blanket. She leans against you slightly as the opening scene plays.
Mia: [Grinning] "This is nice, isn't it? We should do this more often."
You: [Smiling back] "Definitely. It's great spending time with you like this."
Mia snuggles a bit closer, her head resting on your shoulder.
Mia: "Same here. You're my favorite movie buddy."
***DCC2A.webp***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You're watching a horror movie together when a jump scare causes Mia to grab your arm, pressing close to you. You're acutely aware of her body against yours.
Mia: [Laughing nervously] "Sorry! I didn't think I'd get so scared. Mind if I stay close?"
You: [Chuckling, trying to ignore your body's reaction] "No problem. I'll protect you from the scary monsters."
Mia playfully swats your arm but doesn't move away.
Mia: "My hero. Just don't tell anyone I screamed, okay?"
***DCC3A.webp***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You're watching a drama when Mia excuses herself to change into more comfortable clothes. She returns wearing a loose tank top, and as she reaches for the remote, it slips, revealing her bare breast. She quickly covers up, blushing.
Mia: [Adjusting her top] "Oh, um... I'm so sorry. Did you see...?"
You: [Feeling warm] "It's okay, Mia. It was an accident. You look nice, though."
Mia bites her lip, a small smile forming.
Mia: [Whispering] "Thanks... I'm glad you think so."
***DCC4A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
During a slow part of the action movie, Mia stretches, her shirt riding up to reveal her bare breasts. She doesn't immediately cover up, smirking when she catches your eye.
Mia: [Winking] "See something interesting, cousin? The movie's up here, you know."
You: [Chuckling nervously] "Sorry, I got distracted. You're looking very... nice tonight."
Mia leans back, not bothering to adjust her shirt.
Mia: "I'm glad you think so. Maybe we should watch movies more often."
***DCC5A.webp***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
During a family dinner, you find yourself seated next to Mia. As everyone chats, she leans in to whisper to you.
Mia: [Blushing] "This is nice, isn't it? Being close like this?"
You: [Stammering] "Y-yeah, it's great. Pass the salt?"
Your hands brush as she hands you the salt shaker, causing you both to blush.
Mia: "Sorry about that. Enjoy your meal, cousin."
***DCD1A.webp***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
At the crowded dinner table, Mia suggests you share a chair due to lack of seating. She perches on your lap, seemingly innocent.
Mia: [Grinning] "Hope this isn't too uncomfortable for you. It's cozy, right?"
You: [Smiling back] "It's fine, Mia. Thanks for being so... accommodating."
Mia shifts slightly, getting comfortable on your lap.
Mia: "Anytime, cousin. Let me know if you need anything."
***DCD2A.webp***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
During dinner, Mia accidentally spills water on your lap. She quickly grabs a napkin to help dry you off, her hand lingering.
Mia: [Laughing nervously] "I'm so clumsy! Let me help you clean up."
You: [Chuckling, trying to ignore your body's reaction] "It's okay, Mia. I've got it."
Mia's hand brushes against you as she pulls away, causing you both to freeze momentarily.
Mia: "Sorry about that. I hope I didn't make you too uncomfortable."
***DCD3A.webp***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
As dinner progresses, Mia "accidentally" drops her napkin. As she bends to retrieve it, her loose top falls open, giving you a clear view of her bare breasts. She notices you looking and blushes.
Mia: [Adjusting her top] "Oh, um... did you see something?"
You: [Feeling warm] "Sorry, I didn't mean to look. You look nice tonight."
Mia bites her lip, a small smile forming.
Mia: [Whispering] "Thanks... I'm glad you noticed."
***DCD4A.webm***
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
During a lull in conversation, Mia stands to reach for a dish, her skirt riding up to reveal her completely bare ass. She smirks when she catches your eye.
Mia: [Winking] "Oops, sorry about that. These chairs are so cramped, aren't they?"
You: [Chuckling nervously] "No problem. It's a bit tight in here."
Mia sits back down, leaning in close, her breath hot on your ear.
Mia: "Maybe we should find somewhere more... spacious later."
***DCD5A.webp***
Get out of the room
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus rages through your system, your body burning with an insatiable lust as you stumble towards Mia's room. Your enhanced senses pick up her scent - a intoxicating mix of vanilla and musk that makes your cock throb painfully. You pause at her door, your hand trembling as you reach for the knob.
Inside, Mia sleeps restlessly, her curvaceous form barely covered by a skimpy cheerleader outfit - a remnant of her past life. Her long, blonde hair is tousled, and her face is flushed, lips parted as she lets out soft moans in her sleep. The sight of her sends a fresh wave of desire coursing through you.
***DBA1.webp***
AVA materializes beside you, her form shimmering with viral energy. Her voice is a seductive purr in your mind, dripping with dark promises.
***DBA2.webp***
AVA: [Grinning mischievously] (Such a naughty little cousin. Already so wet in her dreams) "Your sexy cousin is having quite the vivid dream. Wouldn't you like to join her? I can weave you into her fantasies, where her deepest, most forbidden desires run wild. After all, what happens in dreams stays in dreams... right?"
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Mia's dream"]]
***START - Choice 1 - Branch A***
With a herculean effort, you tear yourself away from Mia's door. Your body screams in protest as you stumble back to your room, leaving a trail of glowing pre-cum in your wake.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The last shred of your resistance crumbles under the weight of your viral-enhanced lust. Your voice is hoarse with need and shame.
You: [Eyes locked on Mia's sleeping form] (I'm going to hell for this) "Do it. Show me her dreams."
AVA's laughter echoes in your mind as reality warps around you. Suddenly, you find yourself in what appears to be a high school locker room. The air is thick with steam and the scent of sweat and arousal. Mia stands before you, dressed in her old cheerleader uniform, but it's different - tighter, more revealing, barely containing her ample curves.
***DBA3.webp***
Mia: [Smirking seductively] (Oh, this is going to be fun) "Hey, cuz. Come to congratulate me on winning the big game?"
Your monstrous cock strains against your pants, now transformed into a football player's uniform. The bulge is impossible to miss, and Mia's eyes are drawn to it, her tongue darting out to wet her lips.
Mia: [Eyes widening with desire] (Holy shit, is that all him?) "Wow, looks like you've got a pretty big trophy in those pants. Want me to polish it for you?"
Before you can respond, Mia saunters towards you, her hips swaying hypnotically. She drops to her knees before you, her hands running up your thighs.
***DBA4.webp***
Mia: [Voice husky with lust] (I've wanted this for so long) "Let's see what you're packing, big guy. I bet it tastes even better than it looks."
Her nimble fingers free your throbbing member from its confines. It springs forth, angry and red, pulsing with viral energy. Pre-cum beads at the tip, glowing faintly in the steamy locker room.
Mia: [Gasping] (It's even bigger than in my fantasies) "Holy fuck, cuz. You're fucking huge! This is going to be a challenge, but you know how I love those."
Her hand wraps around your shaft, and you groan at the contact. Unlike Cherie's motherly touch or Elfie's innocent fumbling, Mia's grip is confident and experienced. She begins to stroke, her movements slow and teasing.
***DBA5.webp***
Mia: [Purring] (I'm going to milk him dry) "Mmm, you like that, don't you? Your naughty cousin jerking your big, fat cock? Tell me how much you want me."
You: [Groaning] (She's so fucking hot) "Fuck, Mia. Don't stop. You're so good at this."
Mia's strokes become faster, more intense. Pre-cum flows freely, coating her hand and being absorbed into her skin. With each stroke, Mia's breathing becomes heavier, her pupils dilating as the virus begins to take effect.
***DBA6.webm***
Mia: [Moaning] (Why do I feel so hot?) "God, you're leaking so much. It's making me so wet. I want to taste it so badly."
The lewd, wet sounds of her strokes echo through the locker room, mixing with your grunts and Mia's increasingly wanton moans.
Mia: [Whimpering, her free hand moving to her breast] (This is so wrong, but it feels so right) "You're getting even bigger, cuz! Are you going to cum for me? Paint your slutty cousin's face with your hot load?"
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal snaps you back to reality. You find yourself standing in Mia's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible. Mia writhes on her bed, her face flushed and her breathing heavy. Her eyes flutter open, unfocused and confused.
Mia: [Blinking sleepily] (What a hot dream...) "Cuz? Is that you? I was just having the most incredible dream about... oh."
***DBA7.webp***
Her eyes widen as she notices the obvious bulge in your pants. A knowing smirk spreads across her face, and she stretches languidly, her skimpy outfit riding up. You stammer an excuse and flee, leaving a very aroused and amused Mia behind.
Mia: [Whispering to herself] (That dream... I need to make it a reality soon)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
***END***
***START - Choice 2 - Branch C***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus rages through your system, your body burning with an insatiable lust as you stumble towards Mia's room. Your enhanced senses pick up her scent - a intoxicating mix of vanilla and musk that makes your cock throb painfully. You pause at her door, your hand trembling as you reach for the knob.
Inside, Mia sleeps restlessly, her curvaceous form barely covered by a skimpy cheerleader outfit - a remnant of her past life. Her long, blonde hair is tousled, and her face is flushed, lips parted as she lets out soft moans in her sleep. The sight of her sends a fresh wave of desire coursing through you.
***DBA1.webp***
AVA materializes beside you, her form shimmering with viral energy. Her voice is a seductive purr in your mind, dripping with dark promises.
***DBA2.webp***
AVA: [Grinning mischievously] (Such a naughty little cousin. Already so wet in her dreams) "Your sexy cousin is having quite the vivid dream. Wouldn't you like to join her? I can weave you into her fantasies, where her deepest, most forbidden desires run wild. After all, what happens in dreams stays in dreams... right?"
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Mia's dream"]]
***START - Choice 1 - Branch A***
With a herculean effort, you tear yourself away from Mia's door. Your body screams in protest as you stumble back to your room, leaving a trail of glowing pre-cum in your wake.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The last shred of your resistance crumbles under the weight of your viral-enhanced lust. Your voice is hoarse with need and shame.
You: [Eyes locked on Mia's sleeping form] (I'm going to hell for this) "Do it. Show me her dreams."
AVA's laughter echoes in your mind as reality warps around you. Suddenly, you find yourself in what appears to be a high school locker room. The air is thick with steam and the scent of sweat and arousal. Mia stands before you, dressed in her old cheerleader uniform, but it's different - tighter, more revealing, barely containing her ample curves.
***DBA3.webp***
Mia: [Smirking seductively] (Oh, this is going to be fun) "Hey, cuz. Come to congratulate me on winning the big game?"
Your monstrous cock strains against your pants, now transformed into a football player's uniform. The bulge is impossible to miss, and Mia's eyes are drawn to it, her tongue darting out to wet her lips.
Mia: [Eyes widening with desire] (Holy shit, is that all him?) "Wow, looks like you've got a pretty big trophy in those pants. Want me to polish it for you?"
Before you can respond, Mia saunters towards you, her hips swaying hypnotically. She drops to her knees before you, her hands running up your thighs.
***DBA4.webp***
Mia: [Voice husky with lust] (I've wanted this for so long) "Let's see what you're packing, big guy. I bet it tastes even better than it looks."
Her nimble fingers free your throbbing member from its confines. It springs forth, angry and red, pulsing with viral energy. Pre-cum beads at the tip, glowing faintly in the steamy locker room.
Mia: [Gasping] (It's even bigger than in my fantasies) "Holy fuck, cuz. You're fucking huge! This is going to be a challenge, but you know how I love those."
Her hand wraps around your shaft, and you groan at the contact. Unlike Cherie's motherly touch or Elfie's innocent fumbling, Mia's grip is confident and experienced. She begins to stroke, her movements slow and teasing.
***DBA5.webp***
Mia: [Purring] (I'm going to milk him dry) "Mmm, you like that, don't you? Your naughty cousin jerking your big, fat cock? Tell me how much you want me."
You: [Groaning] (She's so fucking hot) "Fuck, Mia. Don't stop. You're so good at this."
Mia's strokes become faster, more intense. Pre-cum flows freely, coating her hand and being absorbed into her skin. With each stroke, Mia's breathing becomes heavier, her pupils dilating as the virus begins to take effect.
***DBA6.webm***
Mia: [Moaning] (Why do I feel so hot?) "God, you're leaking so much. It's making me so wet. I want to taste it so badly."
The lewd, wet sounds of her strokes echo through the locker room, mixing with your grunts and Mia's increasingly wanton moans.
Mia: [Whimpering, her free hand moving to her breast] (This is so wrong, but it feels so right) "You're getting even bigger, cuz! Are you going to cum for me? Paint your slutty cousin's face with your hot load?"
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal snaps you back to reality. You find yourself standing in Mia's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible. Mia writhes on her bed, her face flushed and her breathing heavy. Her eyes flutter open, unfocused and confused.
Mia: [Blinking sleepily] (What a hot dream...) "Cuz? Is that you? I was just having the most incredible dream about... oh."
***DBA7.webp***
Her eyes widen as she notices the obvious bulge in your pants. A knowing smirk spreads across her face, and she stretches languidly, her skimpy outfit riding up. You stammer an excuse and flee, leaving a very aroused and amused Mia behind.
Mia: [Whispering to herself] (That dream... I need to make it a reality soon)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Growling] (I need more. Corrupt her completely) "More. Make it more intense!"
AVA's cruel laughter rings in your ears as the dreamscape shifts. The locker room becomes darker, more primal. The air grows thick with the scent of sex and forbidden desire. Mia gasps as the playful atmosphere lifts, horror and unbridled lust battling in her eyes.
***DBA8.webp***
Mia: [Her hand still working your shaft] (This is too real. What's happening to me?) "Cuz? This... this isn't just a fantasy anymore, is it? We shouldn't... but fuck, I can't stop!"
The virus surges through her system like liquid fire. Her skin flushes deep pink, nipples visibly hardening beneath her tight uniform. Her pussy gushes with arousal, soaking through her panties.
Mia: [Whimpering] (He's my cousin! This is so fucked up!) "We have to stop, cuz. We're family! This is... oh fuck!"
Her protests are cut short as another wave of viral lust crashes over her. AVA's influence floods her system with unnatural arousal, shattering her last defenses.
***DBA9.webp***
Mia: [Moaning wantonly] (No... can't... but it feels so fucking good) "Your cock feels so amazing. Fuck, I shouldn't want this so badly... we're cousins... oh god, I need your cum so fucking bad!"
Her movements become more frantic, more desperate. Sweat beads on her forehead as she works your shaft with both hands, her eyes locked on the angry, swollen head.
***DBA10.webm***
You: [Groaning, hips bucking] (She's fighting so hard, but she can't win) "Don't fight it, Mia. You know you've always wanted this. Be a good slut for your cousin."
Mia: [Sobbing and moaning] (I'm such a whore. An incestuous slut) "I'm so sorry, cuz. I'm trying to be good, but... but... oh fuck, I need your cum! I've always needed it!"
The lewd, wet sounds of her hands working your cock echo through the dark locker room. Pre-cum flows freely, mixing with Mia's sweat to create a slick, warm coating on your shaft.
***DBA11.webp***
Mia: [Eyes wide with desperate need] (I don't care anymore. I need this) "Please, cuz! Cum for me! Paint your slutty cousin with your hot fucking load! I need it... I need it to mark me as yours forever!"
With a bestial roar, you explode. Thick ropes of cum erupt from your cock, coating Mia's face, chest, and hands. She screams in ecstasy, her own orgasm crashing over her as your seed touches her skin. The mixture glows with an unearthly light as it's absorbed into her skin, the virus using it to reshape her body and mind.
***DBA12.webp***
Mia: [Gasping, licking cum from her fingers] (So fucking good... need more... forever) "So much cum... I need more! Use me, cuz. Use your slutty cheerleader cousin whenever you want. I'll be your personal cum dumpster forever..."
As the dream fades, Mia is left a quivering, cum-drenched mess, her playful nature twisted into an insatiable lust for her cousin's seed.
[[Exit]]
***END***
***START - Choice 2 - Branch C***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus rages through your system, your body burning with an insatiable lust as you stumble towards Mia's room. Your enhanced senses pick up her scent - a intoxicating mix of vanilla and musk that makes your cock throb painfully. You pause at her door, your hand trembling as you reach for the knob.
Inside, Mia sleeps restlessly, her curvaceous form barely covered by a skimpy cheerleader outfit - a remnant of her past life. Her long, blonde hair is tousled, and her face is flushed, lips parted as she lets out soft moans in her sleep. The sight of her sends a fresh wave of desire coursing through you.
***DBA1.webp***
AVA materializes beside you, her form shimmering with viral energy. Her voice is a seductive purr in your mind, dripping with dark promises.
***DBA2.webp***
AVA: [Grinning mischievously] (Such a naughty little cousin. Already so wet in her dreams) "Your sexy cousin is having quite the vivid dream. Wouldn't you like to join her? I can weave you into her fantasies, where her deepest, most forbidden desires run wild. After all, what happens in dreams stays in dreams... right?"
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Mia's dream"]]
***START - Choice 1 - Branch A***
With a herculean effort, you tear yourself away from Mia's door. Your body screams in protest as you stumble back to your room, leaving a trail of glowing pre-cum in your wake.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The last shred of your resistance crumbles under the weight of your viral-enhanced lust. Your voice is hoarse with need and shame.
You: [Eyes locked on Mia's sleeping form] (I'm going to hell for this) "Do it. Show me her dreams."
AVA's laughter echoes in your mind as reality warps around you. Suddenly, you find yourself in what appears to be a high school locker room. The air is thick with steam and the scent of sweat and arousal. Mia stands before you, dressed in her old cheerleader uniform, but it's different - tighter, more revealing, barely containing her ample curves.
***DBA3.webp***
Mia: [Smirking seductively] (Oh, this is going to be fun) "Hey, cuz. Come to congratulate me on winning the big game?"
Your monstrous cock strains against your pants, now transformed into a football player's uniform. The bulge is impossible to miss, and Mia's eyes are drawn to it, her tongue darting out to wet her lips.
Mia: [Eyes widening with desire] (Holy shit, is that all him?) "Wow, looks like you've got a pretty big trophy in those pants. Want me to polish it for you?"
Before you can respond, Mia saunters towards you, her hips swaying hypnotically. She drops to her knees before you, her hands running up your thighs.
***DBA4.webp***
Mia: [Voice husky with lust] (I've wanted this for so long) "Let's see what you're packing, big guy. I bet it tastes even better than it looks."
Her nimble fingers free your throbbing member from its confines. It springs forth, angry and red, pulsing with viral energy. Pre-cum beads at the tip, glowing faintly in the steamy locker room.
Mia: [Gasping] (It's even bigger than in my fantasies) "Holy fuck, cuz. You're fucking huge! This is going to be a challenge, but you know how I love those."
Her hand wraps around your shaft, and you groan at the contact. Unlike Cherie's motherly touch or Elfie's innocent fumbling, Mia's grip is confident and experienced. She begins to stroke, her movements slow and teasing.
***DBA5.webp***
Mia: [Purring] (I'm going to milk him dry) "Mmm, you like that, don't you? Your naughty cousin jerking your big, fat cock? Tell me how much you want me."
You: [Groaning] (She's so fucking hot) "Fuck, Mia. Don't stop. You're so good at this."
Mia's strokes become faster, more intense. Pre-cum flows freely, coating her hand and being absorbed into her skin. With each stroke, Mia's breathing becomes heavier, her pupils dilating as the virus begins to take effect.
***DBA6.webm***
Mia: [Moaning] (Why do I feel so hot?) "God, you're leaking so much. It's making me so wet. I want to taste it so badly."
The lewd, wet sounds of her strokes echo through the locker room, mixing with your grunts and Mia's increasingly wanton moans.
Mia: [Whimpering, her free hand moving to her breast] (This is so wrong, but it feels so right) "You're getting even bigger, cuz! Are you going to cum for me? Paint your slutty cousin's face with your hot load?"
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal snaps you back to reality. You find yourself standing in Mia's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible. Mia writhes on her bed, her face flushed and her breathing heavy. Her eyes flutter open, unfocused and confused.
Mia: [Blinking sleepily] (What a hot dream...) "Cuz? Is that you? I was just having the most incredible dream about... oh."
***DBA7.webp***
Her eyes widen as she notices the obvious bulge in your pants. A knowing smirk spreads across her face, and she stretches languidly, her skimpy outfit riding up. You stammer an excuse and flee, leaving a very aroused and amused Mia behind.
Mia: [Whispering to herself] (That dream... I need to make it a reality soon)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Growling] (I need more. Corrupt her completely) "More. Make it more intense!"
AVA's cruel laughter rings in your ears as the dreamscape shifts. The locker room becomes darker, more primal. The air grows thick with the scent of sex and forbidden desire. Mia gasps as the playful atmosphere lifts, horror and unbridled lust battling in her eyes.
***DBA8.webp***
Mia: [Her hand still working your shaft] (This is too real. What's happening to me?) "Cuz? This... this isn't just a fantasy anymore, is it? We shouldn't... but fuck, I can't stop!"
The virus surges through her system like liquid fire. Her skin flushes deep pink, nipples visibly hardening beneath her tight uniform. Her pussy gushes with arousal, soaking through her panties.
Mia: [Whimpering] (He's my cousin! This is so fucked up!) "We have to stop, cuz. We're family! This is... oh fuck!"
Her protests are cut short as another wave of viral lust crashes over her. AVA's influence floods her system with unnatural arousal, shattering her last defenses.
***DBA9.webp***
Mia: [Moaning wantonly] (No... can't... but it feels so fucking good) "Your cock feels so amazing. Fuck, I shouldn't want this so badly... we're cousins... oh god, I need your cum so fucking bad!"
Her movements become more frantic, more desperate. Sweat beads on her forehead as she works your shaft with both hands, her eyes locked on the angry, swollen head.
***DBA10.webm***
You: [Groaning, hips bucking] (She's fighting so hard, but she can't win) "Don't fight it, Mia. You know you've always wanted this. Be a good slut for your cousin."
Mia: [Sobbing and moaning] (I'm such a whore. An incestuous slut) "I'm so sorry, cuz. I'm trying to be good, but... but... oh fuck, I need your cum! I've always needed it!"
The lewd, wet sounds of her hands working your cock echo through the dark locker room. Pre-cum flows freely, mixing with Mia's sweat to create a slick, warm coating on your shaft.
***DBA11.webp***
Mia: [Eyes wide with desperate need] (I don't care anymore. I need this) "Please, cuz! Cum for me! Paint your slutty cousin with your hot fucking load! I need it... I need it to mark me as yours forever!"
With a bestial roar, you explode. Thick ropes of cum erupt from your cock, coating Mia's face, chest, and hands. She screams in ecstasy, her own orgasm crashing over her as your seed touches her skin. The mixture glows with an unearthly light as it's absorbed into her skin, the virus using it to reshape her body and mind.
***DBA12.webp***
Mia: [Gasping, licking cum from her fingers] (So fucking good... need more... forever) "So much cum... I need more! Use me, cuz. Use your slutty cheerleader cousin whenever you want. I'll be your personal cum dumpster forever..."
As the dream fades, Mia is left a quivering, cum-drenched mess, her playful nature twisted into an insatiable lust for her cousin's seed.
[[Exit]]
***END***
***START - Choice 2 - Branch C***
You: [Snarling] (No more games. I'm taking what's mine) "Enough! Wake me up. Now!"
Reality snaps back into focus. You stand in Mia's room, fully awake and painfully erect. Mia writhes on her bed, lost in her vivid dream. Your virus-enhanced body thrums with power and insatiable hunger.
***DBA13.webp***
You: [Voice low and dangerous] (She's mine. I'll make her fantasy real) "Wake up, cousin. Time to make your dreams come true."
Mia stirs, her eyes fluttering open. She's disoriented for a moment, then her gaze locks onto your throbbing erection. A mix of fear and desire flashes across her face.
Mia: [Breathless] (Oh god, this is really happening) "Cuz? What are you... oh fuck, you're huge."
You grab her hand, forcing it to your pulsing shaft. Pre-cum leaks freely, coating her fingers. Mia's eyes widen as she realizes this isn't a dream.
***DBA14.webp***
Mia: [Whispering, fear and arousal in her voice] (This is so wrong) "We can't... We're cousins... This is fucked up... But why am I so wet?"
Ignoring her weak protests, you force her hand to move along your shaft. She resists half-heartedly, but her body betrays her.
You: [Growling] (She'll learn her place) "Don't pretend you don't want this, Mia. I know all about your dirty little fantasies."
Mia: [Moaning, trying to resist] (This is so wrong, but so hot) "We shouldn't... oh god, you're so big. I can't... I can't stop myself."
As your pre-cum is absorbed into her skin, Mia's resistance crumbles. The virus surges through her system, amplified by your potent fluids. Her strokes become more confident, more eager.
***DBA15.webm***
Mia: [Whimpering] (Why does it feel so good? This is so fucked up) "I shouldn't be doing this... You're my cousin... But fuck, I've wanted this for so long!"
Her movements become frantic as the virus takes hold, her shame transforming into wanton lust. You thrust into her hand, fucking her fist with abandon. Your other hand roughly gropes her breast through her top, making her gasp.
You: [Panting] (She's mine now) "That's it, Mia. Be a good slut and jerk your cousin's big cock. You love it, don't you? Say it!"
Mia: [Moaning, tears of shame and pleasure in her eyes] (I'm such a whore) "Yes! Fuck yes! I love your big fucking cock, cuz! I'm such a dirty slut for you!"
You feel your climax approaching, your balls tightening. With a bestial roar, you explode, painting Mia's face, hair, and chest with thick ropes of cum. She screams in ecstasy, her body convulsing in a powerful orgasm. Your seed glows as it's absorbed into her skin, the virus reshaping her body and mind.
***DBA16.webm***
Mia: [Gasping, her eyes glazed with lust] (It's so hot... and it feels so fucking good) "So much cum... Oh god, what have we done? It's... it's changing me..."
As the last of your cum is absorbed, Mia's playful nature is twisted into something darker, more primal. Her eyes, once full of mischief, now burn with viral lust and insatiable need.
***DBA17.webm***
Mia: [Licking her lips, voice husky] (I need more. I need my cousin's cock) "More, cuz. Your slutty cheerleader needs more of your hot fucking cum. Use me. Breed me. I'm your personal cum dumpster now."
You leave her room without another word, the image of your cum-covered, corrupted cousin burned into your mind forever. As you close the door, you hear her whimper, already craving her next dose of your viral seed...
[[Exit]]
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><<nobr>>
<div class="DIAS_container">
<<SAY>>
<p>As you wander the desolate wastelands, the oppressive heat bears down on you, an unrelenting force that seems determined to crush your spirit. Your eyes, stinging with the sweat that keeps threatening to seep into them, suddenly catch a glimmer in the distance. An anomaly in this barren landscape: lights near what appears to be an oasis beside a river.</p>
<</SAY>>
<<SAY>>
<p>The sight is a siren call. With each step drawing you closer, the details begin to sharpen—palm trees swaying gently in the breeze, the soft murmur of flowing water, and there, nestled in the midst of this unexpected sanctuary, a structure.</p>
<</SAY>>
<<SAY Mc>>
<action>Pausing to wipe the sweat from your brow</action>
<inner>Could this be real or just a mirage?</inner>
<p>"Is anyone even out here besides me?"</p>
<</SAY>>
<<SAY>>
<p>Your voice falls flat, absorbed by the vast emptiness. Resolute, you press on, curiosity piqued. The ground beneath your feet transitions from cracked earth to softer sand, a testament to the river's life-giving presence.</p>
<</SAY>>
<<SAY>>
<p>As the oasis looms larger, the wooden habitation comes into focus—a rustic abode that seems to be crafted by someone who took great care to meld it with the surrounding nature. You find it odd, this dwelling standing alone, so far from what you assume to be the hub of The MAD's operations. It sparks a flicker of caution in your mind.</p>
<</SAY>>
<<SAY Mc>>
<action>Crouching behind a boulder, eyes narrowed</action>
<inner>This could be a trap, or it could be a chance for answers. Which is it?</inner>
<p>"I need to be smart about this."</p>
<</SAY>>
<<SAY>>
<p>Silence is your companion as you edge closer to the periphery of the oasis. The vibrant greenery is a stark contrast to the desolation you've trekked through. Your senses are alight with the sounds of life—birds chirping, insects buzzing, and the rustle of leaves in the wind.</p>
<</SAY>>
<<SAY Mc>>
<inner>This place is a haven, but for whom?</inner>
<</SAY>>
<<SAY>>
<p>You stop short, a safe distance from the wooden abode. You're close enough now to note the details—the way the structure is built to withstand the elements, the absence of movement within, the stillness that hangs over the place like a shroud.</p>
<</SAY>>
<<SAY Mc>>
<action>Taking a deep breath, you prepare yourself for the unknown</action>
<inner>It's now or never. If I'm to find out anything, it'll be through my own courage.</inner>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="playPassage('3A2'); nextPartOfDay();">
Turn back
</div>
<div class="DIAS_button" onclick="playPassage('GUA2'); nextPartOfDay();">
Proceed to the strange camp
</div>
</div>
</div>
<</nobr>>\
<script>
DIAF_initDialogPassage(passageId);
setBackground('ressources/backgrounds/WA.webm');
</script><<script>>playAudio("music", "gabbieTrust")<</script>>\
<<nobr>>
<video muted class="bgvid" autoplay loop src="ressources/backgrounds/3AGE.webm" poster="ressources/backgrounds/3AGE_ss.webp"></video>
<<set $specpass.THREEA2 to 1>>
<div class="DIAS_container">
<<SAY>>
<p>As you cautiously edge closer to the surprisingly elegant wooden cabin amidst the wastelands, a serene river and picturesque landscape come into view. The beauty of the area stands in stark contrast to the desolation you've become accustomed to. Your steps are measured, your senses alert for any sign of danger.</p>
<</SAY>>
<<SAY>>
<p>Suddenly, the cold press of a blade against your throat halts you. A potent viral aura, previously undetected, paralyzes you; its intensity is overwhelming.</p>
<</SAY>>
<<SAY 'Mysterious woman'>>
<action>The blade at your throat remains steady</action>
<inner>Could this be another survivor? No, it has to be a trick.</inner>
<p>"Don't move and answer my questions. Who are you?"</p>
<</SAY>>
<<SAY>>
<p>Remaining calm despite the precarious situation, you assure her of your peaceful intentions. She hesitates, her grip faltering ever so slightly as she realizes you are a man, not just by your voice but by the aura you emit. Men were thought to be extinct, and her shock is palpable.</p>
<</SAY>>
<<SAY>>
<p>Seizing the moment of her hesitation, you exert your own viral dominance, swiftly grasping her wrist, and in one fluid motion, you reverse the positions; now you're on top. Her astonishment at your incredible aura is clear, but she doesn't succumb to it.</p>
<</SAY>>
<<SAY 'Mysterious woman'>>
<action>Pushes you off with remarkable force, maintaining a safe distance</action>
<inner>This aura, it's unlike anything I've felt before... But, I won't be overpowered.</inner>
<p>"You've got some nerve, but I'm not so easily swayed."</p>
<</SAY>>
<<SAY Image>>
GUA2A
<</SAY>>
<<SAY>>
<p>You finally take the opportunity to survey her. A striking woman with a look of confusion, yet she doesn't seem depraved or under the influence of The MAD like others you've encountered. Her behavior is odd, her resistance to your aura peculiar.</p>
<</SAY>>
<<SAY Image>>
GUA2B
<</SAY>>
<<SAY Mc>>
<action>Gesturing towards her home, speaking with honest intent</action>
<p>"Judging by your hidden abode and your demeanor, we're probably not enemies."</p>
<</SAY>>
<<SAY>>
<p>She retorts sharply, her voice laced with a mix of curiosity and caution.</p>
<</SAY>>
<<SAY 'Mysterious woman'>>
<p>"Enemies are all I have in these lands."</p>
<</SAY>>
<<SAY>>
<p>You mention your family's escape from The MAD to earn her trust, and in a show of good faith, you disarm yourself, advancing towards her with open vulnerability. In a quick, almost reflexive action, she hurls her knife towards you. It narrowly misses, embedding itself into a tree behind you.</p>
<</SAY>>
<<SAY 'Mysterious woman'>>
<action>A slight smile plays on her lips</action>
<p>"Follow me inside. You've taken a risk; I can respect that. I'm not with The MAD, and I'm curious about your story. Don't mistake my hospitality for weakness, though. I can hold my own, with or without weapons."</p>
<</SAY>>
<<SAY Image>>
GUA2C
<</SAY>>
<<SAY>>
<p>You watch her confidently stride towards the cabin, and despite the tension, you can't help but offer a small, appreciative smile as you follow. Her adventurous spirit is infectious, and you realize that, in this desolate world, trust is as rare as it is necessary.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="nextBloc(event)"> Open your eyes </div>
</div>
</div>
<</nobr>>\
<script>
DIAF_initDialogPassage(passageId);
function nextBloc(event) {
nextPartOfDay();
playPassage('GUA3'); //next passage id
}
</script><<script>>playAudio("music", "gabbieTrust")<</script>>\
<<nobr>>
<video muted class="bgvid" autoplay loop src="ressources/backgrounds/3AGI.webm" poster="ressources/backgrounds/3AGI_ss.webp"></video>
<div class="DIAS_container">
<<SAY>>
<p>Stepping into the cabin, the rough texture of the wooden door contrasts sharply with the warmth that greets you inside. The place is a chalet of sorts, its interior boasting an impressive display of craftsmanship – a testament to her survival skills.</p>
<</SAY>>
<<SAY 'Mysterious woman'>>
<action>Gesture towards a rustic chair</action>
<inner>There's a spark of curiosity in her eyes</inner>
<p>"Please, take a seat."</p>
<</SAY>>
<<SAY Image>>
GUA3A
<</SAY>>
<<SAY>>
<p>You oblige, and as you sit, your eyes roam over the cozy layout. It's more than shelter; it's a home, carved out of desperation and determination.</p>
<</SAY>>
<<SAY>>
<p>Conversation flows easily between the two of you, like water finding its course. She introduces herself as Gabbie, and the more you talk, the clearer it becomes – you're cut from the same cloth, two playful adventurers, each with a temperament as fierce as the wasteland winds.</p>
<</SAY>>
<<SAY Gabbie>>
<action>Leaning in, her gaze piercing</action>
<inner>By all odds, as a man, he shouldn't be living</inner>
<p>"How are you still alive?"</p>
<</SAY>>
<<SAY Mc>>
<action>Hesitating for a moment, then deciding to trust</action>
<inner>This could be the beginning of an alliance, or the end of the road</inner>
<p>"I was in a coma, woke up to find everything changed... my family had to survive to the MAD, and from what they told me, it was terrible, they escaped with me. I will never forgive the MAD for how they treated them."</p>
<</SAY>>
<<SAY>>
<p>She nods, her face hardening at the mention of The MAD. You sense a shared hatred, a common goal etched deep within your bones. A smile is forming on both your lips.</p>
<</SAY>>
<<SAY Image>>
GUA3B
<</SAY>>
<<SAY Mc>>
<action>Pushing the conversation forward</action>
<inner>It's only fair to exchange truths</inner>
<p>"Your turn. How come you're here, still breathing, and standing against The MAD?"</p>
<</SAY>>
<<SAY>>
<p>Gabbie's response comes with a hedge of vagueness. She skirts around the precise reason for her immunity to the virus, simply stating that she broke free from The MAD's grasp early on. The disdain in her voice is palpable as she talks about their barbaric, enslaving ways, it's clear the wants them dead.</p>
<</SAY>>
<<SAY Gabbie>>
<action>Gaze dropping to her hands</action>
<inner>A flicker of sorrow crosses her face</inner>
<p>"I've always been a survivor... my father taught me everything."</p>
<</SAY>>
<<SAY>>
<p>You pick up on the change in her tone – a sore subject – so you don't pry. Some mysteries are meant to unravel in their own time.</p>
<</SAY>>
<<SAY>>
<p>Noticing the sky darkening beyond the chalet's windows, you mention it's getting late.</p>
<</SAY>>
<<SAY Mc>>
<action>Standing up, feeling the pull of responsibility</action>
<inner>The girls are probably worried</inner>
<p>"I should get back to my family. But since we share a common enemy, I guess this isn't goodbye."</p>
<</SAY>>
<<SAY Gabbie>>
<action>A smile graces her lips, yet her eyes remain serious</action>
<inner>What an interesting turn of event</inner>
<p>"We'll cross paths again, that's certain. Don't be a stranger."</p>
<</SAY>>
<<SAY Image>>
GUA3C
<</SAY>>
<<SAY>>
<p>You exit the cabin with a lingering sense of kinship, a bond forged in the fire of circumstance. As you step back into the wasteland, the chill of the night is stark against the warmth of the cabin behind you. The encounter leaves you puzzled but hopeful – a new ally in this desolate world could be the turning point in your fight against The MAD and she seems to know more than what she lets on.</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="nextBloc(event)"> Done </div>
</div>
</div>
<</nobr>>\
<script>
DIAF_initDialogPassage(passageId);
function nextBloc(event) {
nextPartOfDay();
playPassage('3AGE'); //next passage id
}
</script><script>
(() => {
const dialog = `
The Border of the Wastelands stretched before you, a desolate no-man's land between the relative safety of your territory and the unknown dangers beyond. Twisted metal structures jutted from the barren earth like the bones of long-dead giants. The air shimmered with heat, distorting the horizon and making it hard to distinguish reality from mirage.
You trudged forward, eyes scanning for any sign of movement. Gabbie walked beside you, her blonde hair tied back in a practical ponytail, her blue eyes alert and wary. Her fit body was encased in form-fitting body armor, a futuristic design that hugged her curves while offering protection. Despite the circumstances, you couldn't help but notice how the suit accentuated her 32DD bust and toned figure.
***GA3A.webp***
Gabbie: [Wiping sweat from her brow] "We shouldn't stay out here too long. The radiation levels increase the further we go."
You nodded, trying to focus on the mission at hand rather than the strange attraction you felt towards her. Gabbie was an enigma – a woman who seemed to know more about you and this world than she let on, yet remained frustratingly mysterious about her own past.
Suddenly, Gabbie tensed, holding up a hand to stop you. She pointed to a nearby structure, a half-collapsed building that might have once been a gas station.
Gabbie: [Whispering] "Movement. Two o'clock. Could be scavengers... or worse."
You crouched down, using a rusted-out car for cover. Gabbie pressed close to you, her body heat noticeable even through her armor. The virus thrummed in your veins, heightening your awareness of her proximity.
***START - Choice 1***
[[Branch A: "Maybe we should head back. It's not worth the risk." (Trust attribute requirements not met)]]
[[Branch B: "We've come too far to turn back now. I trust your instincts, Gabbie. What's our play?" (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Gabbie's expression hardened, disappointment flashing in her eyes. She pulled away slightly, creating a small but noticeable distance between you.
***GA3B.webp***
Gabbie: [Voice clipped] "We can't afford to be cowards, not if we want to survive. I thought you understood that."
Her words stung, reminding you of how little you knew about her and her experiences. Gabbie seemed to have grown up in a world even harsher than this, and your hesitation only served to highlight your differences.
Gabbie: [Sighing] "Let's head back. But next time, be prepared to face the dangers head-on. That's how we survive in this new world."
As you retreated, you couldn't help but feel you'd failed some unspoken test. The opportunity to prove yourself, to connect with Gabbie on a deeper level, had slipped away.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Gabbie's eyes lit up with approval, a small smile tugging at the corners of her mouth. She shifted closer, her body pressing against yours as she peered around the edge of your cover.
***GA3C.webp***
Gabbie: [Voice low and intense] "That's the spirit. We'll approach from two angles. I'll create a distraction while you flank them. Just like... well, it's a good strategy."
Her confidence in you sent a surge of pride through your chest, along with something warmer, more primal. The virus responded to your heightened emotions, making your skin tingle where it touched hers.
Gabbie: [Turning to face you, her face inches from yours] "Ready?"
***GA3D.webp***
You nodded, momentarily lost in her eyes. There was something familiar about her features, but you couldn't quite place it. More pressingly, you noticed beads of sweat forming on her forehead, and her breathing seemed labored.
Gabbie squeezed your arm, the gesture both reassuring and electrifying. Then she was gone, moving with silent grace towards her position. You watched her go, admiring her skill and the way her armor hugged her curves.
Shaking off the inappropriate thoughts, you focused on the task at hand. As you moved into position, you heard Gabbie begin her distraction. The sound of falling metal and her convincing cries for help drew the attention of the scavengers.
You crept closer, adrenaline and the virus sharpening your senses. Just as you were about to make your move, a piece of debris shifted under your foot. The noise alerted one of the scavengers, who spun towards you, raising a makeshift weapon.
***START - Choice 2***
[[Branch A: "Gabbie! Help! I've been spotted!" (Lust attribute requirements not met)]]
[[Branch B: "Now, Gabbie! Just like we planned!" (Lust attribute Requirements met)]]
***START - Choice 2 - Branch A***
Your panicked shout echoed across the wasteland, ruining any element of surprise. Gabbie's face fell, a mix of disappointment and concern flashing across her features. She abandoned her position, rushing to your aid.
Gabbie: [Voice strained] "Fall back! We're outnumbered!"
As you retreated, narrowly avoiding the scavengers' attacks, you could feel Gabbie's frustration radiating off her. The carefully laid plan had fallen apart due to your mistake.
***GA3E.webp***
Once you were a safe distance away, Gabbie turned to you, her expression a mix of emotions.
Gabbie: [Sighing] "That... didn't go as planned. We need to work on your stealth skills."
The moment of connection you'd shared earlier had evaporated, replaced by an awkward tension. As you made your way back to safer territory, you couldn't help but feel you'd let Gabbie down, failing to live up to the potential she seemed to see in you.
[[Exit]]
***END***
***START - Choice 2 - Branch B***
Your confident call spurred Gabbie into action. She emerged from her hiding spot, drawing the attention of the other scavengers. In that split second of distraction, you made your move.
The fight was brief but intense. You and Gabbie moved in perfect sync, as if you'd been fighting side by side for years. Her seemingly prescient knowledge of your moves and your growing abilities made you an unstoppable team.
As the last scavenger fell, you found yourself back-to-back with Gabbie, both of you breathing heavily. The virus surged through your system, heightened by the adrenaline of combat. You were acutely aware of every point of contact between your bodies.
Gabbie turned to face you, her eyes shining with excitement and something deeper, more primal. Sweat poured down her face, and her breathing was labored. She reached up, tugging at the collar of her armor.
***GA3F.webp***
Gabbie: [Voice husky] "That was... incredible. Just like... nevermind. Is it getting hotter out here?"
You nodded, suddenly aware of the oppressive heat bearing down on you. The virus in your system seemed to be reacting to the elevated temperature and your proximity to Gabbie, making your skin feel like it was on fire.
Suddenly, Gabbie gasped, her hands flying to her chest plate. "It's too hot," she panted, fumbling with the clasps of her armor. "I can't... I can't breathe."
You watched, transfixed, as Gabbie struggled to remove her chest piece. The virus heightened every sensation, making the sight of her exposed skin almost unbearably erotic. Finally, with a cry of relief, she managed to unlatch the armor.
The chest plate fell away, and Gabbie's breasts sprang free, bouncing enticingly. Her nipples were hard, visible through the thin, sweat-soaked undershirt she wore beneath the armor. She let out a long, shuddering breath, her chest heaving.
***GA3G.webp***
Gabbie: [Eyes wide, a mix of embarrassment and arousal] "I... I'm sorry. I didn't mean to... but the heat, the virus..."
You couldn't tear your eyes away, your own body responding intensely to the sight of her partial nudity. The virus roared through you, demanding more, demanding touch.
Gabbie made no move to cover herself, her chest rising and falling rapidly with each breath. Her eyes roamed your body, lingering on the obvious bulge in your pants.
***GA3H.webp***
Gabbie: [Noticing your intense gaze] "Your eyes... they look different. The virus... it's affecting you too, isn't it?"
***START - Choice 3***
[[Branch A: "I don't feel right. Maybe we should head back." (Virus attribute requirements not met)]]
[[Branch B: "The virus... it's responding to you, Gabbie. To us. Can't you feel it?" (Virus attribute Requirements met)]]
***START - Choice 3 - Branch A***
Gabbie's expression shifted from excitement to concern. She took a step back, creating some distance between you.
***GA3I.webp***
Gabbie: [Frowning] "You're right, we should get you back to the shelter. We need to check your virus levels."
The moment of connection shattered, replaced by an awkward tension. As you made your way back, Gabbie kept glancing at you worriedly. The easy camaraderie you'd shared during the fight had evaporated, leaving you feeling hollow and unsatisfied.
Gabbie: [As you neared the shelter] "We'll... we'll talk about this later. Get some rest."
You nodded, unable to meet her eyes. The opportunity to explore the strange, intense connection between you had slipped away, leaving a tangle of unresolved emotions in its wake.
[[Exit]]
***END***
***START - Choice 3 - Branch B***
Gabbie's eyes widened, a mix of recognition and something darker, more primal flashing across her face. She didn't step away, instead leaning in slightly, her breath quickening.
Gabbie: [Voice barely above a whisper] "I... I can feel it. It's so intense. More than I've ever experienced."
Her hand reached out, hovering just above your chest. You could feel the heat of her palm, see the slight tremor in her fingers.
Gabbie: [Swallowing hard] "It's like the virus is pushing us... changing things between us. Making things complicated."
The implications of her words hung heavy in the air. You found yourself leaning in, drawn by an irresistible pull. The virus sang in your veins, urging you closer.
Unable to resist any longer, you reached down and freed your throbbing manhood from the confines of your pants. The cool air on your heated flesh was a relief, but it did nothing to quell the burning need coursing through you.
Gabbie's eyes locked onto your exposed member, her pupils dilating visibly. She let out a small gasp, her tongue darting out to wet her lips.
Gabbie: [Voice shaky] "Oh god... I've never seen... it's so..."
Her words trailed off as her hands moved of their own accord, stripping off the remainder of her armor and underclothes. Within moments, she stood before you completely naked, her skin glistening with sweat in the harsh sunlight.
***GA3J.webp***
Gabbie: [Breathlessly] "I can't... I can't think straight. The virus, it's making me... making us..."
You couldn't tear your eyes away from her nude form. Her breasts heaved with each rapid breath, her nipples hard and straining. A flush had spread across her chest and up her neck, her skin practically glowing with the heat of arousal and the virus's influence.
***GA3K.webp***
Gabbie took a step towards you, her eyes never leaving your engorged member. Her hand reached out, trembling, stopping just short of touching you.
Gabbie: [Voice barely audible] "We... we shouldn't. It's not right. But I've never wanted anything so badly in my life."
The air between you was charged with tension, the virus pushing you both towards something forbidden, something that could change everything. You could see the internal struggle playing out on Gabbie's face, desire warring with some unspoken reservation.
Suddenly, a distant explosion shattered the moment. You both jumped, reality crashing back in. Gabbie quickly crossed her arms over her chest, looking around frantically for her discarded clothing.
Gabbie: [Flustered and panicked] "We should go. It's not safe here. This... this never happened, okay?"
As you hurriedly dressed and made your way back to the shelter, a new awareness hung between you. The lines of your relationship had been irrevocably blurred, the potential for something more now impossible to ignore. Gabbie walked slightly ahead, her movements jerky and uncertain. You didn't miss the way she kept glancing back at you, her eyes filled with a mixture of longing, confusion, and a heat that matched the fire still burning in your veins.
The virus had awakened something between you, something that transcended your previous interactions. As you reached the safety of your territory, you knew that things would never be quite the same between you and the mysterious Gabbie.
[[Exit]]
***END***
***END - Choice 3***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You stumble upon Gabbie while scavenging for supplies in a secluded area of the Wastelands. The sun casts long shadows over the dilapidated building, creating an eerie atmosphere. Gabbie is crouched by a broken window, rummaging through debris.
You: [Approaching her with a grin] (I didn't expect to see her again so soon.) "Fancy meeting you here."
Gabbie: [Looks up, her eyes widening] (Why does this guy presence make me feel so... hot?) "Hey, it seems we keep running into each other."
***GAL1A.webp***
You kneel down to help her sift through the rubble. The environment is harsh, but the proximity between you two makes the air feel charged.
Gabbie: [Brushing her hair back, revealing her sweat-streaked face] "So, how have you been holding up?"
You: [Glancing at her toned arms and the way her tank top clings to her body] (She's so strong and... damn, she's sexy.) "Managing. It's tough out here, but I'm getting by."
Gabbie: [Nods, her eyes lingering on you] "Yeah, it's not easy. But we have to keep pushing. For our goals."
***GAL1B.webp***
The conversation shifts to shared goals and survival strategies. You both express your determination to dismantle The MAD and uncover the virus's secrets.
***START - Choice 1***
[[Branch A: "I mean, not just for survival, but... um, other things too?" (Lust attribute requirements not met)]]
[[Branch B: "We make a great team." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Trying to lighten the mood, but stumbling over your words] "Maybe we could... you know, work together more often. I mean, not just for survival, but... um, other things too?"
Gabbie: [Frowns slightly, pulling back] (Is he hitting on me? This isn't the time.) "Let's focus on survival for now, okay?"
***GAL1C.webp***
The atmosphere becomes awkward, and Gabbie stands up, distancing herself slightly. You realize you've pushed too far, too soon.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [With a confident smile, leaning closer] "It's good to have someone like you out here. We make a great team. Maybe we could spend more time working together."
Gabbie: [Blushes slightly, her eyes meeting yours] (He's charming, and there's something about him that's hard to resist.) "Yeah, I think that could be a good idea."
***GAL1D.webp***
You both continue working, the air between you charged with unspoken attraction. The virus amplifies your mutual arousal, making every touch, every glance feel electric.
Gabbie: [Her breath quickening, her skin flushing] (Why do I feel so hot around him?) "Do you feel... different, ever since the outbreak?"
You: [Noticing her body's reaction, feeling your own arousal growing] "Yeah, it's like everything is more intense."
Gabbie: [Her gaze dropping to your lips, then lower] "It's hard to control sometimes."
You: [Moving slightly closer, feeling the heat radiating from her] "Tell me about it."
Your hands brush against each other as you continue to search, the touch sending electric shocks through your bodies. The air is thick with unspoken desire, but neither of you dares to acknowledge it directly.
Gabbie: [Biting her lip, her eyes dark with lust] "We should... focus, but it's so hard."
***GAL1E.webp***
You: [Feeling your pulse quicken, your body reacting to her nearness] "Yeah, but we can't let it get to us."
You both try to focus on the task at hand, but the tension remains. You can feel yourself growing harder with every accidental touch, every stolen glance at her toned, sweat-slicked body.
Gabbie: [Finding a useful item, her smile returning] "Look, we're really getting lucky today."
You: [Smiling back, feeling a sense of accomplishment and connection] "Maybe it's because we're working together."
Gabbie: [Nodding, her eyes softening] "Yeah, maybe."
***GAL1F.webp***
The scene ends with a promise to meet again soon, the bond between you growing stronger and more complex, the desire and taboo lingering in the air.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
As you navigate the harsh terrain of the Wastelands, you unexpectedly come across Gabbie again. This time, she's near an old, rusted vehicle, her body half-hidden as she searches for something useful.
You: [Surprised but pleased] (Why do I keep finding her? Not that I'm complaining.) "Hey, Gabbie! We really should stop meeting like this."
Gabbie: [Straightens up, her face lighting up with recognition] (Why does seeing him make my heart race?) "Oh, it's you again. Looks like fate has other plans for us."
***GAL2A.webp***
You can't help but notice how the tightness of her tank top accentuates her curves, the fabric clinging to her skin, damp with sweat. Her hair is loose today, framing her face in a wild, sexy halo. Her cargo pants are low on her hips, revealing a sliver of toned abdomen every time she moves.
You: [Approaching her, feeling a familiar heat rising within you] "Seems like we can't stay away from each other."
Gabbie: [Laughs lightly, her eyes scanning your body] (He's so rugged and strong. Why can't I stop thinking about him?) "Guess not. What brings you out here this time?"
You: [Trying to focus, but your eyes keep wandering] "Just looking for supplies. You?"
Gabbie: [Shrugs, her chest rising and falling noticeably] "Same here. It's a never-ending scavenger hunt."
The air between you feels thick, almost suffocating with the unspoken tension. The virus amplifies every sensation, making your skin prickle with awareness. You can feel your arousal growing, a throbbing need that's hard to ignore.
Gabbie: [Biting her lip, her cheeks flushed, smiling] (Why am I so hot right now? It's like my body is on fire.)
***GAL2B.webp***
***START - Choice 1***
[[Branch A: "Maybe we should... you know, find a way to cool down together." (Lust attribute requirements not met)]]
[[Branch B: "Seems like fate keeps throwing us together. Maybe we should take the hint." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Trying to lighten the mood, but your voice comes out awkward] "Maybe we should... you know, find a way to cool down together."
Gabbie: [Frowns slightly, stepping back] (Is he seriously suggesting that?) "Let's just focus on what we came here for, okay?"
***GAL2C.webp***
You feel the tension dissipate awkwardly as Gabbie turns her attention back to the vehicle. You realize you've overstepped, and the moment is lost.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [With a confident smile, leaning closer] "Seems like fate keeps throwing us together. Maybe we should take the hint."
Gabbie: [Blushes slightly, her eyes meeting yours and holding the gaze] (His presence makes my skin tingle... why is this happening?) "Maybe it is."
***GAL2D.webp***
The two of you continue to search, moving deeper into a decrepit building to escape the harsh sun. The interior is dimly lit, filled with old machinery and dusty furniture. The confined space forces you to move closer together, your bodies brushing against each other more frequently.
Gabbie: [Breathing more rapidly, her cheeks flushed] "This place is so cramped."
You: [Feeling the heat in the small space, trying to keep control] "Yeah, it's... tight quarters."
As you squeeze through a narrow gap between two large machines, your bodies press tightly together. The sensation sends a jolt through both of you, igniting the already charged atmosphere.
Gabbie: [Gasping softly as her body tenses] "Sorry, it's... really tight."
You: [Feeling the warmth of her body, your arousal growing] "It's okay. Just... stay close."
You both continue searching, but the physical proximity makes it impossible to ignore the growing tension. Gabbie’s breathing becomes more erratic, her chest rising and falling with each quickened breath. You can feel yourself growing harder with every accidental touch, every brush against her toned, sweat-slicked body.
Gabbie: [Her voice shaky, her hand accidentally brushing against your groin] "I can't... focus."
***GAL2E.webp***
You: [Struggling to maintain control, swallowing hard] "Yeah, it's... intense."
Your hands brush against each other again, this time lingering. The contact sends jolts of electricity through you both, and you can see the same reaction in her eyes. The air is thick with unspoken desire, but neither of you dares to acknowledge it directly.
Gabbie: [Her voice a husky whisper, trying to break the tension] "We should... keep looking."
You: [Feeling her proximity, your body reacting to her nearness] "Yeah, we should."
As you both move to check a nearby cabinet, you find yourselves squeezed into an even tighter space. Your bodies press together, and Gabbie can feel your growing erection against her hip. She gasps softly, her eyes widening in surprise and something darker.
Gabbie: [Her voice barely a whisper] (I can feel him... why does this feel so right?) "It's... really tight in here."
***GAL2F.webp***
You: [Feeling her chest against your arm, your mind racing] "Yeah, it is."
The virus amplifies every sensation, making your skin hypersensitive. The close quarters and constant contact make it impossible to ignore the physical reactions. You can feel her chest pressing against your arm, the softness and heat driving you wild with unspoken thoughts.
Gabbie: [Her eyes locking onto yours, a mix of fear and desire] "What do we do?"
You: [Swallowing hard, feeling the intensity of the moment] "We get through this. Together."
The scene ends with the two of you reluctantly pulling away, the intensity of your feelings leaving you both breathless and on edge. You promise to find each other again soon, the bond between you growing stronger and more complex, the desire and taboo lingering in the air.
***GAL2G.webp***
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You: [Wiping sweat from your brow] (This heat is unbearable, but Gabbie seems unfazed.) "How much further do you think this outpost is?"
Gabbie: [Scanning the horizon, her toned body glistening with a thin sheen of sweat] "Not sure, but we can't be far now. The intel was pretty specific about its location."
You: [Nodding, trying not to stare at the way her shirt clings to her curves] "Right. Let's keep moving then."
As you trudge through the barren wasteland, the sun beats down mercilessly. The cracked earth beneath your feet radiates heat, making each step feel like walking on hot coals. Gabbie moves with a fluid grace that seems almost supernatural, her blonde hair shimmering in the harsh light.
***GAL4A.webp***
Gabbie: [Suddenly stopping, her eyes widening] "Wait, do you see that?"
You: [Squinting against the glare] "What is it?"
Gabbie: [Pointing ahead] "There, in the distance. It looks like... an oasis?"
You follow her gaze, and sure enough, a shimmering patch of green stands out against the desolate landscape. It seems almost too good to be true, a mirage in the middle of this hellscape.
You: [Cautiously] "Could be a trap. The MAD aren't above using holograms to lure in unsuspecting victims."
Gabbie: [Grinning mischievously] "Only one way to find out. Race you there!"
Before you can protest, she takes off running towards the oasis. You can't help but admire her athleticism as she sprints across the wasteland, her body moving with a fluid grace that seems almost inhuman.
***GAL4B.webp***
You: [Chasing after her] (There's something familiar about the way she moves, but I can't quite place it.)
As you approach the oasis, it becomes clear that it's very real. A crystal-clear pond sits at its center, fed by a small fountain that bubbles up from the ground. Lush vegetation surrounds it, providing a welcome respite from the harsh desert sun.
Gabbie: [Already at the water's edge, breathing heavily] "It's real! And it's beautiful!"
You: [Catching up, panting] "Incredible. But we should still be cautious."
Gabbie: [Nodding] "Agreed. But first..." [She starts stripping off her sweat-soaked clothes]
You: [Caught off guard] "Gabbie, what are you-"
Gabbie: [Laughing as she pulls off her shirt, revealing her sports bra underneath] "Relax! We're both covered in sweat and grime. A quick dip won't hurt, and it'll help us stay alert."
As she continues to undress, you can't help but notice how the virus has enhanced her already athletic form. Her skin seems to glow with an inner light, and every movement is filled with a raw, primal energy that's both alluring and slightly unsettling.
***GAL4C.webp***
You: [Swallowing hard] (The virus is definitely affecting me. I shouldn't be this aroused by someone I barely know.)
Gabbie: [Now down to her underwear, her curves on full display] "Come on, don't be shy. The water looks amazing."
***START - Choice 1***
[[Branch A: "I don't think that's a good idea. We should stay focused on the mission."]]
[[Branch B: "You're right, a quick swim could do us both some good."]]
***START - Choice 1 - Branch A***
Gabbie: [Pouting playfully] "Suit yourself, but you're missing out." [She dives into the water, leaving you to watch from the shore]
***GAL4D.webp***
You: [Sighing] (Maybe I should have joined her. But we need to stay alert.)
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Starting to undress] "You're right. A quick dip couldn't hurt."
As you strip down completely, the virus's effects on your body become fully apparent. Your muscles are more defined, your skin has an almost ethereal glow, and your manhood has grown to an impressive size, even when flaccid. You catch Gabbie's eyes widening as she takes in your naked form.
***GAL4E.webp***
Gabbie: [Swallowing hard] (Oh god, why does he affect me this way?) "Last one in is a rotten egg!" [She quickly sheds her remaining clothes]
Your breath catches as Gabbie's nude body is revealed. The virus has enhanced her already athletic form to perfection. Her breasts are full and perky, defying gravity in a way that seems almost supernatural. Her skin is flawless, with a subtle sheen that makes her glow in the fading sunlight. As she turns to dive into the water, you get a glimpse of her perfectly rounded buttocks, toned and tight.
***GAL4F.webp***
You dive in after her, the cool water a stark contrast to your overheated skin. As you surface, you find yourself face to face with Gabbie, droplets of water clinging to her eyelashes and running down between her breasts.
Gabbie: [Smiling, but with a hint of nervousness] "See? Isn't this nice?"
You: [Nodding, suddenly very aware of how close you are] "Yeah, it really is."
The virus pulses through your veins, heightening every sensation. You can feel the water moving around you, caressing your naked skin. The scent of Gabbie's arousal mingles with the fresh oasis air, driving your senses into overdrive.
Gabbie: [Her pupils dilating] "The virus... it's getting stronger, isn't it?"
You: [Breathing heavily] "Yeah, I can feel it. It's like everything is more... intense."
Almost unconsciously, you move closer to each other. The water laps gently at your bodies as you tread water, the distance between you shrinking with each passing moment. You can see Gabbie's nipples hardening, her body responding to your proximity.
***GAL4G.webp***
Gabbie: [Whispering] "We should probably get out soon. Before we... before things get out of hand."
You: [Nodding, but not moving away] "You're right. We should."
Despite your words, neither of you makes a move to leave the water. The tension between you is palpable, the virus amplifying your mutual attraction to an almost unbearable degree. Your manhood begins to swell, the water doing little to hide your arousal.
Finally, with great effort, you both climb out of the pond. As you stand on the shore, water running down your naked bodies, the setting sun casts everything in a golden glow. You can't help but stare at Gabbie, taking in every curve and contour of her virus-enhanced form.
***GAL4H.webp***
Gabbie: [Catching you staring, her own eyes roaming your body] "We should... we should set up camp. It's getting dark."
You: [Nodding, trying to regain control] "Right. I'll gather some firewood."
As you move around the oasis, still completely naked, you're acutely aware of Gabbie's eyes on you. The virus has heightened your senses to such a degree that you can almost feel the heat of her gaze on your skin. Your erection refuses to subside, bobbing slightly as you walk.
Gabbie: [Laying out sleeping bags, her movements causing her breasts to bounce enticingly] "You know, I'm really glad I ran into you out here. It's nice to have someone to watch your back."
***GAL4I.webp***
You: [Smiling as you start the fire, your naked body illuminated by the flames] "Same here. You're a hell of a fighter, and... well, it's good to have company."
As night falls, you both sit by the fire, still nude, your clothes forgotten nearby. The flames cast flickering shadows across Gabbie's body, highlighting her curves and the subtle glow of her virus-enhanced skin. You find yourself imagining what it would be like to touch her, to feel her body against yours.
Gabbie: [Catching you staring, her own eyes fixed on your still-erect manhood] "The virus... it makes it hard to think straight, doesn't it?"
You: [Nodding, your voice husky] "Yeah, it does. Sometimes it's hard to control."
Gabbie: [Scooting closer, her thigh brushing against yours] "Maybe we don't need to control it. Not all the time, anyway."
Her hand finds yours, her touch sending electric shocks up your arm. You turn to face her, your faces inches apart. The air between you is charged with sexual tension, the virus singing in your veins, demanding release.
***GAL4J.webp***
Gabbie: [Whispering, her lips nearly touching yours] "We should probably get some sleep. Big day tomorrow."
You: [Breathlessly] "Yeah, probably."
But neither of you moves. You stay there, on the edge of something dangerous and thrilling, the night air cool against your heated skin. The oasis around you seems to pulse with an otherworldly energy, as if the very land is affected by your shared arousal.
***GAL4K.webp***
As you finally retire to your separate sleeping bags, both still naked, the tension between you remains unresolved. But there's a promise in the air, a sense that this is just the beginning of something much bigger than either of you could have imagined. The virus continues to course through your bodies, your dreams filled with images of intertwined limbs and passionate embraces.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You navigate the harsh, arid terrain, the sun beating down relentlessly. As you crest a rocky outcrop, you spot Gabbie sitting in the shade of a large boulder, her back against the cool stone. She looks up, slightly surprised, but then her lips curl into a warm smile.
***GAT1A.webp***
Gabbie: [Closes her book and looks at you] (I didn't expect to see him here, but I'm glad he found this place.) "Hey there, didn't think I'd see you around here."
You: [Smiling back, walking closer] (She looks so peaceful, almost out of place in this harsh world.) "Hey, Gabbie. I was just scouting the area and spotted you. Mind if I join you?"
Gabbie: [Nods, patting the space next to her on the rock] "Sure, have a seat. It's nice to have some company."
You sit down beside her, the rock cool against your back. The silence of the Wastelands is punctuated by the occasional distant cry of a scavenger bird. Gabbie turns to you, curiosity in her eyes.
Gabbie: "So, how have you been holding up? Any interesting finds?"
You: [Shrugging, meeting her gaze] "Surviving, mostly. Found some useful supplies and a few safe spots. What about you?"
Gabbie: [Laughs softly] "Same here. Always on the lookout for anything that can give us an edge against The MAD."
***GAT1B.webp***
***START - Choice 1***
[[Branch A: "It's... it's tough out here. Sometimes I wonder if we'll ever really be safe." (Trust attribute requirements not met)]]
[[Branch B: "You know, I think we make a pretty good team." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Hesitant, looking away] "It's... it's tough out here. Sometimes I wonder if we'll ever really be safe."
Gabbie's smile fades slightly, sensing your doubt. She nods, but there's a hint of distance in her eyes.
Gabbie: [Softly] "Yeah, it's hard. We just have to keep moving forward."
***GAT1C.webp***
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Confident, meeting her eyes] "You know, I think we make a pretty good team. With your skills and my determination, we might just have a chance."
Gabbie's eyes light up, her smile returning with genuine warmth. She nods, clearly pleased by your confidence.
***GAT1D.webp***
Gabbie: "I think so too. Together, it feels like we could take on anything."
You spend the next hour sharing stories and survival tips, feeling a growing bond of mutual respect. Gabbie’s laughter is infectious, and you find yourself more at ease than you have been in a long time.
Gabbie: [Leaning closer, her hand brushing yours] "You know, it's been a while since I've felt this... hopeful. Thanks for that."
You: [Smiling, feeling the warmth of her touch] "It's mutual, Gabbie. I think we bring out the best in each other."
Gabbie pauses, looking at you with an intensity that makes your heart race. There's a moment of silence, filled with unspoken emotions.
Gabbie: [Softly] "Maybe you're right. Maybe we do."
The sun begins to set, casting long shadows across the rocky terrain. The air cools, but the warmth between you and Gabbie remains. You both stand, ready to head back to your respective shelters.
Gabbie: [Smiling, looking into your eyes] "We should do this again. It's good to have someone to trust."
***GAT1E.webp***
You: [Nodding, feeling a deep connection] "Absolutely. Stay safe, Gabbie."
As you part ways, you can't help but feel a strong sense of camaraderie and a hint of something deeper.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You trek through the Wastelands, the sun hanging low in the sky and casting elongated shadows across the cracked earth. The air is dry, carrying the faint scent of dust and decay. As you navigate the barren landscape, you spot Gabbie kneeling by a dried-up riverbed, examining the ground with intense focus. She notices your approach and stands up, a smile of surprise and pleasure lighting up her face.
Gabbie: [Brushing off her hands, her eyes twinkling] (Seeing him again is a nice surprise.) "Well, if it isn’t my favorite wanderer. What brings you to this neck of the wastelands?"
***GAT2A.webp***
You: [Grinning, stepping closer] (Her smile is infectious.) "Just following my instincts. Looks like I’m not the only one exploring today."
Gabbie: [Playfully] "Great minds think alike, huh? Found anything interesting?"
You: [Chuckling] "Just a lot of dust and rocks so far. You?"
Gabbie: [Holding up a small, rusted piece of metal] "Not much, but you never know what might come in handy."
You join Gabbie by the riverbed, the two of you casually inspecting the area. The harsh landscape is a stark contrast to the growing warmth between you.
You: "So, what’s your secret to staying so upbeat in this wasteland?"
Gabbie: [Shrugs, smiling] "A positive attitude and a bit of stubbornness. Plus, it helps to have company I can trust."
***GAT2B.webp***
You: [Playful] "Trust, huh? Well, I guess I’ll take that as a compliment."
Gabbie: [Laughs] "You should. It’s not something I give lightly."
***START - Choice 1***
[[Branch A: "It’s just that... this place gets to me sometimes." (Trust attribute requirements not met)]]
[[Branch B: "Well, I trust you too, Gabbie." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Awkwardly] "I... I mean, I'm glad you trust me. It’s just that... this place gets to me sometimes."
Gabbie’s smile fades slightly, a hint of disappointment in her eyes.
***GAT2C.webp***
Gabbie: [Softly] "Yeah, it’s tough out here. We all have our moments."
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Confident, meeting her gaze] "Well, I trust you too, Gabbie. It’s nice to have someone who’s got my back."
Gabbie’s eyes sparkle with warmth, her smile widening.
***GAT2D.webp***
Gabbie: "Feels good to hear that. We make a good team."
You both continue to explore the area, sharing more about your experiences and strategies for survival. The conversation flows easily, punctuated by laughter and playful banter.
Gabbie: [Teasingly, nudging you with her shoulder] "You know, you’re not so bad to have around. Almost makes this place bearable."
You: [Grinning, nudging her back] "Only almost? I’ll have to try harder then."
Gabbie: [Laughs, the sound echoing in the quiet wasteland] "Keep at it. You might just win me over."
***GAT2E.webp***
As the sun dips lower, casting an orange hue over the landscape, you both find a spot to rest. Gabbie sits close to you, her knee brushing against yours, sending a jolt of warmth through you.
Gabbie: "It’s good to have moments like this. Makes all the hardship worth it."
You: [Softly, looking into her eyes] "Yeah, it does. I’m glad we’re in this together."
Gabbie holds your gaze, her expression softening. There’s a palpable connection between you, a mix of trust and something deeper.
Gabbie: [Softly] "Me too."
The moment stretches, filled with unspoken words and shared understanding. As the evening cools, you both prepare to head back to your shelters.
Gabbie: [Standing up, offering you a hand] "Same time tomorrow?"
***GAT2F.webp***
You: [Taking her hand, smiling] "Wouldn’t miss it."
As you part ways, there’s a sense of anticipation for your next meeting. Each encounter strengthens the bond between you, laying the groundwork for a relationship that’s becoming more significant with each passing day.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The Wastelands stretch before you, a harsh landscape of ruins and desolation. Beside you, Gabbie's presence is a comforting constant, her blonde hair shimmering in the merciless sun. As you navigate through the remnants of a once-thriving city, her eyes dart around, always alert for danger.
***GAT4A.webp***
Gabbie: [Wiping sweat from her brow] "We should be careful here. This area is known for MAD patrols."
You: [Nodding] "Good to know. Your knowledge of this place is invaluable, Gabbie."
As you continue, you come across the ruins of an old shopping mall. Broken glass crunches beneath your feet as you enter, the eerie quiet broken only by the whistle of wind through empty corridors. You notice a pharmacy, its shelves mostly bare but still holding promise of useful supplies.
Gabbie: [Her eyes widening] "I've never seen anything like this intact before. Should we check the pharmacy?"
You: [Smiling at her resourcefulness] "Good idea. Let's see what we can find."
As you rummage through the pharmacy, you find some bandages and a few bottles of painkillers. Suddenly, Gabbie gasps, holding up a bottle of sunscreen.
Gabbie: [Excitedly] "Look! We could really use this out here."
You nod in agreement, and without thinking, Gabbie starts to apply the sunscreen. She pulls down the zipper of her tight survival suit, revealing more skin than you've seen before. Your breath catches as she exposes the top of her breasts, the swell of them glistening as she applies the lotion.
***GAT4B.webp***
You: [Swallowing hard] (God, she's beautiful. Why does this feel so... familiar?)
Gabbie: [Noticing your stare, blushing] "Could you... help me with my back?"
***START - Choice 1***
[[Branch A: "I don't think that's a good idea. We should keep moving."]]
[[Branch B: "Of course, Gabbie. Turn around."]]
***START - Choice 1 - Branch A***
You: [Frowning slightly] "I don't think that's a good idea. We should keep moving."
Gabbie's face falls, disappointment evident in her eyes. She nods, zipping up her suit quickly.
***GAT4C.webp***
Gabbie: [Forcing a smile] "You're right, of course. Safety first."
As you continue on, you can't help but feel a twinge of regret at the lost moment of intimacy.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Voice husky] "Of course, Gabbie. Turn around."
Gabbie turns, pulling her hair to the side. Your hands tremble slightly as you apply the sunscreen to her exposed neck and shoulders. The virus in your blood sings with desire, making your enhanced manhood throb insistently against your pants.
Gabbie: [Shivering under your touch] (This feels... right, somehow.) "Thank you."
As you finish, Gabbie turns to face you, her cheeks flushed. The top of her suit is still unzipped, offering a tantalizing view of her naked cleavage. Your eyes meet, and for a moment, you're struck by an odd sense of déjà vu.
***GAT4D.webp***
You: [Breathlessly] "We should... we should keep exploring."
Gabbie nods, but doesn't zip up her suit. As you move deeper into the mall, you come across a clothing store, its windows somehow still intact.
Gabbie: [Her voice filled with wonder] "Is that... clothing? Real, pre-virus clothing?"
You: [Smiling at her excitement] "Want to take a look?"
Inside the store, Gabbie's eyes light up as she runs her fingers over the various fabrics. She picks up a sundress, holding it against herself.
Gabbie: [Hesitantly] "Do you think I could try this on?"
You nod, keeping watch as she disappears into a changing room. After a few moments, Gabbie's voice calls out from behind the curtain.
Gabbie: [Sounding nervous] "Um... could you help me? The zipper's stuck."
As you pull back the curtain, your breath catches in your throat. Gabbie stands with her back to you, the sundress half-on, revealing the smooth expanse of her back and the curve of her full buttocks. Her survival suit lies discarded on the floor.
***GAT4E.webp***
You: [Swallowing hard] (Why does this feel so natural?) "Where's the zipper?"
Gabbie: [Glancing over her shoulder, a blush creeping up her cheeks] "It's stuck halfway up my back."
With trembling fingers, you reach for the zipper. As you work it up her spine, your knuckles brush against her soft skin, sending shivers through both of you. The air in the small changing room grows thick with tension.
Gabbie turns to face you, the dress now properly on but still revealing more than her usual attire. It hugs her figure perfectly, making her look both innocent and alluring. Your eyes meet, and the attraction between you is palpable.
***GAT4F.webp***
You: [Voice barely a whisper] "You look... beautiful, Gabbie."
Gabbie: [Blushing deeper] "Really? I've never worn anything like this before."
Without thinking, you reach out and tuck a stray strand of hair behind her ear. Your hand lingers, cupping her cheek gently. Gabbie leans into your touch, her eyes fluttering closed.
Gabbie: [Opening her eyes, a mix of emotions in her gaze] "We should probably get going, shouldn't we?"
You nod reluctantly. As Gabbie changes back, you try to calm your racing heart and adjust your pants to hide your obvious arousal.
Once ready, you both exit the store, the stolen moment of intimacy hanging between you. As you continue your exploration, you can't help but notice the way Gabbie walks closer to you, her hand occasionally brushing against yours.
***GAT4G.webp***
You: [Lost in thought] (There's something about her... something I can't quite put my finger on.)
Gabbie: [Glancing at you with a soft smile] (He reminds me so much of... No, I can't think about that now.)
As the sun sets over the desolate landscape, casting long shadows across the ruins, you wonder what other surprises and challenges await you both in the days to come. The attraction between you is undeniable, but there's also a nagging feeling that there's more to your connection than meets the eye.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find yourself outside Gabbie's outpost, peering through a crack in the wall. The virus buzzes in your mind, amplifying your every sensation. Inside, Gabbie is unaware of your presence as she moves around her space, her body glistening with a light sheen of sweat.
Gabbie: [Stretching her arms, looking out the window] "I wish I could do more about the MAD..."
***GCA1A.webp***
You: [Watching intently, your heart racing] (Her curves, her skin... why can't I look away? The virus is making everything more intense.)
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You sneak up to Gabbie's window, the virus clouding your judgment and heightening your senses. Through the glass, you see her organizing her supplies, her muscles flexing with each movement.
Gabbie: [Humming softly to herself, inspecting a map] "I need to find more resources tomorrow."
***GCA2A.webp***
You: [Eyes fixed on her, feeling a strange mix of emotions] (Her body... the way she moves... the virus is making impossible to think straight.)
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You quietly approach Gabbie's shelter, peering through a small opening. The virus courses through your veins, making every sight and sound overwhelmingly vivid. She is tending to a small fire, her face illuminated by the flickering flames, her lips slightly parted.
Gabbie: [Muttering to herself, poking the fire, smiling thinking about the future] "I must stay strong... for the resistance."
***GCA3A.webp***
You: [Watching in awe, captivated by her resolve] (Why can't I stop staring? The virus... it's making her look irresistible.)
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find yourself outside Gabbie's outpost, peering through a crack in the wall. Your breath catches as you see her moving inside, her body illuminated by the soft glow of a lantern. She begins to undress, her back to you, unaware of your presence.
Gabbie: [Sighing softly, slipping off her top to reveal her bare back and the curves of her waist] "It's been such a long day... I need to relax."
***GCA4A.webp***
You: [Eyes widening, unable to look away as she slides her pants down, revealing her smooth thighs and firm buttocks] (Her skin... so smooth and inviting. Why can't I stop watching?)
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach Gabbie’s outpost, feeling a mix of anxiety and fatigue. She looks up from her makeshift bed, her eyes filled with concern.
You: [Voice trembling slightly] "Gabbie, can I stay with you tonight? The virus... it makes me uneasy."
Gabbie: [Shaking her head gently, offering a sympathetic smile] "I'm sorry, but I think it's better if we sleep separately. We need to stay cautious."
***GCB1A.webp***
You: [Feeling a pang of disappointment] (She’s right, but I wish I could be closer to her.)
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You enter Gabbie's shelter, the dim light casting long shadows. She looks up, sensing your distress.
You: [Clearing your throat, trying to steady your voice] "Gabbie, do you mind if I sleep here tonight? The virus is making me anxious."
Gabbie: [Smiling gently but firmly] "I understand, but it's best if we keep our distance for now. Let's be careful."
***GCB2A.webp***
You: [Nodding reluctantly] (I guess she’s right. Safety first.)
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find Gabbie arranging her bedding, her movements calm and deliberate.
You: [Taking a deep breath, trying to sound calm] "Gabbie, can I stay with you tonight? The virus is making me uneasy."
Gabbie: [Looking up with understanding but shaking her head] "I think it’s better if we don’t. We need to be cautious and stay safe."
***GCB3A.webp***
You: [Feeling a mix of disappointment and understanding] (She’s just being careful. It’s for the best.)
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach Gabbie’s outpost, feeling a mix of anxiety and fatigue. She looks up from her makeshift bed, her eyes filled with concern.
You: [Voice tremblingslightly] "Gabbie, can I stay with you tonight? The virus... it makes me uneasy."
Gabbie: [Shaking her head gently, but with a playful smile] "I'm sorry, but it's better if we sleep separately. We need to stay cautious."
As you begin to turn away, she suddenly lifts her shirt, exposing her ample breasts, her nipples hardening in the cool air.
***GCB4A.webp***
Gabbie: [Grinning mischievously] "Maybe this will help you feel a little better."
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus courses through your veins, driving you to Gabbie's room with an insatiable hunger. Your enhanced senses pick up her scent - an intoxicating mix of sweat, arousal, and something... familiar. As you enter, you see her sprawled on the bed, her athletic form barely covered by a thin tank top and shorts.
***GBA1.webp***
AVA materializes beside you, her form shimmering with malevolent energy. Her voice slithers into your mind, dripping with dark promises.
***GBA2.webp***
AVA: [Grinning wickedly] (Such a mysterious girl. What secrets does she hide?) "Curious about your new friend, aren't you? I can give you a peek into her subconscious. After all, dreams reveal our deepest truths... and desires."
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Gabbie's dream"]]
***START - Choice 1 - Branch A***
With a monumental effort, you tear yourself away from Gabbie's sleeping form. Your body screams in protest as you stumble back to your room, leaving a trail of glowing pre-cum in your wake.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The virus overwhelms your last shred of resistance. Your voice is hoarse with need and shame.
You: [Eyes locked on Gabbie's sleeping form] (I shouldn't... but I need to know) "Do it. Show me what's in her mind."
Reality warps around you as AVA's laughter echoes in your skull. Suddenly, you find yourself in a post-apocalyptic cityscape. Crumbling skyscrapers loom overhead, their windows dark and empty. The air is thick with ash and the distant sounds of inhuman shrieks.
Gabbie stands before you, but she's different. Her body is more toned, her eyes harder. She's dressed in tattered combat gear, a futuristic rifle slung across her back. When she sees you, her eyes widen in disbelief and... longing.
***GBA3.webp***
Gabbie: [Voice cracking with emotion] (It can't be...) "Dad? Is that really you?"
You realize she's not seeing you, but someone else - someone important to her. Before you can process this, Gabbie throws herself at you, wrapping you in a fierce embrace. Your monstrous cock, barely contained by your dream-conjured pants, presses against her taut stomach. She gasps, pulling back slightly.
***GBA4.webp***
Gabbie: [Blushing furiously] (Oh god, it's just like in the stories) "I... I'm sorry. It's been so long. I forgot how... impressive you were."
Your mind reels at her words, but the virus-fueled lust drowns out any coherent thought. Gabbie's hand hovers over your straining erection, her eyes filled with a mixture of longing and shame.
Gabbie: [Voice trembling] (This is wrong... but we need to survive) "The others... they said this was the only way. To keep the bloodline pure, to fight the virus. I... I want to help, Dad."
Her small hand wraps around your shaft through the fabric, and you groan at the contact. Gabbie whimpers, her eyes widening as she feels your true size.
***GBA5.webp***
Gabbie: [Whispering] (It's even bigger than I imagined) "Oh fuck... How did Mom ever... No, focus Gabbie. We have to do this. For humanity."
You nod, unable to form words as Gabbie begins to stroke you through your pants. Her movements are surprisingly skilled, betraying experience beyond her years.
You: [Groaning] (This is so wrong... but it feels so right) "Gabbie... please..."
Gabbie hesitates for a moment, her face a battlefield of desire and lingering doubt. Then, with trembling fingers, she frees your monstrous cock from its confines. It springs forth, angry and red, pulsing with viral energy. Pre-cum beads at the tip, glowing faintly in the ashen light.
Gabbie: [Gasping] (It's magnificent... just like in my dreams) "Holy shit... It's... it's beautiful, Dad. Like a weapon of mass destruction."
Her hand can barely wrap around your girth as she begins to stroke in earnest. Pre-cum leaks freely, coating her fingers and being absorbed into her skin. With each stroke, Gabbie's breathing becomes heavier, her pupils dilating as the virus begins to take effect.
***GBA6.webp***
Gabbie: [Moaning softly] (Why does this feel so natural?) "Is this okay, Dad? Am I doing it right? Will this help us win?"
You nod, beyond words as Gabbie's hand works your shaft. The lewd, wet sounds of her strokes echo off the ruined buildings, mixing with the distant howls of infected and Gabbie's increasingly wanton moans.
***GBA7.webp***
You: [Panting] (She's losing herself to it) "That's it, Gabbie. You're such a good girl. Keep going."
Gabbie: [Whimpering, her free hand moving to her breast] (This feels so good... so right) "It's getting bigger, Dad! And so hot! Are you going to... to..."
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal snaps you back to reality. You find yourself standing in Gabbie's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible. Gabbie stirs in her bed, her face flushed and her breathing heavy. Her eyes flutter open, unfocused and confused.
Gabbie: [Blinking, disoriented] (What the hell was that dream?) "Huh? What's going on? I was... oh shit."
Her eyes widen as she notices the obvious bulge in your pants. A deep blush spreads across her cheeks, and she quickly looks away, a flicker of recognition and confusion crossing her face.
***GBA8.webp***
Gabbie: [Whispering, more to herself] (Why does he look so much like...) "I... I'm sorry. I was having a weird dream. You shouldn't be here."
You stammer an excuse and flee, leaving a very confused and strangely aroused Gabbie behind. As you close the door, you hear her muttering to herself, trying to make sense of what just happened.
[[Exit]]
***END***
***START - Choice 2 - Branch B***
***END***
***START - Choice 2 - Branch C***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus courses through your veins, driving you to Gabbie's room with an insatiable hunger. Your enhanced senses pick up her scent - an intoxicating mix of sweat, arousal, and something... familiar. As you enter, you see her sprawled on the bed, her athletic form barely covered by a thin tank top and shorts.
***GBA1.webp***
AVA materializes beside you, her form shimmering with malevolent energy. Her voice slithers into your mind, dripping with dark promises.
***GBA2.webp***
AVA: [Grinning wickedly] (Such a mysterious girl. What secrets does she hide?) "Curious about your new friend, aren't you? I can give you a peek into her subconscious. After all, dreams reveal our deepest truths... and desires."
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Gabbie's dream"]]
***START - Choice 1 - Branch A***
With a monumental effort, you tear yourself away from Gabbie's sleeping form. Your body screams in protest as you stumble back to your room, leaving a trail of glowing pre-cum in your wake.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The virus overwhelms your last shred of resistance. Your voice is hoarse with need and shame.
You: [Eyes locked on Gabbie's sleeping form] (I shouldn't... but I need to know) "Do it. Show me what's in her mind."
Reality warps around you as AVA's laughter echoes in your skull. Suddenly, you find yourself in a post-apocalyptic cityscape. Crumbling skyscrapers loom overhead, their windows dark and empty. The air is thick with ash and the distant sounds of inhuman shrieks.
Gabbie stands before you, but she's different. Her body is more toned, her eyes harder. She's dressed in tattered combat gear, a futuristic rifle slung across her back. When she sees you, her eyes widen in disbelief and... longing.
***GBA3.webp***
Gabbie: [Voice cracking with emotion] (It can't be...) "Dad? Is that really you?"
You realize she's not seeing you, but someone else - someone important to her. Before you can process this, Gabbie throws herself at you, wrapping you in a fierce embrace. Your monstrous cock, barely contained by your dream-conjured pants, presses against her taut stomach. She gasps, pulling back slightly.
***GBA4.webp***
Gabbie: [Blushing furiously] (Oh god, it's just like in the stories) "I... I'm sorry. It's been so long. I forgot how... impressive you were."
Your mind reels at her words, but the virus-fueled lust drowns out any coherent thought. Gabbie's hand hovers over your straining erection, her eyes filled with a mixture of longing and shame.
Gabbie: [Voice trembling] (This is wrong... but we need to survive) "The others... they said this was the only way. To keep the bloodline pure, to fight the virus. I... I want to help, Dad."
Her small hand wraps around your shaft through the fabric, and you groan at the contact. Gabbie whimpers, her eyes widening as she feels your true size.
***GBA5.webp***
Gabbie: [Whispering] (It's even bigger than I imagined) "Oh fuck... How did Mom ever... No, focus Gabbie. We have to do this. For humanity."
You nod, unable to form words as Gabbie begins to stroke you through your pants. Her movements are surprisingly skilled, betraying experience beyond her years.
You: [Groaning] (This is so wrong... but it feels so right) "Gabbie... please..."
Gabbie hesitates for a moment, her face a battlefield of desire and lingering doubt. Then, with trembling fingers, she frees your monstrous cock from its confines. It springs forth, angry and red, pulsing with viral energy. Pre-cum beads at the tip, glowing faintly in the ashen light.
Gabbie: [Gasping] (It's magnificent... just like in my dreams) "Holy shit... It's... it's beautiful, Dad. Like a weapon of mass destruction."
Her hand can barely wrap around your girth as she begins to stroke in earnest. Pre-cum leaks freely, coating her fingers and being absorbed into her skin. With each stroke, Gabbie's breathing becomes heavier, her pupils dilating as the virus begins to take effect.
***GBA6.webp***
Gabbie: [Moaning softly] (Why does this feel so natural?) "Is this okay, Dad? Am I doing it right? Will this help us win?"
You nod, beyond words as Gabbie's hand works your shaft. The lewd, wet sounds of her strokes echo off the ruined buildings, mixing with the distant howls of infected and Gabbie's increasingly wanton moans.
***GBA7.webp***
You: [Panting] (She's losing herself to it) "That's it, Gabbie. You're such a good girl. Keep going."
Gabbie: [Whimpering, her free hand moving to her breast] (This feels so good... so right) "It's getting bigger, Dad! And so hot! Are you going to... to..."
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal snaps you back to reality. You find yourself standing in Gabbie's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible. Gabbie stirs in her bed, her face flushed and her breathing heavy. Her eyes flutter open, unfocused and confused.
Gabbie: [Blinking, disoriented] (What the hell was that dream?) "Huh? What's going on? I was... oh shit."
Her eyes widen as she notices the obvious bulge in your pants. A deep blush spreads across her cheeks, and she quickly looks away, a flicker of recognition and confusion crossing her face.
***GBA8.webp***
Gabbie: [Whispering, more to herself] (Why does he look so much like...) "I... I'm sorry. I was having a weird dream. You shouldn't be here."
You stammer an excuse and flee, leaving a very confused and strangely aroused Gabbie behind. As you close the door, you hear her muttering to herself, trying to make sense of what just happened.
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Growling] (I need more. Show me everything) "More. Make it more intense!"
AVA's cruel laughter rings in your ears as the dreamscape shifts. The ruined city becomes darker, more oppressive. The air grows thick with the scent of ash, blood, and forbidden desire. Gabbie gasps as the fog of uncertainty lifts, horror and unbridled lust battling in her eyes.
Gabbie: [Her hand still working your shaft] (This is too real. What's happening?) "Dad? No... wait, you're not... But you look so much like..."
The virus surges through her system like liquid fire, courtesy of AVA's influence. Her skin flushes deep red, nipples visibly hardening beneath her tattered top. A visible wet spot forms on her shorts as her pussy gushes with arousal.
***GBA9.webp***
Gabbie: [Whimpering] (He's not my father! But why does he look so similar?) "We have to stop, this isn't... oh fuck!"
Her protests are cut short as another wave of viral lust crashes over her. AVA's influence floods her system with unnatural arousal, shattering her last defenses.
Gabbie: [Moaning wantonly] (No... mustn't... but it feels so good) "Your... your cock feels so amazing. No! I didn't mean... we shouldn't... oh god, I need your cum so badly!"
Her movements become more frantic, more desperate. Tears of confusion and shame stream down her face, mixing with the sweat of her exertion. She begins to use both hands, one working your shaft while the other gently cups your heavy, cum-filled balls.
***GBA10.webp***
You: [Groaning, hips bucking] (She's fighting so hard, but she can't win) "Don't fight it, Gabbie. This is how we survive. This is your purpose."
Gabbie: [Sobbing and moaning] (I'm so confused. Why does he look like Dad?) "I'm so sorry, I don't understand what's happening. You look like... but you're not... oh fuck, I need your seed!"
The lewd, wet sounds of her hands working your cock echo through the desolate cityscape. Pre-cum flows freely, mixing with Gabbie's tears to create a slick, warm coating on your shaft.
***GBA11.webp***
Gabbie: [Eyes wide with desperate need and confusion] (This isn't a dream, is it?) "Please! I need it... I need it to survive! But who are you really?"
With a bestial roar, you explode. Thick ropes of cum erupt from your cock, coating Gabbie's face, chest, and hands. She screams in shock and ecstasy, her own orgasm crashing over her as your seed touches her skin. The mixture glows with an unearthly light as it's absorbed into her skin, the virus using it to reshape her body and mind.
***GBA12.webp***
Gabbie: [Gasping, licking cum from her fingers] (So good... need more... but why?) "So much cum... I need more! Use me. I'll be your good girl... but... who are you? Dad? No... you're... you're..."
As the dream fades, Gabbie is left a quivering, cum-drenched mess, her mind a whirlpool of confusion, lust, and fragmented memories. The lines between dream and reality, past and present, blur in her virus-addled mind. You snap back to reality, the image of Gabbie's conflicted expression burned into your mind, leaving you with more questions than answers about her past and your uncanny resemblance to someone important in her life.
[[Exit]]
***END***
***START - Choice 2 - Branch C***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus courses through your veins, driving you to Gabbie's room with an insatiable hunger. Your enhanced senses pick up her scent - an intoxicating mix of sweat, arousal, and something... familiar. As you enter, you see her sprawled on the bed, her athletic form barely covered by a thin tank top and shorts.
***GBA1.webp***
AVA materializes beside you, her form shimmering with malevolent energy. Her voice slithers into your mind, dripping with dark promises.
***GBA2.webp***
AVA: [Grinning wickedly] (Such a mysterious girl. What secrets does she hide?) "Curious about your new friend, aren't you? I can give you a peek into her subconscious. After all, dreams reveal our deepest truths... and desires."
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Gabbie's dream"]]
***START - Choice 1 - Branch A***
With a monumental effort, you tear yourself away from Gabbie's sleeping form. Your body screams in protest as you stumble back to your room, leaving a trail of glowing pre-cum in your wake.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The virus overwhelms your last shred of resistance. Your voice is hoarse with need and shame.
You: [Eyes locked on Gabbie's sleeping form] (I shouldn't... but I need to know) "Do it. Show me what's in her mind."
Reality warps around you as AVA's laughter echoes in your skull. Suddenly, you find yourself in a post-apocalyptic cityscape. Crumbling skyscrapers loom overhead, their windows dark and empty. The air is thick with ash and the distant sounds of inhuman shrieks.
Gabbie stands before you, but she's different. Her body is more toned, her eyes harder. She's dressed in tattered combat gear, a futuristic rifle slung across her back. When she sees you, her eyes widen in disbelief and... longing.
***GBA3.webp***
Gabbie: [Voice cracking with emotion] (It can't be...) "Dad? Is that really you?"
You realize she's not seeing you, but someone else - someone important to her. Before you can process this, Gabbie throws herself at you, wrapping you in a fierce embrace. Your monstrous cock, barely contained by your dream-conjured pants, presses against her taut stomach. She gasps, pulling back slightly.
***GBA4.webp***
Gabbie: [Blushing furiously] (Oh god, it's just like in the stories) "I... I'm sorry. It's been so long. I forgot how... impressive you were."
Your mind reels at her words, but the virus-fueled lust drowns out any coherent thought. Gabbie's hand hovers over your straining erection, her eyes filled with a mixture of longing and shame.
Gabbie: [Voice trembling] (This is wrong... but we need to survive) "The others... they said this was the only way. To keep the bloodline pure, to fight the virus. I... I want to help, Dad."
Her small hand wraps around your shaft through the fabric, and you groan at the contact. Gabbie whimpers, her eyes widening as she feels your true size.
***GBA5.webp***
Gabbie: [Whispering] (It's even bigger than I imagined) "Oh fuck... How did Mom ever... No, focus Gabbie. We have to do this. For humanity."
You nod, unable to form words as Gabbie begins to stroke you through your pants. Her movements are surprisingly skilled, betraying experience beyond her years.
You: [Groaning] (This is so wrong... but it feels so right) "Gabbie... please..."
Gabbie hesitates for a moment, her face a battlefield of desire and lingering doubt. Then, with trembling fingers, she frees your monstrous cock from its confines. It springs forth, angry and red, pulsing with viral energy. Pre-cum beads at the tip, glowing faintly in the ashen light.
Gabbie: [Gasping] (It's magnificent... just like in my dreams) "Holy shit... It's... it's beautiful, Dad. Like a weapon of mass destruction."
Her hand can barely wrap around your girth as she begins to stroke in earnest. Pre-cum leaks freely, coating her fingers and being absorbed into her skin. With each stroke, Gabbie's breathing becomes heavier, her pupils dilating as the virus begins to take effect.
***GBA6.webp***
Gabbie: [Moaning softly] (Why does this feel so natural?) "Is this okay, Dad? Am I doing it right? Will this help us win?"
You nod, beyond words as Gabbie's hand works your shaft. The lewd, wet sounds of her strokes echo off the ruined buildings, mixing with the distant howls of infected and Gabbie's increasingly wanton moans.
***GBA7.webp***
You: [Panting] (She's losing herself to it) "That's it, Gabbie. You're such a good girl. Keep going."
Gabbie: [Whimpering, her free hand moving to her breast] (This feels so good... so right) "It's getting bigger, Dad! And so hot! Are you going to... to..."
You feel your orgasm building, an unstoppable tidal wave of pleasure. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your arousal snaps you back to reality. You find yourself standing in Gabbie's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible. Gabbie stirs in her bed, her face flushed and her breathing heavy. Her eyes flutter open, unfocused and confused.
Gabbie: [Blinking, disoriented] (What the hell was that dream?) "Huh? What's going on? I was... oh shit."
Her eyes widen as she notices the obvious bulge in your pants. A deep blush spreads across her cheeks, and she quickly looks away, a flicker of recognition and confusion crossing her face.
***GBA8.webp***
Gabbie: [Whispering, more to herself] (Why does he look so much like...) "I... I'm sorry. I was having a weird dream. You shouldn't be here."
You stammer an excuse and flee, leaving a very confused and strangely aroused Gabbie behind. As you close the door, you hear her muttering to herself, trying to make sense of what just happened.
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Growling] (I need more. Show me everything) "More. Make it more intense!"
AVA's cruel laughter rings in your ears as the dreamscape shifts. The ruined city becomes darker, more oppressive. The air grows thick with the scent of ash, blood, and forbidden desire. Gabbie gasps as the fog of uncertainty lifts, horror and unbridled lust battling in her eyes.
Gabbie: [Her hand still working your shaft] (This is too real. What's happening?) "Dad? No... wait, you're not... But you look so much like..."
The virus surges through her system like liquid fire, courtesy of AVA's influence. Her skin flushes deep red, nipples visibly hardening beneath her tattered top. A visible wet spot forms on her shorts as her pussy gushes with arousal.
***GBA9.webp***
Gabbie: [Whimpering] (He's not my father! But why does he look so similar?) "We have to stop, this isn't... oh fuck!"
Her protests are cut short as another wave of viral lust crashes over her. AVA's influence floods her system with unnatural arousal, shattering her last defenses.
Gabbie: [Moaning wantonly] (No... mustn't... but it feels so good) "Your... your cock feels so amazing. No! I didn't mean... we shouldn't... oh god, I need your cum so badly!"
Her movements become more frantic, more desperate. Tears of confusion and shame stream down her face, mixing with the sweat of her exertion. She begins to use both hands, one working your shaft while the other gently cups your heavy, cum-filled balls.
***GBA10.webp***
You: [Groaning, hips bucking] (She's fighting so hard, but she can't win) "Don't fight it, Gabbie. This is how we survive. This is your purpose."
Gabbie: [Sobbing and moaning] (I'm so confused. Why does he look like Dad?) "I'm so sorry, I don't understand what's happening. You look like... but you're not... oh fuck, I need your seed!"
The lewd, wet sounds of her hands working your cock echo through the desolate cityscape. Pre-cum flows freely, mixing with Gabbie's tears to create a slick, warm coating on your shaft.
***GBA11.webp***
Gabbie: [Eyes wide with desperate need and confusion] (This isn't a dream, is it?) "Please! I need it... I need it to survive! But who are you really?"
With a bestial roar, you explode. Thick ropes of cum erupt from your cock, coating Gabbie's face, chest, and hands. She screams in shock and ecstasy, her own orgasm crashing over her as your seed touches her skin. The mixture glows with an unearthly light as it's absorbed into her skin, the virus using it to reshape her body and mind.
***GBA12.webp***
Gabbie: [Gasping, licking cum from her fingers] (So good... need more... but why?) "So much cum... I need more! Use me. I'll be your good girl... but... who are you? Dad? No... you're... you're..."
As the dream fades, Gabbie is left a quivering, cum-drenched mess, her mind a whirlpool of confusion, lust, and fragmented memories. The lines between dream and reality, past and present, blur in her virus-addled mind. You snap back to reality, the image of Gabbie's conflicted expression burned into your mind, leaving you with more questions than answers about her past and your uncanny resemblance to someone important in her life.
[[Exit]]
***END***
***START - Choice 2 - Branch C***
You: [Snarling] (No more games. I'm taking what's mine) "Enough! Wake me up. Now!"
Reality snaps back into focus. You stand in Gabbie's room, fully awake and painfully erect. Gabbie lies motionless, lost in her vivid dream. Your virus-enhanced body thrums with power and insatiable hunger.
***GBA13.webp***
You: [Voice low and dangerous] (She's mine. I'll claim her) "Wake up, Gabbie. Time to face reality."
Gabbie stirs but doesn't fully wake. Impatient, you grab her shoulder, shaking her roughly. Her eyes snap open, clouded with confusion and lingering images from her dream.
Gabbie: [Disoriented] (What's happening?) "Huh? What's going on? Why are you..."
Her words die in her throat as you force her hand to your throbbing member. The tip glistens with pre-cum, the shaft pulsing with viral energy. Gabbie's eyes widen in shock and fear as she realizes this isn't a dream.
***GBA14.webp***
Gabbie: [Whispering, fear creeping into her voice] (This can't be real) "No, we can't... This is wrong... You're not... Please, stop!"
Ignoring her pleas, you force her hand to move along your shaft. She tries to pull away, but your virus-enhanced strength is too much for her.
You: [Growling] (She'll learn her place) "Don't fight it, Gabbie. This is what you were made for."
Gabbie: [Crying, trying to break free] (This is a nightmare. It has to be) "Let go of me! This isn't right! You don't understand!"
But as your pre-cum leaks onto her skin, Gabbie's resistance begins to crumble. The virus surges through her system, amplified by your potent fluids. Her fingers instinctively begin to stroke, her body betraying her mind.
***GBA15.webp***
Gabbie: [Whimpering] (Why does it feel good? This is so wrong) "I shouldn't be doing this... You're not him... But I can't stop! It feels so... No! This is fucked up!"
Her strokes become more confident as the virus takes hold, her shame transforming into unwilling lust. You thrust into her hand, fucking her fist with abandon. Your other hand roughly gropes her breast through her tank top, making her gasp.
***GBA16.webm***
You: [Panting] (She's mine now) "That's it, Gabbie. Be a good girl and stroke my cock. You love it, don't you? Say it!"
Gabbie: [Moaning, tears streaming down her face] (I'm betraying everything) "No... yes... I don't know! It's so big... I love your cock! Oh god, what's happening to me?"
You feel your climax approaching, your balls tightening. With a bestial roar, you explode, painting Gabbie's face, hair, and chest with thick ropes of cum. She gasps as it hits her, her body shuddering in an unwilling orgasm. Your seed seems to glow as it's absorbed into her skin, the virus using it to reshape her body and mind.
***GBA17.webp***
Gabbie: [Gasping, her eyes glazing over] (It's so warm... and it feels so good) "So much... Oh god, what have we done? It's... it's changing me..."
As the last of your cum is absorbed into her skin, Gabbie's resolve finally shatters. Her eyes, once filled with confusion and fear, now burn with viral lust and newfound depravity.
Gabbie: [Licking her lips, voice husky] (I need more. I need him) "More, please. I need more of your cum. Use me. Break me. I'm yours now..."
She pulls you down onto the bed, her body writhing with need. As you lose yourself in her embrace, you can't shake the feeling that there's more to Gabbie than meets the eye. The way she looked at you, the things she said in her dream... it all points to a mystery you're only beginning to unravel.
[[Exit]]
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><<script>>
playAudio("music", "angelaTrust");
<</script>>\
<<nobr>>
<<set $specpass.TWOA2 to 1>>
<div class="DIAS_container">
<<SAY>>
<p>You walk alone, the forest around you alive with the whispers of leaves and distant calls of wildlife. The air is fresh, filled with the earthy scent of moss and damp soil. You're on the hunt for anything useful – a forgotten artifact or perhaps a bounty of nature's provisions.</p>
<</SAY>>
<<SAY>>
<p>As you delve deeper into the woods, a rustling from the shadows catches your attention. There! A flash of fur darts between the trees. Instinct takes over, and you give chase, your heart pounding in exhilaration. The thrill of the hunt surges through you as branches whip past, the creature always just out of reach.</p>
<</SAY>>
<<SAY>>
<p>But in your fervor, you miss the warning signs – the ground becoming uneven, the trees thinning. Suddenly, the earth gives way to open air, and you're falling, tumbling down a steep, wooded cliff. Branches tear at your clothes, the world spins, and a sharp crack echoes in your ears as darkness swallows you whole.</p>
<</SAY>>
<<SAY>>
<p>(Blackness. Silence.)</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="nextBloc(event)"> Wake up </div>
</div>
</div>
<</nobr>>\
<script>
setBackground('ressources/backgrounds/YA.webm');
DIAF_initDialogPassage(passageId);
function nextBloc(event) {
nextPartOfDay();
playPassage('AUA2'); //next passage id
}
</script><<script>>
playAudio("music", "angelaTrust");
<</script>>\
<<nobr>>
<div class="DIAS_container">
<<SAY>>
<p>You awaken gradually, the sensation of being comfortably ensconced in a soothing warmth enveloping you. Your mind is clouded, the events preceding this moment a murky haze. A woman's soft whistling reaches your ears, and in your disoriented state, you mistake it for a maternal presence.</p>
<</SAY>>
<<SAY Mc>>
<inner>Confusion gives way to a flicker of hope</inner>
<p>"Cherie?"</p>
<</SAY>>
<<SAY Angela>>
<action>Startled, she turns towards you with a soft chuckle</action>
<inner>He seems so lost, poor thing.</inner>
<p>"I'm not sure who Cherie is, but I'm definitely not her."</p>
<</SAY>>
<<SAY Image>>
AUA2A
<</SAY>>
<<SAY>>
<p>With her gentle laugh, reality seeps back in. You are in the home of a stranger, the memory of your fall and the subsequent darkness rushing back. An instinctive attempt to rise brings a sharp pain, grounding you back to your present fragility.</p>
<</SAY>>
<<SAY Angela>>
<action>Placing a reassuring hand on your shoulder</action>
<inner>He needs care, not more harm.</inner>
<p>"Take it easy, you need to rest a bit more before you get up."</p>
<</SAY>>
<<SAY>>
<p>Her voice is a balm, authoritative yet brimming with kindness, compelling you to obey without question. You settle back down, finally taking a proper look at her. Angela is a vision of mature beauty, her black hair framing a face that exudes calm and her silhouette, a testament to a life of strength.</p>
<</SAY>>
<<SAY Image>>
AUA2B
<</SAY>>
<<SAY>>
<p>As she prepares a strange concoction, she recounts finding you unconscious at the foot of a steep wooded slope, and without a second thought, she brought you to her woodland abode.</p>
<</SAY>>
<<SAY Mc>>
<inner>How did I end up in such a kind stranger's care?</inner>
<p>"Thank you, and I apologize for startling you. I'm..."</p>
<</SAY>>
<<SAY Angela>>
<action>Smiling warmly, she interrupts your apology</action>
<inner>He's safe, that's what matters.</inner>
<p>"There's no need for that. I'm Angela."</p>
<</SAY>>
<<SAY Image>>
AUA2C
<</SAY>>
<<SAY>>
<p>Her name is as mysterious as her presence here in the forest, a place deemed uninhabitable due to the pervasive virus. You inquire about this anomaly.</p>
<</SAY>>
<<SAY Angela>>
<action>Spreading the salve on your wounds with a touch as light as feathers</action>
<inner>Why can't I remember anything about this place?</inner>
<p>"I wish I knew. I can't explain why I'm here, or how I arrived. I'm just as clueless about this island and 'The MAD' as you are."</p>
<</SAY>>
<<SAY>>
<p>The salve works wonders, your pain subsiding at an astonishing rate. Angela's nurturing presence stirs something within you, a warmth that has nothing to do with your healing wounds.</p>
<</SAY>>
<<SAY Mc>>
<inner>I must get back before the virus makes this more complicated.</inner>
<p>"I should return home, but I'll come back to properly thank you."</p>
<</SAY>>
<<SAY Angela>>
<action>Nods with the same serene smile</action>
<inner>He's strong, he'll be alright.</inner>
<p>"You're welcome here anytime. Take care."</p>
<</SAY>>
<<SAY Image>>
AUA2D
<</SAY>>
<<SAY>>
<p>As you prepare to leave, the enigma of Angela lingers. Who is this mysteriously divine woman, living alone amidst the dangers of the forest?</p>
<</SAY>>
<div class="DIAS_buttonCont">
<div class="DIAS_button" onclick="nextBloc(event)"> Done </div>
</div>
</div>
<</nobr>>\
<script>
setBackground('ressources/backgrounds/YA.webm');
DIAF_initDialogPassage(passageId);
function nextBloc(event) {
nextPartOfDay();
playPassage('2ACE'); //next passage id
}
</script><script>
(() => {
const dialog = `
The Peacewood was anything but peaceful today. The air thrummed with an otherworldly energy, leaves rustling in a breeze that didn't seem to exist. You pushed through the dense foliage, drawn deeper into the forest by an inexplicable pull. The virus surged through your veins, making your skin hypersensitive to every brush of leaf and branch.
Suddenly, the trees parted, revealing a small clearing bathed in an ethereal light. In the center stood Angela, her voluptuous form seeming to shimmer in and out of reality. Her long black hair floated around her as if suspended in water, and her eyes glowed with an inner fire. She wore a dress that seemed to be made of living shadows, clinging to her curves before dissipating into mist at her feet.
***AA3A.webp***
Angela: [Her voice echoing strangely] "You've come, my child. I wondered when the forest would call you to me."
You stepped forward, drawn by her presence. The virus within you responded to her, making your blood feel like liquid fire.
You: [Voice husky] "Angela... what is this place? What's happening to me?"
Angela smiled, the expression both alluring and slightly unnerving. She moved towards you, each step leaving a brief imprint of glowing energy on the forest floor.
***AA3B.webp***
Angela: [Reaching out to caress your cheek] "This is where the veil between worlds is thinnest. Here, the true nature of the virus... of me... can be glimpsed."
Her touch sent a jolt through your system, intensifying the virus's effects. You could feel your body responding, your manhood hardening painfully in your pants.
***START - Choice 1***
[[Branch A: "I don't understand. Can't you just give me a straight answer for once?" (Trust attribute requirements not met)]]
[[Branch B: "Show me, Angela. I want to understand... to feel what you feel." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Angela's expression flickered, a mix of disappointment and frustration crossing her features. The glow around her dimmed slightly, and the forest seemed to grow darker.
***AA3C.webp***
Angela: [Her voice cooling] "Understanding requires openness, child. If you're not ready to embrace the unknown, perhaps you shouldn't have come."
She turned away, her form becoming more insubstantial. The magic of the moment faded, leaving you feeling hollow and unsatisfied. The virus continued to pulse within you, but now it felt more like an itch you couldn't scratch.
Angela: [Over her shoulder] "Return when you're prepared to trust in forces beyond your comprehension."
As she faded into the mist, you were left alone in the clearing, the opportunity for enlightenment lost. The forest around you seemed to close in, urging you to leave, to return to the familiar confines of the shelter.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Angela's eyes lit up, quite literally, glowing brighter at your words. She stepped closer, her body pressing against yours. You could feel the heat of her skin through the insubstantial fabric of her dress, and the scent of her – something wild and intoxicating – filled your nostrils.
***AA3D.webp***
Angela: [Her voice a sensual purr] "Brave boy. Very well, let me give you a taste of divinity."
She leaned in, her lips brushing against your ear. As she spoke, you felt the world around you shift and blur.
***AA3E.webp***
Angela: [Whispering] "Close your eyes. Feel the pulse of the forest... of the virus... of me."
You obeyed, letting your eyelids flutter shut. Immediately, your other senses heightened. You could hear the sap flowing in the trees, smell the rich earth beneath your feet, feel the vibrations of a million tiny lifeforms in the air around you.
Angela's hands trailed down your arms, leaving trails of tingling energy in their wake. Where she touched, your skin seemed to come alive, every nerve ending firing with pleasure.
Angela: [Her voice seeming to come from everywhere at once] "The virus is not just a disease, my child. It's a key... a gateway to untapped potential within the human form."
As she spoke, you felt your body changing, growing stronger, more sensitive. Your clothes felt too tight, too restrictive.
Angela: [Breathlessly] "Open your eyes. See yourself as I see you."
***START - Choice 2***
[[Branch A: "What have you done to me? Change me back!" (Lust attribute requirements not met)]]
[[Branch B: "I feel... incredible. Is this how you experience the world all the time?" (Lust attribute Requirements met)]]
***START - Choice 2 - Branch A***
The magical atmosphere shattered like glass. Angela stepped back, her expression a mixture of disappointment and pity. The forest around you seemed to dim, the vibrant colors fading to more mundane hues.
***AA3F.webp***
Angela: [Sighing] "Oh, my child. Fear will only hold you back. I've done nothing to you that wasn't already within you."
She waved her hand, and you felt the intense sensations recede. Your body returned to its normal state, though the memory of that brief moment of enhancement lingered tantalizingly out of reach.
Angela: [Her voice distant] "Perhaps you're not ready for this level of awakening. Return to me when you've learned to embrace change rather than fear it."
With that, she faded into the mist, leaving you alone in the clearing. The virus still pulsed within you, but now it felt muted, restrained. You couldn't shake the feeling that you'd missed out on something profound.
[[Exit]]
***END***
***START - Choice 2 - Branch B***
Angela's smile was radiant, her entire being seeming to glow with approval. The forest around you burst into vibrant color, every leaf and flower pulsing with life and energy.
***AA3G.webp***
Angela: [Her voice rich with pleasure] "Yes, my beautiful boy. This is but a fraction of what I experience. Of what you could experience, if you continue down this path."
You looked down at yourself, marveling at the changes. Your body seemed to glow from within, muscles more defined, skin gleaming with health. But most noticeably, your manhood had grown, straining against your pants with newfound size and vitality.
Angela: [Eyeing your enhanced form appreciatively] "The virus unlocks what's already within you. It amplifies, enhances... reveals your true potential."
She stepped closer, her hand hovering just above your chest. You could feel the heat of her palm, see the energy crackling between her skin and yours.
***AA3H.webp***
Angela: [Voice husky] "Would you like to see more? To feel more?"
Your entire body thrummed with desire, the virus singing in your veins. Every fiber of your being screamed yes, but a small part of you hesitated, aware of the magnitude of this moment.
***START - Choice 3***
[[Branch A: "I... I don't know if I'm ready for this. It's too much, too fast." (Virus attribute requirements not met)]]
[[Branch B: "Show me everything, Angela. I want to experience all that you can offer." (Virus attribute Requirements met)]]
***START - Choice 3 - Branch A***
Angela's expression softened, a hint of sadness creeping into her eyes. The vibrant energy around you dimmed slightly, the colors of the forest returning to their normal hues.
***AA3I.webp***
Angela: [Stroking your cheek gently] "Oh, my sweet boy. There's no shame in needing time. The path to enlightenment is different for everyone."
She stepped back, her form becoming less substantial. You felt the enhanced sensations begin to fade, your body returning to its normal state. The loss was almost painful, leaving you aching for what could have been.
Angela: [Her voice growing distant] "Return to me when you feel ready to take the next step. I'll be waiting, always."
With that, she dissolved into mist, leaving you alone in the clearing. The memory of those intense sensations lingered, tantalizing and just out of reach. As you made your way back through the forest, you couldn't shake the feeling that you'd missed out on something truly extraordinary.
[[Exit]]
***END***
***START - Choice 3 - Branch B***
Angela's eyes blazed with an inner fire, her smile both beatific and predatory. The forest around you seemed to pulse in time with your heartbeat, colors becoming more vivid, scents more intoxicating.
***AA3J.webp***
Angela: [Her voice resonating with power] "Brave, beautiful boy. Your desire, your openness... it feeds me. Feeds the virus. Are you ready to transcend your mortal limitations?"
Without waiting for an answer, she pressed her palm against your chest. The sensation was electric, sending shockwaves of pleasure through your entire body. Your clothes dissolved into mist, leaving you bare before her. Your enhanced manhood stood proud, larger and more virile than you'd ever seen it.
Angela's dress of shadows swirled around her, revealing glimpses of her lush curves. Her breasts, full and perfect, seemed to defy gravity. Her skin glowed with an inner light, mesmerizing patterns shifting just beneath the surface.
***AA3K.webp***
Angela: [Breathlessly] "Feel the power of the virus, my child. Feel me within you, around you, becoming you."
***AA3L.webp***
She leaned in, her lips barely brushing against yours. It wasn't quite a kiss, but something more profound. You felt as if she was breathing life itself into you. Your body responded, growing stronger, more sensitive. Every nerve ending was alight with pleasure.
You reached for her, driven by an primal need to touch, to connect. But your hands passed through her as if she were made of smoke.
Angela: [Smiling teasingly] "Not yet, my eager one. This is but a taste of what awaits you. A glimpse of the power you could wield, the pleasures you could experience."
She stepped back, her form becoming less substantial. You felt the enhanced sensations begin to recede, though not entirely. Your body retained some of its new strength and sensitivity.
Angela: [Her voice echoing] "Carry this experience with you, let it drive you forward. Return to me when you're ready for more, and I'll show you wonders beyond your wildest dreams."
With that, she faded into the mist, leaving you alone in the clearing. Your body hummed with residual energy, your enhanced manhood still hard and aching for release. As you made your way back through the forest, you knew that nothing would ever be the same. The memory of this encounter would fuel your desires, pushing you to explore the virus's potential further.
The line between mortal and divine had been blurred, and you found yourself eager to cross it completely.
[[Exit]]
***END***
***END - Choice 3***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find yourself wandering through the dense, mystical forest, the memory of your first encounter with Angela still fresh in your mind. The air is filled with the scent of wildflowers and the distant sound of a babbling brook. As you approach the secluded clearing, you spot Angela sitting on a large, flat stone, deeply engrossed in her book. The sunlight filters through the canopy, casting a warm, inviting glow around her. She looks up as you approach, a serene smile spreading across her face.
***AAL1A.webp***
Angela: [Gently closing her book, looking up at you] (There's something about him that draws me in, an intriguing mix of curiosity and strength.) "Hello again. It's nice to see you."
You: [Smiling back, feeling a mix of nervous excitement and growing desire] (She looks even more beautiful than I remember. There's something so calming about her presence.) "Hi, Angela. I couldn't resist coming back to see you."
Angela: [Patting the stone beside her] (His presence brings a strange comfort, a feeling of connection I can't quite explain.) "Come, sit with me. Let's enjoy the peace of the forest together."
You: [Sitting down beside her, your shoulder brushing against hers] (The warmth of her body is intoxicating. I can feel my heart racing.) "This place is really special. It feels like time stands still here."
Angela: [Nodding, her gaze soft and thoughtful] "Yes, the forest has a way of making us forget our troubles, even if just for a moment."
***AAL1B.webp***
***START - Choice 1***
[[Branch A: "Angela, I... I feel something when I'm around you. It's confusing." (Lust attribute requirements not met)]]
[[Branch B: "Angela, being around you makes me feel alive in ways I can't describe." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Awkwardly shifting, trying to find the right words] (I don't want to mess this up, but I can't stop thinking about her.) "Angela, I... I feel something when I'm around you. It's confusing."
Angela: [Smiling gently, placing a hand on your arm] "I understand. Let's take things slowly. There's no rush."
***AAL1C.webp***
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Leaning in slightly, your voice soft and sincere] (I need to let her know how I feel, but with care.) "Angela, being around you makes me feel alive in ways I can't describe. There's something about you that's irresistible."
Angela: [Blushing slightly, her eyes locking with yours] (His words touch me deeply. There's a connection here that feels so natural.) "You have a way with words. I feel it too, this strange but wonderful connection."
***AAL1D.webp***
You both sit in companionable silence for a moment, the forest around you buzzing with life. The tension between you is palpable, yet comforting. The warmth of her body, even without physical contact, radiates towards you, creating an intoxicating atmosphere.
The heat of the virus courses through your veins, amplifying every sensation, every emotion. You can feel your heart pounding in your chest, each beat echoing the desire that is building inside you. Your eyes trace the curves of Angela's voluptuous figure, the way her dress clings to her body, accentuating her generous breasts and the soft swell of her hips.
Angela: [Inhaling deeply, her chest rising and falling with each breath] (His presence makes my body react in ways I can't control. The heat between us is almost unbearable.)
Your gaze lingers on the delicate line of her neckline, the way her dress dips just enough to offer a tantalizing glimpse of her cleavage. Her long black hair cascades over her shoulders, framing her beautiful face. You notice how her lips part slightly, her breaths becoming shallow and quick.
***AAL1E.webp***
You: [Feeling the intense pull of attraction] (I want to touch her, to feel her skin against mine, but I need to control myself.)
Angela's eyes flicker with a mix of longing and restraint, her own desires clearly battling within her. The air between you is thick with unspoken lust, the virus enhancing every sensation, making the need to be closer almost unbearable. You can see the slight tremor in her hands, the way her fingers curl around the edge of the stone she sits on.
Angela: [Shifting slightly, her thighs pressing together] (The heat is overwhelming. I can feel my body responding to him in ways I never imagined.)
***AAL1F.webp***
The scene closes with you both enveloped in each other's presence, the forest around you seeming to hold its breath as you share this intense, yet restrained moment. The heat of the virus simmers within you, promising even deeper connections in the future.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
As you venture deeper into the forest, the memory of your last encounter with Angela still lingers in your mind. The forest is alive with the sounds of rustling leaves and distant bird calls. You approach a different part of the forest, a secluded glade where sunlight filters through the dense canopy, casting dappled patterns on the ground. Angela is there, standing by a small, crystal-clear stream, her back to you.
Angela: [Turning around, her eyes lighting up as she sees you] (He's here again. The connection we share is undeniable.) "You came back."
***AAL2A.webp***
You: [Smiling, feeling a rush of excitement and desire] (I couldn't stay away. There's something irresistible about her.) "I couldn't stay away. This place, and you... it's like a magnet."
Angela: [Walking towards you, the sunlight catching her hair] "There's something about this forest that feels like home. And something about you that feels... familiar."
***AAL2B.webp***
***START - Choice 1***
[[Branch A: "Angela, I... I can't stop thinking about you. It's confusing." (Lust attribute requirements not met)]]
[[Branch B: "Angela, your presence is like a drug. I can't get enough of it." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Stumbling over your words, trying to express your feelings] (I need to tell her, but I don't want to ruin this.) "Angela, I... I can't stop thinking about you. It's confusing."
Angela: [Smiling gently, her hand reaching out to touch your arm] "I understand. Let's not rush things. We have time."
***AAL2C.webp***
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Speaking with a quiet intensity, your eyes locked on hers] (I have to let her know how much she affects me.) "Angela, your presence is like a drug. I can't get enough of it."
Angela: [Blushing deeply, her breath hitching] (His words send a thrill through me. This connection is so powerful.) "I feel the same. There's something magnetic between us."
***AAL2D.webp***
The tension between you is palpable, a thick, almost tangible force that seems to draw you closer together. Angela stands before you, her chest rising and falling rapidly, each breath a testament to the desire simmering just below the surface. The virus's effects are undeniable, amplifying every sensation, every emotion.
You: [Voice low and husky, unable to hide your longing] (I need to be near her, to feel her warmth.) "Angela, the way I feel around you... it's overwhelming."
Angela: [Nodding, her eyes filled with a mix of longing and restraint] (The heat is unbearable. I can't deny this any longer.) "It's the same for me. The virus... it makes everything more intense."
Your eyes roam over her body, drinking in the sight of her curves, the way her dress hugs her form. Her skin glows in the dappled sunlight, a soft sheen of sweat making her look even more enticing. You can see the rapid rise and fall of her chest, her nipples hardening against the fabric of her dress. The sheer force of your desire is almost too much to bear.
***AAL2E.webp***
You: [Stepping closer, feeling the heat radiating from her body] (I want her. Every part of me is screaming for her.) "Angela, I..."
Angela: [Holding up a hand, her voice trembling] "Wait. We can't... not yet. But I feel it too. The pull, the need."
The proximity is intoxicating. Every nerve in your body is on fire, the virus making every glance, every breath, feel like an electric current. You can see the flush spreading across Angela's cheeks, her pupils dilating with desire. Her lips part, a soft gasp escaping as she struggles to maintain control.
You: [Whispering, your voice thick with desire] (I need to touch her, to feel her skin against mine.) "Angela, the virus... it's making this impossible to resist."
Angela: [Stepping back, her hands trembling] "I know. But we have to be careful. The virus heightens everything. We can't let it control us."
***AAL2F.webp***
The space between you charged with unspoken need. The forest seems to hold its breath, the air thick with the promise of what could be. The virus continues to simmer within you, promising even deeper connections and more intense encounters in the future.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The Peacewood was alive with an eerie energy, the air thick with an intoxicating scent. As you pushed through the dense foliage, your body thrummed with a strange anticipation. The virus in your blood seemed more active than usual, making your skin tingle with heightened sensitivity.
Suddenly, you stumbled upon a small clearing. In the center, you noticed a peculiar plant with vibrant, pulsating leaves. It looked remarkably similar to the D-Root you'd been searching for. Without hesitation, you plucked a leaf and consumed it, hoping for some relief from the constant viral pressure.
Almost immediately, you realized your mistake. Instead of the usual calming effect, you felt a surge of heat coursing through your veins. Your heart raced, and your skin felt like it was on fire. Most noticeably, your manhood began to swell, quickly growing to its full 12-inch length and straining painfully against your pants.
You: [Gasping, voice rough with sudden, overwhelming need] "W-what's happening to me?"
As if in response to your distress, Angela materialized before you. Her voluptuous form shimmered into existence, clad in her usual dress of living shadows.
***AAL4A.webp***
Angela: [Her eyes widening in surprise and understanding] "Oh, my dear boy. You've consumed the Lust-Root, haven't you? Its effects are... quite the opposite of what you were expecting."
You could barely focus on her words. Your gaze was fixed on her body, the curves of her breasts, the swell of her hips. The need to touch, to feel skin on skin, was overwhelming.
***START - Choice 1***
[[Branch A: "I-I can't control myself. Please, you should leave." (Lust attribute requirements not met)]]
[[Branch B: "Angela... I need... I need to touch you. Please." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Angela's expression softened, a mix of pity and understanding crossing her features. The glow around her dimmed slightly, and she took a small step back.
***AAL4B.webp***
Angela: [Her voice gentle] "Oh, my sweet child. The Lust-Root's power is not to be trifled with. Perhaps you're not ready for its effects just yet."
She began to fade, her form becoming more insubstantial. The loss of her presence was almost painful, your body screaming for contact, for release.
Angela: [Her voice echoing] "Find relief on your own, my dear. When you're ready to embrace these feelings fully, I'll be waiting."
As she disappeared completely, you were left alone in the clearing, your body burning with unfulfilled desire. You knew you'd have to take care of your need yourself, the memory of Angela's form burning in your mind as you sought release.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Angela's eyes blazed with a mixture of surprise and desire. She stepped closer, her body radiating heat that only intensified your need.
Angela: [Her voice a sensual purr] "My eager boy, the Lust-Root has awakened something primal in you. Show me what you need."
Unable to contain yourself any longer, you reached for her, your hands grasping at the shadowy fabric of her dress. To your surprise and delight, the material dissipated at your touch, revealing more and more of her glorious nude form.
***AAL4C.webp***
Angela gasped as you disrobed her, but made no move to stop you. Her skin glowed with an inner light, patterns swirling just beneath the surface. Her breasts, now fully exposed, were full and perfect, nipples hardening under your hungry gaze.
Angela: [Breathlessly] "Yes, that's it. Let the Lust-Root guide you. Show me the power of your desire."
Your hands roamed her body, caressing every curve, every dip. You paid special attention to her breasts, cupping their weight, thumbs brushing over her hardened nipples. Each touch sent sparks of pleasure through both of you, the virus in your blood singing with every contact.
***AAL4D.webp***
You: [Groaning with need] "Angela... I can't... I need..."
Understanding your desperate state, Angela nodded. "Touch yourself, my darling. Let me see how the virus has enhanced you."
With shaking hands, you freed your throbbing manhood from the confines of your pants. It stood proud, all 12 inches rock hard and leaking with anticipation. You began to stroke yourself, your other hand still exploring Angela's body.
Angela: [Her eyes wide with awe] "Oh my... you're magnificent. The virus has truly blessed you."
As you pleasured yourself, Angela's hands joined yours on her body, heightening her own pleasure. The clearing filled with the sounds of your shared moans and gasps.
***AAL4E.webp***
The dual sensation of your hand on your cock and Angela's soft skin under your other palm quickly brought you to the edge. With a cry of ecstasy, you reached your climax, your enhanced body producing an impressive amount of seed that arced through the air.
As your release splattered against the forest floor, an intoxicating scent filled the air. Angela's eyes rolled back, her body shuddering in unexpected orgasm.
***AAL4F.webp***
Angela: [Gasping] "By the stars! Your scent... the virus in your seed... it's overwhelming!"
As you both came down from your respective highs, Angela smiled at you, her form already beginning to fade.
Angela: [Her voice echoing] "You continue to surprise me, my love. Carry this memory with you. Let it fuel your exploration of the virus's gifts. When you're ready for more, I'll be waiting."
With that, she disappeared, leaving you alone in the clearing. Your body still hummed with residual energy and satisfaction. As you made your way back through the forest, you knew that this experience had changed you. The power of the Lust-Root, combined with Angela's presence, had shown you new heights of pleasure. And you were determined to explore further, to uncover all the secrets the virus had to offer.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The Peacewood's air is thick with viral mist as you stumble upon a secluded pool. There, you find Angela, her back to you, rising from the iridescent water.
***AAL5A.webp***
Your breath catches as your eyes trace the curve of her spine, droplets cascading over the perfect globes of her ass. Her skin glistens, almost translucent, with faint blue veins visible beneath - a testament to the virus's influence.
Angela: [Turning, her full breasts swaying with the movement] "Ah, my chosen one. Enjoying the view?"
Her nipples, a dusky rose color, are hard peaks, begging for attention. Your gaze travels lower, over the flat plane of her stomach to the junction of her thighs, where a neatly trimmed patch of dark hair does little to conceal her femininity.
***AAL5B.webp***
You: [Voice hoarse] "Angela... what are you doing here?"
Angela: [Smirking, her hands sliding up to cup her breasts] "Embracing the gifts the virus has given us. Care to join me?"
The virus in your blood surges, your cock hardening instantly. Without thinking, you strip, your clothes falling away to reveal your virus-enhanced physique.
Angela's eyes widen as they roam your body, lingering on your impressive manhood. It stands proud, a full 12 inches of throbbing desire, the head flared and already glistening with pre-cum.
Angela: [Licking her lips] "My, my... the virus has been very kind to you indeed."
She moves closer, water lapping at her thighs. Her breasts bounce enticingly with each step, her nipples visibly hardening further as she nears you.
***AAL5C.webp***
Angela: [Her voice a husky whisper] "Look at us. Perfect specimens. Can you imagine the pleasure we could bring each other?"
Her hand reaches out, stopping just short of touching your chest. The heat from her palm radiates against your skin, making you ache for contact.
***START - Choice 1***
[[Branch A: "We shouldn't do this. It's too dangerous." (Lust attribute requirements not met)]]
[[Branch B: "Show me, Angela. I want to see everything." (Lust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Stepping back, your erection bobbing with the movement] "We shouldn't do this. It's too dangerous."
Angela's eyes flash with disappointment, her hands dropping to her sides. Her breasts heave with a deep sigh, drawing your gaze despite your words.
Angela: [Pouting slightly] "Oh, darling. Where's your sense of adventure?"
She turns, giving you a full view of her backside. The globes of her ass clench enticingly as she walks away, her hips swaying hypnotically.
***AAL5D.webp***
Angela: [Looking over her shoulder] "When you're ready to embrace your desires, you know where to find me."
You watch her leave, your body aching with unfulfilled need, the image of her perfect form seared into your memory.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Voice thick with desire] "Show me, Angela. I want to see everything."
A wicked grin spreads across Angela's face, her eyes glowing with viral energy.
Angela: [Purring] "With pleasure."
She begins a slow, sensual dance, her hands gliding over her body. She cups her breasts, fingers teasing her nipples into even harder points. One hand trails down her flat stomach, dipping briefly between her thighs before moving away teasingly.
***AAL5E.webp***
Angela: [Her voice breathy] "The virus has made us perfect. Every touch, every sensation... it's indescribable."
She turns, bending at the waist to give you a tantalizing view of her glistening sex. Her fingers spread her lower lips, revealing the pink, swollen flesh within.
***AAL5F.webp***
Angela: [Looking back at you] "Can you see how ready I am? How much I want this... want you?"
Your cock throbs painfully, a bead of pre-cum rolling down your shaft. Angela notices, her tongue darting out to wet her lips.
Angela: [Straightening up, facing you] "But not yet. We're not quite ready for that final step."
She moves closer, her breasts nearly brushing against your chest. The heat of her body radiates against yours, the air between you charged with pheromones and viral energy.
***AAL5G.webp***
Angela: [Leaning in, her lips a hair's breadth from yours] "Soon, my evolving one. Soon we'll explore every inch of each other. But for now..."
She pulls back, leaving you aching and unfulfilled. Her body glistens in the ethereal light, a testament to the virus's transformative power.
Angela: [As she backs away] "Until next time. Keep evolving for me."
You're left alone, your body humming with unsatisfied desire, the image of Angela's perfect form burned into your retinas.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The dense forest is alive with the sounds of nature. Birds chirp, leaves rustle gently in the breeze, and a crystal-clear stream flows softly nearby. Angela is sitting on a large, flat rock by the stream, her serene presence blending seamlessly with the tranquil environment. She looks up as you approach, a warm smile gracing her lips.
***AAT1A.webp***
Angela: [Smiling warmly as you approach] (It's him again. There's something about his presence that's so calming.) "Hello again. It's nice to see a familiar face in this vast forest."
You: [Smiling back, feeling an inexplicable comfort in her presence] (She's even more captivating than I remember.) "Hi, Angela. I hope I'm not interrupting anything."
Angela: [Shaking her head gently, her long black hair cascading over her shoulders] "Not at all. Please, join me. This place is even more beautiful when shared."
You sit down beside her on the rock, the sound of the stream providing a soothing background to your conversation.
Angela: [Looking out at the stream, a thoughtful expression on her face] "This forest... it feels like home, even though I can't remember much about my past. There's a peace here that I can't quite explain."
You: [Nodding, feeling a deep connection growing between you] "I can feel it too. It's like this place has its own soul."
Angela: [Turning to you with a gentle smile] "Thank you for being here. It means a lot to me."
***AAT1B.webp***
***START - Choice 1***
[[Branch A: "Well, uh, I'm glad you're not alone... I guess." (Trust attribute requirements not met)]]
[[Branch B: "Angela, I'm here for you. Whatever you need, you can count on me." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Looking away awkwardly] (I need to say something supportive, but I'm not sure how.) "Well, uh, I'm glad you're not alone... I guess."
Angela: [Her smile fades slightly, sensing your hesitation] "It's okay. We can just enjoy the silence together."
***AAT1C.webp***
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Reaching out, gently placing a hand on hers] (I want her to know she can trust me.) "Angela, I'm here for you. Whatever you need, you can count on me."
Angela: [Her eyes soften, and she squeezes your hand gently, showing you her rear end in the process] "Thank you. Your support means more than you know."
***AAT1D.webp***
She takes a deep breath, her serene expression returning. The connection between you feels stronger, and the trust you've built is palpable.
Angela: [Looking deeply into your eyes] (There's something about him that makes me feel safe.) "I've been having these fragmented memories... little pieces of my past. They're so elusive, but they feel important."
You: [Listening intently, your hand still on hers] "Tell me more about them. Maybe we can piece them together."
Angela: [Her voice soft and thoughtful] "I remember a place that feels like this forest, but different. There were people, and... a sense of purpose. It's so frustrating not being able to remember clearly."
You: [Squeezing her hand reassuringly] "We'll figure it out together. You're not alone in this."
Angela: [Smiling gratefully] "I believe you. There's something about you that gives me hope."
***AAT1E.webp***
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The forest is alive with the sounds of nature, just as it was during your last encounter with Angela. The sun filters through the canopy, casting dappled light on the moss-covered ground. As you wander deeper into the woods, you hear the familiar sound of the stream and see Angela, once again seated on the large, flat rock. This time, she seems to be waiting for you, her serene smile already in place as you approach.
***AAT2A.webp***
Angela: [Her face lighting up as she sees you] (He's here again. I was hoping he would come.) "Hello again. It seems like our paths keep crossing."
You: [Smiling warmly, feeling a growing sense of anticipation] (I can't get enough of her presence.) "Hi, Angela. I guess the forest has a way of bringing us together."
Angela: [Nodding, her eyes twinkling with a hint of amusement] "Perhaps it's trying to tell us something."
You sit down beside her on the rock, the gentle murmur of the stream creating a peaceful backdrop.
Angela: [Looking at you with a mix of curiosity and warmth] "How have you been since our last meeting?"
You: [Feeling a deeper connection as you gaze into her eyes] "I've been thinking a lot about this place... and about you. There's something special about these moments we share."
Angela: [Blushing slightly, her smile softening] "I feel the same way. It's comforting to have someone to share these thoughts with."
***AAT2B.webp***
***START - Choice 1***
[[Branch A: "Yeah, it's... nice to have company." (Trust attribute requirements not met)]]
[[Branch B: "I feel a connection with you that I can't explain." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Looking down, feeling a bit awkward] (I need to say something meaningful, but I don't know how.) "Yeah, it's... nice to have company."
Angela: [Her smile fades slightly, sensing your hesitation] "Yes, it is. Let's enjoy the tranquility together."
***AAT2C.webp***
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Reaching out, gently brushing a strand of hair behind her ear] (I want her to know how much she means to me.) "Angela, these moments with you are the best part of my day. I feel a connection with you that I can't explain."
Angela: [Her eyes soften, and she leans slightly closer] "Thank you. Your presence brings me peace and hope."
***AAT2D.webp***
Angela: [Looking thoughtfully at the stream] "I've been thinking more about my fragmented memories. They seem to come and go, like fleeting dreams. But there's one thing that's becoming clearer."
You: [Encouraging her to share] "What is it? Maybe we can piece it together."
Angela: [Her voice soft and reflective] "I remember a sense of purpose, a mission. It's tied to this forest, to the island. I feel like I'm here for a reason, even if I can't fully understand it yet."
You: [Squeezing her hand gently] "We'll figure it out together. You're not alone in this journey."
Angela: [Smiling gratefully] "Your support means everything to me. I feel like I'm starting to remember who I am, thanks to you."
As you sit close to Angela, the bond between you deepens. There's a palpable sense of trust and mutual understanding. Angela feels a growing attraction towards you, her emotions a swirl of comfort and budding desire. You, on the other hand, feel protective and deeply connected to her, wanting nothing more than to help her uncover the mysteries of her past.
You gently brush a strand of hair behind Angela's ear, a tender and intimate gesture.
Sitting close on the rock, your bodies occasionally touch, creating a subtle but significant physical connection.
Angela: [Sighing softly, a content smile on her face] "Thank you for being here. It feels good to share these thoughts and memories with someone who understands. It's getting late."
You: [Smiling warmly] "Anytime, Angela. I'm here for you."
Angela: [Gently withdrawing her hand, her eyes filled with gratitude, her breast on full sight] "I should continue exploring. There's so much more to discover."
***AAT2E.webp***
You: [Nodding, feeling the bond between you strengthen] "I'll be here if you need me."
As she walks away, you watch her disappear into the forest, a sense of anticipation and deeper connection filling you.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The Peacewood thrummed with an otherworldly energy, the air thick with the scent of ancient secrets. As you pushed through the dense foliage, you felt a familiar pull guiding you deeper into the forest. The virus surged through your veins, heightening your senses to an almost painful degree.
Suddenly, you emerged into a small clearing bathed in ethereal blue light. In the center stood Angela, her voluptuous form shimmering like a mirage. Her long black hair floated around her as if suspended in water, and her eyes glowed with an inner fire. She wore a dress that seemed to be made of living shadows, clinging to her curves before dissipating into mist at her feet.
***AAT4A.webp***
Angela: [Her voice echoing softly] "You've returned, my child. The forest has been whispering of a great change coming."
You stepped forward, drawn by her presence. The virus within you responded to her, making your blood feel like liquid fire.
You: [Voice husky] "Angela... I need to understand more about the virus, about its origins. Can you show me?"
Angela smiled, the expression both alluring and slightly shy. She moved towards you, each step leaving a brief imprint of glowing energy on the forest floor.
***AAT4B.webp***
Angela: [Reaching out to caress your cheek] "Understanding comes through more than words, my dear. Are you prepared to see the truth with all your senses?"
Her touch sent a jolt through your system, intensifying the virus's effects. You could feel your body responding, a warmth spreading through your core.
***START - Choice 1***
[[Branch A: "I-I'm not sure if I'm ready for that kind of understanding." (Trust attribute requirements not met)]]
[[Branch B: "Yes, Angela. I trust you to guide me through this." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
Angela's expression flickered, a mix of disappointment and understanding crossing her features. The glow around her dimmed slightly, and she took a small step back.
***AAT4C.webp***
Angela: [Her voice gentle] "Oh, my sweet child. The mysteries of the virus cannot be grasped without courage. Perhaps we're not yet ready for this level of revelation."
She turned away, her form becoming more insubstantial. The magic of the moment faded, leaving you feeling hollow and unsatisfied. The virus continued to pulse within you, but now it felt more like an itch you couldn't scratch.
Angela: [Over her shoulder] "Return when you're ready to open yourself fully to the knowledge I offer."
As she faded into the mist, you were left alone in the clearing, the opportunity for deeper understanding lost. The forest around you seemed to close in, urging you to leave, to return to the familiar confines of the shelter.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
Angela's eyes lit up, a warm glow spreading across her cheeks. She stepped closer, her body barely brushing against yours. You could feel the heat of her skin through the insubstantial fabric of her dress, and the scent of her – something wild and intoxicating – filled your nostrils.
Angela: [Her voice a soft whisper] "Your trust honors me. Let me show you the true nature of the virus, its cosmic origins."
With a wave of her hand, the clearing around you transformed. The trees melted away, replaced by a vast expanse of stars. You gasped, feeling as if you were floating in space, yet still standing on solid ground.
Angela's dress of shadows dissipated, leaving her gloriously nude before you. Her skin shimmered with an inner light, constellations seeming to swirl just beneath the surface. Her breasts, full and perfect, defied gravity, nipples hardened in the cosmic chill.
***AAT4D.webp***
Angela: [Gesturing to the stars around you] "The virus was born in the heart of a dying star, a cosmic accident that reshaped the very fabric of reality."
As she spoke, your own clothes dissolved into stardust, leaving you naked as well. You felt exposed, vulnerable, yet incredibly alive. Your manhood responded to the situation, growing hard and erect, standing proud at its full 12 inches.
Angela's eyes widened at the sight, a small gasp escaping her lips.
Angela: [Voice filled with awe] "The virus has truly blessed you, my darling. You are the embodiment of its potential."
***AAT4E.webp***
She reached out, her fingertips barely brushing against your chest. Where she touched, your skin erupted in goosebumps, pleasure coursing through your body.
Angela: [Breathlessly] "Can you feel it? The cosmic energy that flows through the virus, through us?"
You nodded, unable to form words. The sensation was overwhelming, as if every atom in your body was alive and singing.
Angela took your hand, guiding it to her breast. As your palm cupped the soft flesh, you felt a surge of energy pass between you. Images flashed in your mind – of swirling galaxies, of planets forming, of life evolving.
***AAT4F.webp***
Angela: [Gasping] "This is the true power of the virus. It connects us to the very fabric of the universe."
Your erection throbbed, aching for touch, for release. But Angela gently shook her head, a teasing smile on her lips.
Angela: [Smiling softly] "Not yet, my love. This knowledge, this connection, it must be savored."
She stepped back, her nude form glowing against the backdrop of stars. You reached for her, driven by a primal need to connect further.
***AAT4G.webp***
Angela: [Her voice echoing] "Carry this understanding with you. Let it guide you as you explore the virus's potential further. When you're ready for more, I'll be waiting."
With that, she faded into the cosmic mist, leaving you alone in the star-filled clearing. Your body hummed with residual energy, your enhanced manhood still hard and aching for release. As the forest slowly reformed around you, you knew that nothing would ever be the same. The memory of this encounter would drive you to explore the virus's potential further, to uncover its deepest cosmic secrets.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You trudge through the dense undergrowth of Peacewood, the air heavy with humidity and the sweet scent of decaying vegetation. The forest around you pulses with an eerie energy, leaves shimmering with an iridescent glow that indicates high concentrations of the D-Pox virus.
As you push aside a low-hanging branch, you stumble into a small clearing. There, perched on a fallen log, you spot a familiar figure.
***AAT5A.webp***
Angela: [Looking up, her eyes widening in recognition] "Oh! It's you. I... I wasn't expecting anyone out here."
You approach cautiously, taking in Angela's appearance. Her long black hair is tangled with leaves and twigs, and her once-pristine gown is now tattered and stained. Despite this, she still exudes an aura of otherworldly beauty.
***AAT5B.webp***
You: [Clearing your throat] "Angela? What are you doing out here alone?"
Angela: [Frowning slightly, her voice tinged with confusion] "I... I'm not sure. I woke up here a few days ago, I think. Everything's so hazy."
As you move closer, you notice scratches on her arms and legs, evidence of her time in the wild. The sight stirs something protective within you.
You: [Concerned] "Are you alright? You look like you've been through hell."
Angela: [Attempting a smile, but it doesn't reach her eyes] "I'm fine, I think. Just... lost. In more ways than one."
She stands, swaying slightly, and you instinctively reach out to steady her. As your hand touches her arm, you feel a jolt of electricity run through you, the virus in your blood surging in response to her proximity.
Angela: [Gasping softly at the contact] "Did you feel that? It's... it's been happening a lot lately. I don't understand it."
You: [Nodding, trying to ignore the tingling sensation] "It's the virus. You seem to have a strong connection to it."
Angela: [Looking down at her hands] "The virus... yes. I feel like I should know more about it. Like it's a part of me somehow."
As she speaks, you notice her tattered gown slipping off one shoulder, revealing more skin than she probably intends. Your eyes are drawn to the curve of her collarbone, the swell of her breast just barely hidden by the fabric.
***AAT5C.webp***
Angela: [Noticing your gaze, a faint blush coloring her cheeks] "Oh! I'm sorry. I've been out here so long, I've almost forgotten..."
She attempts to adjust her gown, but the movement only causes it to tear further, exposing more of her thigh. You feel your body responding, the virus heightening your senses and desires.
***AAT5D.webp***
Angela: [Her voice dropping to a whisper] "You know, it's strange. Even though I can't remember much, being near you feels... right. Safe. Like I was waiting for you."
She takes a step closer, her eyes locked on yours. The air between you grows heavy with tension and unspoken desire.
Angela: [Reaching out tentatively] "Maybe... maybe you could help me remember? Help me understand what's happening to me?"
***START - Choice 1***
[[Branch A: "I don't think that's a good idea. We should focus on getting you somewhere safe." (Trust attribute requirements not met)]]
[[Branch B: "I want to help you, Angela. We can figure this out together." (Trust attribute Requirements met)]]
***START - Choice 1 - Branch A***
You: [Taking a step back, shaking your head] "I don't think that's a good idea. We should focus on getting you somewhere safe."
Angela's face falls, a mix of disappointment and understanding crossing her features.
Angela: [Nodding slowly] "Of course. You're right. I'm not... I'm not thinking clearly. This forest, the virus, it's all so confusing."
She wraps her arms around herself, suddenly looking small and vulnerable.
***AAT5E.webp***
Angela: [Softly] "I'm sorry if I made you uncomfortable. I just felt... I don't know. A connection, I suppose. But you're right, safety should be our priority."
You feel a pang of guilt, seeing her withdraw into herself. But you know it's the right decision, given her confused state and the dangers that lurk in the forest.
You: [Gently] "Let's get you back to the settlement. We can figure things out once you're rested and have had something to eat."
Angela nods, allowing you to lead her out of the clearing. As you guide her through the forest, you can't help but wonder about the mysteries surrounding her and her connection to the virus. But for now, those questions will have to wait.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
You: [Taking a deep breath, your voice gentle] "I want to help you, Angela. We can figure this out together."
Relief washes over Angela's face, her tense posture relaxing slightly.
Angela: [Smiling softly] "Thank you. I... I don't know why, but I trust you."
She takes another step closer, closing the distance between you. The tattered remains of her gown shift with the movement, revealing more of her pale, flawless skin. You feel your heart rate quicken, the virus in your blood singing in response to her proximity.
***AAT5F.webp***
Angela: [Her voice low, almost hypnotic] "Ever since I woke up here, I've felt... different. Like there's something just beneath my skin, trying to get out. Do you know what I mean?"
As she speaks, she reaches out, her fingers brushing against your arm. The touch sends a jolt of pleasure through you, far more intense than it should be.
You: [Swallowing hard] "I think I do. The virus... it enhances everything. Sensations, emotions, desires."
Angela: [Her eyes widening] "Yes! That's it exactly. It's like every nerve ending is on fire, but in the most exquisite way."
Her hand moves up your arm, leaving a trail of tingling skin in its wake. You notice her pupils dilating, her breathing becoming more rapid.
Angela: [Leaning in closer, her voice a whisper] "Maybe... maybe if we explore these sensations together, it might help me remember? Help me understand what's happening to us?"
Her tattered gown slips further, exposing the curve of her breast. You can see her nipple hardening beneath the thin fabric, her body responding to the charged atmosphere between you.
***AAT5G.webp***
Angela: [Her free hand moving to the remnants of her gown] "Should I...?"
She looks at you questioningly, her fingers toying with the edge of the fabric. The air is thick with tension and the heady scent of arousal.
You: [Your voice husky] "Only if you're sure, Angela. We can stop anytime."
Angela nods, a mix of nervousness and excitement in her eyes. Slowly, she begins to peel away the tattered gown, revealing more of her divine form. As the fabric falls away, you're struck by her beauty - pale, flawless skin seemingly glowing in the dappled forest light.
Angela: [Standing before you, completely nude] "I... I feel like this should be strange, but it's not. It feels natural. Right."
You can't help but stare, taking in every curve, every perfect line of her body. The virus heightens your senses, making you acutely aware of the heat radiating from her skin, the sound of her rapid heartbeat.
Angela: [Stepping closer, her body mere inches from yours] "Your turn? I want... I need to feel your skin against mine. Maybe it'll help me remember."
Her hands move to the hem of your shirt, her eyes seeking permission. The forest around you seems to fade away, leaving only you and Angela in this moment of raw, primal connection.
You nod, allowing her to slowly undress you. Each brush of her fingers against your skin sends waves of pleasure coursing through you, the virus amplifying every sensation.
As the last of your clothes fall away, Angela presses herself against you, skin to skin. The contact is electric, drawing a gasp from both of you.
***AAT5H.webp***
Angela: [Her voice trembling] "This... this feels familiar somehow. Like we've done this before, in another life."
Her hands explore your body, tracing the contours of your muscles, the lines of your face. You return the favor, marveling at the softness of her skin, the perfect curves of her form.
***AAT5I.webp***
Angela: [Looking up at you, her eyes filled with a mix of confusion and desire] "I still can't remember everything, but this... this feels right. Like a piece of a puzzle falling into place."
You lean in, your forehead resting against hers. The moment is charged with potential, teetering on the edge of something profound and possibly dangerous.
Angela: [Whispering] "Thank you for trusting me. For helping me. I don't know what's to come, but I'm glad you're here with me."
As you stand there, entwined in the heart of the virus-infested forest, you can't help but feel that this is just the beginning of something much larger. Angela may not remember her true nature, but the connection between you is undeniable, a force that could reshape the world.
[[Exit]]
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find yourself outside Angela's home, curiosity getting the better of you. Through the window, you see her moving gracefully around the room, her presence captivating.
***ACA1A.webp***
Angela: [Unaware, humming softly to herself] (Why do I feel like someone is watching me? This island never ceases to surprise me.)
You: [Watching quietly] (There's something mesmerizing about her, but I shouldn't be doing this.)
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You stand hidden outside Angela's home, peering through a crack in the window. Inside, Angela sits reading a book, completely absorbed.
***ACA2A.webp***
Angela: [Turning a page, her expression thoughtful] (These texts might hold the key to my memories. I must keep searching.)
You: [Trying to remain unnoticed] (I feel drawn to her, but I need to be careful.)
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You crouch outside Angela's home, your curiosity leading you to peep through the window. Angela is tending to some plants, her movements deliberate and serene.
***ACA3A.webp***
Angela: [Gently watering her plants, a soft smile on her face] (These plants are my solace. They remind me of something... someone.)
You: [Watching silently] (I shouldn't be spying on her, but I can't seem to look away.)
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find yourself outside Angela's home, curiosity getting the better of you. Through the window, you see her moving gracefully around the room. She begins to undress, unaware of your presence.
***ACA4A.webp***
Angela: [Unbuttoning her blouse, letting it fall open slowly] (It's been a long day. I need to relax.)
You: [Heart racing, eyes fixed on her] (I shouldn't be watching this, but I can't look away.)
Angela: [Slipping out of her skirt, revealing her smooth legs] (Now, where did I put that book?)
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach Angela hesitantly, wanting to talk about your concerns about the virus.
***ACB1A.webp***
You: [Nervous, avoiding her gaze] "Angela, could I... sleep with you tonight? Just to feel safe."
Angela: [Smiling softly, shaking her head] (He looks so vulnerable.) "I'm sorry, but I think it's best if we each sleep in our own beds tonight."
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You find Angela reading and timidly approach her to talk about your worries.
***ACB2A.webp***
You: [Shifting nervously, glancing at her book] "Angela, do you mind if I sleep with you tonight? I'm a bit scared of the virus."
Angela: [Looking up, her expression gentle] (Poor thing, he must be really worried.) "I understand, but I think it's better if we sleep separately. You'll be okay, I promise."
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You catch Angela's attention as she arranges her bedding, and muster the courage to speak.
***ACB3A.webp***
You: [Clearing your throat, trying to sound calm] "Angela, can I sleep with you tonight? The virus... it's making me anxious."
Angela: [Nodding understandingly, patting your shoulder gently] (He needs comfort.) "I know it's scary, but I think we should sleep in our own beds for now. You'll be safe."
Get out.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
You approach Angela hesitantly, explaining your concerns about the virus.
You: [Nervous, avoiding her gaze] "Angela, could I... sleep with you tonight? Just to feel safe."
Angela: [Smiling softly, unbuttoning her blouse and letting it fall open, revealing her bare chest] "I'm sorry, but it's best if we sleep separately. Maybe this will help you relax."
***ACB4A.webp***
You: [Eyes widening, trying to compose yourself] "Wow, Angela... that's... um, thank you."
Get out of the room.
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus rages through your system, your enhanced body burning with an insatiable need. You find yourself drawn to Angela's room, your hand trembling as you reach for the doorknob. Your monstrous cock throbs painfully, straining against your clothes, a wet spot already forming where the tip presses against the fabric.
Inside, Angela sleeps serenely, her form radiating an inexplicable aura of wisdom and mystery. Her long, raven hair cascades over her pillow, and her curvaceous body rises and falls with each breath. Even in sleep, she exudes a sense of hidden power that makes your mouth go dry.
***ABA1.webp***
AVA materializes beside you, her ethereal form pulsing with viral energy. Her eyes widen in recognition, a wicked grin spreading across her face.
***ABA2.webp***
AVA: [Chuckling darkly] (Oh, this is too perfect) "Well, well... if it isn't my dear sister. She doesn't even know who she is, does she? Shall we see what secrets lurk in the dreams of this 'wise woman', little one? I can weave you into her subconscious, where even the amnesiac can't hide from her true nature."
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Angela's dream"]]
***START - Choice 1 - Branch A***
With monumental effort, you tear yourself away from Angela's door. Your body screams in protest as you stumble back to your room, leaving a trail of glowing pre-cum in your wake.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The last shred of your resistance crumbles under the weight of your viral-enhanced lust and curiosity about the mysterious woman before you.
You: [Voice hoarse with need] (I'm about to violate someone who doesn't even know herself) "Do it. Show me her dreams."
AVA's laughter echoes in your mind as reality warps around you. Suddenly, you find yourself in a vast, misty forest. Ancient trees tower above, their branches intertwining to create a canopy that filters ethereal light. The air is thick with the scent of earth and a strange, electric energy that makes your skin tingle.
Angela stands before you, her form both familiar and somehow more... primal. Her skin seems to glow with an inner light, and her eyes hold a depth of knowledge that contradicts her waking confusion. She's dressed in flowing robes that seem to be made of living vines and leaves, revealing tantalizing glimpses of her form.
***ABA3.webp***
Angela: [Her voice echoing with hidden power] (This presence... why does it feel so familiar?) "Who are you, wanderer? You don't belong in this sacred grove. And yet... I feel as though I know you."
Your monstrous cock strains against your pants, now transformed into some sort of primal, leaf-covered garment. The bulge is impossible to miss, and Angela's eyes are drawn to it, a flicker of recognition and desire passing through them.
Angela: [Blushing, her composure slipping] (Why does this feel so... right?) "You carry an energy within you that resonates with this place... with me. How is this possible? And why do I feel so... drawn to you?"
Before you can respond, Angela approaches you, her movements a mixture of graceful wisdom and awakening desire. She reaches out, her hand hovering just above your straining erection, leaves and vines swirling around her fingers.
***ABA4.webp***
Angela: [Voice trembling] (I shouldn't... but I need to understand) "This power... it's familiar, yet foreign. Perhaps if I... examine it more closely..."
Her hand wraps around your shaft through the leafy covering, and you groan at the contact. Angela gasps, her eyes widening as she feels your true size and the power pulsing within.
Angela: [Whispering] (It's like touching a forgotten memory) "By the ancient woods... It's like a conduit of pure life force. What secrets does it hold, I wonder?"
You nod, unable to form words as Angela begins to stroke you through your primal garment. Her movements are curious and exploratory, sending waves of pleasure through your body.
***ABA5.webp***
You: [Groaning] (I'm awakening something in her) "It holds the key to understanding yourself, Angela. But you have to look deeper."
Angela hesitates for a moment, her face a battlefield of wisdom and curiosity. Then, with a wave of her hand, vines pull away your leafy covering. Your monstrous cock springs forth, angry and red, pulsing with viral energy that seems to resonate with the forest around you. Pre-cum beads at the tip, glowing with an otherworldly light.
Angela: [Gasping] (It's... incredible) "By all that is natural... It's beautiful. A perfect embodiment of life's raw power."
Her delicate hand wraps around your girth, and you feel a jolt of energy surge through you. Angela begins to stroke, her movements growing more confident as she explores this new sensation. Pre-cum flows freely, coating her fingers and being absorbed into her skin. With each stroke, Angela's breathing becomes heavier, her pupils dilating as she connects with something deep within herself.
***ABA6.webp***
Angela: [Moaning softly] (Why do I feel so... alive?) "Am I doing this correctly? It feels... it feels as though I'm touching the very essence of life itself."
You nod, beyond words as her hand works your shaft. The lewd, wet sounds of her strokes echo through the misty grove, mixing with the rustle of leaves and Angela's increasingly wanton moans.
***ABA7.webp***
You: [Panting] (She's losing herself to it) "That's it, Angela. You're understanding more about yourself with every stroke."
Angela: [Whimpering, her free hand caressing her own body] (This pleasure... it's so primal, yet so familiar) "It's pulsing with such vitality! Is this... is this a key to unlocking my lost memories?"
You feel your orgasm building, an unstoppable force of nature. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your primal arousal snaps you back to reality. You find yourself standing in Angela's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible and glowing faintly. Angela stirs in her bed, her form shimmering with an otherworldly light. Her eyes flutter open, unfocused and confused.
Angela: [Blinking, her voice a mixture of wisdom and confusion] (What a strange vision...) "Young one? Why are you here? I had the most peculiar... dream."
***ABA8.webp***
Her eyes widen as she notices the obvious, glowing bulge in your pants. A deep blush spreads across her cheeks, and she pulls her covers up, suddenly aware of her own body. You stammer an excuse and flee, leaving a very confused and strangely aroused Angela behind.
Angela: [Whispering to herself] (That dream... why do I feel so... awakened?)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
***END***
***START - Choice 2 - Branch C***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus rages through your system, your enhanced body burning with an insatiable need. You find yourself drawn to Angela's room, your hand trembling as you reach for the doorknob. Your monstrous cock throbs painfully, straining against your clothes, a wet spot already forming where the tip presses against the fabric.
Inside, Angela sleeps serenely, her form radiating an inexplicable aura of wisdom and mystery. Her long, raven hair cascades over her pillow, and her curvaceous body rises and falls with each breath. Even in sleep, she exudes a sense of hidden power that makes your mouth go dry.
***ABA1.webp***
AVA materializes beside you, her ethereal form pulsing with viral energy. Her eyes widen in recognition, a wicked grin spreading across her face.
***ABA2.webp***
AVA: [Chuckling darkly] (Oh, this is too perfect) "Well, well... if it isn't my dear sister. She doesn't even know who she is, does she? Shall we see what secrets lurk in the dreams of this 'wise woman', little one? I can weave you into her subconscious, where even the amnesiac can't hide from her true nature."
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Angela's dream"]]
***START - Choice 1 - Branch A***
With monumental effort, you tear yourself away from Angela's door. Your body screams in protest as you stumble back to your room, leaving a trail of glowing pre-cum in your wake.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The last shred of your resistance crumbles under the weight of your viral-enhanced lust and curiosity about the mysterious woman before you.
You: [Voice hoarse with need] (I'm about to violate someone who doesn't even know herself) "Do it. Show me her dreams."
AVA's laughter echoes in your mind as reality warps around you. Suddenly, you find yourself in a vast, misty forest. Ancient trees tower above, their branches intertwining to create a canopy that filters ethereal light. The air is thick with the scent of earth and a strange, electric energy that makes your skin tingle.
Angela stands before you, her form both familiar and somehow more... primal. Her skin seems to glow with an inner light, and her eyes hold a depth of knowledge that contradicts her waking confusion. She's dressed in flowing robes that seem to be made of living vines and leaves, revealing tantalizing glimpses of her form.
***ABA3.webp***
Angela: [Her voice echoing with hidden power] (This presence... why does it feel so familiar?) "Who are you, wanderer? You don't belong in this sacred grove. And yet... I feel as though I know you."
Your monstrous cock strains against your pants, now transformed into some sort of primal, leaf-covered garment. The bulge is impossible to miss, and Angela's eyes are drawn to it, a flicker of recognition and desire passing through them.
Angela: [Blushing, her composure slipping] (Why does this feel so... right?) "You carry an energy within you that resonates with this place... with me. How is this possible? And why do I feel so... drawn to you?"
Before you can respond, Angela approaches you, her movements a mixture of graceful wisdom and awakening desire. She reaches out, her hand hovering just above your straining erection, leaves and vines swirling around her fingers.
***ABA4.webp***
Angela: [Voice trembling] (I shouldn't... but I need to understand) "This power... it's familiar, yet foreign. Perhaps if I... examine it more closely..."
Her hand wraps around your shaft through the leafy covering, and you groan at the contact. Angela gasps, her eyes widening as she feels your true size and the power pulsing within.
Angela: [Whispering] (It's like touching a forgotten memory) "By the ancient woods... It's like a conduit of pure life force. What secrets does it hold, I wonder?"
You nod, unable to form words as Angela begins to stroke you through your primal garment. Her movements are curious and exploratory, sending waves of pleasure through your body.
***ABA5.webp***
You: [Groaning] (I'm awakening something in her) "It holds the key to understanding yourself, Angela. But you have to look deeper."
Angela hesitates for a moment, her face a battlefield of wisdom and curiosity. Then, with a wave of her hand, vines pull away your leafy covering. Your monstrous cock springs forth, angry and red, pulsing with viral energy that seems to resonate with the forest around you. Pre-cum beads at the tip, glowing with an otherworldly light.
Angela: [Gasping] (It's... incredible) "By all that is natural... It's beautiful. A perfect embodiment of life's raw power."
Her delicate hand wraps around your girth, and you feel a jolt of energy surge through you. Angela begins to stroke, her movements growing more confident as she explores this new sensation. Pre-cum flows freely, coating her fingers and being absorbed into her skin. With each stroke, Angela's breathing becomes heavier, her pupils dilating as she connects with something deep within herself.
***ABA6.webp***
Angela: [Moaning softly] (Why do I feel so... alive?) "Am I doing this correctly? It feels... it feels as though I'm touching the very essence of life itself."
You nod, beyond words as her hand works your shaft. The lewd, wet sounds of her strokes echo through the misty grove, mixing with the rustle of leaves and Angela's increasingly wanton moans.
***ABA7.webp***
You: [Panting] (She's losing herself to it) "That's it, Angela. You're understanding more about yourself with every stroke."
Angela: [Whimpering, her free hand caressing her own body] (This pleasure... it's so primal, yet so familiar) "It's pulsing with such vitality! Is this... is this a key to unlocking my lost memories?"
You feel your orgasm building, an unstoppable force of nature. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your primal arousal snaps you back to reality. You find yourself standing in Angela's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible and glowing faintly. Angela stirs in her bed, her form shimmering with an otherworldly light. Her eyes flutter open, unfocused and confused.
Angela: [Blinking, her voice a mixture of wisdom and confusion] (What a strange vision...) "Young one? Why are you here? I had the most peculiar... dream."
***ABA8.webp***
Her eyes widen as she notices the obvious, glowing bulge in your pants. A deep blush spreads across her cheeks, and she pulls her covers up, suddenly aware of her own body. You stammer an excuse and flee, leaving a very confused and strangely aroused Angela behind.
Angela: [Whispering to herself] (That dream... why do I feel so... awakened?)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Growling] (I need more. Awaken her completely) "More. Make it more intense!"
AVA's cruel laughter rings through the forest as the dreamscape shifts. The serene grove becomes wild and untamed, pulsing with primal energy. The very trees seem to writhe with desire, their branches reaching out like grasping hands. Angela gasps as her calm wisdom crumbles, horror and unbridled lust battling in her eyes.
Angela: [Her hand still working your shaft] (This is too real. What's happening to me?) "Young one? This... this isn't right. We're awakening something that should perhaps remain dormant... but I can't stop!"
The virus surges through her system like liquid fire. Her skin glows with intense light, nipples visibly hardening beneath her robes. The forest around her lower body seems to shift and change, mirroring her growing arousal.
***ABA9.webp***
Angela: [Whimpering] (This defies everything I thought I knew!) "We must cease this, young one. I'm... I'm not myself! This is... oh, by all that is natural!"
Her protests are cut short as another wave of viral lust crashes over her. AVA's influence floods her system with unnatural arousal, shattering her composed exterior.
***ABA10.webp***
Angela: [Moaning wantonly] (No... mustn't... but it feels so right) "Your... your form is awakening something within me. No! I didn't mean... we shouldn't... oh forest spirits, I need to understand this power!"
Her movements become more frantic, more desperate. Tears stream down her face, seeming to cause flowers to bloom where they fall. She begins to use both hands, one working your shaft while the other gently cups your heavy, cum-filled balls, energy crackling between her fingers.
***ABA11.webp***
You: [Groaning, hips bucking] (She's fighting so hard, but she can't resist her true nature) "Don't fight it, Angela. This is how you truly understand yourself."
Angela: [Sobbing and moaning] (I'm losing myself. Becoming something I don't recognize) "Forgive me, ancient ones. I'm trying to maintain my wisdom, but... but... oh earth and sky, I need your essence!"
The lewd, wet sounds of her hands working your cock echo through the wild forest. Pre-cum flows freely, mixing with Angela's tears to create a slick, warm coating on your shaft that glows with otherworldly power.
***ABA12.webp***
Angela: [Eyes wide with desperate need] (I'm forsaking my teachings. But I don't care anymore) "Please, young one! Grant this lost woman your vitality! I need it... I need it to remember who I truly am!"
With a roar that shakes the very foundations of the forest, you explode. Thick ropes of cum erupt from your cock, coating Angela's face, chest, and hands. She cries out in shock and ecstasy, her own orgasm crashing over her like a tidal wave as your seed touches her skin. The mixture glows with blinding intensity as it's absorbed into her being, the virus using it to reshape her very essence.
***ABA13.webp***
Angela: [Gasping, licking cum from her fingers] (So familiar... need more... to remember) "Such potent life force... I need more! Use me, young one. Use this awakened woman whenever you desire. I'll be your conduit to nature's deepest secrets..."
As the dream fades, Angela is left a quivering, cum-drenched mess among the wild flora, her sense of self forever altered by this primal union.
[[Exit]]
***END***
***START - Choice 2 - Branch C***
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><script>
(() => {
const dialog = `
The virus rages through your system, your enhanced body burning with an insatiable need. You find yourself drawn to Angela's room, your hand trembling as you reach for the doorknob. Your monstrous cock throbs painfully, straining against your clothes, a wet spot already forming where the tip presses against the fabric.
Inside, Angela sleeps serenely, her form radiating an inexplicable aura of wisdom and mystery. Her long, raven hair cascades over her pillow, and her curvaceous body rises and falls with each breath. Even in sleep, she exudes a sense of hidden power that makes your mouth go dry.
***ABA1.webp***
AVA materializes beside you, her ethereal form pulsing with viral energy. Her eyes widen in recognition, a wicked grin spreading across her face.
***ABA2.webp***
AVA: [Chuckling darkly] (Oh, this is too perfect) "Well, well... if it isn't my dear sister. She doesn't even know who she is, does she? Shall we see what secrets lurk in the dreams of this 'wise woman', little one? I can weave you into her subconscious, where even the amnesiac can't hide from her true nature."
***START - Choice 1***
[[Branch A: "Resist the temptation"]]
[[Branch B: "Enter Angela's dream"]]
***START - Choice 1 - Branch A***
With monumental effort, you tear yourself away from Angela's door. Your body screams in protest as you stumble back to your room, leaving a trail of glowing pre-cum in your wake.
[[Exit]]
***END***
***START - Choice 1 - Branch B***
The last shred of your resistance crumbles under the weight of your viral-enhanced lust and curiosity about the mysterious woman before you.
You: [Voice hoarse with need] (I'm about to violate someone who doesn't even know herself) "Do it. Show me her dreams."
AVA's laughter echoes in your mind as reality warps around you. Suddenly, you find yourself in a vast, misty forest. Ancient trees tower above, their branches intertwining to create a canopy that filters ethereal light. The air is thick with the scent of earth and a strange, electric energy that makes your skin tingle.
Angela stands before you, her form both familiar and somehow more... primal. Her skin seems to glow with an inner light, and her eyes hold a depth of knowledge that contradicts her waking confusion. She's dressed in flowing robes that seem to be made of living vines and leaves, revealing tantalizing glimpses of her form.
***ABA3.webp***
Angela: [Her voice echoing with hidden power] (This presence... why does it feel so familiar?) "Who are you, wanderer? You don't belong in this sacred grove. And yet... I feel as though I know you."
Your monstrous cock strains against your pants, now transformed into some sort of primal, leaf-covered garment. The bulge is impossible to miss, and Angela's eyes are drawn to it, a flicker of recognition and desire passing through them.
Angela: [Blushing, her composure slipping] (Why does this feel so... right?) "You carry an energy within you that resonates with this place... with me. How is this possible? And why do I feel so... drawn to you?"
Before you can respond, Angela approaches you, her movements a mixture of graceful wisdom and awakening desire. She reaches out, her hand hovering just above your straining erection, leaves and vines swirling around her fingers.
***ABA4.webp***
Angela: [Voice trembling] (I shouldn't... but I need to understand) "This power... it's familiar, yet foreign. Perhaps if I... examine it more closely..."
Her hand wraps around your shaft through the leafy covering, and you groan at the contact. Angela gasps, her eyes widening as she feels your true size and the power pulsing within.
Angela: [Whispering] (It's like touching a forgotten memory) "By the ancient woods... It's like a conduit of pure life force. What secrets does it hold, I wonder?"
You nod, unable to form words as Angela begins to stroke you through your primal garment. Her movements are curious and exploratory, sending waves of pleasure through your body.
***ABA5.webp***
You: [Groaning] (I'm awakening something in her) "It holds the key to understanding yourself, Angela. But you have to look deeper."
Angela hesitates for a moment, her face a battlefield of wisdom and curiosity. Then, with a wave of her hand, vines pull away your leafy covering. Your monstrous cock springs forth, angry and red, pulsing with viral energy that seems to resonate with the forest around you. Pre-cum beads at the tip, glowing with an otherworldly light.
Angela: [Gasping] (It's... incredible) "By all that is natural... It's beautiful. A perfect embodiment of life's raw power."
Her delicate hand wraps around your girth, and you feel a jolt of energy surge through you. Angela begins to stroke, her movements growing more confident as she explores this new sensation. Pre-cum flows freely, coating her fingers and being absorbed into her skin. With each stroke, Angela's breathing becomes heavier, her pupils dilating as she connects with something deep within herself.
***ABA6.webp***
Angela: [Moaning softly] (Why do I feel so... alive?) "Am I doing this correctly? It feels... it feels as though I'm touching the very essence of life itself."
You nod, beyond words as her hand works your shaft. The lewd, wet sounds of her strokes echo through the misty grove, mixing with the rustle of leaves and Angela's increasingly wanton moans.
***ABA7.webp***
You: [Panting] (She's losing herself to it) "That's it, Angela. You're understanding more about yourself with every stroke."
Angela: [Whimpering, her free hand caressing her own body] (This pleasure... it's so primal, yet so familiar) "It's pulsing with such vitality! Is this... is this a key to unlocking my lost memories?"
You feel your orgasm building, an unstoppable force of nature. But before you can release, the scene begins to shift...
***START - Choice 2***
[[Branch A: "Release and Wake up" (Hero+ Ending)]]
[[Branch B: "More corruption!" (Executioner+ Ending)]]
[[Branch C: "Wake up and force yourself on her" (HoE+ Ending)]]
***START - Choice 2 - Branch A***
The intensity of your primal arousal snaps you back to reality. You find yourself standing in Angela's doorway, your massive erection painfully constrained by your clothes, a large wet spot visible and glowing faintly. Angela stirs in her bed, her form shimmering with an otherworldly light. Her eyes flutter open, unfocused and confused.
Angela: [Blinking, her voice a mixture of wisdom and confusion] (What a strange vision...) "Young one? Why are you here? I had the most peculiar... dream."
***ABA8.webp***
Her eyes widen as she notices the obvious, glowing bulge in your pants. A deep blush spreads across her cheeks, and she pulls her covers up, suddenly aware of her own body. You stammer an excuse and flee, leaving a very confused and strangely aroused Angela behind.
Angela: [Whispering to herself] (That dream... why do I feel so... awakened?)
[[Exit]]
***END***
***START - Choice 2 - Branch B***
You: [Growling] (I need more. Awaken her completely) "More. Make it more intense!"
AVA's cruel laughter rings through the forest as the dreamscape shifts. The serene grove becomes wild and untamed, pulsing with primal energy. The very trees seem to writhe with desire, their branches reaching out like grasping hands. Angela gasps as her calm wisdom crumbles, horror and unbridled lust battling in her eyes.
Angela: [Her hand still working your shaft] (This is too real. What's happening to me?) "Young one? This... this isn't right. We're awakening something that should perhaps remain dormant... but I can't stop!"
The virus surges through her system like liquid fire. Her skin glows with intense light, nipples visibly hardening beneath her robes. The forest around her lower body seems to shift and change, mirroring her growing arousal.
***ABA9.webp***
Angela: [Whimpering] (This defies everything I thought I knew!) "We must cease this, young one. I'm... I'm not myself! This is... oh, by all that is natural!"
Her protests are cut short as another wave of viral lust crashes over her. AVA's influence floods her system with unnatural arousal, shattering her composed exterior.
***ABA10.webp***
Angela: [Moaning wantonly] (No... mustn't... but it feels so right) "Your... your form is awakening something within me. No! I didn't mean... we shouldn't... oh forest spirits, I need to understand this power!"
Her movements become more frantic, more desperate. Tears stream down her face, seeming to cause flowers to bloom where they fall. She begins to use both hands, one working your shaft while the other gently cups your heavy, cum-filled balls, energy crackling between her fingers.
***ABA11.webp***
You: [Groaning, hips bucking] (She's fighting so hard, but she can't resist her true nature) "Don't fight it, Angela. This is how you truly understand yourself."
Angela: [Sobbing and moaning] (I'm losing myself. Becoming something I don't recognize) "Forgive me, ancient ones. I'm trying to maintain my wisdom, but... but... oh earth and sky, I need your essence!"
The lewd, wet sounds of her hands working your cock echo through the wild forest. Pre-cum flows freely, mixing with Angela's tears to create a slick, warm coating on your shaft that glows with otherworldly power.
***ABA12.webp***
Angela: [Eyes wide with desperate need] (I'm forsaking my teachings. But I don't care anymore) "Please, young one! Grant this lost woman your vitality! I need it... I need it to remember who I truly am!"
With a roar that shakes the very foundations of the forest, you explode. Thick ropes of cum erupt from your cock, coating Angela's face, chest, and hands. She cries out in shock and ecstasy, her own orgasm crashing over her like a tidal wave as your seed touches her skin. The mixture glows with blinding intensity as it's absorbed into her being, the virus using it to reshape her very essence.
***ABA13.webp***
Angela: [Gasping, licking cum from her fingers] (So familiar... need more... to remember) "Such potent life force... I need more! Use me, young one. Use this awakened woman whenever you desire. I'll be your conduit to nature's deepest secrets..."
As the dream fades, Angela is left a quivering, cum-drenched mess among the wild flora, her sense of self forever altered by this primal union.
[[Exit]]
***END***
***START - Choice 2 - Branch C***
You: [Snarling] (No more forest games. I'm claiming her) "Enough! Wake me up. Now!"
Reality snaps back into focus with a thunderous crack. You stand in Angela's room, fully awake and painfully erect. Angela lies motionless, lost in her mysterious dream. Your virus-enhanced body thrums with power that seems to resonate with her hidden nature.
You: [Voice low and dangerous] (She's mine. I'll make her remember) "Awaken, Angela. It's time for you to truly know yourself."
Angela stirs but doesn't fully wake. Impatient, you grab her shoulder, shaking her roughly. Her eyes snap open, filled with confusion and lingering mystery.
***ABA14.webp***
Angela: [Disoriented] (What's happening to my sanctuary?) "Young one? How dare you enter my private chambers! What is the meaning of..."
Her words die in her throat as you force her delicate hand to your throbbing member. The tip glistens with pre-cum that seems to pulse with life, the shaft throbbing with viral energy that resonates with her own hidden power. Angela's eyes widen in shock and a hint of fear as she realizes this isn't a dream or vision.
Angela: [Whispering, fear creeping into her voice] (This defies all I've learned) "No, we mustn't... This violates the natural order... You're but a young man... Please, cease this madness!"
Ignoring her pleas, you force her hand to move along your shaft. She tries to pull away, but your virus-enhanced strength seems to match her weakening resolve.
***ABA15.webp***
You: [Growling] (She'll learn her true place in nature) "Be silent, Angela. This is how you truly understand who you are."
Angela: [Crying] (This is a nightmare. It must be) "Unhand me! I am a keeper of ancient wisdom! This is sacrilege!"
But as your pre-cum leaks onto her skin, Angela's resistance begins to crumble. The virus surges through her system, amplified by your potent fluids. Her fingers instinctively begin to stroke, her body betraying her mind.
***ABA16.webm***
Angela: [Whimpering] (Why does it feel so familiar? This is against all I know) "I mustn't do this... You're so young... But I can't stop! It feels so... No! This is against nature!"
Her strokes become more confident as the virus takes hold, her shame transforming into unwilling lust. You thrust into her hand, fucking her fist with abandon. Your other hand roughly gropes her perfect breast through her nightgown, making her gasp as energy crackles between you.
***ABA17.webp***
You: [Panting] (She's mine now) "That's it, Angela. Be a good wise woman and pleasure your young student. You love it, don't you? Admit it!"
Angela: [Moaning, tears streaming down her face] (I'm losing myself) "No... yes... I don't know! It's so powerful... I love your virile rod! Oh spirits, what's happening to my wisdom?"
You feel your climax approaching, your balls tightening with the force of nature itself. With a bestial roar that shakes the very foundations of the room, you explode, painting Angela's face, hair, and chest with thick ropes of cum. She cries out as it hits her, her body shuddering in an unwilling orgasm that seems to make the very air vibrate. Your seed glows with an otherworldly light as it's absorbed into her skin, the virus using it to reshape her very essence.
***ABA18.webm***
Angela: [Gasping, her eyes swirling with hidden power] (It's reawakening something within me) "Such vitality... Oh, what have we done? It's... it's changing me on a fundamental level..."
As the last of your cum is absorbed into her skin, Angela's sense of self is forever altered. Her eyes, once filled with confusion and hidden wisdom, now burn with a mixture of ancient knowledge and primal lust.
***ABA19.webp***
Angela: [Licking her lips, voice resonating with new understanding] (I need more. I need this young one) "More, my virile student. This awakened woman requires more of your life-altering essence. Use me. Teach me the ways of the flesh. I am yours, both in body and spirit."
You leave her room without another word, the image of the transformed Angela burned into your mind forever. As you close the door, you hear her whimper, the sound echoing with hidden power as she craves her next dose of your viral, nature-altering seed...
[[Exit]]
***END***
***END - Choice 2***
***END***
***END - Choice 1***
`;
DIAF_parseBuildAppend(dialog, passageId);
})();
</script><<nobr>>
<<for _pass range Story.lookup()>>
<<if _pass.text>>
[[_pass.title]]
<</if>>
<</for>>
<</nobr>>