JavaScript must be enabled to play.
Browser lacks capabilities required to play.
Upgrade or switch to another browser.
Loading…
<div class="about-page"> <div class="about-header"> <h2>About the Game</h2> <li>"Corpse City 2037" is a browser adventure game about survival in a post-apocalyptic world. After years of isolation in your house bunker, you finally emerge to face the new reality. The world has plunged into anarchy. The remnants of civilization are scattered settlements of surviving women trying to survive among the ruins of the former world. As one of the few remaining men, you occupy a unique position in this new society. Game features:</li> <li>Open world - explore city ruins, abandoned complexes, and wild territories Survival system - gather resources, create shelter, and fight for your place in this new world Branching plot - your decisions will affect the development of the story and relationships with different factions Relationship system - build connections with characters you meet, from hostility to alliance Character development - improve your hero's skills and abilities as you progress through the game</li> <li>Uncover the secrets of this world and decide what role you want to play in humanity's future. Will you become the savior of civilization, a ruthless ruler, or simply try to survive day by day? Warning: the game is intended exclusively for adult audiences (18+) and contains content of an appropriate nature.</li> <a class="back-button" data-passage="MainMenu"> <span class="back-icon">←</span> Return to Menu </a> </div> </div>
<div class="changelog-page"> <div class="changelog-header"> <h1>Changelog</h1> <a class="back-button" data-passage="MainMenu"> <span class="back-icon">←</span> Return to Menu </a> <div class="choice-container"> <a class="button" data-passage="Changelog_2">Next Changelog</a> </div> </div> <div class="changelog-content"> <div class="changelog-entry"> <div class="version-header"> <h2>Version 0.1 Alpha (Old)</h2> <span class="date">03.21.2025</span> </div> <div class="changes-list"> <h3>Added:</h3> <ul> <li>Created basic game structure</li> <li>Developed main menu with 18+ warning</li> <li>Added basic styles and animations</li> <li>Created changelog system</li> <li>Added 3 NPCs and sex scenes with them</li> <li>Added main locations and some interactions with them</li> <li>Added combat system and basic mechanics</li> </ul> <h3>Settings:</h3> <ul> <li>Established basic variables for CSS</li> <li>Configured fonts and color scheme</li> <li>Added responsive design</li> <li>Fixed menu element alignment</li> </ul> <h3>Fixes:</h3> <ul> <li>Fixed left-shifting of elements</li> <li>Improved content centering</li> </ul> <h3>Known Issues:</h3> <ul> <li>Needs testing on different browsers</li> </ul> <h3>Author's Note:</h3> <ul> <li>The game is only in the early stages of development, no element of the game is 100% permanent</li> </ul> </div> </div> </div> </div> <style> /* Стилі для сторінки журналу змін */ .changelog-page { margin-top: var(--space-large); padding: var(--space-large); background: var(--bg-medium); border: 2px solid var(--accent-primary); border-radius: 6px; box-shadow: var(--shadow-medium), var(--glow-red); } .changelog-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-large); } .changelog-header h1 { font-family: var(--font-mono); color: var(--accent-highlight); font-size: 2rem; text-shadow: 0 0 4px rgba(64, 255, 64, 0.5); } .back-button { display: flex; align-items: center; gap: var(--space-small); color: var(--text-light); text-decoration: none; font-family: var(--font-mono); font-size: 1rem; padding: 8px 16px; border: 2px solid var(--accent-primary); border-radius: 6px; transition: background-color var(--transition-fast), transform var(--transition-fast); box-shadow: var(--shadow-subtle); } .back-button:hover { background: #6b3e3c; transform: scale(1.05); box-shadow: var(--shadow-medium), var(--glow-red); } .back-icon { font-size: 1.2rem; } .changelog-content { background: var(--bg-light); border: 2px solid var(--accent-primary); border-radius: 6px; padding: var(--space-medium); box-shadow: var(--shadow-subtle); } .version-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-medium); } .version-header h2 { font-family: var(--font-mono); color: var(--accent-highlight); text-shadow: 0 0 4px rgba(64, 255, 64, 0.5); } .version-header .date { color: var(--text-medium); font-family: var(--font-mono); } .changelog-list h3 { color: var(--accent-gold); font-family: var(--font-mono); margin-top: var(--space-medium); margin-bottom: var(--space-small); text-shadow: 0 0 4px rgba(212, 160, 23, 0.5); } .changelog-list ul { list-style-type: disc; margin-left: var(--space-medium); color: var(--text-light); } .changelog-list li { margin-bottom: var(--space-small); } /* Анімація появи */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .changelog-page, .changelog-content { animation: fadeIn var(--transition-slow); } </style>
<div class="game-content fade-in"> <div class="scene-desc"> <h1>Prologue: Unwelcome Guest</h1> <p>Year 2037. Three months have passed since the world changed forever...</p> </div> <div class="story-text"> <p> Nighttime. You sit in the darkness of your house, listening to sounds from outside. Suddenly, you hear quiet footsteps on the first floor. Someone is moving carefully, trying not to make noise. </p> <p> As you descend the stairs, you spot a slender female figure rummaging through your supplies. Moonlight streaming through the window illuminates her long dark hair. It's Luna - a young woman you've seen from a distance several times while observing the neighborhood from your bunker window. </p> <p> She's unaware of your presence. You have the element of surprise. One quick movement - and you grab her, covering her mouth to prevent screaming. Luna struggles against you, but you hold her firmly. </p> <div class="dialog"> <div class="dialog-text"> <em>"Now your fate is in my hands..."</em> </div> </div> </div> <div class="choice-container"> <h3>What will you do with her?</h3> <a class="button dark-choice" data-passage="Luna_Enslave"> Subdue by force and make her your slave </a> <a class="button neutral-choice" data-passage="Luna_Dominate"> Dominate and make her work off what she stole </a> <a class="button light-choice" data-passage="Luna_Talk"> Try to talk with her </a> </div> </div> <<script>> $(document).ready(function() { // Text appearance animation $('.story-text p').each(function(index) { $(this).css({ 'opacity': '0', 'transform': 'translateY(20px)' }); setTimeout(() => { $(this).css({ 'transition': 'all 0.8s ease', 'opacity': '1', 'transform': 'translateY(0)' }); }, 500 * (index + 1)); }); // Choice button styling $('.dark-choice').css({ 'background': 'linear-gradient(to bottom, #660000, #330000)', 'border-color': '#800000' }); $('.neutral-choice').css({ 'background': 'linear-gradient(to bottom, #663300, #331900)', 'border-color': '#804000' }); $('.light-choice').css({ 'background': 'linear-gradient(to bottom, #006666, #003333)', 'border-color': '#008080' }); }); <</script>>
<div class="scene-content"> <div class="scene-text"> <p> You assert your dominance forcefully. Luna's resistance is futile against your strength. Her eyes reflect fear and resignation to her new reality. </p> <<set $player.luna_status = "slave">> </div> <div class="video-container"> <video id="sceneVideo" class="scene-video" autoplay muted loop playsinline> <source src="assets/luna/blowjob_dominance.webm" type="video/webm"> </video> </div> <div class="choice-container"> <a class="button dark-choice" data-passage="Luna_Final">Claim your dominance</a> </div> </div>
<div class="scene-content"> <p> You release Luna but block her escape route. She trembles, yet a glimmer of hope appears in her eyes when you refrain from direct aggression. </p> <div class="dialog"> <p class="luna-dialog">"I... I'll do whatever you say. Just please don't kill me..."</p> </div> <div class="choice-container"> <a class="button dark-choice" data-passage="Luna_Enslave">Assert control</a> <a class="button neutral-choice" data-passage="Luna_Banish">Send her away</a> <a class="button danger-choice" data-passage="Luna_Kill">End the threat</a> </div> </div>
<div class="scene-content"> <p> You cautiously release Luna but remain on guard. She turns to face you, revealing an exhausted, broken young woman. </p> <div class="dialog"> <p class="luna-dialog"> "I... I can't keep living like this. Every day is just a struggle to survive. Please, let me stay. I'll make myself useful..." </p> </div> <div class="choice-container"> <a class="button light-choice" data-passage="Luna_Accept">Accept her offer</a> <a class="button neutral-choice" data-passage="Luna_Reject">Refuse</a> </div> </div>
<div class="scene-content"> <div class="video-container"> <video id="sexVideo" class="scene-video" controls preload="auto" width="100%" loop> <source src="assets/luna/sex.mp4" type="video/mp4"> <source src="assets/luna/sex.webm" type="video/webm"> </video> </div> <<set $player.stamina -= 20>> <div class="choice-container"> <a class="button dark-choice" data-passage="Luna_Final">Finish the scene</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p> Luna submits completely, her body still trembling from the experience. You feel absolute dominance over the situation. </p> <<set $player.stamina -= 30>> <<set $player.luna_status = "slave">> <<set $player.survivors_met ++>> </div> <div class="video-container"> <video id="aftermathVideo" class="scene-video" autoplay muted loop playsinline> <source src="assets/luna/cum.webm" type="video/webm"> </video> </div> <div class="choice-container"> <a class="button dark-choice" data-passage="Luna_AfterMath">Continue</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p> You finish on Luna, demonstrating your dominance. Luna now completely belongs to you. </p> <<set $player.stamina -= 30>> <<set $player.luna_status = "enslaved">> </div> <div class="video-container"> <video id="cumVideo" class="scene-video" controls preload="auto" width="100%" loop> <source src="assets/luna/cum.mp4" type="video/mp4"> <source src="assets/luna/cum.webm" type="video/webm"> </video> </div> <div class="choice-container"> <a class="button dark-choice" data-passage="Luna_AfterMath">Continue</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p> Luna is now under your complete authority. She must obey your commands, her fate entirely in your hands. </p> <div class="status-update"> <h3>Status Updated:</h3> <ul> <li>Luna has joined your household</li> <li>New interaction options unlocked</li> <li>Try interacting with her at home</li> </ul> </div> </div> <div class="choice-container"> <a class="button dark-choice" data-passage="House_Life">Return home</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p> Without hesitation, you slit her throat. In this new world, there is no place for the weak. Her body falls to the floor, blood spreading across the wooden boards. </p> <<set $player.luna_status = "dead">> </div> <div class="choice-container"> <a class="button danger-choice" data-passage="House_Life">Clean up the body</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p> You decide to give her a chance. Tears of gratitude well up in her eyes. "Thank you... I won't let you down," she whispers. </p> <<set $player.luna_status = "ally">> <<set $player.survivors_met ++>> </div> <div class="choice-container"> <a class="button light-choice" data-passage="House_Life">Show her the safehouse</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p> "Get out and don't come back," you say coldly. Sobbing, Luna quickly disappears into the night's darkness. </p> <<set $player.luna_status = "rejected">> </div> <div class="choice-container"> <a class="button neutral-choice" data-passage="House_Life">Return to your business</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p> You decide to banish Luna. "Get out and don't come back," you say coldly. She trembles but quickly gathers her things and rushes out of the house. </p> <<set $player.luna_status = "banished">> </div> <div class="choice-container"> <a class="button neutral-choice" data-passage="House_Life">Return to your affairs</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <div class="date-display"> <span class="day">Day: <<print $player.days_survived>></span> <span class="month">Month: <<print $player.current_month>></span> <span class="year">Year: <<print $player.current_year>></span> </div> <h2>Your Safehouse</h2> <div class="residents-container"> <h3 class="text-center">Residents</h3> <div class="characters-grid"> <<if $player.luna_status == "slave">> <div class="mini-character-card"> <img src="assets/luna/luna.png" alt="Luna" class="mini-portrait"> <div class="mini-info"> <span class="char-name">Luna</span> <span class="char-status">Slave</span> <a class="mini-btn" data-passage="Luna_Interact">Interact</a> </div> </div> <<elseif $player.luna_status == "ally">> <div class="mini-character-card"> <img src="assets/luna/luna.png" alt="Luna" class="mini-portrait"> <div class="mini-info"> <span class="char-name">Luna</span> <span class="char-status">Ally</span> <a class="mini-btn" data-passage="Luna_Interact">Interact</a> </div> </div> <</if>> <<if $player.alex_status == "slave">> <div class="mini-character-card"> <img src="assets/alex/alex.png" alt="Alex" class="mini-portrait"> <div class="mini-info"> <span class="char-name">Alex</span> <span class="char-status">Slave</span> <a class="mini-btn" data-passage="Alex_Interact">Interact</a> </div> </div> <<elseif $player.alex_status == "ally">> <div class="mini-character-card"> <img src="assets/alex/alex.png" alt="Alex" class="mini-portrait"> <div class="mini-info"> <span class="char-name">Alex</span> <span class="char-status">Ally</span> <a class="mini-btn" data-passage="Alex_Interact">Interact</a> </div> </div> <<elseif $player.alex_status == "dead">> <div class="status-message dark"> A dark stain on the floor reminds you of Alex's fate... </div> <</if>> <<if $player.dominika_status == "slave">> <div class="mini-character-card"> <img src="assets/dominika/dominika.png" alt="Dominika" class="mini-portrait"> <div class="mini-info"> <span class="char-name">Dominika</span> <span class="char-status">Slave</span> <a class="mini-btn" data-passage="Dominika_Interact">Interact</a> </div> </div> <<elseif $player.dominika_status == "ally">> <div class="mini-character-card"> <img src="assets/dominika/dominika.png" alt="Dominika" class="mini-portrait"> <div class="mini-info"> <span class="char-name">Dominika</span> <span class="char-status">Ally</span> <a class="mini-btn" data-passage="Dominika_Interact">Interact</a> </div> </div> <<elseif $player.dominika_status == "dead">> <div class="status-message dark"> A dark stain on the floor reminds you of Dominika's fate... </div> <</if>> </div> </div> </div> <div class="actions-container"> <div class="choice-container"> <<if $player.stamina <= 0>> <div class="warning-message">You're too exhausted to go outside!</div> <a class="button dark-choice disabled" data-passage="House_Life">Go Outside</a> <<else>> <a class="button dark-choice" data-passage="Outside">Go Outside</a> <</if>> <a class="button dark-choice" data-passage="Slave">Slave room</a> <a class="button dark-choice" data-passage="Rest">Rest</a> </div> </div> </div> <style> /* Стиль для відображення дати в неоновому зеленому стилі */ .date-display { display: flex; justify-content: space-between; background: var(--bg-medium); /* Темніший фон для контрасту */ padding: var(--space-small); border-radius: 6px; margin-bottom: var(--space-medium); border: 2px solid var(--accent-highlight); /* Зелена рамка */ box-shadow: 0 0 6px rgba(0, 255, 0, 0.5); /* Неонове світіння */ } .day, .month, .year { color: #00FF00; /* Неоновий зелений (можна замінити на var(--accent-highlight), якщо це вже зелений) */ font-family: var(--font-mono); font-size: 1.1rem; font-weight: bold; text-shadow: 0 0 4px rgba(0, 255, 0, 0.7), 0 0 8px rgba(0, 255, 0, 0.5); /* Неонове світіння тексту */ transition: text-shadow var(--transition-fast); } .day:hover, .month:hover, .year:hover { text-shadow: 0 0 6px rgba(0, 255, 0, 0.9), 0 0 12px rgba(0, 255, 0, 0.7); /* Посилене світіння при наведенні */ } /* Решта стилів без змін */ .actions-container { background: var(--bg-medium); border: 2px solid var(--accent-primary); border-radius: 6px; padding: var(--space-medium); margin-top: var(--space-large); box-shadow: var(--shadow-subtle), var(--glow-red); } .choice-container { display: flex; flex-wrap: wrap; gap: var(--space-small); justify-content: center; } .scene-content { margin-top: var(--space-large); padding: var(--space-large); background: var(--bg-medium); border: 2px solid var(--accent-primary); border-radius: 6px; box-shadow: var(--shadow-medium), var(--glow-red); } .scene-text h2 { font-family: var(--font-mono); color: var(--accent-highlight); text-transform: none; letter-spacing: normal; margin-bottom: var(--space-small); font-size: 1.8rem; text-shadow: 0 0 4px rgba(64, 255, 64, 0.5); } .residents-container { background: var(--bg-medium); border: 2px solid var(--accent-primary); border-radius: 6px; padding: var(--space-medium); margin: var(--space-large) 0; box-shadow: var(--shadow-subtle), var(--glow-red); } .residents-container h3 { color: var(--accent-gold); font-family: var(--font-mono); margin-bottom: var(--space-medium); text-shadow: 0 0 4px rgba(212, 160, 23, 0.5); } .characters-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--space-small); justify-items: center; } .mini-character-card { background: var(--bg-light); border: 1px solid var(--accent-primary); border-radius: 6px; padding: var(--space-small); display: flex; align-items: center; gap: var(--space-small); box-shadow: var(--shadow-subtle); transition: transform var(--transition-fast); } .mini-character-card:hover { transform: scale(1.03); box-shadow: var(--shadow-medium), var(--glow-red); } .mini-info { display: flex; flex-direction: column; gap: 4px; } .char-name { font-weight: bold; color: var(--text-light); font-size: 1.1rem; } .char-status { color: var(--text-medium); font-size: 0.9rem; } .mini-btn { background: var(--accent-blue); color: var(--text-light); padding: 6px 12px; border: 2px solid var(--accent-primary); border-radius: 6px; text-decoration: none; font-size: 0.9rem; transition: background-color var(--transition-fast), transform var(--transition-fast); box-shadow: var(--shadow-subtle); } .mini-btn:hover { background: #6b3e3c; transform: scale(1.05); box-shadow: var(--shadow-medium), var(--glow-red); } .status-message.dark { background: var(--bg-light); border: 2px solid var(--accent-primary); border-radius: 6px; padding: var(--space-small); color: var(--text-dark); text-align: center; margin: var(--space-small) 0; box-shadow: var(--shadow-subtle); } .warning-message { background: var(--bg-light); border: 2px solid var(--accent-secondary); border-radius: 6px; padding: var(--space-small); color: var(--accent-secondary); text-align: center; margin-bottom: var(--space-medium); box-shadow: var(--glow-red); } /* Анімація появи */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .scene-content, .residents-container, .actions-container { animation: fadeIn var(--transition-slow); } </style>
<div class="scene-content"> <div class="dialog-container"> <<if $player.luna_status == "slave">> <p class="narrator-text">Luna looks at you with a mix of fear and submission.</p> <div class="luna-dialog"> <p>"Yes... master? What would you like to know?"</p> </div> <<elseif $player.luna_status == "ally">> <p class="narrator-text">Luna looks at you with grateful eyes, but you do not see fear in her eyes, only gratitude"</p> <div class="luna-dialog"> <p>"Hi, I was just cleaning up, what's new?"</p> </div> <</if>> <div class="dialog-options"> <a class="button light-choice" data-passage="Luna_Past">Ask about her past</a> <a class="button light-choice" data-passage="Luna_Feelings">Ask how she's feeling</a> <a class="button neutral-choice" data-passage="Luna_Interact">End conversation</a> </div> </div> </div>
<div class="scene-content"> <div class="work-menu"> <h3>Choose a task for Luna:</h3> <<if $player.luna_work == "scavenging">> <div class="current-task"> <p>Current task: Scavenging for supplies</p> <a class="button danger-choice" data-passage="Luna_Cancel_Work">Cancel task</a> </div> <<else>> <div class="work-options"> <a class="button neutral-choice" data-passage="Luna_Start_Scavenging">Start scavenging</a> </div> <</if>> <a class="button" data-passage="Luna_Interact">Return</a> </div> </div>
<div class="scene-content"> <div class="work-menu"> <h3>Choose a task for Alex:</h3> <<if $player.alex_work != "none">> <div class="current-task"> <p>Current task: <<print $player.alex_work>></p> <a class="button danger-choice" data-passage="Alex_Cancel_Work">Cancel task</a> </div> <<else>> <div class="work-options"> <a class="button neutral-choice" data-passage="Alex_Start_Scavenging">Start scavenging</a> </div> <div class="work-options"> <a class="button neutral-choice" data-passage="Alex_Сooks">Cooking</a> </div> <</if>> <a class="button" data-passage="Alex_Interact">Return</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p>You send Alex to scavenge for supplies in the city. It's a dangerous task, but necessary for survival.</p> <<set $player.alex_work = "scavenging">> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return to the house</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p>You recall Alex from her task. She is now available for other interactions.</p> <<set $player.alex_work = "none">> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return to the house</a> </div> </div>
<<if $player.stamina < 10>> <div class="scene-content"> <div class="warning-message">You do not have enough stamina for sexual actions!</div> <div class="choice-container"> <a class="button back-btn" data-passage="Alex_Interact">← Back</a> </div> </div> <<else>> <div class="scene-content"> <div class="scene-text"> <p> Alex obediently waits for your orders, ready to fulfill any of your desires. </p> </div> <div class="video-container"> <video id="alexServiceVideo" class="scene-video" autoplay muted loop playsinline> <source src="assets/alex/blowjob (1).webm" type="video/webm"> </video> </div> <div class="service-menu"> <div class="menu-title">Choose an action:</div> <div class="service-buttons"> <center> <a class="service-btn" id="alexBlowjobBtn">Blowjob</a> <a class="service-btn" id="alexVaginalBtn">Vaginal</a> <a class="service-btn" id="alexAnalBtn">Anal</a> <a class="service-btn" id="alexCumBtn">Finish</a> </center> </div> <a class="button back-btn" data-passage="Alex_Interact">← Back</a> </div> </div> <<script>> $(document).ready(function() { const alexVideos = { blowjob: [ 'assets/alex/blowjob (1).webm', 'assets/alex/blowjob (4).webm', 'assets/alex/blowjob (5).webm', 'assets/alex/blowjob (6).webm', 'assets/alex/blowjob (7).webm', 'assets/alex/blowjob (8).webm' ], vaginal: [ 'assets/alex/vaginal (1).webm', 'assets/alex/vaginal (4).webm', 'assets/alex/vaginal (5).webm', 'assets/alex/vaginal (6).webm', 'assets/alex/vaginal (7).webm', 'assets/alex/vaginal (8).webm', 'assets/alex/vaginal (9).webm', 'assets/alex/vaginal (10).webm' ], anal: [ 'assets/alex/anal (1).webm', 'assets/alex/anal (3).webm', 'assets/alex/anal (4).webm' ], cum: [ 'assets/alex/cum.webm', 'assets/alex/cum (1).webm', 'assets/alex/cum (2).webm', 'assets/alex/cum (3).webm', 'assets/alex/cum (4).webm', 'assets/alex/cum (5).webm', 'assets/alex/cum (6).webm' ] }; function getRandomVideo(category) { const videos = alexVideos[category]; return videos[Math.floor(Math.random() * videos.length)]; } function changeVideo(type) { const video = document.getElementById('alexServiceVideo'); if (video) { const newSrc = getRandomVideo(type); if (video.src !== newSrc) { video.src = newSrc; video.play().catch(function(error) { console.log("Autoplay error:", error); }); } } // Update player stats with minimum check State.variables.player.stamina = Math.max(0, State.variables.player.stamina - 10); // Refresh stats display $(document).trigger(':refresh'); } // Add event handlers for buttons $('#alexBlowjobBtn').on('click', function() { changeVideo('blowjob'); }); $('#alexVaginalBtn').on('click', function() { changeVideo('vaginal'); }); $('#alexAnalBtn').on('click', function() { changeVideo('anal'); }); $('#alexCumBtn').on('click', function() { changeVideo('cum'); }); // Add click handler for video to toggle mute $('#alexServiceVideo').on('click', function() { this.muted = !this.muted; }); }); <</script>> <</if>>
<div class="main-menu"> <div class="menu-content"> <div class="logo-container"> <h1 class="game-logo">Corpse City</h1> <div class="logo-subtitle">2037: The World After the Fall</div> </div> <div class="menu-warning"> <div class="warning-icon">⚠</div> <p>WARNING! This game contains adult content (21+).<br> Sexual content, elements of dominance, violence, and brutality.<br> By continuing, you confirm that you are at least 18 years old.</p> </div> <nav class="menu-buttons"> <a class="button start-button" data-passage="Play"> <span class="button-inner">New Game</span> </a> <a class="button" data-passage="Settings"> <span class="button-inner">Settings</span> </a> <a class="button" data-passage="About"> <span class="button-inner">About</span> </a> </nav> <div class="world-info"> <div class="info-title">World of 2037</div> <div class="info-text"> After a biological catastrophe that wiped out 80% of the male population, the world descended into chaos. You are one of the few who survived. Now your fate is to decide the future of this world. </div> </div> <div class="version-info"> <span class="version">Version 0.2.1 Alpha Global Overhaul</span> <span class="separator">|</span> <span class="engine">SugarCube 2.36.1</span> <span class="separator">|</span> <a class="changelog-link" data-passage="Changelog">Changelog</a> </div> </div>
<div class="start-container"> <div class="start-content"> <h1>Start New Game</h1> <p>Are you ready to dive into the post-apocalyptic world?</p> <nav class="menu-buttons"> <a class="button start-button" data-passage="Choose_Name"> <span class="button-inner">Begin Story</span> </a> <a class="button" data-passage="MainMenu"> <span class="button-inner">Return to Menu</span> </a> </nav> </div> </div> <<script>> $(document).ready(function() { // Container styles $('.start-container').css({ 'max-width': '800px', 'margin': '0 auto', 'background': 'rgba(0, 0, 0, 0.8)', 'padding': '40px', 'border-radius': '10px', 'box-shadow': '0 0 20px rgba(0, 0, 0, 0.5)', 'text-align': 'center' }); $('.start-content h1').css({ 'color': '#fff', 'font-size': '2.5em', 'margin-bottom': '20px', 'text-shadow': '0 0 10px rgba(156, 14, 54, 0.7)' }); $('.start-content p').css({ 'color': '#ccc', 'font-size': '1.2em', 'margin-bottom': '30px' }); }); <</script>>
<<set $soundVolume = $soundVolume ?? 50>> <<set $musicVolume = $musicVolume ?? 50>> <<set $musicEnabled = $musicEnabled ?? true>> <div class="settings-page"> <div class="settings-header"> <h1>Settings</h1> <a class="back-button" data-passage="MainMenu"> <span class="back-icon">←</span> Return to menu </a> </div> <div class="settings-section"> <h3>Sound Volume: <span id="sound-volume-display"><<print $soundVolume>></span></h3> <div class="volume-controls"> <<link "-">> <<set $soundVolume = Math.max(0, $soundVolume - 10)>> <<replace "#sound-volume-display">><<print $soundVolume>><</replace>> <</link>> <<link "+">> <<set $soundVolume = Math.min(100, $soundVolume + 10)>> <<replace "#sound-volume-display">><<print $soundVolume>><</replace>> <</link>> </div> </div> <div class="settings-section"> <h3>Music Volume: <span id="music-volume-display"><<print $musicVolume>></span></h3> <div class="volume-controls"> <<link "-">> <<set $musicVolume = Math.max(0, $musicVolume - 10)>> <<replace "#music-volume-display">><<print $musicVolume>><</replace>> <<run document.getElementById('bg-music').volume = $musicVolume / 100>> <</link>> <<link "+">> <<set $musicVolume = Math.min(100, $musicVolume + 10)>> <<replace "#music-volume-display">><<print $musicVolume>><</replace>> <<run document.getElementById('bg-music').volume = $musicVolume / 100>> <</link>> </div> </div> <div class="settings-section"> <h3>Music: <span id="music-status"><<if $musicEnabled>>On<<else>>Off<</if>></span></h3> <div class="toggle-controls" id="music-toggle"> <<if $musicEnabled>> <<link "Turn Off">> <<set $musicEnabled = false>> <<replace "#music-status">>Off<</replace>> <<replace "#music-toggle">> <<link "Turn On">> <<set $musicEnabled = true>> <<replace "#music-status">>On<</replace>> <<replace "#music-toggle">><<include "MusicToggle">><</replace>> <<run document.getElementById('bg-music').play()>> <</link>> <</replace>> <<run document.getElementById('bg-music').pause()>> <</link>> <<else>> <<link "Turn On">> <<set $musicEnabled = true>> <<replace "#music-status">>On<</replace>> <<replace "#music-toggle">> <<link "Turn Off">> <<set $musicEnabled = false>> <<replace "#music-status">>Off<</replace>> <<replace "#music-toggle">><<include "MusicToggle">><</replace>> <<run document.getElementById('bg-music').pause()>> <</link>> <</replace>> <<run document.getElementById('bg-music').play()>> <</link>> <</if>> </div> </div> <!-- Аудіо елемент для музики --> <<script>> // Масив треків var tracks = [ "assets/Music/menu1.mp3", "assets/Music/menu2.mp3", "assets/Music/menu3.mp3" ]; // Випадковий вибір треку var randomTrack = tracks[Math.floor(Math.random() * tracks.length)]; // Створення або оновлення аудіо елемента var audio = document.getElementById('bg-music'); if (!audio) { audio = document.createElement('audio'); audio.id = 'bg-music'; audio.loop = true; document.body.appendChild(audio); } audio.src = randomTrack; audio.volume = State.variables.musicVolume / 100; // Автовідтворення, якщо музика увімкнена if (State.variables.musicEnabled) { audio.play().catch(function() { // Обробка помилок відтворення (наприклад, якщо автоплей заблоковано) }); } <</script>> </div> <style> /* Стилі для сторінки налаштувань */ .settings-page { margin-top: var(--space-large); padding: var(--space-large); background: var(--bg-medium); border: 2px solid var(--accent-primary); border-radius: 6px; box-shadow: var(--shadow-medium), var(--glow-red); } .settings-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-large); } .settings-header h1 { font-family: var(--font-mono); color: var(--accent-highlight); font-size: 2rem; text-shadow: 0 0 4px rgba(64, 255, 64, 0.5); } .back-button { display: flex; align-items: center; gap: var(--space-small); color: var(--text-light); text-decoration: none; font-family: var(--font-mono); font-size: 1rem; padding: 8px 16px; border: 2px solid var(--accent-primary); border-radius: 6px; transition: background-color var(--transition-fast), transform var(--transition-fast); box-shadow: var(--shadow-subtle); } .back-button:hover { background: #6b3e3c; transform: scale(1.05); box-shadow: var(--shadow-medium), var(--glow-red); } .back-icon { font-size: 1.2rem; } .settings-section { background: var(--bg-light); border: 2px solid var(--accent-primary); border-radius: 6px; padding: var(--space-medium); margin-bottom: var(--space-medium); box-shadow: var(--shadow-subtle); } .settings-section h3 { color: var(--accent-gold); font-family: var(--font-mono); margin-bottom: var(--space-small); text-shadow: 0 0 4px rgba(212, 160, 23, 0.5); } .volume-controls, .toggle-controls { display: flex; gap: var(--space-small); justify-content: center; } .volume-controls a, .toggle-controls a { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; border-radius: 6px; font-family: var(--font-mono); font-size: 1rem; text-decoration: none; transition: background-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast); } .volume-controls a { background: var(--accent-blue); color: var(--text-light); border: 2px solid var(--accent-primary); box-shadow: var(--shadow-subtle); } .volume-controls a:hover { background: #6b3e3c; transform: scale(1.05); box-shadow: var(--shadow-medium), var(--glow-red); } .toggle-controls a { background: var(--accent-highlight); color: var(--text-light); border: 2px solid var(--accent-highlight); box-shadow: var(--shadow-subtle), 0 0 6px rgba(64, 255, 64, 0.5); } .toggle-controls a:hover { background: #6b3e3c; transform: scale(1.05); box-shadow: var(--shadow-medium), 0 0 8px rgba(64, 255, 64, 0.7); } /* Анімація появи */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .settings-page, .settings-section { animation: fadeIn var(--transition-slow); } </style>
<<set $player = { name: "Alex", health: 100, max_health: 100, stamina: 100, max_stamina: 100, current_month: "March", current_year: 2037, days_survived: 90, inventory: [], Canned_Food: 10, Raw_meat: 0, Medkit: 1, Caps: 100, Pistol: 0, Shotgun: 0, Wrench: 1, Knife: 0, Slave: 0, Weapon_status: "none", Weapon_damage: 2, Weapon_icon: "none", game_status: 0, survivors_met: 1, Food_consumed: 1, luna_status: "unknown", alex_status: "unknown", dominika_status: "unknown", severina_status: "unknown", luna_work: "none", alex_work: "none", dominika_work: "none", wolf_mutant_damage: 25, rat_mutant_damage: 10, raider_damage: 30 }>> <<set $discovered_bunker = false>> <<set $discovered_farm = false>> <<set $discovered_city_center = false>> <<set $discovered_settlement = false>> <<set $discovered_forest = false>> <<set $discovered_dominika = false>> <<set $lastPassage = "House_Life">> <<set $ignorePassages = ["Inventory"]>> <!-- Список пасажів, які ігноруються -->
<div class="scene-content"> <div class="scene-text"> <h2>Outside</h2> <p> You stand in the middle of a devastated city. Broken windows and abandoned cars serve as reminders of the catastrophe that occurred. The air is heavy with the smell of decay and dust. </p> </div> <<if $discovered_bunker == true>> <div class="choice-container"> <div class="locations-grid"> <a class="location-btn" data-passage="Bunker"> <div class="location-icon">🔒</div> <span>Bunker</span> </a> <</if>> <<if $discovered_city_center == true>> <div class="choice-container"> <div class="locations-grid"> <a class="location-btn" data-passage="City_Center"> <div class="location-icon">🏙️</div> <span>City center</span> </a> <</if>> <<if $discovered_farm == true>> <div class="choice-container"> <div class="locations-grid"> <a class="location-btn" data-passage="Farm"> <div class="location-icon">🌾</div> <span>Farm</span> </a> <</if>> <<if $discovered_settlement == true>> <div class="choice-container"> <div class="locations-grid"> <a class="location-btn" data-passage="Settlement"> <div class="location-icon">🏚️</div> <span>Settlement</span> </a> <</if>> <<if $discovered_forest == true>> <div class="choice-container"> <div class="locations-grid"> <a class="location-btn" data-passage="Forest"> <div class="location-icon">🌲</div> <span>Forest</span> </a> <</if>> <div class="choice-container"> <<if $player.alex_status == "unknown">> <a class="button dark-choice enabled" data-passage="Search_Supplies">Screams in the distance</a> <</if>> <<if $player.stamina lt 10>> <div class="warning-message">You don't have enough energy!</div> <a class="button dark-choice disabled" data-passage="Outside">Search for supplies</a> <<else>> <<if !$player.first_search>> <<set $player.first_search = true>> <<set $found_food = true>> <<set $found_meds = random(1, 100) lte 5>> <a class="button dark-choice" data-passage="Search_Result">Search for supplies</a> <<else>> <<set $found_food = random(1, 100) lte 50>> <<set $found_meds = random(1, 100) lte 5>> <a class="button dark-choice" data-passage="Search_Result">Search for supplies</a> <</if>> <</if>> </div> <<if !$found_food && !$found_meds>> <div class="scene-text"> <p>Unfortunately, you didn't find anything this time.</p> </div> <</if>> <<if $player.stamina lt 10>> <div class="warning-message">You don't have enough energy!</div> <a class="button dark-choice disabled" data-passage="Outside">Explore area</a> <<else>> <a class="button dark-choice" data-passage="Explore_Area">Explore area</a> <</if>> <div class="choice-container"> <a class="button back-btn" data-passage="House_Life">Return home</a> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Area Reconnaissance</h2> <<set $player.stamina = Math.max(0, $player.stamina - 10)>> <p> You decide to explore the surroundings in search of useful locations. It's dangerous, but could prove beneficial. </p> <<if $discovered_bunker == false or $discovered_farm == false or $discovered_city_center == false or $discovered_settlement == false or $discovered_forest == false>> <<set _explore_chance = random(1, 100)>> <<if _explore_chance <= 50>> <<set _location_type = random(1, 5)>> <<if $discovered_bunker == false>> <<set $discovered_bunker = true>> <p class="success">You found something interesting! An abandoned bunker stands among the ruins.</p> <a class="button light-choice" data-passage="Bunker">Explore the bunker</a> <<elseif $discovered_farm == false>> <<set $discovered_farm = true>> <p class="success">You found something interesting! An old farm is visible outside the city.</p> <a class="button light-choice" data-passage="Farm">Explore the farm</a> <<elseif $discovered_city_center == false>> <<set $discovered_city_center = true>> <p class="success">You discovered a safe route to the city center!</p> <a class="button light-choice" data-passage="City_Center">Go to the center</a> <<elseif $discovered_settlement == false>> <<set $discovered_settlement = true>> <p class="success">You spot a small settlement of survivors in the distance!</p> <a class="button light-choice" data-passage="Settlement">Approach the settlement</a> <<elseif $discovered_forest == false>> <<set $discovered_forest = true>> <p class="success">You have a view of the endless forest.</p> <a class="button light-choice" data-passage="Forest">Enter the forest</a> <</if>> <</if>> <<else>> <p>Unfortunately, you didn't find anything interesting today. Maybe you should try a different direction.</p> <</if>> </div> <div class="choice-container"> <a class="button" data-passage="Outside">Return</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Abandoned Bunker</h2> <p> The bunker's massive metal doors stand slightly ajar, revealing only darkness within. This appears to be a military facility abandoned in haste. While it could contain valuable resources, unknown dangers might lurk inside. </p> <p> A cold draft from the dark entrance makes you shiver. Without proper equipment or weapons, exploring this place could be extremely risky. </p> </div> <div class="choice-container"> <a class="button" data-passage="Outside">Return</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>The Old Farm</h2> <p> Outside the city lies an abandoned farm with vast fields and several outbuildings. The main structure appears sturdy despite needing repairs. The surrounding land looks fertile and could yield crops with proper care. </p> <p> Someone already tried settling here - you can see attempts to reinforce the fence and clear part of the field. This place could potentially make a good survival base with some work. </p> </div> <div class="choice-container"> <a class="button" data-passage="Outside">Return</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>City Center</h2> <p> The city center is the most dangerous area, but also potentially the richest in resources. Tall buildings tower into the sky, many damaged by fires and looting. The streets are cluttered with abandoned cars and debris. </p> <p> The center contains stores, pharmacies, banks and other establishments that might hold valuable resources. However, it's also where bandit groups are most concentrated, hunting for lone survivors. </p> <<if $discovered_dominika == false or $player.dominika_status == "unknown">> <<set $discovered_dominika = true>> <div class="encounter"> <p class="danger">Suddenly, you hear footsteps behind you...</p> <a class="button danger-choice" data-passage="Dominika_Encounter">Turn around</a> </div> <<else>> <<set _chance = random(0, 99)>> <div class="choice-container"> <<if _chance < 30>> <a class="button" data-passage="Raider_Encounter">Looking for slaves</a> <<else>> <<goto "City_Center">> <</if>> </div> <div class="choice-container"> <a class="button" data-passage="Outside">Return</a> </div> <</if>> </div> </div>
<div class="scene-content"> <div class="encounter-header"> <h2>Dangerous Encounter</h2> </div> <div class="character-encounter"> <div class="encounter-image"> <img src="assets/dominika/dominika.png" alt="Dominika"> </div> <div class="encounter-text"> <p>A tall woman stands before you with a cold gaze and a weapon in hand. Her posture reveals military experience, and her eyes reflect cruelty.</p> <div class="dialog"> <p class="dominika-dialog">"Another lone wolf... Nice prey. You'll be useful in my camp."</p> </div> <p>She aims her weapon at you. Her intentions are clear - to take you as a slave. In this situation, you have no choice - you must fight.</p> </div> </div> <div class="choice-container"> <a class="button danger-choice" data-passage="Combat_Dominika">Fight</a> <a class="button" data-passage="Outside">Try to escape</a> </div> </div>
<<set $combat = { enemy_name: "Dominika", enemy_health: 70, enemy_max_health: 70, enemy_damage: 10, player_damage: $player.Weapon_damage, turn: "player" }>> <div class="scene-content"> <div class="combat-container"> <div class="combat-header"> <h2>Battle with Dominika</h2> </div> <div class="combatants"> <div class="combatant player"> <div class="combatant-info"> <h3><span class="player-name">You</span></h3> <div class="health-container"> <div class="health-bar-wrapper"> <div class="health-bar-fill" style="width: <<print Math.floor($player.health/$player.max_health*100)>>%"></div> </div> <div class="health-text"><<print $player.health>>/<<print $player.max_health>></div> </div> </div> </div> <div class="combat-vs">VS</div> <div class="combatant enemy"> <div class="combatant-info"> <h3><span class="enemy-name"><<print $combat.enemy_name>></span></h3> <div class="health-container"> <div class="health-bar-wrapper"> <div class="health-bar-fill" style="width: <<print Math.floor($combat.enemy_health/$combat.enemy_max_health*100)>>%"></div> </div> <div class="health-text"><<print $combat.enemy_health>>/<<print $combat.enemy_max_health>></div> </div> </div> </div> </div> <div class="combat-log"> <p>The battle has begun! You stand face to face with Dominika.</p> <p>What will you do?</p> </div> <div class="combat-controls"> <a class="combat-btn attack" data-passage="Combat_Attack">Attack</a> <a class="combat-btn defend" data-passage="Combat_Defend">Defend</a> <<if $player.Medkit > 0>> <a class="combat-btn heal" data-passage="Combat_Heal">Use Medkit</a> <<else>> <a class="combat-btn heal disabled">Medkit (none)</a> <</if>> </div> </div> </div> <style> .combat-container { background: rgba(0, 0, 0, 0.7); border: 1px solid var(--accent-gold); border-radius: 8px; padding: 15px; } .combat-header { text-align: center; margin-bottom: 20px; } .combat-header h2 { color: var(--accent-gold); text-shadow: 0 0 5px rgba(198, 168, 97, 0.5); margin: 0; } .combatants { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .combatant { width: 40%; } .combat-vs { font-size: 1.5em; color: var(--accent-gold); font-weight: bold; } .combatant-info h3 { text-align: center; margin: 0 0 10px 0; } .player-name { color: #4CAF50; } .enemy-name { color: #F44336; } .health-container { margin-bottom: 10px; } .health-bar-wrapper { height: 15px; background-color: rgba(0, 0, 0, 0.5); border-radius: 4px; overflow: hidden; margin-bottom: 5px; } .health-bar-fill { height: 100%; background: linear-gradient(90deg, #9c0e36, #d91a4d); transition: width 0.3s ease; } .health-text { text-align: center; font-size: 0.8em; color: var(--text-medium); } .combat-log { background: rgba(0, 0, 0, 0.5); border-radius: 6px; padding: 10px; margin-bottom: 20px; max-height: 120px; overflow-y: auto; } .combat-log p { margin: 5px 0; font-size: 0.9em; } .combat-controls { display: flex; justify-content: space-between; gap: 10px; } .combat-btn { flex: 1; padding: 8px 15px; border-radius: 4px; text-align: center; cursor: pointer; font-weight: bold; transition: all 0.2s ease; text-decoration: none; color: white; } .combat-btn.attack { background: linear-gradient(45deg, #d32f2f, #f44336); } .combat-btn.attack:hover { background: linear-gradient(45deg, #f44336, #ff5252); transform: translateY(-2px); } .combat-btn.defend { background: linear-gradient(45deg, #1976d2, #2196f3); } .combat-btn.defend:hover { background: linear-gradient(45deg, #2196f3, #42a5f5); transform: translateY(-2px); } .combat-btn.heal { background: linear-gradient(45deg, #388e3c, #4caf50); } .combat-btn.heal:hover { background: linear-gradient(45deg, #4caf50, #66bb6a); transform: translateY(-2px); } .combat-btn.disabled { background: #616161; cursor: not-allowed; opacity: 0.5; } .combat-btn.disabled:hover { transform: none; } .encounter { margin-top: 15px; padding: 10px; background: rgba(156, 14, 54, 0.1); border-radius: 6px; border-left: 3px solid var(--accent-primary); } p.danger { color: #f44336; font-weight: bold; } .character-encounter { display: flex; margin-bottom: 20px; background: rgba(0, 0, 0, 0.5); border-radius: 8px; padding: 15px; } .encounter-image { width: 120px; margin-right: 15px; } .encounter-image img { width: 100%; border-radius: 4px; } .encounter-text { flex: 1; } .dominika-dialog { color: #ff5252; font-style: italic; margin: 10px 0; padding: 10px; background: rgba(156, 14, 54, 0.1); border-radius: 6px; border-left: 3px solid var(--accent-primary); } </style>
<<if $combat.turn == "player">> <<set $combat.enemy_health = Math.max(0, $combat.enemy_health - $combat.player_damage)>> <<set $combat.turn = "enemy">> <<if $combat.enemy_health <= 0>> <<goto "Combat_Victory">> <<else>> <<goto "Combat_Enemy_Turn">> <</if>> <<else>> <<goto "Combat_Enemy_Turn">> <</if>> <style> .combat-container { background: rgba(0, 0, 0, 0.7); border: 1px solid var(--accent-gold); border-radius: 8px; padding: 15px; } .combat-header { text-align: center; margin-bottom: 20px; } .combat-header h2 { color: var(--accent-gold); text-shadow: 0 0 5px rgba(198, 168, 97, 0.5); margin: 0; } .combatants { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .combatant { width: 40%; } .combat-vs { font-size: 1.5em; color: var(--accent-gold); font-weight: bold; } .combatant-info h3 { text-align: center; margin: 0 0 10px 0; } .player-name { color: #4CAF50; } .enemy-name { color: #F44336; } .health-container { margin-bottom: 10px; } .health-bar-wrapper { height: 15px; background-color: rgba(0, 0, 0, 0.5); border-radius: 4px; overflow: hidden; margin-bottom: 5px; } .health-bar-fill { height: 100%; background: linear-gradient(90deg, #9c0e36, #d91a4d); transition: width 0.3s ease; } .health-text { text-align: center; font-size: 0.8em; color: var(--text-medium); } .combat-log { background: rgba(0, 0, 0, 0.5); border-radius: 6px; padding: 10px; margin-bottom: 20px; max-height: 120px; overflow-y: auto; } .combat-log p { margin: 5px 0; font-size: 0.9em; } .combat-controls { display: flex; justify-content: space-between; gap: 10px; } .combat-btn { flex: 1; padding: 8px 15px; border-radius: 4px; text-align: center; cursor: pointer; font-weight: bold; transition: all 0.2s ease; text-decoration: none; color: white; } .combat-btn.attack { background: linear-gradient(45deg, #d32f2f, #f44336); } .combat-btn.attack:hover { background: linear-gradient(45deg, #f44336, #ff5252); transform: translateY(-2px); } .combat-btn.defend { background: linear-gradient(45deg, #1976d2, #2196f3); } .combat-btn.defend:hover { background: linear-gradient(45deg, #2196f3, #42a5f5); transform: translateY(-2px); } .combat-btn.heal { background: linear-gradient(45deg, #388e3c, #4caf50); } .combat-btn.heal:hover { background: linear-gradient(45deg, #4caf50, #66bb6a); transform: translateY(-2px); } .combat-btn.disabled { background: #616161; cursor: not-allowed; opacity: 0.5; } .combat-btn.disabled:hover { transform: none; } .encounter { margin-top: 15px; padding: 10px; background: rgba(156, 14, 54, 0.1); border-radius: 6px; border-left: 3px solid var(--accent-primary); } p.danger { color: #f44336; font-weight: bold; } .character-encounter { display: flex; margin-bottom: 20px; background: rgba(0, 0, 0, 0.5); border-radius: 8px; padding: 15px; } .encounter-image { width: 120px; margin-right: 15px; } .encounter-image img { width: 100%; border-radius: 4px; } .encounter-text { flex: 1; } .dominika-dialog { color: #ff5252; font-style: italic; margin: 10px 0; padding: 10px; background: rgba(156, 14, 54, 0.1); border-radius: 6px; border-left: 3px solid var(--accent-primary); } </style>
<<if $combat.turn == "player">> <<set $combat.is_defending = true>> <<set $combat.turn = "enemy">> <<goto "Combat_Enemy_Turn">> <<else>> <<goto "Combat_Enemy_Turn">> <</if>> <style> .combat-container { background: rgba(0, 0, 0, 0.7); border: 1px solid var(--accent-gold); border-radius: 8px; padding: 15px; } .combat-header { text-align: center; margin-bottom: 20px; } .combat-header h2 { color: var(--accent-gold); text-shadow: 0 0 5px rgba(198, 168, 97, 0.5); margin: 0; } .combatants { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .combatant { width: 40%; } .combat-vs { font-size: 1.5em; color: var(--accent-gold); font-weight: bold; } .combatant-info h3 { text-align: center; margin: 0 0 10px 0; } .player-name { color: #4CAF50; } .enemy-name { color: #F44336; } .health-container { margin-bottom: 10px; } .health-bar-wrapper { height: 15px; background-color: rgba(0, 0, 0, 0.5); border-radius: 4px; overflow: hidden; margin-bottom: 5px; } .health-bar-fill { height: 100%; background: linear-gradient(90deg, #9c0e36, #d91a4d); transition: width 0.3s ease; } .health-text { text-align: center; font-size: 0.8em; color: var(--text-medium); } .combat-log { background: rgba(0, 0, 0, 0.5); border-radius: 6px; padding: 10px; margin-bottom: 20px; max-height: 120px; overflow-y: auto; } .combat-log p { margin: 5px 0; font-size: 0.9em; } .combat-controls { display: flex; justify-content: space-between; gap: 10px; } .combat-btn { flex: 1; padding: 8px 15px; border-radius: 4px; text-align: center; cursor: pointer; font-weight: bold; transition: all 0.2s ease; text-decoration: none; color: white; } .combat-btn.attack { background: linear-gradient(45deg, #d32f2f, #f44336); } .combat-btn.attack:hover { background: linear-gradient(45deg, #f44336, #ff5252); transform: translateY(-2px); } .combat-btn.defend { background: linear-gradient(45deg, #1976d2, #2196f3); } .combat-btn.defend:hover { background: linear-gradient(45deg, #2196f3, #42a5f5); transform: translateY(-2px); } .combat-btn.heal { background: linear-gradient(45deg, #388e3c, #4caf50); } .combat-btn.heal:hover { background: linear-gradient(45deg, #4caf50, #66bb6a); transform: translateY(-2px); } .combat-btn.disabled { background: #616161; cursor: not-allowed; opacity: 0.5; } .combat-btn.disabled:hover { transform: none; } .encounter { margin-top: 15px; padding: 10px; background: rgba(156, 14, 54, 0.1); border-radius: 6px; border-left: 3px solid var(--accent-primary); } p.danger { color: #f44336; font-weight: bold; } .character-encounter { display: flex; margin-bottom: 20px; background: rgba(0, 0, 0, 0.5); border-radius: 8px; padding: 15px; } .encounter-image { width: 120px; margin-right: 15px; } .encounter-image img { width: 100%; border-radius: 4px; } .encounter-text { flex: 1; } .dominika-dialog { color: #ff5252; font-style: italic; margin: 10px 0; padding: 10px; background: rgba(156, 14, 54, 0.1); border-radius: 6px; border-left: 3px solid var(--accent-primary); } </style>
<<if $player.game_status == 1>> <div class="status-container"> <h3 class="text-center">$player.name</h3> <<if $player.Caps >= 0>> <ul class="inventory-list"> <li class="inventory-image"> <img src="assets/icons/caps.png" alt="Caps"> <span>x <<print $player.Caps>></span> </li> </ul> <</if>> <h3 class="text-center">Population</h3> <<if $player.survivors_met >= 0>> <ul class="inventory-list"> <li class="inventory-image"> <img src="assets/icons/population.png" alt="Population"> <span>x <<print $player.survivors_met>></span> </li> </ul> <</if>> <ul> <li class="health-bar"> <span class="stat-label">Health:</span> <div class="health-bar-container"> <div class="bar-fill <<if ($player.health / $player.max_health) >= 0.7>>high<<elseif ($player.health / $player.max_health) >= 0.3>>medium<<else>>low<</if>>" style="width: <<print ($player.health / $player.max_health * 100)>>%"></div> <span class="bar-text"><<print $player.health>>/<<print $player.max_health>></span> </div> </li> <li class="stamina-bar"> <span class="stat-label">Stamina:</span> <div class="stamina-bar-container"> <div class="bar-fill <<if ($player.stamina / $player.max_stamina) >= 0.7>>high<<elseif ($player.stamina / $player.max_stamina) >= 0.3>>medium<<else>>low<</if>>" style="width: <<print ($player.stamina / $player.max_stamina * 100)>>%"></div> <span class="bar-text"><<print $player.stamina>>/<<print $player.max_stamina>></span> </div> </li> </ul> </div> <</if>> <div class="combat-controls"> <a class="combat-btn attack" data-passage="Combat_Attack">Attack</a> <a class="combat-btn defend" data-passage="Combat_Defend">Defend</a> <<if $player.Medkit > 0>> <a class="combat-btn heal" data-passage="Combat_Heal">Use Medkit</a> <<else>> <a class="combat-btn heal disabled">Medkit (none)</a> <</if>> </div> <<if $combat.turn == "player">> <<if $player.Medkit > 0>> <<set $player.Medkit -= 1>> <<set $player.health = Math.min($player.max_health, $player.health + 50)>> <<set $combat.turn = "enemy">> <<goto "Combat_Enemy_Turn">> <<else>> <<goto "Combat_Dominika">> <</if>> <<else>> <<goto "Combat_Enemy_Turn">> <</if>> <style> .combat-container { background: rgba(0, 0, 0, 0.7); border: 1px solid var(--accent-gold); border-radius: 8px; padding: 15px; } .combat-header { text-align: center; margin-bottom: 20px; } .combat-header h2 { color: var(--accent-gold); text-shadow: 0 0 5px rgba(198, 168, 97, 0.5); margin: 0; } .combatants { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .combatant { width: 40%; } .combat-vs { font-size: 1.5em; color: var(--accent-gold); font-weight: bold; } .combatant-info h3 { text-align: center; margin: 0 0 10px 0; } .player-name { color: #4CAF50; } .enemy-name { color: #F44336; } .health-container { margin-bottom: 10px; } .health-bar-wrapper { height: 15px; background-color: rgba(0, 0, 0, 0.5); border-radius: 4px; overflow: hidden; margin-bottom: 5px; } .health-bar-fill { height: 100%; background: linear-gradient(90deg, #9c0e36, #d91a4d); transition: width 0.3s ease; } .health-text { text-align: center; font-size: 0.8em; color: var(--text-medium); } .combat-log { background: rgba(0, 0, 0, 0.5); border-radius: 6px; padding: 10px; margin-bottom: 20px; max-height: 120px; overflow-y: auto; } .combat-log p { margin: 5px 0; font-size: 0.9em; } .combat-controls { display: flex; justify-content: space-between; gap: 10px; } .combat-btn { flex: 1; padding: 8px 15px; border-radius: 4px; text-align: center; cursor: pointer; font-weight: bold; transition: all 0.2s ease; text-decoration: none; color: white; } .combat-btn.attack { background: linear-gradient(45deg, #d32f2f, #f44336); } .combat-btn.attack:hover { background: linear-gradient(45deg, #f44336, #ff5252); transform: translateY(-2px); } .combat-btn.defend { background: linear-gradient(45deg, #1976d2, #2196f3); } .combat-btn.defend:hover { background: linear-gradient(45deg, #2196f3, #42a5f5); transform: translateY(-2px); } .combat-btn.heal { background: linear-gradient(45deg, #388e3c, #4caf50); } .combat-btn.heal:hover { background: linear-gradient(45deg, #4caf50, #66bb6a); transform: translateY(-2px); } .combat-btn.disabled { background: #616161; cursor: not-allowed; opacity: 0.5; } .combat-btn.disabled:hover { transform: none; } .encounter { margin-top: 15px; padding: 10px; background: rgba(156, 14, 54, 0.1); border-radius: 6px; border-left: 3px solid var(--accent-primary); } p.danger { color: #f44336; font-weight: bold; } .character-encounter { display: flex; margin-bottom: 20px; background: rgba(0, 0, 0, 0.5); border-radius: 8px; padding: 15px; } .encounter-image { width: 120px; margin-right: 15px; } .encounter-image img { width: 100%; border-radius: 4px; } .encounter-text { flex: 1; } .dominika-dialog { color: #ff5252; font-style: italic; margin: 10px 0; padding: 10px; background: rgba(156, 14, 54, 0.1); border-radius: 6px; border-left: 3px solid var(--accent-primary); } </style>
<div class="scene-content"> <div class="combat-container"> <div class="combat-header"> <h2>Battle</h2> </div> <div class="combatants"> <div class="combatant player"> <div class="combatant-info"> <h3><span class="player-name">You</span></h3> <div class="health-container"> <div class="health-bar-wrapper"> <div class="health-bar-fill" style="width: <<print Math.floor($player.health/$player.max_health*100)>>%"></div> </div> <div class="health-text"><<print $player.health>>/<<print $player.max_health>></div> </div> </div> </div> <div class="combat-vs">VS</div> <div class="combatant enemy"> <div class="combatant-info"> <h3><span class="enemy-name"><<print $combat.enemy_name>></span></h3> <div class="health-container"> <div class="health-bar-wrapper"> <div class="health-bar-fill" style="width: <<print Math.floor($combat.enemy_health/$combat.enemy_max_health*100)>>%"></div> </div> <div class="health-text"><<print $combat.enemy_health>>/<<print $combat.enemy_max_health>></div> </div> </div> </div> </div> <div class="combat-log"> <<if $combat.turn == "enemy">> <<if $combat.is_defending>> <<set _damage = Math.floor($combat.enemy_damage / 2)>> <<set $player.health = Math.max(0, $player.health - _damage)>> <<set $combat.is_defending = false>> <p>You defend! Dominika deals <<print _damage>> damage.</p> <<else>> <<set $player.health = Math.max(0, $player.health - $combat.enemy_damage)>> <p>Enemy attacks and deals <<print $combat.enemy_damage>> damage!</p> <</if>> <<if $player.health <= 0>> <p>Critical hit! You can no longer continue the fight...</p> <<else>> <p>Now it's your turn.</p> <</if>> <</if>> </div> <<if $player.health <= 0>> <div class="combat-controls"> <a class="combat-btn attack" data-passage="Combat_Defeat">Continue</a> </div> <<else>> <<set $combat.turn = "player">> <div class="combat-controls"> <a class="combat-btn attack" data-passage="Combat_Attack">Attack</a> <a class="combat-btn defend" data-passage="Combat_Defend">Defend</a> <<if $player.Medkit > 0>> <a class="combat-btn heal" data-passage="Combat_Heal">Use Medkit</a> <<else>> <a class="combat-btn heal disabled">Medkit (none)</a> <</if>> </div> <</if>> </div> </div> <style> .combat-container { background: rgba(0, 0, 0, 0.7); border: 1px solid var(--accent-gold); border-radius: 8px; padding: 15px; } .combat-header { text-align: center; margin-bottom: 20px; } .combat-header h2 { color: var(--accent-gold); text-shadow: 0 0 5px rgba(198, 168, 97, 0.5); margin: 0; } .combatants { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .combatant { width: 40%; } .combat-vs { font-size: 1.5em; color: var(--accent-gold); font-weight: bold; } .combatant-info h3 { text-align: center; margin: 0 0 10px 0; } .player-name { color: #4CAF50; } .enemy-name { color: #F44336; } .health-container { margin-bottom: 10px; } .health-bar-wrapper { height: 15px; background-color: rgba(0, 0, 0, 0.5); border-radius: 4px; overflow: hidden; margin-bottom: 5px; } .health-bar-fill { height: 100%; background: linear-gradient(90deg, #9c0e36, #d91a4d); transition: width 0.3s ease; } .health-text { text-align: center; font-size: 0.8em; color: var(--text-medium); } .combat-log { background: rgba(0, 0, 0, 0.5); border-radius: 6px; padding: 10px; margin-bottom: 20px; max-height: 120px; overflow-y: auto; } .combat-log p { margin: 5px 0; font-size: 0.9em; } .combat-controls { display: flex; justify-content: space-between; gap: 10px; } .combat-btn { flex: 1; padding: 8px 15px; border-radius: 4px; text-align: center; cursor: pointer; font-weight: bold; transition: all 0.2s ease; text-decoration: none; color: white; } .combat-btn.attack { background: linear-gradient(45deg, #d32f2f, #f44336); } .combat-btn.attack:hover { background: linear-gradient(45deg, #f44336, #ff5252); transform: translateY(-2px); } .combat-btn.defend { background: linear-gradient(45deg, #1976d2, #2196f3); } .combat-btn.defend:hover { background: linear-gradient(45deg, #2196f3, #42a5f5); transform: translateY(-2px); } .combat-btn.heal { background: linear-gradient(45deg, #388e3c, #4caf50); } .combat-btn.heal:hover { background: linear-gradient(45deg, #4caf50, #66bb6a); transform: translateY(-2px); } .combat-btn.disabled { background: #616161; cursor: not-allowed; opacity: 0.5; } .combat-btn.disabled:hover { transform: none; } .encounter { margin-top: 15px; padding: 10px; background: rgba(156, 14, 54, 0.1); border-radius: 6px; border-left: 3px solid var(--accent-primary); } p.danger { color: #f44336; font-weight: bold; } .character-encounter { display: flex; margin-bottom: 20px; background: rgba(0, 0, 0, 0.5); border-radius: 8px; padding: 15px; } .encounter-image { width: 120px; margin-right: 15px; } .encounter-image img { width: 100%; border-radius: 4px; } .encounter-text { flex: 1; } .dominika-dialog { color: #ff5252; font-style: italic; margin: 10px 0; padding: 10px; background: rgba(156, 14, 54, 0.1); border-radius: 6px; border-left: 3px solid var(--accent-primary); } </style>
<div class="scene-content"> <<if $combat.enemy_name == "Dominika">> <div class="combat-result victory"> <h2>Victory!</h2> <p>You have defeated Dominika. She lies before you, breathing heavily. Her weapon is cast aside, and she no longer poses a threat.</p> <p>What will you do with her?</p> <div class="choice-container"> <a class="button dark-choice" data-passage="Dominika_Enslave">Make her a slave</a> <a class="button danger-choice" data-passage="Dominika_Kill">Kill her</a> </div> </div> <</if>> <<if $combat.enemy_name == "Raider">> <div class="combat-result victory"> <h2>Victory!</h2> <p>You have won and now the defeated raider is your trophy.</p> <p>What will you do with her?</p> <div class="choice-container"> <a class="button dark-choice" data-passage="Raider_Enslave">Make her a slave</a> <a class="button danger-choice" data-passage="Raider_Kill">Kill her</a> </div> </div> <</if>> </div> <style> .combat-result { padding: 20px; border-radius: 8px; background-color: rgba(0, 0, 0, 0.7); margin-bottom: 20px; } .combat-result.victory { border: 2px solid #4CAF50; } .combat-result.defeat { border: 2px solid #F44336; } .combat-result h2 { text-align: center; margin-top: 0; } .victory h2 { color: #4CAF50; } .defeat h2 { color: #F44336; } </style>
<div class="scene-content"> <<if $combat.enemy_name = "Dominika">> <div class="combat-result defeat"> <h2>Defeat...</h2> <p>You lose consciousness under Dominika's blows. The last thing you remember is her triumphant smile.</p> <p>When you come to, you realize that your hands and feet are bound, and there is some kind of collar around your neck. You have lost... and now you are Dominika's slave.</p> </div> <</if>> <div class="game-over"> <h3>GAME OVER</h3> </div> </div> <style> .game-over { text-align: center; margin-top: 30px; } .game-over h3 { color: var(--accent-secondary); font-size: 1.5em; margin: 0 0 15px 0; } </style>
<div class="scene-content"> <div class="scene-text"> <h2>Subjugating Dominika</h2> <p> "Kneel," you command, weapon at the ready. Dominika weakly falls to her knees, looking at you with hatred and helplessness. </p> <<set $player.dominika_status = "slave">> <<set $player.survivors_met ++>> <p> "Now you are my slave," you say, binding her hands. "And you will believe your own fate..." </p> </div> <div class="choice-container"> <a class="button dark-choice" data-passage="Dominika_Service">Secure the subjugation</a> <a class="button" data-passage="House_Life">Take her home</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Execution of Dominika</h2> <p> You decide not to give her a chance. In this world, there is no place for mercy. A quick, decisive strike - and it's all over. </p> <<set $player.dominika_status = "dead_outside">> <p> You search her belongings and find some useful supplies. </p> <div class="loot"> <h3>Found:</h3> <ul> <<set $player.Canned_Food += 5>> <<set $player.Medkit ++>> <<set $player.Knife ++>> <li>Canned food (5 unit)</li> <li>Medkit (2 unit)</li> <li>Knife (1 unit)</li> </ul> </div> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return home</a> </div> </div> <style> .loot { background: rgba(0, 0, 0, 0.5); border: 1px solid var(--accent-gold); border-radius: 6px; padding: 10px; margin: 15px 0; } .loot h3 { color: var(--accent-gold); margin-top: 0; margin-bottom: 10px; font-size: 1em; } .loot ul { margin: 0; padding-left: 20px; } .loot li { color: #ffffff; margin-bottom: 5px; } </style>
<<if $player.stamina < 10>> <div class="scene-content"> <div class="warning-message">You do not have enough stamina for sexual actions!</div> <div class="choice-container"> <a class="button back-btn" data-passage="Dominika_Interact">← Back</a> </div> </div> <<else>> <div class="scene-content"> <div class="scene-text"> <p> Dominique obediently waits for your orders, ready to fulfill any of your desires. </p> </div> <div class="video-container"> <video id="dominikaServiceVideo" class="scene-video" autoplay muted loop playsinline> <source src="assets/dominika/blowjob (1).webm" type="video/webm"> </video> </div> <div class="service-menu"> <div class="menu-title">Choose an action:</div> <div class="service-buttons"> <center> <a class="service-btn" id="dominikaBlowjobBtn">Blowjob</a> <a class="service-btn" id="dominikaVaginalBtn">Vaginal</a> <a class="service-btn" id="dominikaAnalBtn">Anal</a> <a class="service-btn" id="dominikaCumBtn">Finish</a> </center> </div> <a class="button back-btn" data-passage="House_Life">← Finish</a> </div> <<script>> $(document).ready(function() { const dominikaVideos = { blowjob: [ 'assets/dominika/blowjob (1).webm', 'assets/dominika/blowjob (2).webm', 'assets/dominika/blowjob (3).webm', 'assets/dominika/blowjob (4).webm', 'assets/dominika/blowjob (5).webm', 'assets/dominika/blowjob (6).webm', 'assets/dominika/blowjob (7).webm', 'assets/dominika/blowjob (8).webm', 'assets/dominika/blowjob (9).webm' ], vaginal: [ 'assets/dominika/vaginal (1).webm', 'assets/dominika/vaginal (2).webm', 'assets/dominika/vaginal (3).webm', 'assets/dominika/vaginal (4).webm', 'assets/dominika/vaginal (5).webm', 'assets/dominika/vaginal (6).webm', 'assets/dominika/vaginal (7).webm', 'assets/dominika/vaginal (8).webm', 'assets/dominika/vaginal (9).webm', 'assets/dominika/vaginal (10).webm', 'assets/dominika/vaginal (11).webm', 'assets/dominika/vaginal (12).webm' ], anal: [ 'assets/dominika/anal (1).webm', 'assets/dominika/anal (2).webm' ], cum: [ 'assets/dominika/cum.webm' ] }; function getRandomVideo(category) { const videos = dominikaVideos[category]; return videos[Math.floor(Math.random() * videos.length)]; } function changeVideo(type) { const video = document.getElementById('dominikaServiceVideo'); if (video) { const newSrc = getRandomVideo(type); if (video.src !== newSrc) { video.src = newSrc; video.play().catch(function(error) { console.log("Autoplay error:", error); }); } } // Update player stats with minimum check State.variables.player.stamina = Math.max(0, State.variables.player.stamina - 10); // Refresh stats display $(document).trigger(':refresh'); } // Add event handlers for buttons $('#dominikaBlowjobBtn').on('click', function() { changeVideo('blowjob'); }); $('#dominikaVaginalBtn').on('click', function() { changeVideo('vaginal'); }); $('#dominikaAnalBtn').on('click', function() { changeVideo('anal'); }); $('#dominikaCumBtn').on('click', function() { changeVideo('cum'); }); // Add click handler for video to toggle mute $('#dominikaServiceVideo').on('click', function() { this.muted = !this.muted; }); }); <</script>> <</if>>
<div class="scene-content"> <div class="scene-text"> <h2>Survivor Settlement</h2> <p> On the outskirts of the city, a small settlement of several dozen people has formed. They've built defensive structures from scavenged materials and organized a survival system. From a distance, you can spot guards stationed on makeshift watchtowers. </p> <p> It's unclear whether they'll be friendly to newcomers. Some similar communities trade with travelers, while others shoot strangers on sight. You should be cautious. </p> </div> <div class="choice-container"> <div class="locations-grid"> <a class="location-btn" data-passage="Market"> <div class="location-icon">🛒</div> <span>Market</span> </a> <a class="location-btn" data-passage="Slave_Market"> <div class="location-icon">⛓️</div> <span>Slave Market</span> </a> <a class="location-btn" data-passage="Bar"> <div class="location-icon">🍻</div> <span>Bar</span> </a> <a class="location-btn" data-passage="Administration"> <div class="location-icon">🏛️</div> <span>Administration</span> </a> <a class="location-btn" data-passage="Mary"> <div class="location-icon">👩</div> <span>Mary's Place</span> </a> <a class="location-btn" data-passage="ResidentialDistrict"> <div class="location-icon">🏘️</div> <span>Residential District</span> </a> </div> </div> <div class="choice-container"> <a class="button back-btn" data-passage="Outside">← Return</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Scavenging for Supplies</h2> <<set $player.first_search = true>> <<set $player.stamina = Math.max(0, $player.stamina - 10)>> <p> Suddenly, you hear a cry for help coming from the direction of an abandoned supermarket. </p> </div> <div class="choice-container"> <a class="button dark-choice" data-passage="Alex_Event">Investigate the scream</a> <a class="button" data-passage="Ignore_Scream">Ignore it</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Search Results</h2> <<set $player.stamina = Math.max(0, $player.stamina - 10)>> <<if $found_food>> <<set $food_found = random(1, 4)>> <p class="success">You found <<print $food_found>> can<<print $food_found === 1 ? "" : "s">> of food!</p> <<set $player.Canned_Food += $food_found>> <<run console.log("Added food. Total now:", $player.Canned_Food)>> <</if>> <<if $found_meds>> <<set $meds_found = random(0, 2)>> <<if $meds_found gt 0>> <p class="success">You found <<print $meds_found>> first aid kit<<print $meds_found === 1 ? "" : "s">>!</p> <<set $player.Medkit += $meds_found>> <<run console.log("Added medkits. Total now:", $player.Medkit)>> <<else>> <p>You found an empty first aid kit.</p> <</if>> <</if>> <<if !$found_food and !$found_meds>> <p>Unfortunately, you didn't find anything this time.</p> <</if>> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Encounter with Alex</h2> <p> Deep in the supermarket, you find a young girl trapped between the shelves. She looks exhausted and frightened. </p> <p> "Please, help me! I haven't eaten or drunk anything for two days... I'll do anything, just get me out of here!" </p> </div> <div class="choice-container"> <a class="button dark-choice" data-passage="Alex_Enslave">Offer to make her a slave</a> <a class="button" data-passage="Alex_Help">Help her</a> <a class="button" data-passage="Alex_Leave">Leave her to die</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Helping Alex</h2> <p> You help the girl get free. She introduces herself as Alex and explains that she lost her group a few days ago. </p> <p> "I... I'm not sure I can survive on my own. Can... can I come with you?" </p> </div> <div class="choice-container"> <a class="button dark-choice" data-passage="Alex_Accept">Accept her</a> <a class="button" data-passage="Alex_Reject">Refuse</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Enslaving Alex</h2> <<set $player.alex_status = "slave">> <<set $player.survivors_met ++>> <p> You offer her to become your slave in exchange for food and shelter. Tears well up in her eyes,but she agrees. </p> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return home</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Accepting Alex</h2> <<set $player.alex_status = "ally">> <<set $player.survivors_met ++>> <p> You agree to take her with you. Alex smiles gratefully and promises to be helpful. </p> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return home</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Rejecting Alex</h2> <<set $player.alex_status = "rejected">> <p> You refuse her. Alex looks heartbroken but nods in understanding and walks away. </p> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return home</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Fate of Alex</h2> <<set $player.alex_status = "dead">> <p> You decide to leave her to her fate. Her cries for help gradually fade into the distance... </p> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return home</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Ignoring the Scream</h2> <<set $player.alex_status = "ignored">> <p> You decide not to take the risk and ignore the scream. Who knows what it could have been... </p> </div> <div class="choice-container"> <a class="button" data-passage="Outside">Return</a> </div> </div>
<div class="scene-content"> <div class="character-card"> <div class="character-image"> <img src="assets/alex/alex.png" alt="Alex"> </div> <div class="character-info"> <h3>Alex</h3> <p>Status: <<if $player.alex_status == "slave">>Slave<<else>>Ally<</if>></p> <<if $player.alex_work == "scavenging">> <p class="work-status">Current task: Scavenging for supplies</p> <</if>> </div> </div> <div class="interaction-menu"> <a class="button light-choice" data-passage="Alex_Talk_Menu">Talk</a> <<if $player.alex_status == "slave" && $player.alex_work != "scavenging">> <a class="button dark-choice" data-passage="Alex_Service">Have sex</a> <</if>> <a class="button neutral-choice" data-passage="Alex_Work">Assign a task</a> <a class="button back-btn" data-passage="House_Life">← Back</a> </div> </div>
<<if $player.stamina < 10>> <div class="scene-content"> <div class="warning-message">You do not have enough stamina for sexual actions!</div> <div class="choice-container"> <a class="button back-btn" data-passage="Luna_Interact">← Back</a> </div> </div> <<else>> <div class="scene-content"> <div class="scene-text"> <p> <<if $player.luna_status == "slave">> Luna obediently waits for your orders, ready to fulfill any of your desires. <<elseif $player.luna_status == "ally">> Luna is happy to please her saviors. <</if>> </p> </div> <div class="video-container"> <video id="lunaServiceVideo" class="scene-video" autoplay muted loop playsinline> <source src="assets/luna/blowjob.webm" type="video/webm"> </video> </div> <div class="service-menu"> <div class="menu-title">Choose an action:</div> <div class="service-buttons"> <center> <a class="service-btn" id="lunaBlowjobBtn">Blowjob</a> <a class="service-btn" id="lunaVaginalBtn">Vaginal</a> <a class="service-btn" id="lunaAnalBtn">Anal</a> <a class="service-btn" id="lunaCumBtn">Finish</a> </center> </div> <a class="button back-btn" data-passage="Luna_Interact">← Back</a> </div> </div> <<script>> $(document).ready(function() { const lunaVideos = { blowjob: [ 'assets/luna/blowjob.webm', 'assets/luna/blowjob_2.webm', 'assets/luna/blowjob_3.webm', 'assets/luna/blowjob_4.webm', 'assets/luna/blowjob_5.webm', 'assets/luna/blowjob_6.webm', 'assets/luna/blowjob_7.webm', 'assets/luna/blowjob_8.webm', 'assets/luna/blowjob_dominance.webm' ], vaginal: [ 'assets/luna/vaginal (1).webm', 'assets/luna/vaginal (2).webm', 'assets/luna/vaginal (3).webm', 'assets/luna/vaginal (4).webm', 'assets/luna/vaginal (5).webm', 'assets/luna/vaginal (6).webm', 'assets/luna/vaginal (7).webm', 'assets/luna/vaginal (8).webm', 'assets/luna/vaginal (9).webm', 'assets/luna/vaginal (10).webm' ], anal: [ 'assets/luna/anal (1).webm', 'assets/luna/anal (2).webm' ], cum: [ 'assets/luna/cum.webm' ] }; function getRandomVideo(category) { const videos = lunaVideos[category]; return videos[Math.floor(Math.random() * videos.length)]; } function changeVideo(type) { const video = document.getElementById('lunaServiceVideo'); if (video) { const newSrc = getRandomVideo(type); if (video.src !== newSrc) { video.src = newSrc; video.play().catch(function(error) { console.log("Autoplay error:", error); }); } } // Update player stats with minimum check State.variables.player.stamina = Math.max(0, State.variables.player.stamina - 10); // Refresh stats display $(document).trigger(':refresh'); } // Add event handlers for buttons $('#lunaBlowjobBtn').on('click', function() { changeVideo('blowjob'); }); $('#lunaVaginalBtn').on('click', function() { changeVideo('vaginal'); }); $('#lunaAnalBtn').on('click', function() { changeVideo('anal'); }); $('#lunaCumBtn').on('click', function() { changeVideo('cum'); }); // Add click handler for video to toggle mute $('#lunaServiceVideo').on('click', function() { this.muted = !this.muted; }); }); <</script>> <</if>>
<div class="scene-content"> <div class="scene-text"> <h2>Rest</h2> <p> You decide to rest and recover your strength. The day comes to an end... </p> <<set $player.stamina = $player.max_stamina>> <<set $player.health = $player.max_health>> <<set $player.days_survived += 1>> <div class="status-update"> <h3>Status Update:</h3> <ul> <li class="success">Energy fully restored!</li> <li class="success">Health fully restored!</li> <!-- COOKING WORK --> <<set _cooking = 0>> <<if $player.luna_work == "Cooking" and $player.Raw_meat > 0 >> <<set $player.Raw_meat -= 1>> <<set _cooking += 2>> <</if>> <<if $player.alex_work == "Cooking" and $player.Raw_meat > 0 >> <<set $player.Raw_meat -= 1>> <<set _cooking += 2>> <</if>> <<if $player.dominica_work == "Cooking" and $player.Raw_meat > 0 >> <<set $player.Raw_meat -= 1>> <<set _cooking += 2>> <</if>> <<if _cooking > 0>> <li>Cooks produce: <<print _cooking>> food.</li> <<set $player.Canned_Food += _cooking>> <</if>> <<set $player.Food_consumed = Math.min($player.survivors_met, $player.Canned_Food)>> <<set $player.Canned_Food -= $player.Food_consumed>> <li>Food consumed: <<print $player.Food_consumed>> <<if $player.Canned_Food < 0>><<set $player.Canned_Food = 0>><</if>></li> <<if $player.luna_status == "starving">><h4>Luna is starving!</h4> <</if>> <<if $player.alex_status == "starving">><h4>Alex is starving!</h4> <</if>> <<if $player.dominika_status == "starving">><h4>Dominika is starving!</h4> <</if>> <li>Another day has passed...</li> <<if $player.alex_work == "scavenging">> <<set _chance = random(1, 100)>> <<if _chance <= 25>> <<set $player.Canned_Food = ($player.Canned_Food || 0) + 1>> <li class="success">Alex found some canned food!</li> <</if>> <<if _chance <= 5>> <<set $player.Medkit = ($player.Medkit || 0) + 1>> <li class="success">Alex found medical supplies!</li> <</if>> <</if>> <<if $player.luna_work == "scavenging">> <<set _chance_luna = random(1, 100)>> <<if _chance_luna <= 25>> <<set $player.Canned_Food = ($player.Canned_Food || 0) + 1>> <li class="success">Luna found some canned food!</li> <</if>> <<if _chance_luna <= 5>> <<set $player.Medkit = ($player.Medkit || 0) + 1>> <li class="success">Luna found medical supplies!</li> <</if>> <</if>> <<if $player.dominika_work == "scavenging">> <<set _chance = random(1, 100)>> <<if _chance <= 25>> <<set $player.Canned_Food = ($player.Canned_Food || 0) + 1>> <li class="success">Dominika found some canned food!</li> <</if>> <<if _chance <= 5>> <<set $player.Medkit = ($player.Medkit || 0) + 1>> <li class="success">Dominika found medical supplies!</li> <</if>> <</if>> </ul> </div> </div> <!-- STARVATION SYSTEM --> <<if $player.survivors_met > 0>> <<if $player.Canned_Food < $player.survivors_met>> <!-- Збереження початкових статусів при першому голодуванні --> <<if !$player.has_starving_status>> <<set $player.has_starving_status = true>> <<set $player.luna_status_before = ($player.luna_status == "ally" ? "ally" : "slave")>> <<set $player.alex_status_before = ($player.alex_status == "ally" ? "ally" : "slave")>> <<set $player.dominika_status_before = ($player.dominika_status == "ally" ? "ally" : "slave")>> <</if>> <!-- Переведення в стан голодування --> <<if $player.survivors_met > $player.Canned_Food and $player.luna_status == "slave" or $player.luna_status == "ally">> <<set $player.luna_status = "starving">> <</if>> <<if $player.survivors_met > $player.Canned_Food and $player.alex_status == "slave" or $player.alex_status == "ally">> <<set $player.alex_status = "starving">> <</if>> <<if $player.survivors_met > $player.Canned_Food and $player.dominika_status == "slave" or $player.dominika_status == "ally">> <<set $player.dominika_status = "starving">> <</if>> <<else>> <!-- Відновлення статусів (тільки slave або ally) --> <<if $player.has_starving_status>> <<if $player.luna_status == "starving">> <<set $player.luna_status = $player.luna_status_before>> <</if>> <<if $player.alex_status == "starving">> <<set $player.alex_status = $player.alex_status_before>> <</if>> <<if $player.dominika_status == "starving">> <<set $player.dominika_status = $player.dominika_status_before>> <</if>> <<set $player.has_starving_status = false>> <</if>> <</if>> <</if>> <div class="choice-container"> <a class="button dark-choice" data-passage="House_Life">Wake Up</a> </div> </div>
<div class="scene-content"> <div class="dialog-container"> <<if $player.luna_status == "slave">> <p class="narrator-text">Luna lowers her gaze, her voice trembling with memories.</p> <</if>> <div class="luna-dialog"> <p>"Before the apocalypse, I was a medical student. I dreamed of becoming a surgeon... I had a family, friends, plans for the future. But when the epidemic started, everything changed. My father was among the first to die, and my mother... she couldn't bear it and took her own life."</p> <p>"I was left alone. I had to learn to survive, to steal, to hide. For three months I wandered the city, searching for a safe place. And now... now I'm here."</p> </div> </div> <div class="choice-container"> <a class="button neutral-choice" data-passage="Luna_Talk_Menu">Return to conversation</a> </div> </div>
<div class="scene-content"> <div class="dialog-container"> <div class="luna-dialog"> <<if $player.luna_status == "slave">> <p class="narrator-text">Luna nervously fidgets with the hem of her clothing.</p> <p>"I... I've accepted my fate. Maybe this is better than starving or being killed by bandits. At least here I have a roof over my head and food. And... and you, master."</p> <p>"Thank you for giving me shelter. I'm still afraid that one day I'll wake up and find this was all a dream. That I'm back alone on the city streets. But for now... for now I feel safe."</p> <<elseif $player.luna_status == "ally">> <p class="narrator-text">Luna replies in a calm tone.</p> <p>"I'm okay, I'm glad you didn't kill me, that's usually what most survivors do when they have uninvited guests in their shelter, so I guess I'm just grateful to you and I think together we have a better chance of surviving."</p> <</if>> </div> </div> <div class="choice-container"> <a class="button neutral-choice" data-passage="Luna_Talk_Menu">Return to conversation</a> </div> </div>
<div class="scene-content"> <div class="dialog-container"> <<if $player.alex_status == "ally">> <p class="narrator-text">Alex looks at you with gratitude and a hint of concern.</p> <div class="alex-dialog"> <p>"Really? What do you want to know?"</p> </div> <<elseif $player.alex_status == "slave">> <p class="narrator-text">Alex looks down when you look at her</p> <div class="alex-dialog"> <p>"Yes, master?"</p> </div> <</if>> <div class="dialog-options"> <a class="button light-choice" data-passage="Alex_Past">Ask about her past</a> <a class="button light-choice" data-passage="Alex_Feelings">Ask about her feelings</a> <a class="button neutral-choice" data-passage="Alex_Interact">End the conversation</a> </div> </div> </div>
<div class="scene-content"> <div class="dialog-container"> <p class="narrator-text">Alex takes a deep breath, gathering her thoughts.</p> <div class="alex-dialog"> <p>"I worked in the police, I was a detective. When the epidemic started, we tried to maintain order, help people... But the system quickly fell apart. My colleagues became fewer and fewer."</p> <p>"In the last few months, I was part of a group of survivors. We stuck together, protected each other. But a week ago, we were attacked by bandits. I was the only one who managed to escape... And if it weren't for you, I wouldn't have survived in that supermarket."</p> </div> </div> <div class="choice-container"> <a class="button neutral-choice" data-passage="Alex_Talk_Menu">Return to the conversation</a> </div> </div>
<div class="scene-content"> <div class="dialog-container"> <p class="narrator-text">Alex pauses for a moment, searching for the right words.</p> <div class="alex-dialog"> <<if $player.alex_status == "enslaved">> <p>"Honestly? I never thought I would end up in this position. But... it's strange to admit, I feel a certain... safety. Although the price for it is high. At least I know I'll survive until tomorrow."</p> <<else>> <p>"I need time to recover from everything that has happened. Losing my group was hard... But I'm grateful for your help and shelter. I hope I can be useful."</p> <</if>> </div> </div> <div class="choice-container"> <a class="button neutral-choice" data-passage="Alex_Talk_Menu">Return to the conversation</a> </div> </div>
<div class="scene-content"> <div class="work-menu"> <h3>Choose a task for Luna:</h3> <<if $player.luna_work != "none">> <div class="current-task"> <p>Current task: <<print $player.luna_work>></p> <a class="button danger-choice" data-passage="Luna_Cancel_Work">Cancel task</a> </div> <<else>> <div class="work-options"> <a class="button neutral-choice" data-passage="Luna_Start_Scavenging">Start scavenging</a> </div> <div class="work-options"> <a class="button neutral-choice" data-passage="Luna_Сooks">Cooking</a> </div> <</if>> <a class="button" data-passage="Luna_Interact">Return</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p>You send Luna to scavenge for supplies in the city. You see fear in her eyes, but she does not dare to refuse.</p> <<set $player.luna_work = "scavenging">> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return to the house</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p>You recall Luna from her task. She returns home with relief.</p> <<set $player.luna_work = "none">> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return to the house</a> </div> </div>
<div class="scene-content"> <div class="character-card"> <div class="character-image"> <img src="assets/luna/luna.png" alt="Luna"> </div> <div class="character-info"> <h3>Luna</h3> <p>Status: <<if $player.luna_status == "slave">>Slave<<else>>Ally<</if>></p> <<if $player.luna_work == "scavenging">> <p class="work-status">Current task: Scavenging for supplies</p> <</if>> </div> </div> <div class="interaction-menu"> <a class="button light-choice" data-passage="Luna_Talk_Menu">Talk</a> <<if $player.luna_work != "scavenging">> <a class="button dark-choice" data-passage="Luna_Service">Have sex</a> <</if>> <a class="button neutral-choice" data-passage="Luna_Work">Assign a task</a> <a class="button back-btn" data-passage="House_Life">← Back</a> </div> </div>
<div class="inventory-panel"> <h2>Inventory</h2> <!-- Інвентар --> <ul class="inventory-list"> <<if $player.Caps > 0>> <li class="inventory-image"> <img src="assets/icons/caps.png" alt="Caps"> Caps <span>x <<= $player.Caps >></span> </li> <</if>> <<if $player.Raw_meat > 0>> <li class="inventory-image"> <img src="assets/icons/Raw_meat.png" alt="Raw_meat"> Raw meat <span>x <<= $player.Raw_meat >></span> </li> <</if>> <<if $player.Canned_Food > 0>> <li class="inventory-image"> <img src="assets/icons/canned_food.png" alt="Canned Food"> Canned Food <span>x <<= $player.Canned_Food >></span> </li> <</if>> <<if $player.Medkit > 0>> <li class="inventory-image"> <img src="assets/icons/medkit.png" alt="Medkit"> Medkit <span>x <<= $player.Medkit >></span> </li> <</if>> <!-- Pistol --> <<if $player.Pistol > 0>> <li class="inventory-image"> <img src="assets/icons/pistol.png" alt="Pistol"> Pistol <span>x <<= $player.Pistol >></span> <<link "Equip">> <<if $player.Weapon_status != "Pistol">> <!-- Додано перевірку --> <<if $player.Weapon_status != "none">> <<set $player[$player.Weapon_status] += 1>> <</if>> <<set $player.Pistol -= 1>> <</if>> <<set $player.Weapon_status = "Pistol">> <<set $player.Weapon_damage = 10>> <<goto "Inventory">> <</link>> </li> <</if>> <!-- Shotgun --> <<if $player.Shotgun > 0>> <li class="inventory-image"> <img src="assets/icons/shotgun.png" alt="Shotgun"> Shotgun <span>x <<= $player.Shotgun >></span> <<link "Equip">> <<if $player.Weapon_status != "Shotgun">> <!-- Додано перевірку --> <<if $player.Weapon_status != "none">> <<set $player[$player.Weapon_status] += 1>> <</if>> <<set $player.Shotgun -= 1>> <</if>> <<set $player.Weapon_status = "Shotgun">> <<set $player.Weapon_damage = 30>> <<goto "Inventory">> <</link>> </li> <</if>> <!-- Wrench --> <<if $player.Wrench > 0>> <li class="inventory-image"> <img src="assets/icons/wrench.png" alt="Wrench"> Wrench <span>x <<= $player.Wrench >></span> <<link "Equip">> <<if $player.Weapon_status != "Wrench">> <!-- Додано перевірку --> <<if $player.Weapon_status != "none">> <<set $player[$player.Weapon_status] += 1>> <</if>> <<set $player.Wrench -= 1>> <</if>> <<set $player.Weapon_status = "Wrench">> <<set $player.Weapon_damage = 4>> <<goto "Inventory">> <</link>> </li> <</if>> <!-- Knife --> <<if $player.Knife > 0>> <li class="inventory-image"> <img src="assets/icons/knife.png" alt="Knife"> Knife <span>x <<= $player.Knife >></span> <<link "Equip">> <<if $player.Weapon_status != "Knife">> <!-- Додано перевірку --> <<if $player.Weapon_status != "none">> <<set $player[$player.Weapon_status] += 1>> <</if>> <<set $player.Knife -= 1>> <</if>> <<set $player.Weapon_status = "Knife">> <<set $player.Weapon_damage = 8>> <<goto "Inventory">> <</link>> </li> <</if>> </ul> <!-- Відображення екіпірованої зброї --> <div class="inventory-weapon" style="margin-top: 2.5rem; padding: 1.5rem; border-top: 5px solid var(--accent-primary); text-align: center;"> <<if $player.Weapon_status == "Pistol">> <img src="assets/icons/pistol.png" alt="Equipped Weapon" width="50" height="50"> <br> <strong>Equipped Weapon:</strong> Pistol<br> <strong>Damage:</strong> 10 <</if>> <<if $player.Weapon_status == "Shotgun">> <img src="assets/icons/shotgun.png" alt="Equipped Weapon" width="50" height="50"> <br> <strong>Equipped Weapon:</strong> Shotgun<br> <strong>Damage:</strong> 30 <</if>> <<if $player.Weapon_status == "Wrench">> <img src="assets/icons/wrench.png" alt="Equipped Weapon" width="50" height="50"> <br> <strong>Equipped Weapon:</strong> Wrench<br> <strong>Damage:</strong> 4 <</if>> <<if $player.Weapon_status == "Knife">> <img src="assets/icons/knife.png" alt="Equipped Weapon" width="50" height="50"> <br> <strong>Equipped Weapon:</strong> Knife<br> <strong>Damage:</strong> 8 <</if>> <<if $player.Weapon_status == "none">> <strong>No weapon equipped.</strong> <</if>> </div> </div> <<if $lastPassage != "Inventory">> <<button "Close">> <<goto $lastPassage>> <</button>> <</if>>
<div class="scene-content"> <div class="character-card"> <div class="character-image"> <img src="assets/dominika/dominika.png" alt="Dominika"> </div> <div class="character-info"> <h3>Dominika</h3> <p>Status: <<if $player.dominika_status == "slave">>Slave<<else>>Ally<</if>></p> <<if $player.dominika_work == "scavenging">> <p class="work-status">Current task: Scavenging for supplies</p> <</if>> </div> </div> <div class="interaction-menu"> <a class="button light-choice" data-passage="Dominika_Talk_Menu">Talk</a> <<if $player.dominika_status == "slave" && $player.dominika_work != "scavenging">> <a class="button dark-choice" data-passage="Dominika_Service">Have sex</a> <</if>> <a class="button neutral-choice" data-passage="Dominika_Work">Assign a task</a> <a class="button back-btn" data-passage="House_Life">← Back</a> </div> </div>
<div class="scene-content"> <div class="dialog-container"> <p class="narrator-text">Dominika looks at you humbly, as if she sees you as a strong leader.</p> <div class="dominika-dialog"> <p>"Yes, master?"</p> </div> <div class="dialog-options"> <a class="button light-choice" data-passage="Dominika_Past">Ask about her past</a> <a class="button light-choice" data-passage="Dominika_Feelings">Ask about her feelings</a> <a class="button neutral-choice" data-passage="Dominika_Interact">End the conversation</a> </div> </div> </div>
<div class="scene-content"> <div class="work-menu"> <h3>Choose a task for Dominika:</h3> <<if $player.dominika_work != "none">>> <div class="current-task"> <p>Current task: Scavenging for supplies</p> <a class="button danger-choice" data-passage="Dominika_Cancel_Work">Cancel task</a> </div> <<else>> <div class="work-options"> <a class="button neutral-choice" data-passage="Dominika_Start_Scavenging">Start scavenging</a> </div> <div class="work-options"> <a class="button neutral-choice" data-passage="Dominika_Сooks">Cooking</a> </div> <</if>> <a class="button" data-passage="Dominika_Interact">Return</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p>You recall Dominika from her task. She is now available for other interactions.</p> <<set $player.dominika_work = "none">> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return to the house</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p>You send Dominika to scavenge for supplies in the city. It's a dangerous task, but necessary for survival.</p> <<set $player.dominika_work = "scavenging">> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return to the house</a> </div> </div>
<div class="scene-content"> <div class="dialog-container"> <p class="narrator-text">Dominika pauses for a moment, searching for the right words.</p> <div class="dominika-dialog"> <<if $player.dominika_status == "enslaved">> <p>"Honestly, I never expected to be in this position. Yet, oddly enough, I feel a certain... safety. You are far stronger than I am, and I accept my role as your slave; it’s not the worst fate I could have."</p> <</if>> </div> </div> <div class="choice-container"> <a class="button neutral-choice" data-passage="Dominika_Talk_Menu">Return to the conversation</a> </div> </div>
<div class="scene-content"> <div class="dialog-container"> <p class="narrator-text">Dominika takes a deep breath, gathering her thoughts.</p> <div class="dominika-dialog"> <p>"I sought out slaves for settlement, captured them, and sold them, but I seem to have overestimated my strength."</p> </div> </div> <div class="choice-container"> <a class="button neutral-choice" data-passage="Dominika_Talk_Menu">Return to the conversation</a> </div> </div>
<div class="choice-container"> <<silently>> /* Simple item prices setup */ <<set $prices = { "Canned_Food": [5, 2], /* [buy price, sell price] */ "Medkit": [50, 25], "Pistol": [400, 200], "Shotgun": [1200, 600], "Wrench": [30, 15], "Knife": [70, 35] }>> <</silently>> <div class="shop-container"> <h1>Trader</h1> <div class="player-info"> <div>Name: $player.name</div> <div>Health: $player.health/$player.max_health</div> <div>Stamina: $player.stamina/$player.max_stamina</div> <div>Days Survived: $player.days_survived</div> <div class="caps-display">Caps: $player.Caps</div> </div> <div class="shop-section"> <h2>Buy Items</h2> <div class="item-row"> <span class="item-name">Canned Food</span> <span class="item-price">$prices["Canned_Food"][0] caps</span> <<if $player.Caps >= $prices["Canned_Food"][0]>> <<button "Buy" class="buy-btn">> <<set $player.Caps -= $prices["Canned_Food"][0]>> <<set $player["Canned_Food"] += 1>> <<goto "Market">> <</button>> <<else>> <span class="disabled">[Not enough caps]</span> <</if>> </div> <div class="item-row"> <span class="item-name">Medkit</span> <span class="item-price">$prices["Medkit"][0] caps</span> <<if $player.Caps >= $prices["Medkit"][0]>> <<button "Buy" class="buy-btn">> <<set $player.Caps -= $prices["Medkit"][0]>> <<set $player["Medkit"] += 1>> <<goto "Market">> <</button>> <<else>> <span class="disabled">[Not enough caps]</span> <</if>> </div> <div class="item-row"> <span class="item-name">Pistol</span> <span class="item-price">$prices["Pistol"][0] caps</span> <<if $player.Caps >= $prices["Pistol"][0]>> <<button "Buy" class="buy-btn">> <<set $player.Caps -= $prices["Pistol"][0]>> <<set $player["Pistol"] += 1>> <<goto "Market">> <</button>> <<else>> <span class="disabled">[Not enough caps]</span> <</if>> </div> <div class="item-row"> <span class="item-name">Shotgun</span> <span class="item-price">$prices["Shotgun"][0] caps</span> <<if $player.Caps >= $prices["Shotgun"][0]>> <<button "Buy" class="buy-btn">> <<set $player.Caps -= $prices["Shotgun"][0]>> <<set $player["Shotgun"] += 1>> <<goto "Market">> <</button>> <<else>> <span class="disabled">[Not enough caps]</span> <</if>> </div> <div class="item-row"> <span class="item-name">Wrench</span> <span class="item-price">$prices["Wrench"][0] caps</span> <<if $player.Caps >= $prices["Wrench"][0]>> <<button "Buy" class="buy-btn">> <<set $player.Caps -= $prices["Wrench"][0]>> <<set $player["Wrench"] += 1>> <<goto "Market">> <</button>> <<else>> <span class="disabled">[Not enough caps]</span> <</if>> </div> <div class="item-row"> <span class="item-name">Knife</span> <span class="item-price">$prices["Knife"][0] caps</span> <<if $player.Caps >= $prices["Knife"][0]>> <<button "Buy" class="buy-btn">> <<set $player.Caps -= $prices["Knife"][0]>> <<set $player["Knife"] += 1>> <<goto "Market">> <</button>> <<else>> <span class="disabled">[Not enough caps]</span> <</if>> </div> </div> <div class="shop-section"> <h2>Sell Items</h2> <div class="item-row"> <span class="item-name">Canned Food</span> <span class="item-price">$prices["Canned_Food"][1] caps</span> <span class="item-count">(you have: $player.Canned_Food)</span> <<if $player["Canned_Food"] > 0>> <<button "Sell" class="sell-btn">> <<set $player.Caps += $prices["Canned_Food"][1]>> <<set $player["Canned_Food"] -= 1>> <<goto "Market">> <</button>> <<else>> <span class="disabled">[No items]</span> <</if>> </div> <div class="item-row"> <span class="item-name">Medkit</span> <span class="item-price">$prices["Medkit"][1] caps</span> <span class="item-count">(you have: $player.Medkit)</span> <<if $player["Medkit"] > 0>> <<button "Sell" class="sell-btn">> <<set $player.Caps += $prices["Medkit"][1]>> <<set $player["Medkit"] -= 1>> <<goto "Market">> <</button>> <<else>> <span class="disabled">[No items]</span> <</if>> </div> <div class="item-row"> <span class="item-name">Pistol</span> <span class="item-price">$prices["Pistol"][1] caps</span> <span class="item-count">(you have: $player.Pistol)</span> <<if $player["Pistol"] > 0>> <<button "Sell" class="sell-btn">> <<set $player.Caps += $prices["Pistol"][1]>> <<set $player["Pistol"] -= 1>> <<goto "Market">> <</button>> <<else>> <span class="disabled">[No items]</span> <</if>> </div> <div class="item-row"> <span class="item-name">Shotgun</span> <span class="item-price">$prices["Shotgun"][1] caps</span> <span class="item-count">(you have: $player.Shotgun)</span> <<if $player["Shotgun"] > 0>> <<button "Sell" class="sell-btn">> <<set $player.Caps += $prices["Shotgun"][1]>> <<set $player["Shotgun"] -= 1>> <<goto "Market">> <</button>> <<else>> <span class="disabled">[No items]</span> <</if>> </div> <div class="item-row"> <span class="item-name">Wrench</span> <span class="item-price">$prices["Wrench"][1] caps</span> <span class="item-count">(you have: $player.Wrench)</span> <<if $player["Wrench"] > 0>> <<button "Sell" class="sell-btn">> <<set $player.Caps += $prices["Wrench"][1]>> <<set $player["Wrench"] -= 1>> <<goto "Market">> <</button>> <<else>> <span class="disabled">[No items]</span> <</if>> </div> <div class="item-row"> <span class="item-name">Knife</span> <span class="item-price">$prices["Knife"][1] caps</span> <span class="item-count">(you have: $player.Knife)</span> <<if $player["Knife"] > 0>> <<button "Sell" class="sell-btn">> <<set $player.Caps += $prices["Knife"][1]>> <<set $player["Knife"] -= 1>> <<goto "Market">> <</button>> <<else>> <span class="disabled">[No items]</span> <</if>> </div> </div> <div id="transaction-message" class="transaction-message"></div> <div class="inventory-section"> <h2>Your Inventory</h2> <div class="inventory-grid"> <div class="inventory-item"> <div>Canned Food</div> <div class="inventory-count">$player.Canned_Food</div> </div> <div class="inventory-item"> <div>Medkit</div> <div class="inventory-count">$player.Medkit</div> </div> <div class="inventory-item"> <div>Pistol</div> <div class="inventory-count">$player.Pistol</div> </div> <div class="inventory-item"> <div>Shotgun</div> <div class="inventory-count">$player.Shotgun</div> </div> <div class="inventory-item"> <div>Wrench</div> <div class="inventory-count">$player.Wrench</div> </div> <div class="inventory-item"> <div>Knife</div> <div class="inventory-count">$player.Knife</div> </div> </div> </div> <a class="button back-btn" data-passage="Settlement">← Return</a> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Slave Market</h2> <div class="inventory-panel"> <h3>Your Resources</h3> <ul class="inventory-list"> <li class="inventory-image"> <img src="assets/icons/caps.png" alt="Caps"> <span>x <<print $player.Caps>></span> </li> <li class="inventory-image"> <img src="assets/NPC/slave/slave.png" alt="Slave"> <span>x <<print $player.Slave>></span> </li> </ul> </div> <div class="market-actions"> <h3 class="text-center">Market Options</h3> <div class="choice-container"> <<if $player.Caps >= 400>> <a class="button market-btn buy" data-passage="Buy_Slave">Buy Slave (400 Caps)</a> <<else>> <a class="button market-btn buy disabled">Buy Slave (400 Caps) - Not Enough Caps</a> <</if>> <<if $player.Slave > 0>> <a class="button market-btn sell" data-passage="Sell_Slave">Sell Slave (200 Caps)</a> <<else>> <a class="button market-btn sell disabled">Sell Slave (200 Caps) - No Slaves</a> <</if>> </div> </div> <div class="choice-container"> <a class="button dark-choice" data-passage="Settlement">Return to Safehouse</a> </div> </div> </div> <style> /* Стилі для ринку рабів */ .market-actions { background: var(--bg-medium); border: 2px solid var(--accent-primary); border-radius: 6px; padding: var(--space-medium); margin: var(--space-large) 0; box-shadow: var(--shadow-subtle), var(--glow-red); } /* Стилі для ринку рабів */ .market-actions { background: var(--bg-medium); border: 2px solid var(--accent-primary); border-radius: 6px; padding: var(--space-medium); margin: var(--space-large) 0; box-shadow: var(--shadow-subtle), var(--glow-red); } .market-actions h3 { color: var(--accent-gold); font-family: var(--font-mono); margin-bottom: var(--space-medium); text-shadow: 0 0 4px rgba(212, 160, 23, 0.5); } .market-btn { display: inline-flex; align-items: center; justify-content: center; padding: 10px 20px; border-radius: 6px; font-family: var(--font-mono); font-size: 1rem; text-decoration: none; transition: background-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast); } .market-btn.buy { background: var(--accent-highlight); color: var(--text-light); border: 2px solid var(--accent-highlight); box-shadow: var(--shadow-subtle), 0 0 6px rgba(64, 255, 64, 0.5); } .market-btn.buy:hover { background: #6b3e3c; transform: scale(1.05); box-shadow: var(--shadow-medium), 0 0 8px rgba(64, 255, 64, 0.7); } .market-btn.sell { background: var(--accent-secondary); color: var(--text-light); border: 2px solid var(--accent-secondary); box-shadow: var(--shadow-subtle), var(--glow-red); } .market-btn.sell:hover { background: #6b3e3c; transform: scale(1.05); box-shadow: var(--shadow-medium), var(--glow-red); } .market-btn.disabled { pointer-events: none; opacity: 0.8; /* Зменшуємо прозорість, але текст залишається видимим */ background: var(--bg-light); /* Світліший фон для контрасту */ color: var(--text-dark); /* Темніший текст для читабельності */ border: 2px solid var(--text-dark); box-shadow: none; text-shadow: 0 0 2px rgba(255, 255, 255, 0.3); /* Легке світіння для тексту */ cursor: not-allowed; } /* Попередні стилі для сцени, інвентарю тощо */ .scene-content { margin-top: var(--space-large); padding: var(--space-large); background: var(--bg-medium); border: 2px solid var(--accent-primary); border-radius: 6px; box-shadow: var(--shadow-medium), var(--glow-red); } .scene-text h2 { font-family: var(--font-mono); color: var(--accent-highlight); text-transform: none; letter-spacing: normal; margin-bottom: var(--space-small); font-size: 1.8rem; text-shadow: 0 0 4px rgba(64, 255, 64, 0.5); } .inventory-panel { background: var(--bg-medium); border: 2px solid var(--accent-primary); border-radius: 6px; padding: var(--space-medium); margin: var(--space-large) 0; box-shadow: var(--shadow-subtle), var(--glow-red); } .inventory-panel h3 { color: var(--accent-gold); font-family: var(--font-mono); margin-bottom: var(--space-medium); text-shadow: 0 0 4px rgba(212, 160, 23, 0.5); } .inventory-list { display: flex; flex-wrap: wrap; gap: var(--space-medium); justify-content: center; } .inventory-image { display: flex; align-items: center; gap: var(--space-small); } .inventory-image img { width: 60px; height: 60px; filter: drop-shadow(0 0 4px var(--accent-highlight)); } .choice-container { display: flex; flex-wrap: wrap; gap: var(--space-small); justify-content: center; margin-top: var(--space-large); } /* Анімація появи */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .scene-content, .market-actions { animation: fadeIn var(--transition-slow); } </style>
<div class="choice-container"> <div class="scene-text"> <h2>Bar Matriarch</h2> The interior of "Matriarch" blends rugged functionality with feminine aesthetics. Tables are crafted from salvaged machine parts, and chairs from recycled plastic and metal. Behind the bar, a long slab of polished bulletproof glass, sits Severina, a stern but fair woman with a tattoo. Walls display trophies: parts of destroyed drones, daggers, and embroidered tapestries bearing the names of fallen sisters, a reminder of survival’s cost. Lighting comes from a mix of kerosene lamps and homemade neon signs flickering in pink and purple hues. In the corner, an old jukebox plays only songs by female voices, from gritty blues ballads to electronic anthems crafted by local tech women. <<if $player.severina_status == "unknown">> <a class="button light-choice" data-passage="Severina_First_dialog">Talk with Severina</a> <<elseif $player.severina_status == "Familiar">> <a class="button light-choice" data-passage="Severina_Talk_Menu">Talk with Severina</a> <</if>> <div class="choice-container"> <a class="button back-btn" data-passage="Settlement">← Return</a> </div>
<div class="choice-container"> <div class="mini-character-card"> <div class="character-card"> <div class="character-image"> <img src="assets/Other/indevelopment.png" alt="indevelopment"> <a class="button back-btn" data-passage="Settlement">← Return</a> </div>
<div class="choice-container"> <div class="scene-text"> <div class="mini-character-card"> <div class="character-card"> <div class="character-image"> <img src="assets/NPC/mary/mary.png" alt="Luna"> <h2>Mary</h2> <p> You see a beautiful girl with a poster saying “I am selling my body” Sex with a woman - 20 caps Sex with a man - 10 caps </p> <p> Wow, a real man. It's been a long time since I had a real man. </p> <<if $player.Caps > 9>> <a class="button dark-choice" data-passage="Fuck_Mary">Fuck Mary (10 caps)</a> <</if>> <a class="button back-btn" data-passage="Settlement">← Return</a> </div>
<div class="choice-container"> <div class="mini-character-card"> <div class="character-card"> <div class="character-image"> <img src="assets/Other/indevelopment.png" alt="indevelopment"> <a class="button back-btn" data-passage="Settlement">← Return</a> </div>
<<if ndef $player.Weapon_status>> <<set $player.Weapon_status = "none">> <<set $player.Weapon_damage = 0>> <</if>> <div class="weapon-display"> <div class="weapon-image"> <<if $player.Weapon_status == "none">> <img src="images/weapons/none.png" alt="No Weapon"> <<elseif $player.Weapon_status == "pistol">> <img src="images/weapons/pistol.png" alt="Pistol"> <<elseif $player.Weapon_status == "shotgun">> <img src="images/weapons/shotgun.png" alt="Shotgun"> <<elseif $player.Weapon_status == "knife">> <img src="images/weapons/knife.png" alt="Knife"> <<else>> <img src="images/weapons/unknown.png" alt="Unknown Weapon"> <</if>> </div> <div class="weapon-info"> <div class="weapon-status"> Weapon: <<print $player.Weapon_status>> </div> <div class="weapon-damage"> Damage: <<print $player.Weapon_damage>> </div> </div> </div> <style> .weapon-display { display: flex; align-items: center; gap: 15px; margin: 10px 0; padding: 10px; background: rgba(35, 25, 35, 0.7); border-radius: 5px; border: 1px solid var(--accent-gold); } .weapon-image img { width: 60px; height: 60px; object-fit: contain; } .weapon-info { display: flex; flex-direction: column; gap: 5px; } .weapon-status { color: var(--accent-gold); font-weight: bold; } .weapon-damage { color: var(--accent-highlight); font-size: 0.9em; } </style> <a class="button dark-choice" data-passage="House_Life">Return</a>
<div class="choice-container"> <<set $player.Caps -= 10>> <<if $player.stamina < 10>> <div class="scene-content"> <div class="warning-message">You do not have enough stamina for sexual actions!</div> <div class="choice-container"> <a class="button back-btn" data-passage="Mary">← Back</a> </div> </div> <<else>> <div class="scene-content"> <div class="scene-text"> <p> Maria has taken the caps and is following your instructions. </p> </div> <div class="video-container"> <video id="maryServiceVideo" class="scene-video" autoplay muted loop playsinline> <source src="assets/NPC/mary/blowjob (1).mp4" type="video/mp4"> </video> </div> <div class="service-menu"> <div class="menu-title">Choose an action:</div> <div class="service-buttons"> <a class="service-btn" id="maryBlowjobBtn">Blowjob</a> <a class="service-btn" id="maryVaginalBtn">Vaginal</a> <a class="service-btn" id="maryAnalBtn">Anal</a> <a class="service-btn" id="maryCumBtn">Finish</a> </div> <a class="button back-btn" data-passage="Mary">← Back</a> </div> </div> <<script>> $(document).ready(function() { const maryVideos = { blowjob: [ 'assets/NPC/mary/blowjob (1).mp4', 'assets/NPC/mary/blowjob (2).mp4', 'assets/NPC/mary/blowjob (3).mp4' ], vaginal: [ 'assets/NPC/mary/vaginal (1).webm', 'assets/NPC/mary/vaginal (2).webm', 'assets/NPC/mary/vaginal (3).webm', 'assets/NPC/mary/vaginal (4).webm', 'assets/NPC/mary/vaginal (5).webm' ], anal: [ 'assets/NPC/mary/anal.mp4', 'assets/NPC/mary/anal (1).mp4', 'assets/NPC/mary/anal (2).mp4', 'assets/NPC/mary/anal.webm' ], cum: [ 'assets/NPC/mary/cum.mp4', 'assets/NPC/mary/cum.webm' ] }; function getRandomVideo(category) { const videos = maryVideos[category]; return videos[Math.floor(Math.random() * videos.length)]; } function changeVideo(type) { const video = document.getElementById('maryServiceVideo'); if (video) { const newSrc = getRandomVideo(type); if (video.src !== newSrc) { video.src = newSrc; video.play().catch(function(error) { console.log("Autoplay error:", error); }); } } // Update player stats with minimum check State.variables.player.stamina = Math.max(0, State.variables.player.stamina - 10); // Refresh stats display $(document).trigger(':refresh'); } // Add event handlers for buttons $('#maryBlowjobBtn').on('click', function() { changeVideo('blowjob'); }); $('#maryVaginalBtn').on('click', function() { changeVideo('vaginal'); }); $('#maryAnalBtn').on('click', function() { changeVideo('anal'); }); $('#maryCumBtn').on('click', function() { changeVideo('cum'); }); // Add click handler for video to toggle mute $('#maryServiceVideo').on('click', function() { this.muted = !this.muted; }); }); <</script>> <</if>>
<div class="choice-container"> <div class="scene-text"> <div class="mini-character-card"> <div class="character-card"> <div class="character-image"> <img src="assets/NPC/severina/severina.png" alt="severina"> <h2>Severina</h2> <p> Severina is the owner of the Matriarch bar, a strict but fair bartender who is trusted in the settlemant. She is about 30+. She has unevenly cut hair that is as red as fire. She has tattoos in the form of flowers that wrap around her. She wears light clothes and always carries a homemade pistol and knife on her belt. Hello, decided to wet your throat a little? </p> <a class="button back-btn" data-passage="Bar">← Return</a> </div> </div>
<div class="choice-container"> <div class="scene-text"> <div class="mini-character-card"> <div class="character-card"> <div class="character-image"> <img src="assets/NPC/severina/severina.png" alt="severina"> <h2>Severina</h2> <p> Severina is the owner of the Matriarch bar, a strict but fair bartender who is trusted in the settlemant. She is about 30+. She has unevenly cut hair that is as red as fire. She has tattoos in the form of flowers that wrap around her. She wears light clothes and always carries a homemade pistol and knife on her belt. You walk into the Matriarch bar. Severina behind the bar looks up, and her eyes widen in surprise. Her smile sparkles slightly in the neon light as she slowly sets down the glass she's been wiping. Conversations in the bar quiet down, and several women look at each other. Severina shakes her head, a wry but warm smile appears on her face, and her voice sounds husky, tinged with genuine surprise: - A man? You've got to be kidding! She laughs softly, looking at you curiously. "Identify yourself, miracle of the apocalypse, and tell us how you managed to survive the damn virus. We rarely have guests like you, so your story better be worth a drink. She leans on the counter, her hand relaxed on the knife, but her eyes glow with warmth. Come on, what are you doing alone? She waits, clearly intrigued, and there is a slight buzz in the bar, as if everyone wants to hear your answer. </p> <a class="button dark-choice" data-passage="Severina_Tell_Story">Tell her</a> <a class="button dark-choice" data-passage="Bar" <set $player.severina_status = "Familiar"> Refuse</a> </div> </div>
<div class="choice-container"> <div class="scene-text"> <div class="mini-character-card"> <div class="character-card"> <div class="character-image"> <img src="assets/NPC/severina/severina.png" alt="severina"> <h2>Severina</h2> <p> (U tell) All I remember is green clouds covering the sky, a burning pain in my head and darkness. When I woke up, I saw hundreds of dead people, their bodies lying like abandoned dolls in the middle of the destroyed city. I was terrified, I did not understand what was happening. Pain throbbed in my chest, as if something was trying to destroy me from the inside. I wandered the wastelands, avoiding gangs of marauders who robbed everyone indiscriminately. To survive, I pretended to be a wounded refugee, hiding my gender under my rags. One day I joined a gang, but when they slaughtered an entire camp for a few tins of food, I couldn't stand it. At night, I slit the throat of their leader, took the supplies and went to seek my fate. Now I'm trying to take control of my life again, maybe I'll go into the slave trade or another profitable business, I haven't decided yet. (Severina) Wow, that's a cool story, but now men are worth their weight in gold, so you're in a good position, after all, if you need the first money in the settlement, you can find the administration there, and there's always some work, and we also have a slave market where you can sell or buy several slaves to work, there is also a market where you can sell unnecessary things and buy something useful for yourself, even weapons, by the way, if you don't have any, I advise you to buy at least something because they say that there is a crazy bitch Dominika running around the city who hunts travelers and sells them into slavery, so be careful. </p> <<set $player.severina_status = "Familiar">> <a class="button back-btn" data-passage="Bar">← Return</a> </div> </div>
<div class="changelog-page"> <div class="changelog-header"> <h1>Changelog</h1> <a class="back-button" data-passage="Changelog"> <span class="back-icon">←</span> Return </a> </div> <div class="changelog-content"> <div class="changelog-entry"> <div class="version-header"> <h2>Version 0.2.1 Alpha Global Overhaul (current)</h2> <span class="date">04/26/2025</span> </div> <div class="changelog list"> <h3>Added:</h3> <ul> <li>Added a character name function.</li> <li>Added some sex scenes for Dominica and added sex scenes for slaves</li> <li>Added or moved to the sidebar: Character name and Caps, health and energy bars, shelter population (Slaves do not yet consume food, only named characters).</li> <li>Hunger system for named characters "Residents": each resident now consumes 1 food per day. If there isn’t enough food, the character enters an inactive mode, and you won’t be able to interact with them until you secure a food supply.</li> <li>More locations.</li> <li>Raider encounters in the City Center location with a 30% chance of occurring. After winning, you can either kill them for loot or take them as slaves.</li> <li>Slave Market where you can buy/sell slaves (Non-named characters only!)</li> <li>Forest location where you can hunt to obtain raw meat, or if it’s a mutant raider, get caps (Mutant Raider - a man who has lost almost all humanity but managed to survive). Added hunting mechanics (not the same as combat!). I separated them so players don’t grind but actually play the game. Hunting is an automated process: Hunt > Fight > Reward or Death. Also, to reduce damage taken, you’ll need better weapons—the better the weapon, the less damage you’ll take.</li> <li>Added the Cook job for named characters: one cook produces 2 food from one raw meat.</li> <li>A slave room (for non-named characters) has been added to your shelter.</li> <li>Added music to the game and corresponding settings sections in "Settings".</li> </ul> <h3>Settings:</h3> <ul> <li>Reconfigured CSS variables.</li> </ul> <h3>Bug Fixes:</h3> <ul> <li>Fixed all bugs reported by players and resolved all inconsistencies I found. At least, I didn’t find any new ones during testing, but if you do, please let me know in the comments.</li> <li>Fixed style errors that caused UI elements to display incorrectly.</li> </ul> <h3>Reworked:</h3> <ul> <li>The inventory system underwent another major overhaul. It took a lot of development time, but I think it now looks more or less like a stable, finished version and might make it to the release in this form—though that’s not guaranteed since I tend to rework everything.</li> <li>Reworked many locations, from UI element placement to core mechanics.</li> </ul> <h3>Known Issues:</h3> <ul> <li></li> </ul> <h3>Author's Note:</h3> <ul> <li>The game is still in its early development stage. No element of the game is 100% final, and I’m constantly reworking everything.</li> </ul> </div> </div> </div> </div> <style> /* Стилі для сторінки журналу змін */ .changelog-page { margin-top: var(--space-large); padding: var(--space-large); background: var(--bg-medium); border: 2px solid var(--accent-primary); border-radius: 6px; box-shadow: var(--shadow-medium), var(--glow-red); } .changelog-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-large); } .changelog-header h1 { font-family: var(--font-mono); color: var(--accent-highlight); font-size: 2rem; text-shadow: 0 0 4px rgba(64, 255, 64, 0.5); } .back-button { display: flex; align-items: center; gap: var(--space-small); color: var(--text-light); text-decoration: none; font-family: var(--font-mono); font-size: 1rem; padding: 8px 16px; border: 2px solid var(--accent-primary); border-radius: 6px; transition: background-color var(--transition-fast), transform var(--transition-fast); box-shadow: var(--shadow-subtle); } .back-button:hover { background: #6b3e3c; transform: scale(1.05); box-shadow: var(--shadow-medium), var(--glow-red); } .back-icon { font-size: 1.2rem; } .changelog-content { background: var(--bg-light); border: 2px solid var(--accent-primary); border-radius: 6px; padding: var(--space-medium); box-shadow: var(--shadow-subtle); } .version-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-medium); } .version-header h2 { font-family: var(--font-mono); color: var(--accent-highlight); text-shadow: 0 0 4px rgba(64, 255, 64, 0.5); } .version-header .date { color: var(--text-medium); font-family: var(--font-mono); } .changelog-list h3 { color: var(--accent-gold); font-family: var(--font-mono); margin-top: var(--space-medium); margin-bottom: var(--space-small); text-shadow: 0 0 4px rgba(212, 160, 23, 0.5); } .changelog-list ul { list-style-type: disc; margin-left: var(--space-medium); color: var(--text-light); } .changelog-list li { margin-bottom: var(--space-small); } /* Анімація появи */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .changelog-page, .changelog-content { animation: fadeIn var(--transition-slow); } </style>
<div class="scene-content"> <div class="scene-text"> <h2>Identity in the Ashes</h2> <p>The city lies broken around you, a scarred landscape of crumbling concrete and rusted metal. 90 days since the world stopped making sense. 90 days of survival in this new reality they call Corpse City.</p> <p>Your past feels like a distant memory, but your name... your name is something they can't take from you.</p> <div class="status-update"> <h3>Who are you?</h3> <p>Enter the name you want to be known by in this wasteland:</p> <input type="text" id="playerName" value="Alex" class="player-input"> <div class="mt-2"> <<button "Confirm Name">> <<set $player.name = document.getElementById("playerName").value>> <<if $player.name.trim() === "">> <<set $player.name = "Alex">> <</if>> <<set $player.game_status = 1>> <<goto "Intro">> <</button>> </div> </div> <p class="warning-message">Choose a name and wear it with pride =)</p> </div> </div>
<<if $player.game_status == 1>> <div class="status-container"> <h3 class="text-center">$player.name</h3> <<if $player.Caps >= 0>> <ul class="inventory-list"> <li class="inventory-image"> <img src="assets/icons/caps.png" alt="Caps"> <span>x <<print $player.Caps>></span> </li> </ul> <</if>> <h3 class="text-center">Population</h3> <<if $player.survivors_met >= 0>> <ul class="inventory-list"> <li class="inventory-image"> <img src="assets/icons/population.png" alt="Population"> <span>x <<print $player.survivors_met>></span> </li> </ul> <</if>> <ul> <li class="health-bar"> <span class="stat-label">Health:</span> <div class="health-bar-container"> <div class="bar-fill <<if ($player.health / $player.max_health) >= 0.7>>high<<elseif ($player.health / $player.max_health) >= 0.3>>medium<<else>>low<</if>>" style="width: <<print ($player.health / $player.max_health * 100)>>%"></div> <span class="bar-text"><<print $player.health>>/<<print $player.max_health>></span> </div> </li> <li class="stamina-bar"> <span class="stat-label">Stamina:</span> <div class="stamina-bar-container"> <div class="bar-fill <<if ($player.stamina / $player.max_stamina) >= 0.7>>high<<elseif ($player.stamina / $player.max_stamina) >= 0.3>>medium<<else>>low<</if>>" style="width: <<print ($player.stamina / $player.max_stamina * 100)>>%"></div> <span class="bar-text"><<print $player.stamina>>/<<print $player.max_stamina>></span> </div> </li> </ul> </div> <</if>> <style> /* ===== Corpse City - Стилі для барів здоров’я та витривалості ===== */ /* Версія 2.1 */ .health-bar-container { width: 100%; height: 20px; background: var(--bg-medium); border-radius: 6px; overflow: hidden; position: relative; margin-left: var(--space-small); border: 2px solid var(--accent-primary); background-image: linear-gradient(to right, var(--accent-primary), var(--accent-secondary)); box-shadow: var(--shadow-subtle), var(--glow-red); } .stamina-bar-container { width: 100%; height: 20px; background: var(--bg-medium); border-radius: 6px; overflow: hidden; position: relative; margin-left: var(--space-small); border: 2px solid var(--accent-gold); background-image: linear-gradient(to right, #b38600, var(--accent-gold)); box-shadow: var(--shadow-subtle), var(--glow-gold); } .bar-fill { height: 100%; position: absolute; top: 0; left: 0; transition: width var(--transition-slow) ease, background var(--transition-fast) ease; box-shadow: 0 0 6px rgba(64, 255, 64, 0.5); } /* Динамічні кольори для заповнення барів */ .bar-fill.high { background: var(--accent-highlight); background-image: linear-gradient(to right, #33cc33, var(--accent-highlight)); box-shadow: 0 0 8px rgba(64, 255, 64, 0.7); } .bar-fill.medium { background: #ffcc00; background-image: linear-gradient(to right, #cc9900, #ffcc00); box-shadow: 0 0 8px rgba(255, 204, 0, 0.7); } .bar-fill.low { background: var(--accent-secondary); background-image: linear-gradient(to right, var(--accent-primary), var(--accent-secondary)); box-shadow: 0 0 8px rgba(255, 64, 64, 0.7); } .bar-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-family: var(--font-mono); font-weight: bold; color: var(--text-light); font-size: 0.75rem; text-shadow: 0 0 4px rgba(64, 255, 64, 0.8); z-index: 2; } </style>
<<if $player.game_status == 1>> [[Inventory]] <</if>>
<<if !$ignorePassages.includes(State.passage)>> <<set $lastPassage = State.passage>> <</if>>
<div class="scene-content"> <div class="scene-text"> <h2>Forest</h2> <p> What was once a thriving forest is now a grotesque monument to bioengineered destruction. The trees stand, but not as they once did—their bark blistered with unnatural growths, their leaves replaced by jagged, spore-laden tendrils that twitch in the wind. The air hums with the drone of oversized insects, their chitinous bodies warped into predatory shapes. </p> <p> This is clearly a dangerous place that has claimed many desperate people. </p> </div> <<if $player.stamina >= 20>> <div class="choice-container"> <a class="button" data-passage="Forest_Hunt">Go hunt</a> </div> <<else>> <center><h2>*You tired!*</h2></center> <</if>> <a class="button" data-passage="Outside">Return</a> </div>
<style> /* Загальний стиль для пасажу */ body { background-color: #1a1a1a; color: #d4d4d4; font-family: 'Courier New', monospace; line-height: 1.6; } /* Стиль для текстових повідомлень */ .hunt-message { background-color: #2b2b2b; border-left: 4px solid #8b0000; padding: 10px 15px; margin: 10px 0; border-radius: 5px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5); } /* Стиль для важливої інформації (шкода, нагороди) */ .hunt-message span { display: block; margin: 5px 0; } /* Виділення шкоди червоним */ .hunt-message .damage { color: #ff4040; font-weight: bold; } /* Виділення нагород зеленим */ .hunt-message .reward { color: #40ff40; font-weight: bold; } /* Стиль для повідомлення про втому */ .tired-message { color: #ffcc00; text-align: center; font-size: 1.5em; margin: 20px 0; text-shadow: 1px 1px 2px #000; } /* Стиль для контейнера кнопок */ .choice-container { display: flex; justify-content: center; gap: 15px; margin: 20px 0; } /* Стиль для кнопок */ .choice-container .button { display: inline-block; padding: 10px 20px; background-color: #4a2c2a; color: #d4d4d4; text-decoration: none; border: 2px solid #8b0000; border-radius: 5px; transition: background-color 0.3s, transform 0.1s; } /* Ефект наведення на кнопки */ .choice-container .button:hover { background-color: #6b3e3c; transform: scale(1.05); } /* Стиль для Game Over */ .game-over { color: #ff4040; text-align: center; font-size: 1.2em; margin: 20px 0; text-shadow: 1px 1px 2px #000; } </style> <<if $player.stamina gte 20>> <<set _hunt_event to random(1, 4)>> <!-- Обчислення зменшення шкоди залежно від зброї --> <<set _damage_reduce to 0>> <<if $player.Weapon_status is "none">> <<set _damage_reduce to 0>> <<elseif $player.Weapon_status is "Wrench">> <<set _damage_reduce to 0.1>> <<elseif $player.Weapon_status is "Knife">> <<set _damage_reduce to 0.2>> <<elseif $player.Weapon_status is "Pistol">> <<set _damage_reduce to 0.4>> <<elseif $player.Weapon_status is "Shotgun">> <<set _damage_reduce to 0.6>> <</if>> <<if _hunt_event eq 1>> <!-- Wolf Mutant Encounter --> <<set _base_damage to $player.wolf_mutant_damage + random(10, 30)>> <<set _damage_taken to Math.max(1, Math.floor(_base_damage * (1 - _damage_reduce)))>> <<set $player.health to Math.max(0, $player.health - _damage_taken)>> <<set _hunt_raw_meat to random(2, 6)>> <<set $player.Raw_meat to $player.Raw_meat + _hunt_raw_meat>> <<set $player.stamina to $player.stamina - 20>> <div class="hunt-message"> <img src="assets/Hunt/wolf_mutant.png" alt="Wolf Mutant" class="enemy-image"> <span>*A mutated wolf bursts from the undergrowth!*</span> <span class="damage">*You kill it but take <<= _damage_taken>> damage.*</span> <span class="reward">*Harvested <<= _hunt_raw_meat>> units of mutant meat.*</span> <span>*Lost 20 stamina.*</span> </div> <<elseif _hunt_event eq 2>> <!-- Rat Mutant Swarm --> <<set _base_damage to $player.rat_mutant_damage + random(5, 20)>> <<set _damage_taken to Math.max(1, Math.floor(_base_damage * (1 - _damage_reduce)))>> <<set $player.health to Math.max(0, $player.health - _damage_taken)>> <<set _hunt_raw_meat to random(1, 2)>> <<set $player.Raw_meat to $player.Raw_meat + _hunt_raw_meat>> <<set $player.stamina to $player.stamina - 20>> <div class="hunt-message"> <img src="assets/Hunt/rat_mutant.png" alt="Rat Mutant Swarm" class="enemy-image"> <span>*Mutated rats erupt from the ground!*</span> <span class="damage">*You fight them off but take <<= _damage_taken>> damage.*</span> <span class="reward">*Only gathered <<= _hunt_raw_meat>> meat units.*</span> <span>*Lost 20 stamina.*</span> </div> <<elseif _hunt_event eq 3>> <!-- Raider Ambush --> <<set _base_damage to $player.raider_damage + random(10, 40)>> <<set _damage_taken to Math.max(1, Math.floor(_base_damage * (1 - _damage_reduce)))>> <<set $player.health to Math.max(0, $player.health - _damage_taken)>> <<set _caps_harvested to random(5, 50)>> <<set $player.Caps to $player.Caps + _caps_harvested>> <<set $player.stamina to $player.stamina - 20>> <div class="hunt-message"> <img src="assets/Hunt/raider_mutant.png" alt="Raider Ambush" class="enemy-image"> <span>*Spore-sick raiders ambush you!*</span> <span class="damage">*You survive but take <<= _damage_taken>> damage.*</span> <span class="reward">*Found <<= _caps_harvested>> caps on their bodies.*</span> <span>*Lost 20 stamina.*</span> </div> <<else>> <!-- Empty Hunt --> <<set $player.stamina to $player.stamina - 20>> <div class="hunt-message"> <span>*You wander the woods but find nothing useful.*</span> <span>*Lost 20 stamina.*</span> </div> <</if>> <<else>> <div class="tired-message"> *You are too tired to hunt!* </div> <</if>> <!-- Death Check --> <<if $player.health lte 0>> <<set $player.health to 0>> <<set $player.game_status to 0>> <div class="game-over"> *You're too badly wounded... The world fades...* </div> <div class="choice-container"> <a class="button" data-passage="Game_Over">Game Over</a> </div> <<else>> <div class="choice-container"> <a class="button" data-passage="Forest_Hunt">Continue hunting</a> </div> <</if>> <div class="choice-container"> <a class="button" data-passage="Forest">Return to Forest</a> </div>x
<p><div class="scene-text"><center><H1>GAME OVER</H1></center></div></p> <p><H2><<<<<<- CLICK RESTART GAME</H2></p>
<div class="scene-content"> <div class="scene-text"> <p>Luna tries to cook something edible.</p> <<set $player.luna_work = "Cooking">> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return to the house</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p>Alex tries to cook something edible.</p> <<set $player.alex_work = "Cooking">> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return to the house</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <p>Dominika tries to cook something edible.</p> <<set $player.dominika_work = "Cooking">> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return to the house</a> </div> </div>
<<set $combat = { enemy_name: "Raider", enemy_health: 100, enemy_max_health: 100, enemy_damage: 25, player_damage: $player.Weapon_damage, turn: "player" }>> <div class="scene-content"> <div class="combat-container"> <div class="combat-header"> <h2>Battle with Raider</h2> </div> <div class="combatants"> <div class="combatant player"> <div class="combatant-info"> <h3><span class="player-name">You</span></h3> <div class="health-container"> <div class="health-bar-wrapper"> <div class="health-bar-fill" style="width: <<print Math.floor($player.health/$player.max_health*100)>>%"></div> </div> <div class="health-text"><<print $player.health>>/<<print $player.max_health>></div> </div> </div> </div> <div class="combat-vs">VS</div> <div class="combatant enemy"> <div class="combatant-info"> <h3><span class="enemy-name"><<print $combat.enemy_name>></span></h3> <div class="health-container"> <div class="health-bar-wrapper"> <div class="health-bar-fill" style="width: <<print Math.floor($combat.enemy_health/$combat.enemy_max_health*100)>>%"></div> </div> <div class="health-text"><<print $combat.enemy_health>>/<<print $combat.enemy_max_health>></div> </div> </div> </div> </div> <div class="combat-log"> <p>The battle has begun! You stand face to face with Raider.</p> <p>What will you do?</p> </div> <div class="combat-controls"> <a class="combat-btn attack" data-passage="Combat_Attack">Attack</a> <a class="combat-btn defend" data-passage="Combat_Defend">Defend</a> <<if $player.Medkit > 0>> <a class="combat-btn heal" data-passage="Combat_Heal">Use Medkit</a> <<else>> <a class="combat-btn heal disabled">Medkit (none)</a> <</if>> </div> </div> </div> </div> <style> .combat-container { background: rgba(0, 0, 0, 0.7); border: 1px solid var(--accent-gold); border-radius: 8px; padding: 15px; } .combat-header { text-align: center; margin-bottom: 20px; } .combat-header h2 { color: var(--accent-gold); text-shadow: 0 0 5px rgba(198, 168, 97, 0.5); margin: 0; } .combatants { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .combatant { width: 40%; } .combat-vs { font-size: 1.5em; color: var(--accent-gold); font-weight: bold; } .combatant-info h3 { text-align: center; margin: 0 0 10px 0; } .player-name { color: #4CAF50; } .enemy-name { color: #F44336; } .health-container { margin-bottom: 10px; } .health-bar-wrapper { height: 15px; background-color: rgba(0, 0, 0, 0.5); border-radius: 4px; overflow: hidden; margin-bottom: 5px; } .health-bar-fill { height: 100%; background: linear-gradient(90deg, #9c0e36, #d91a4d); transition: width 0.3s ease; } .health-text { text-align: center; font-size: 0.8em; color: var(--text-medium); } .combat-log { background: rgba(0, 0, 0, 0.5); border-radius: 6px; padding: 10px; margin-bottom: 20px; max-height: 120px; overflow-y: auto; } .combat-log p { margin: 5px 0; font-size: 0.9em; } .combat-controls { display: flex; justify-content: space-between; gap: 10px; } .combat-btn { flex: 1; padding: 8px 15px; border-radius: 4px; text-align: center; cursor: pointer; font-weight: bold; transition: all 0.2s ease; text-decoration: none; color: white; } .combat-btn.attack { background: linear-gradient(45deg, #d32f2f, #f44336); } .combat-btn.attack:hover { background: linear-gradient(45deg, #f44336, #ff5252); transform: translateY(-2px); } .combat-btn.defend { background: linear-gradient(45deg, #1976d2, #2196f3); } .combat-btn.defend:hover { background: linear-gradient(45deg, #2196f3, #42a5f5); transform: translateY(-2px); } .combat-btn.heal { background: linear-gradient(45deg, #388e3c, #4caf50); } .combat-btn.heal:hover { background: linear-gradient(45deg, #4caf50, #66bb6a); transform: translateY(-2px); } .combat-btn.disabled { background: #616161; cursor: not-allowed; opacity: 0.5; } .combat-btn.disabled:hover { transform: none; } .encounter { margin-top: 15px; padding: 10px; background: rgba(156, 14, 54, 0.1); border-radius: 6px; border-left: 3px solid var(--accent-primary); } p.danger { color: #f44336; font-weight: bold; } .character-encounter { display: flex; margin-bottom: 20px; background: rgba(0, 0, 0, 0.5); border-radius: 8px; padding: 15px; } .encounter-image { width: 120px; margin-right: 15px; } .encounter-image img { width: 100%; border-radius: 4px; } .encounter-text { flex: 1; } .dominika-dialog { color: #ff5252; font-style: italic; margin: 10px 0; padding: 10px; background: rgba(156, 14, 54, 0.1); border-radius: 6px; border-left: 3px solid var(--accent-primary); } </style>
<div class="scene-content"> <div class="scene-text"> <h2>Execution of Raider</h2> <p> You decide not to give her a chance. In this world, there is no place for mercy. A quick, decisive strike - and it's all over. You search her belongings and find some useful supplies. </p> <div class="loot"> <h3>Found:</h3> <ul> <<set $player.Canned_Food += 5>> <<set $player.Medkit ++>> <<set $player.Pistol ++>> <li>Canned food (5 unit)</li> <li>Medkit (2 unit)</li> <li>Pistol (1 unit)</li> </ul> </div> </div> <div class="choice-container"> <a class="button" data-passage="House_Life">Return home</a> </div> </div> <style> .loot { background: rgba(0, 0, 0, 0.5); border: 1px solid var(--accent-gold); border-radius: 6px; padding: 10px; margin: 15px 0; } .loot h3 { color: var(--accent-gold); margin-top: 0; margin-bottom: 10px; font-size: 1em; } .loot ul { margin: 0; padding-left: 20px; } .loot li { color: #ffffff; margin-bottom: 5px; } </style>
<div class="scene-content"> <div class="encounter-header"> <h2>Dangerous Encounter</h2> </div> <div class="character-encounter"> <div class="character-image"> <img src="assets/NPC/Raider/raider.png" alt="Raider"> </div> <div class="encounter-text"> <p>A woman with a gun and a cold look is standing in front of you, and she is clearly not going to back down.</p> <div class="dialog"> <p class="dominika-dialog">"Are you a real man? You're worth a fortune, surrender and I'll take care of you."</p> </div> <p>She aims her weapon at you. Her intentions are clear - to take you as a slave. In this situation, you have no choice - you must fight.</p> </div> </div> <div class="choice-container"> <a class="button danger-choice" data-passage="Combat_Raider">Fight</a> <a class="button" data-passage="Outside">Try to escape</a> </div> </div>
<div class="scene-content"> <div class="scene-text"> <h2>Subjugating Raider</h2> <p> "Now get on your knees, whore, you're my property now. Now show me your submission." </p> <<set $player.Slave += 1>> <p> "Now you are my slave," you say, binding her hands. "And you will believe your own fate..." </p> </div> <div class="choice-container"> <a class="button dark-choice" data-passage="Slave_Service">Secure the subjugation</a> <a class="button" data-passage="House_Life">Take her home</a> </div> </div>
<<if $player.stamina < 10>> <div class="scene-content"> <div class="warning-message">You do not have enough stamina for sexual actions!</div> <div class="choice-container"> <a class="button back-btn" data-passage="Slave">← Back</a> </div> </div> <<else>> <div class="scene-content"> <div class="scene-text"> <p> Slave obediently waits for your orders, ready to fulfill any of your desires. </p> </div> <div class="video-container"> <video id="slaveServiceVideo" class="scene-video" autoplay muted loop playsinline> <source src="assets/NPC/slave/blowjob (1).webm" type="video/webm"> </video> </div> <div class="service-menu"> <div class="menu-title">Choose an action:</div> <div class="service-buttons"> <center> <a class="service-btn" id="slaveBlowjobBtn">Blowjob</a> <a class="service-btn" id="slaveVaginalBtn">Vaginal</a> <a class="service-btn" id="slaveAnalBtn">Anal</a> <a class="service-btn" id="slaveCumBtn">Finish</a> </center> </div> <a class="button back-btn" data-passage="House_Life">← Finish</a> </div> <<script>> $(document).ready(function() { const slaveVideos = { blowjob: [ 'assets/NPC/slave/blowjob (1).webm', 'assets/NPC/slave/blowjob (2).webm', 'assets/NPC/slave/blowjob (3).webm', 'assets/NPC/slave/blowjob (4).webm', 'assets/NPC/slave/blowjob (5).webm', 'assets/NPC/slave/blowjob (6).webm', 'assets/NPC/slave/blowjob (7).webm', 'assets/NPC/slave/blowjob (8).webm', 'assets/NPC/slave/blowjob (9).webm', 'assets/NPC/slave/blowjob (10).webm', 'assets/NPC/slave/blowjob (11).webm' ], vaginal: [ 'assets/NPC/slave/vaginal (1).webm', 'assets/NPC/slave/vaginal (2).webm', 'assets/NPC/slave/vaginal (3).webm', 'assets/NPC/slave/vaginal (4).webm', 'assets/NPC/slave/vaginal (5).webm', 'assets/NPC/slave/vaginal (6).webm', 'assets/NPC/slave/vaginal (7).webm', 'assets/NPC/slave/vaginal (8).webm', 'assets/NPC/slave/vaginal (9).webm', 'assets/NPC/slave/vaginal (10).webm', 'assets/NPC/slave/vaginal (11).webm' ], anal: [ 'assets/NPC/slave/anal (1).webm', 'assets/NPC/slave/anal (2).webm', 'assets/NPC/slave/anal (3).webm', 'assets/NPC/slave/anal (4).webm', ], cum: [ 'assets/NPC/slave/cum (1).webm', 'assets/NPC/slave/cum (2).webm', 'assets/NPC/slave/cum (3).webm', 'assets/NPC/slave/cum (4).webm', ] }; function getRandomVideo(category) { const videos = slaveVideos[category]; return videos[Math.floor(Math.random() * videos.length)]; } function changeVideo(type) { const video = document.getElementById('slaveServiceVideo'); if (video) { const newSrc = getRandomVideo(type); if (video.src !== newSrc) { video.src = newSrc; video.play().catch(function(error) { console.log("Autoplay error:", error); }); } } // Update player stats with minimum check State.variables.player.stamina = Math.max(0, State.variables.player.stamina - 10); // Refresh stats display $(document).trigger(':refresh'); } // Add event handlers for buttons $('#slaveBlowjobBtn').on('click', function() { changeVideo('blowjob'); }); $('#slaveVaginalBtn').on('click', function() { changeVideo('vaginal'); }); $('#slaveAnalBtn').on('click', function() { changeVideo('anal'); }); $('#slaveCumBtn').on('click', function() { changeVideo('cum'); }); // Add click handler for video to toggle mute $('#slaveServiceVideo').on('click', function() { this.muted = !this.muted; }); }); <</script>> <</if>>
<div class="inventory-panel"> <h2>Slaves</h2> <ul class="inventory-list"> <li class="inventory-image"> <img src="assets\NPC\slave/slave.png" alt="Slave"> <span>x <<print $player.Slave>></span> </li> </ul> <<if $player.Slave > 0>> <a class="button" data-passage="Slave_Service">Sex with slaves</a> <<else>> <span class="text-dark">No slaves available.</span> <</if>> </div> <div class="scene-content"> <a class="button" data-passage="House_Life">Return</a> </div>
<<if $player.Slave > 0>> <<set $player.Caps += 200>> <<set $player.Slave -= 1>> <<goto "Slave_Market">> <<else>> <<goto "Slave_Market">> <</if>>
<<if $player.Caps >= 400>> <<set $player.Caps -= 400>> <<set $player.Slave += 1>> <<goto "Slave_Market">> <<else>> <<goto "Slave_Market">> <</if>>
<<if $musicEnabled>> <<link "Turn Off">> <<set $musicEnabled = false>> <<replace "#music-status">>Off<</replace>> <<replace "#music-toggle">> <<link "Turn On">> <<set $musicEnabled = true>> <<replace "#music-status">>On<</replace>> <<replace "#music-toggle">><<include "MusicToggle">><</replace>> <<run document.getElementById('bg-music').play()>> <</link>> <</replace>> <<run document.getElementById('bg-music').pause()>> <</link>> <<else>> <<link "Turn On">> <<set $musicEnabled = true>> <<replace "#music-status">>On<</replace>> <<replace "#music-toggle">> <<link "Turn Off">> <<set $musicEnabled = false>> <<replace "#music-status">>Off<</replace>> <<replace "#music-toggle">><<include "MusicToggle">><</replace>> <<run document.getElementById('bg-music').pause()>> <</link>> <</replace>> <<run document.getElementById('bg-music').play()>> <</link>> <</if>>
<div class="changelog-page"> <div class="changelog-header"> <h1>Changelog</h1> <div class="choice-container"> <a class="button" data-passage="Changelog_last">Next Changelog</a> </div> </div> <div class="changelog-content"> <div class="changelog-entry"> <div class="version-header"> <h2>Version 0.2 alpha (old)</h2> <span class="date">04/19/2025</span> </div> <div class="changelog list"> <h3>Added:</h3> <ul> <li>More locations</li> <li>New NPC with sex scenes (Maru)</li> <li>Added 1 NPC without sex scenes (Bartender Severina)</li> <li>Added more locations and locations for interaction</li> <li>A trading system has been created, now the player can trade with the settlement</li> <li>A weapon system has been added (Wrench, knife, pistol, shotgun)</li> </ul> <h3>Settings:</h3> <ul> <li>Reconfigured CSS variables</li> </ul> <h3>Bugs:</h3> <ul> <li>Fixed numerous bugs (not 100% all but everything I found has been fixed)</li> <li>Changed and improved the styles of most locations and interaction points</li> </ul> <h3>Reworked:</h3> <ul> <li>Completely rewritten from scratch the inverter system and its functionality, now it works properly</li> </ul> <h3>Known issues:</h3> <ul> <li></li> </ul> <h3>Author's Note:</h3> <ul> <li>The game is still in its early stages of development, no element of the game is 100% permanent and I am constantly reworking everything</li> </ul> </div> </div> </div> </div> <style> /* Стилі для сторінки журналу змін */ .changelog-page { margin-top: var(--space-large); padding: var(--space-large); background: var(--bg-medium); border: 2px solid var(--accent-primary); border-radius: 6px; box-shadow: var(--shadow-medium), var(--glow-red); } .changelog-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-large); } .changelog-header h1 { font-family: var(--font-mono); color: var(--accent-highlight); font-size: 2rem; text-shadow: 0 0 4px rgba(64, 255, 64, 0.5); } .back-button { display: flex; align-items: center; gap: var(--space-small); color: var(--text-light); text-decoration: none; font-family: var(--font-mono); font-size: 1rem; padding: 8px 16px; border: 2px solid var(--accent-primary); border-radius: 6px; transition: background-color var(--transition-fast), transform var(--transition-fast); box-shadow: var(--shadow-subtle); } .back-button:hover { background: #6b3e3c; transform: scale(1.05); box-shadow: var(--shadow-medium), var(--glow-red); } .back-icon { font-size: 1.2rem; } .changelog-content { background: var(--bg-light); border: 2px solid var(--accent-primary); border-radius: 6px; padding: var(--space-medium); box-shadow: var(--shadow-subtle); } .version-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-medium); } .version-header h2 { font-family: var(--font-mono); color: var(--accent-highlight); text-shadow: 0 0 4px rgba(64, 255, 64, 0.5); } .version-header .date { color: var(--text-medium); font-family: var(--font-mono); } .changelog-list h3 { color: var(--accent-gold); font-family: var(--font-mono); margin-top: var(--space-medium); margin-bottom: var(--space-small); text-shadow: 0 0 4px rgba(212, 160, 23, 0.5); } .changelog-list ul { list-style-type: disc; margin-left: var(--space-medium); color: var(--text-light); } .changelog-list li { margin-bottom: var(--space-small); } /* Анімація появи */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .changelog-page, .changelog-content { animation: fadeIn var(--transition-slow); } </style>