<<nobr>>
<center>
<h1 style="font-size:2.8em; margin:0.2em 0; color:#c0392b; text-shadow: 0 0 10px #000;">A Warlord's Claim</h1>
<h2 style="margin:0; color:#aaa; font-size:1.1em;">v 0.03</h2>
<img src="images/start.webp" width="80%" style="border: 3px solid #5a2c0f; border-radius: 8px; box-shadow: 0 0 15px rgba(0,0,0,0.8);">
<br><br>
The North is a brutal land of ice, blood, and fire.<br><br>
<br>
You are a rising warlord — feared, ruthless, and hungry for power.
Villages burn at your command, warriors kneel before your axe, and captives serve your every desire.
<br><br>
In this world, strength is law. The weak are claimed. The beautiful are taken.
Loyalty is forged in chains and flesh.
<br><br>
Will you build an empire of conquest and carnal pleasure... or fall to those who are even more merciless than you?
<br><br>
<div style="max-width:620px; margin:20px auto; text-align:center; font-size:1.05em; line-height:1.5; color:#ddd;">
This is my first game. All feedback, criticism, and suggestions are very welcome!<br>
You can find me on <a href="https://f95zone.to/" target="_blank">F95Zone</a>.
</div>
<br><br>
<span style="color:#e74c3c; font-weight:bold;">This game contains explicit adult content, strong violence, non-consensual themes, slavery, and dark eroticism.</span>
</center>
<br><br>
<center>
[[I am over 18|Intro_1]]
</center>
<</nobr>><<nobr>>
<div style="padding: 5px; font-family: sans-serif;">
<div style="text-align:center; margin-bottom: 10px;">
<small style="letter-spacing: 2px;">VERSION $gameVersion</small>
</div>
<<if $gameStarted>>
<br><hr style="border: 0; height: 1px; background: #444;"><br>
<<if $player.portrait != "">>
<div style="text-align:center; margin: 10px 0;">
<img @src="$player.portrait" style="width:90%; border:2px solid #555; border-radius:4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> <br>
</div>
<</if>>
<div style="text-align:center; background: rgba(255,255,255,0.05); padding: 5px; border-radius: 4px; line-height: 1.2;">
<span style="font-size: 1.1em; color: #eee;"><b>Day $day</b></span>
<br><span style="font-size: 1.2em; letter-spacing: 1px;">$hour:<<if $minute < 10>>0$minute<<else>>$minute<</if>></span> <br>
<br><small style="color: gold; text-transform: uppercase;">$timePhase</small>
</div>
<br><hr style="border: 0; height: 1px; background: #444; margin: 5px 0;"><br>
<div id="t2">
<span class="meter-row">
<span class="glyph">❤</span><<showmeter "hp" $player.hp $player.maxHp>>
</span>
<span class="meter-row">
<span class="glyph">⚡</span><<showmeter "energy" $player.energy $player.maxEnergy>>
</span>
<span class="meter-row">
<span class="glyph" title="Fullness">🍖</span><<showmeter "hunger" $player.hunger $player.maxHunger>>
</span>
<span class="meter-row">
<span class="glyph">💗</span><<showmeter "lust" $player.lust $player.maxLust>>
</span>
</div>
<div id="menu-story">
<<include "StoryMenu">>
</div>
<hr>
<<if $companions and $companions.length gt 0>>
<<for _ci = 0; _ci < $companions.length; _ci++>>
<<set _cc to $companions[_ci]>>
<div style="margin-bottom:6px;font-size:0.8em">
<div style="display:flex;align-items:center;gap:6px;margin-bottom:2px">
<<if _cc.img>>
<img @src="_cc.img" style="width:28px;height:28px;border-radius:50%;object-fit:cover;border:1px solid #444">
<</if>>
<span style="color:#ccc"><<= _cc.name>></span>
</div>
<<showmeter "hp" `_cc.hp !== undefined ? _cc.hp : _cc.maxHp` `_cc.maxHp || 50`>>
<</for>>
<hr>
<</if>>
<div id="support" style="text-align: center; font-size: 1.15em; margin-top: 20px; opacity: 0.7;">
<<link "SUPPORT">>
<<script>>
Dialog.setup("Support", "Support");
Dialog.wiki(Story.get("Support").processText());
Dialog.open();
<</script>>
<</link>>
<br>
<<link "CHANGELOG">>
<<script>>
Dialog.setup("Changelog", "Changelog");
Dialog.wiki(Story.get("Changelog").processText());
Dialog.open();
<</script>>
<</link>>
</div>
<</if>>
<</nobr>><<nobr>>
<style>
.hub-grid {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 20px;
margin-top: 25px;
}
.hub-item {
position: relative;
width: 170px;
text-align: center;
background: #1c1c1c;
border: 2px solid #444;
border-radius: 8px;
padding: 12px;
transition: all 0.25s ease;
display: flex;
flex-direction: column;
align-items: center;
}
/* Main location image */
.hub-item img:not(.rel-npc-badge) {
width: 140px !important;
height: 140px !important;
object-fit: cover;
border-radius: 4px;
display: block;
margin: 0 auto 12px auto;
border: 2px solid #555;
}
/* NPC Badge - Fixed small size */
.rel-npc-badge {
position: absolute !important;
top: 8px !important;
right: 8px !important;
width: 38px !important;
height: 38px !important;
border-radius: 50% !important;
border: 3px solid #d4af77 !important;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.9) !important;
object-fit: cover !important;
object-position: top !important;
z-index: 10 !important;
pointer-events: none !important;
background: #1c1c1c;
}
.hub-item:hover {
border-color: #d4af77;
box-shadow: 0 0 15px rgba(212, 175, 119, 0.4);
transform: scale(1.06);
}
.hub-item a {
text-decoration: none;
color: #e8d8b0;
font-weight: bold;
font-size: 0.95em;
}
.hub-item a:hover {
color: #f0c060;
}
</style>
<div style="text-align:center;">
<h2>The Encampment</h2>
<p>A simple wooden fence surrounds your claimed land.</p>
</div>
<div class="hub-grid">
<div class="hub-item">
<<link [img[images/camp/fireplace.webp][FireplacePage]]>><</link>>
<br>Campfire
</div>
<div class="hub-item">
<<link [img[images/camp/yourhut.webp][PlayerHut]]>><</link>>
<br>Your Hut
</div>
<div class="hub-item">
<<relBadge "HunterPage">>
<<link [img[images/camp/hunter.webp][HunterPage]]>><</link>>
<br>Huntress' Hut
</div>
<<if $hasLonghouse>>
<div class="hub-item">
<<link [img[images/camp/longhouse.webp][LonghousePage]]>><</link>>
<br>Chieftain's Longhouse
</div>
<</if>>
<<if $hasTrainingGrounds>>
<div class="hub-item">
<<link [img[images/camp/training.webp][TrainingPage]]>><</link>>
<br>Training Grounds
</div>
<</if>>
<<if $hasSmith>>
<div class="hub-item">
<<if $smithFound>>
<<relBadge "SmithPage">>
<</if>>
<<link [img[images/camp/smith.webp][SmithPage]]>><</link>>
<br>Blacksmith
</div>
<</if>>
<<if $hasBarracks>>
<div class="hub-item">
<<link [img[images/camp/barracks.webp][TheBarracks]]>><</link>>
<br>Barracks
</div>
<</if>>
<<if $hasShamanHut>>
<div class="hub-item">
<<if $shamanFound>>
<<relBadge "ShamanPage">>
<</if>>
<<link [img[images/camp/shaman.webp][ShamanPage]]>><</link>>
<br>Shaman's Hut
</div>
<</if>>
<<if $hasSlavePens>>
<div class="hub-item">
<<link [img[images/camp/pens1.webp][SlavePens]]>><</link>>
<br>Slave Pens
</div>
<</if>>
<<if $hasFarm>>
<div class="hub-item">
<<link [img[images/camp/farm.webp][Farm]]>><</link>>
<br>Farm
</div>
<</if>>
<<if $hasStables>>
<div class="hub-item">
<<link [img[images/camp/stables.webp][StablesPage]]>><</link>>
<br>Stables
</div>
<</if>>
<div class="hub-item" style="border-style: dashed; border-color: #666;">
<<link [img[images/camp/build_icon.webp][CampBuildMenu]]>><</link>>
<br><span style="color:gold;">Construction</span>
</div>
<div class="hub-item" style="border-style: dotted;">
<<link [img[images/locations/camp_thumb.webp][OutsideHub]]>><</link>>
<br>Leave Camp
</div>
</div>
<</nobr>><<nobr>>
<div style="text-align:center; margin-top:50px;">
<h2 style="color:gold;">Day $day</h2>
<<set _report to $eventLog[$eventLog.length - 1]>>
<<if $player.hunger lte 0>>
<p style="color:#ff4444;">⚠️ You are starving. You lost HP during the night and feel faint.</p>
<p style="color:#888;font-size:0.9em;">HP: $player.hp / $player.maxHp</p>
<<elseif not ($food gt 0)>>
<p style="color:#ff9800;">⚠️ There was no food last night. Your hunger is dropping.</p>
<p style="color:#888;font-size:0.9em;">Satiety: $player.hunger / $player.maxHunger</p>
<<else>>
<p style="color:#44ff44;">✓ Your tribe was fed. You wake up rested and healed.</p>
<</if>>
<div style="background:#222; padding:15px; border-left:4px solid gold; margin:15px 0; text-align:left;">
<b>⚡ Energy</b> restored to full.<br>
<b>❤ HP</b> restored by 50%.<br>
<<set _mouths to 1 + $tribe.length + $slaves.length>>
<b>🍖 Food consumed:</b> _mouths (you + $tribe.length tribe + $slaves.length slaves)
<<set _compHealed to false>>
<<for _wi = 0; _wi < $companions.length; _wi++>>
<<if $companions[_wi].hp lt $companions[_wi].maxHp>><<set _compHealed to true>><</if>>
<</for>>
<<if _compHealed>>
<div style="color:#44aa44;font-size:0.85em;margin-top:4px">⚕ Companions recovered HP overnight.</div>
<</if>>
</div>
<<if $villageTribute gt 0>>
<<set _daysSinceVisit to $day - $lastTributeVisitDay>>
<<if _daysSinceVisit gte 30>>
<<set $lastTributeVisitDay to $day>>
<<goto "Event_TributeVisit">>
<</if>>
<</if>>
<<if $villageSaved>>
<<if random(1, 100) lte 25>>
<<set _enemies to []>>
<<run _enemies.push(clone(setup.enemyPresets.RaidLeader))>>
<<set _raiderCount to random(1, 4)>>
<<for _i to 0; _i lt _raiderCount; _i++>>
<<run _enemies.push(clone(setup.enemyPresets.Raider))>>
<</for>>
<<set $returnTo to "CampHub">>
<<run setup.initCombat(_enemies)>>
<<goto "Event_CampRaid">>
<</if>>
<</if>>
<<link "Rise and Shine">>
<<checkForEscape "PlayerHut">>
<</link>>
</div>
<</nobr>><<nobr>>
<div style="background:#1a1208;border:1px solid #5c4d2d;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4"><center>
<div style="max-width: 680px; margin: 25px auto; text-align: left; line-height: 1.65; font-size: 1.05em; color: #ddd;">
You stepped forward to claim your birthright, but Kurgan was far stronger and more experienced. <br>
His fist slammed into your jaw like a hammer. The world spun, and you hit the cold ground hard. <br>
<center><video width="80%" style="border: 3px solid #600; border-radius: 6px; margin: 15px 0;" autoplay loop muted>
<source src="images/intro/lost.webm" type="video/webm">
</video>
<br>
<span style="color:#c0392b; font-weight:bold;">You lost.</span> <br></center>
Kurgan stood over you, breathing heavily, his eyes filled with contempt. He didn’t kill you — that would have made you a martyr. Instead, he chose something slower and crueler. <br>
<<say "kurgan" "images/NPC/kurgan/profile.webp" "I cast you out" "#DC143C">> Kurgan spat, throwing an old, rusted hunting axe at your feet. <br>
<<say "kurgan" "images/NPC/kurgan/profile.webp" "Throw this useless thing out in the snow. If the frost doesn’t claim you by morning, the wolves will. You are no longer of this tribe." "#DC143C">> <br><br>
<center><img src="images/intro/defeat.webp" width="80%" style="border: 3px solid #600; border-radius: 6px; margin: 15px 0;"></center>
<br><br>
The warriors dragged you through the snow and threw you into the howling blizzard. Behind you, the heavy gates of your home slammed shut with brutal finality.
<br>
Ahead lay only the endless white silence of the Deep North.
<br><br>
But you did not die.
Hours later, half-frozen and barely conscious, you stumbled into a narrow sheltered valley hidden between jagged rocks. Ancient stone ruins jutted from the snow like broken bones.
<br>
As you collapsed against a ruined wall, a figure emerged from the shadows — a woman wrapped in furs, bow slung across her back, her sharp eyes scanning you carefully.
<br><br>
<center><img src="images/NPC/elara/intro.webp" width="80%" style="width:80%;height:500px;object-fit:cover;object-position:80% 30%;border-radius:6px;margin-bottom:8px" onerror="this.style.display='none'"></center> <br>
She was tall, lean, and moved with the silent grace of a predator. Snowflakes clung to her blonde braided hair.
<<say "Elara" "images/NPC/elara/profile.webp" "You’re not dead yet, most would have frozen by now." "#006400">> it's the last thing you hear before losing your senses again.
</div>
<br><br>
[[Continue|Intro_Build]]
</center></div>
<</nobr>><<nobr>>
<div style="text-align:center; margin-top:50px;">
<h1 style="color:#888;">Everything fades to black...</h1>
<p>Your vision dims as your wounds drag you down into darkness.</p>
<p><i>You have fallen unconscious.</i></p>
<hr>
<p>Hours later, you wake up shivering. You've been dragged to a somewhat safe spot, but you feel weak and some time has passed.</p>
<<set $day += 1>>
<<set $hour to 8>>
<<set $minute to 0>>
<<set $player.hp to Math.max(1, Math.floor($player.maxHp * 0.15))>>
<<set $player.energy to $player.maxEnergy>>
<<run setup.dailyMaintenance()>>
<<run setup.updatePhase()>>
<div style="background:#222; padding:15px; border-left:4px solid #fa5252; margin:20px auto; max-width:400px; text-align:left;">
<b style="color:#fa5252;">You wake up at:</b><br>
HP: $player.hp / $player.maxHp<br>
Energy: $player.energy / $player.maxEnergy
</div>
[[Struggle to your feet...|CampHub]]
</div>
<</nobr>><<nobr>>
<h2>Construction Site</h2>
<div style="background: #333; padding: 5px; border-radius: 4px; margin-bottom: 15px;">
Resources Available: 🌲 <b>$wood</b> | 🪨 <b>$stone</b>
</div>
<<if $player.energy < 25>>
<p style="color: #ff5f5f; font-weight: bold; border: 1px solid #ff5f5f; padding: 10px; border-radius: 5px;">
You are too tired to build anything. Your muscles ache and your vision blurs. You need to rest.
</p>
<br>
<<else>>
<<if $hasTrainingGrounds is false>>
<div style="background:#222; padding:10px; margin-bottom:8px; border:1px solid #555; border-radius: 5px;">
<h3 style="margin:0;">Training Grounds</h3>
<small>Allows you to train stats and combat skills.</small>
<br>Cost: <span style="color:gold">50 Wood, 10 Stone</span>
<br>
<<if $wood >= 50 and $stone >= 10>>
<<button "Construct">>
<<set $wood -= 50>><<set $stone -= 10>>
<<passTime 120>>
<<set $hasTrainingGrounds to true>>
<<run Engine.show()>>
<</button>>
<<else>>
<span style="color: #fa5252;">(Need more resources)</span>
<</if>>
</div>
<</if>>
<<if $hasSmith is false>>
<div style="background:#222; padding:10px; margin-bottom:8px; border:1px solid #555; border-radius: 5px;">
<h3 style="margin:0;">Blacksmith</h3>
<small>Craft iron weapons and tools.</small>
<br>Cost: <span style="color:gold">150 Wood, 100 Stone</span>
<br>
<<if $wood >= 150 and $stone >= 100>>
<<button "Construct">>
<<set $wood -= 150>><<set $stone -= 100>>
<<passTime 120>>
<<set $hasSmith to true>>
<<run Engine.show()>>
<</button>>
<<else>>
<span style="color: #fa5252;">(Need more resources)</span>
<</if>>
</div>
<</if>>
<<if $hasFarm is false>>
<div style="background:#222; padding:10px; margin-bottom:8px; border:1px solid #555; border-radius: 5px;">
<h3 style="margin:0;">Farm</h3>
<small>Food production.</small>
<br>Cost: <span style="color:gold">100 Wood </span>
<br>
<<if $wood >= 100>>
<<button "Construct">>
<<set $wood -= 100>>
<<passTime 120>>
<<set $hasFarm to true>>
<<run Engine.show()>>
<</button>>
<<else>>
<span style="color: #fa5252;">(Need more resources)</span>
<</if>>
</div>
<</if>>
<<if $hasLonghouse is false>>
<div style="background:#222; padding:10px; margin-bottom:8px; border:1px solid #555; border-radius: 5px;">
<h3 style="margin:0;">Longhouse</h3>
<small>Seat of power. Unlocks management.</small>
<br>Cost: <span style="color:gold">150 Wood, 100 Stone</span>
<br>
<<if $wood >= 150 and $stone >= 100>>
<<button "Construct">>
<<set $wood -= 150>><<set $stone -= 100>>
<<passTime 120>>
<<set $hasLonghouse to true>>
<<run Engine.show()>>
<</button>>
<<else>>
<span style="color: #fa5252;">(Need more resources)</span>
<</if>>
</div>
<</if>>
<<if $hasShamanHut is false>>
<div style="background:#222; padding:10px; margin-bottom:8px; border:1px solid #555; border-radius: 5px;">
<h3 style="margin:0;">Shaman's Hut</h3>
<small>A mysterious hut full of weird trinkets.</small>
<br>Cost: <span style="color:gold">100 Wood, 50 Stone</span>
<br>
<<if $wood >= 100 and $stone >= 50>>
<<button "Construct">>
<<set $wood -= 100>><<set $stone -= 50>>
<<passTime 120>>
<<set $hasShamanHut to true>>
<<run Engine.show()>>
<</button>>
<<else>>
<span style="color: #fa5252;">(Need more resources)</span>
<</if>>
</div>
<</if>>
<div style="background:#222; padding:10px; margin-bottom:8px; border:1px solid #555; border-radius: 5px;">
<h3 style="margin:0;">Barracks</h3>
<small>Capacity: $tribeLimit members</small><br>
<<if $hasBarracks is false>>
Cost: <span style="color:gold">50 Wood</span>
<br>
<<if $wood >= 50>>
<<button "Construct Barracks">>
<<set $wood -= 50>>
<<passTime 120>>
<<set $hasBarracks to true>>
<<run Engine.show()>>
<</button>>
<<else>>
<span style="color: #fa5252;">(Need more Wood)</span>
<</if>>
<<else>>
Cost: <span style="color:gold">40 Wood</span>
<br>
<<if $wood >= 40>>
<<button "Expand Barracks (+5 Slots)">>
<<set $wood -= 40>>
<<set $tribeLimit += 5>>
<<set $player.energy -= 15>>
<<passTime 90>>
<<run Engine.show()>>
<</button>>
<<else>>
<span style="color: #fa5252;">(Need resources to expand)</span>
<</if>>
<</if>>
</div>
<div style="background:#222; padding:10px; margin-bottom:8px; border:1px solid #555; border-radius: 5px;">
<h3 style="margin:0;">Slave Pens</h3>
<small>Capacity: $slaveLimit beds (Occupied: $slaves.length)</small><br>
<<if $hasSlavePens is false>>
Cost: <span style="color:gold">50 Wood</span>
<br>
<<if $wood >= 50>>
<<button "Construct Slave Pens">>
<<set $wood -= 50>>
<<passTime 120>>
<<set $hasSlavePens to true>>
<<run Engine.show()>>
<</button>>
<<else>>
<span style="color: #fa5252;">(Need more Wood)</span>
<</if>>
<<else>>
Cost: <span style="color:gold">30 Wood 10 Stone</span> <br>
<<if $wood >= 30 and $stone >= 10>>
<<button "Expand Slave Pens (+4 Beds)">>
<<set $wood -= 30>>
<<set $stone -= 10>>
<<set $slaveLimit += 4>>
<<set $player.energy -= 15>>
<<passTime 90>>
<<run Engine.show()>>
<</button>>
<<else>>
<span style="color: #fa5252;">(Need resources to expand)</span>
<</if>>
<</if>>
</div>
<<if $hasStables is false>>
<div style="background:#222; padding:10px; margin-bottom:8px; border:1px solid #555; border-radius: 5px;">
<h3 style="margin:0;">Stables</h3>
<small>Stables for camp's steeds.</small>
<br>Cost: <span style="color:gold">100 Wood</span>
<br>
<<if $wood >= 100>>
<<button "Construct">>
<<set $wood -= 100>>
<<passTime 120>>
<<set $hasStables to true>>
<<run Engine.show()>>
<</button>>
<<else>>
<span style="color: #fa5252;">(Need more resources)</span>
<</if>>
</div>
<</if>>
<</if>>
<hr>
<br>
[[Go Back|CampHub]]
<</nobr>><<nobr>>
<<passTime 30>>
<<if $quest_shaman is 1 and ($hour >= 20 or $hour <= 4) and not $shamanFound>>
<<goto "Event_ShamanRescue">>
<</if>>
<div style="text-align:center; padding: 10px; border: 1px solid #2d5a27; background: rgba(20, 40, 20, 0.8);">
<h2 style="color: #71aa68; margin-top: 0;">🌲 The Black Forest</h2>
<p style="font-size: 0.9em;">Shadows dance between the ancient pines. Every step away from camp is a risk.</p>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 15px;">
<<set _npcKey to "elara">>
<<set _def to setup.relNPCDefs[_npcKey]>>
<<set _stats to setup.getRelNPC(_npcKey)>>
<<set _loc to setup.getRelNPCLocation(_npcKey)>>
<<if _loc is "Forest">>
<div style="border-left: 4px solid #fa5252; background: #222; padding: 10px; display: flex; align-items: center;">
<<link '<img src="images/NPC/elara/hunting.webp" style="width: 80px; height: 80px; border-radius: 50%; border: 2px solid gold; object-fit:cover; object-position:center 30%;" onerror="this.style.display=\'none\'">'>>
<<if $player.energy >= 20>>
<<set $player.energy -= 20>>
<<set _huntRoll to random(1, 100) + ($player.agi * 2)>>
<<if _huntRoll > 60>>
<<set _gain to random(5, 12)>> <<set $food += _gain>> <<set $pelts += 1>>
<<run UI.alert("Success! You brought back " + _gain + " meat and a pelt.")>>
<<goto "Forest">>
<<else>>
<<run UI.alert("The prey escaped your arrows.")>>
<<goto "Forest">>
<</if>>
<<else>>
<<run UI.alert("Your hands are too shaky from fatigue to aim.")>>
<</if>>
<</link>>
<div style="margin-left: 20px;">
<b> Elara is hunting</b>
<small style="color: #fa5252;">(-20 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Help her.</span>
</div>
</div>
<<else>>
<div style="border-left: 4px solid #fa5252; background: #222; padding: 10px;">
<b>🏹 Hunt for Food</b> <small style="color: #fa5252;">(-20 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Track game to fill the hoard. Danger of predators.</span>
<br><<button "Start Tracking">>
<<if $player.energy >= 20>>
<<set $player.energy -= 20>>
<<set _huntRoll to random(1, 100) + ($player.agi * 2)>>
<<if _huntRoll > 60>>
<<set _gain to random(5, 12)>> <<set $food += _gain>> <<set $pelts += 1>>
<<run UI.alert("Success! You brought back " + _gain + " meat and a pelt.")>>
<<goto "Forest">>
<<else>>
<<run UI.alert("The prey escaped your arrows.")>>
<<goto "Forest">>
<</if>>
<<else>>
<<run UI.alert("Your hands are too shaky from fatigue to aim.")>>
<</if>>
<</button>>
</div>
<</if>>
<div style="border-left: 4px solid #4dabf7; background: #222; padding: 10px;">
<b>🧭 Explore the Wilds</b> <small style="color: #fa5252;">(-15 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Search for ruins, hidden paths, or loot.</span>
<br><<button "Venture Forth">>
<<if $player.energy >= 15>>
<<set $player.energy -= 15>>
<<set _roll to random(1, 100)>>
<<if _roll > 90>>
<<goto "Event_Merchant">>
<<elseif _roll > 80>>
<<goto "Event_Ambush">>
<<elseif _roll > 70>>
<<goto "Event_WolfPack">>
<<elseif _roll > 60>>
<<goto "Event_BoarSounder">>
<<elseif _roll > 50>>
<<goto "Event_Change">>
<<elseif _roll > 40>>
<<goto "Event_Dryad">>
<<elseif _roll > 30>>
<<goto "Event_Bear">>
<<elseif _roll > 20>>
<<goto "Event_Leshy">>
<<elseif _roll > 10>>
<<goto "Event_Centaurs">>
<<else>>
<<goto "Event_Walk">>
<</if>>
<<else>>
<<run UI.alert("You are too exhausted to explore deeper.")>>
<</if>>
<</button>>
</div>
<div style="border-left: 4px solid #fab005; background: #222; padding: 10px;">
<b>🪓 Gather Wood</b> <small style="color: #fa5252;">(-10 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Collect fallen branches and chop small trees.</span>
<br><<button "Swing Axe">>
<<if $player.energy >= 10>>
<<set $player.energy -= 10>>
<<set _woodGain to random(8, 20) + Math.floor($player.str / 2)>>
<<set $wood += _woodGain>>
<<run UI.alert("You gathered " + _woodGain + " wood.")>>
<<goto "Forest">>
<<else>>
<<run UI.alert("You don't have the strength to lift the axe.")>>
<</if>>
<</button>>
</div>
<br>
<<displayWorkingNPCs>>
</div>
<br>
<center>
[[Go Back|OutsideHub]]
</center><</nobr>><<nobr>>
<style>
.hub-grid {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 20px;
margin-top: 25px;
}
.hub-item {
position: relative;
width: 170px;
text-align: center;
background: #1c1c1c;
border: 2px solid #444;
border-radius: 8px;
padding: 12px;
transition: all 0.25s ease;
}
.hub-item img:not(.rel-npc-badge) {
width: 140px !important;
height: 140px !important;
object-fit: cover;
border-radius: 4px;
display: block;
margin: 0 auto 12px auto;
border: 2px solid #555;
}
.hub-item:hover {
border-color: #d4af77;
box-shadow: 0 0 15px rgba(212, 175, 119, 0.4);
transform: scale(1.06);
}
.hub-item a {
text-decoration: none;
color: #e8d8b0;
font-weight: bold;
font-size: 0.95em;
}
.hub-item a:hover {
color: #f0c060;
}
</style>
<h2>The World Beyond</h2>
<div class="hub-grid">
<div class="hub-item">
<<link [img[images/locations/camp_thumb.webp][CampHub]]>>
<</link>>
<br>Your Camp
</div>
<div class="hub-item">
<<link [img[images/locations/explore_thumb.webp][ExploreEvent]]>>
<</link>>
<br>Explore Wilds
</div>
<<if $hasDiscoveredForest>>
<div class="hub-item">
<<relBadge "Forest">>
<<link [img[images/locations/forest_thumb.webp][Forest]]>><</link>>
<br>Black Forest
</div>
<</if>>
<<if $hasDiscoveredSwamp>>
<div class="hub-item">
<<link [img[images/locations/swamp_thumb.webp][Swamp]]>><</link>>
<br>Sinking Swamp
</div>
<</if>>
<<if $hasDiscoveredMountain>>
<div class="hub-item">
<<link [img[images/locations/mountain_thumb.webp][Mountain]]>><</link>>
<br>Iron Peaks
</div>
<</if>>
<<if $hasDiscoveredDeepNorth>>
<div class="hub-item">
<<link [img[images/locations/deep_north_thumb.webp][North]]>><</link>>
<br>Deep North
</div>
<</if>>
<<if $hasDiscoveredVillage>>
<div class="hub-item">
<<link [img[images/locations/village_thumb.webp][Village]]>><</link>>
<br>Small Village
</div>
<</if>>
<<if $hasDiscoveredCity>>
<div class="hub-item">
<<link [img[images/locations/city_thumb.webp][City]]>><</link>>
<br>Highcrest
</div>
<</if>>
</div><</nobr>><<nobr>>
<<passTime 60>>
<<if $quest_smith is 1 and not $smithFound>>
<<goto "Event_SmithRescue">>
<</if>>
<div style="text-align:center; padding: 10px; border: 1px solid #5c4d2d; background: rgba(40, 35, 20, 0.85);">
<h2 style="color: #d9b36c; margin-top: 0;">⛰️ The Mountain</h2>
<p style="font-size: 0.9em;">Cold winds and broken stone. Riches lie beneath the rock — and danger above it.</p>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 15px;">
<<displayWorkingNPCs>>
<!-- STONE -->
<div style="border-left: 4px solid #adb5bd; background: #222; padding: 10px;">
<b>🪨 Gather Stone</b> <small style="color: #fa5252;">(-15 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Break loose rock and collect usable stone blocks.</span>
<br>
<<button "Collect Stone">>
<<if $player.energy >= 15>>
<<set $player.energy -= 15, _gain to random(8, 15) + Math.floor($player.str / 2)>>
<<set $stone += _gain>>
<<run UI.alert("Gathered " + _gain + " Stone!")>>
<<goto "Mountain">>
<<else>>
<<run UI.alert("Too tired!")>>
<</if>>
<</button>>
</div>
<<if $mineUnlocked>>
<div style="border-left: 4px solid #adb5bd; background: #222; padding: 10px;">
<b>⛏️ Overgrown Mine</b>
<br><span style="font-size: 0.8em; color: #aaa;">The path to the iron vein is secured. Your workers are active here.</span>
<br>
<<button "Enter the Mine">>
<<goto "Iron_Mine">>
<</button>>
</div>
<<elseif $mineFound and not $mineUnlocked and not $mineExplored>>
<div style="border-left: 4px solid #f59f00; background: #2a1f0a; padding: 10px; margin-bottom: 10px;">
<b style="color: #f59f00;">⚠️ The Ruined Karak</b>
<br><span style="font-size: 0.8em; color: #aaa;">You found the ancient Dwarven gate. The dark tunnels await clearing.</span>
<br>
<<button "Resume Expedition">>
<<set $dungeon_depth = $dungeon_depth || 1>>
<<goto "Karak_Floor_1">>
<</button>>
</div>
<<elseif $mineExplored and not $mineUnlocked>>
<div style="border-left: 4px solid #f59f00; background: #2a1f0a; padding: 10px; margin-bottom: 10px;">
<b style="color: #f59f00;">⚠️ The Ruined Karak</b>
<br><span style="font-size: 0.8em; color: #aaa;">The ancient Dwarven Karak is cleared. Go back to Leva to define how to finally claim it as yours.</span>
</div>
<</if>>
<<if not $mineUnlocked>>
<div style="border-left: 4px solid #868e96; background: #222; padding: 10px;">
<b>⛏️ Mine Iron</b> <small style="color: #fa5252;">(-20 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Dig into the veins of ore hidden in the cliffs.</span>
<br>
<<button "Mine Vein">>
<<if $player.energy >= 20>>
<<set $player.energy -= 20, _gain to random(3, 8) + Math.floor($player.str / 3)>>
<<set $iron += _gain>>
<<run UI.alert("Mined " + _gain + " Iron!")>>
<<goto "Mountain">>
<<else>>
<<run UI.alert("Too tired!")>>
<</if>>
<</button>>
</div>
<</if>>
<!-- EXPLORE -->
<div style="border-left: 4px solid #74c0fc; background: #222; padding: 10px;">
<b>🧭 Explore the Slopes</b> <small style="color: #fa5252;">(-20 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Search caves, ruins, or hidden mountain paths.</span>
<br>
<<button "Climb Higher">>
<<if $player.energy >= 20>>
<<set $player.energy -= 20>>
<<if $quest_smith is 2 and not $mineFound>>
<<set $mineFound to true>>
<<goto "Event_Mine_Discovery">>
<<else>>
<<set _roll to random(1, 100)>>
<<if _roll > 80>>
<<goto "Event_RivalBarbarians">>
<<elseif _roll > 40>>
<<goto "Event_Arpies">>
<<else>>
<<goto "Event_Quiet">>
<</if>>
<</if>>
<<else>>
<<run UI.alert("Too tired!")>>
<</if>>
<</button>>
</div>
</div>
<br>
<center>
[[Go Back|OutsideHub]]
</center>
<</nobr>>v 0.03
updated combat
low loyalty tribe memebers will challenge your authority now
low love/submission slaves will try to run away
new quest for the necromancer's ring
new trainer for abilites to use in combat, a female PC can have a sex scene with him
updated videos for actions in camp and npcs working in the camp
fixed health potions not showing in combat
fixed always interacting with the same NPC when doing jobs in camp
<<nobr>>
<<set $returnTo to "ExploreEvent">>
<<if $player.energy < 10>>
<h3>The Wilderness</h3>
<img src="images/locations/explore_thumb.webp" style="width:200px; border-radius:8px; opacity: 0.5; filter: grayscale(100%);">
<p style="color: #ff5f5f; font-weight: bold; border: 1px solid #ff5f5f; padding: 10px; border-radius: 5px;">
You are too tired to continue exploring. Your muscles ache and your vision blurs. You need to rest.
</p>
<br>
<<link "Go Back" "OutsideHub">><</link>>
<<else>>
<<passTime 60>>
<<set _roll to random(1, 100)>>
<<if _roll <= 15 and $hasDiscoveredForest is false>>
<h3>Discovery!</h3>
<img src="images/locations/forest_thumb.webp" style="width:200px; border-radius:8px; border:2px solid gold;">
<p>You push through a thicket of thorns and find a hidden path leading into a dense, ancient forest.</p>
<<set $hasDiscoveredForest to true>>
[[Explore the path|Forest]] | [[Return|OutsideHub]]
<<elseif _roll <= 25 and $hasDiscoveredMountain is false>>
<h3>Discovery!</h3>
<img src="images/locations/mountain_thumb.webp" style="width:200px; border-radius:8px; border:2px solid gold;">
<p>The air grows cold as you find a trail leading high into the rocky crags of the mountains.</p>
<<set $hasDiscoveredMountain to true>>
[[Climb the trail|Mountain]] | [[Return|OutsideHub]]
<<elseif _roll <= 35 and $hasDiscoveredSwamp is false>>
<h3>Discovery!</h3>
<img src="images/locations/swamp_thumb.webp" style="width:200px; border-radius:8px; border:2px solid gold;">
<p>A dense fog carries the smell of rotten vegetation as you walk a path that leads to an ancient swamp.</p>
<<set $hasDiscoveredSwamp to true>>
[[Enter the mists|Swamp]] | [[Return|OutsideHub]]
<<elseif _roll <= 45 and $hasDiscoveredVillage is false>>
<h3>Discovery!</h3>
<img src="images/locations/village_thumb.webp" style="width:200px; border-radius:8px; border:2px solid gold;">
<p>A small village lies on top of a steep hill. Smoke rises from small chimneys.</p>
<<set $hasDiscoveredVillage to true>>
[[Approach the village|Village]] | [[Return|OutsideHub]]
<<elseif _roll <= 55 and $hasDiscoveredCity is false>>
<h3>Discovery!</h3>
<img src="images/locations/city_thumb.webp" style="width:200px; border-radius:8px; border:2px solid gold;">
<p>The unforgiving wilderness suddenly gives way to a sprawling expanse of civilization. Towering stone walls and grand spires rise against the horizon—the city of Highcrest. The scent of woodsmoke, exotic spices, and crowded streets drifts on the cold wind, whispering of wealth, corruption, and dangerous new opportunities.</p>
<<set $hasDiscoveredCity to true>>
[[Approach the gates|City]] | [[Return|OutsideHub]]
<<elseif _roll <= 65 and $hasDiscoveredDeepNorth is false>>
<h3>Discovery!</h3>
<img src="images/locations/deep_north_thumb.webp" style="width:200px; border-radius:8px; border:2px solid gold;">
<p>You push through a blistering whiteout until the tree line shatters, giving way to an endless expanse of jagged frost. The howling winds of the Deep North bite at your skin, carrying whispers of frozen ruins and massive beasts that stalk the tundra. It is a ruthless wasteland where weakness means death.</p>
<<set $hasDiscoveredDeepNorth to true>>
[[Brave the tundra|North]] | [[Return|OutsideHub]]
<<else>>
<h3>The Wilderness</h3>
<img src="images/locations/explore_thumb.webp" style="width:200px; border-radius:8px; opacity: 0.8;">
<<set _lootRoll to random(1, 100)>>
<<if _lootRoll <= 10>>
<<set _amt to random(1, 5)>>
<<set $wood += _amt>>
<p>While scouting, you find a stand of lightning-struck trees. You gather <b>_amt Wood</b>.</p>
<<elseif _lootRoll <= 20>>
<<set _amt to random(1, 6)>>
<<set $food += _amt>>
<p>You find wild bushes heavy with berries. You harvest <b>_amt Food</b>.</p>
<<elseif _lootRoll <= 30>>
<<set _amt to random(1, 8)>>
<<set $stone += _amt>>
<p>Near a dry creek bed, you find useful river stones. You carry back <b>_amt Stone</b>.</p>
<<elseif _lootRoll <= 45>>
<p>You see someone in the distance...</p>
<<link "Approach them" "Event_RecruitEncounter">><</link>>
<<elseif _lootRoll <= 60>>
<p>You spot a strange convoy in the distance.</p>
<<link "Approach them" "Event_Convoy">><</link>>
<<elseif _lootRoll <= 90>>
<<set $pelts += 1>>
<p>You track a small beast and successfully hunt it. You gain <b>1 Pelt</b>.</p>
<<else>>
<p>You spend an hour wandering the wastes. You find nothing but dirt and dry grass.</p>
<</if>>
<hr>
<<if $player.energy >= 10>>
<<link "Explore Again" "ExploreEvent">><</link>>
<<else>>
<p><i>You are too exhausted to explore further.</i></p>
<</if>>
<br>
<<link "Go Back" "OutsideHub">><</link>>
<</if>>
<</if>>
<</nobr>><<nobr>>
<<passTime 30>>
<<if $quest_villager is 1>>
<<goto "Event_MeetRalia">>
<</if>>
<div style="text-align:center; padding: 10px; border: 1px solid #3b5a3f; background: rgba(20, 35, 25, 0.85);">
<h2 style="color: #7bc47f; margin-top: 0;">🐊 The Swamp</h2>
<p style="font-size: 0.9em;">Rotten waters and buzzing insects. Every step sinks deeper.</p>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 15px;">
<div style="border-left: 4px solid #63e6be; background: #222; padding: 10px;">
<b>🌿 Gather Herbs</b> <small style="color: #fa5252;">(-15 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Collect rare plants and alchemical ingredients.</span>
<br>
<<button "Search Reeds">>
<<if $player.energy >= 15>>
<<set $player.energy -= 15, _gain to random(2, 6)>>
<<set $herbs += _gain>>
<<run UI.alert("Collected " + _gain + " herbs.")>>
<<goto "Swamp">>
<<else>>
<<run UI.alert("The swamp drains your strength.")>>
<</if>>
<</button>>
</div>
<div style="border-left: 4px solid #fab005; background: #222; padding: 10px;">
<b>🐾 Hunt Swamp Beasts</b> <small style="color: #fa5252;">(-20 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Dangerous prey lurks beneath the water.</span>
<br>
<<button "Track Ripples">>
<<if $player.energy >= 20>>
<<set $player.energy -= 20, _roll to random(1,100)>>
<<if _roll > 65>>
<<set $food += random(6,12)>>
<<run UI.alert("Successful hunt!")>>
<<else>>
<<run UI.alert("The creature escaped.")>>
<</if>>
<<goto "Swamp">>
<<else>>
<<run UI.alert("Too exhausted to hunt.")>>
<</if>>
<</button>>
</div>
<div style="border-left: 4px solid #4dabf7; background: #222; padding: 10px;">
<b>🧭 Explore the Mire</b> <small style="color: #fa5252;">(-20 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Ruins, spirits, or worse.</span>
<br>
<<button "Push Forward">>
<<if $player.energy >= 20>>
<<set $player.energy -= 20, _roll to random(1,100)>>
<<if _roll > 75>><<goto "Event_SlaveElf">>
<<elseif _roll > 35>><<goto "Event_Witch">>
<<else>><<goto "Event_Quiet">><</if>>
<<else>>
<<run UI.alert("You sink into the mud, too tired.")>>
<</if>>
<</button>>
</div>
</div>
<br>
<center>[[Go Back|OutsideHub]]</center>
<</nobr>><<nobr>>
<<passTime 30>>
<<set _daysSinceRaid to $day - $lastRaidDay>>
<<if _daysSinceRaid gte 30>>
<<set $lastRaidDay to $day>>
<<goto "Event_VillageRaid">>
<</if>>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 15px;">
<div style="border-left: 4px solid #82c91e; background: #222; padding: 10px;">
<b>💼 Take Odd Jobs</b> <small style="color: #fa5252;">(-10 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Manual labor, guard duty, or errands.</span>
<br>
<<button "Ask Around">>
<<if $player.energy >= 10>>
<<set $player.energy -= 10, _gain to random(5,12)>>
<<set $gold += _gain>>
<<run UI.alert("Earned " + _gain + " gold.")>>
<<goto "Village">>
<<else>>
<<run UI.alert("Too tired to work.")>>
<</if>>
<</button>>
</div>
<div style="border-left: 4px solid #fab005; background: #222; padding: 10px;">
<b>⛪ Village Square</b>
<br><span style="font-size: 0.8em; color: #aaa;">The bustling heart of Oakvale — market stands, gossip, and village life.</span>
<br>
<<button "Go to the Village Square">>
<<goto "VillageSquare">>
<</button>>
</div>
<div style="border-left: 4px solid #5a9a8a; background: #222; padding: 10px;">
<b>🚶 Walk Around the Village</b> <small style="color: #fa5252;">(-5 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Wander the village and see what the day brings.</span>
<br>
<<button "Take a Walk">>
<<if $player.energy >= 5>>
<<set $player.energy -= 5>>
<<set _villageEvents to ["Event_Rumor", "Event_VillageRiver"]>>
<<goto _villageEvents.random()>>
<<else>>
<<run UI.alert("Your legs feel too heavy to move.")>>
<</if>>
<</button>>
</div>
</div>
<br>
<center>[[Go Back|OutsideHub]]</center>
<</nobr>><<nobr>>
<div style="text-align:center;">
<img src="images/camp/camp.webp" style="width: 80%; max-width: 800px; border-radius: 8px; border: 2px solid #555;">
<h2>The Central Fire</h2>
<p>The heart of your camp. It is warm here.</p>
</div>
<<set _isDay to ($hour gte 8 and $hour lt 20)>>
<<set $currentCook to $slaves.find(s => s.job === "Cook")>>
<div class="farm-staff-container" style="display: flex; gap: 20px; align-items: stretch; margin-bottom: 20px;">
<<if setup.countJob("Cook") gt 0 and $hour gte 6 and $hour lte 21>>
<div class="staff-video" style="flex: 1; max-width: 400px; background: #1a1a1a; padding: 15px; border: 1px solid #333; border-radius: 8px; display: flex; align-items: center; justify-content: center;">
<video src="images/NPC/cook.webm" autoplay loop muted style="width: 100%; height: auto; border-radius: 6px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);"></video>
</div>
<</if>>
<div class="staff-list" style="flex: 1; min-width: 250px;">
<<displayWorkingNPCs>>
</div>
</div>
<hr>
<div style="display: flex; justify-content: space-around; background: #222; padding: 10px; border-radius: 5px; border: 1px solid #444;">
<span>🥩 Food: <b>$food</b></span>
<span>🍖 Satiety: <b>$player.hunger%</b></span>
<span>⚡ Energy: <b>$player.energy%</b></span>
</div>
<br>
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 10px;">
<div style="background: #1a1a1a; padding: 15px; border: 1px solid #444; border-radius: 8px;">
<h3>Eat</h3>
<<if $food >= 1>>
<<if $player.energy lt 100>>
<<set _bonus to ($currentCook ? 15 : 0)>>
<<button "Eat Meal (1 Food)">>
<<set $food -= 1>>
<<set $player.energy to setup.clamp($player.energy + 25 + _bonus, 0, 100)>>
<<goto "FireplacePage">>
<</button>>
<<if $currentCook>>
<br><small style="color: lime;">+Bonus: Prepared by $currentCook.name</small>
<</if>>
<<else>>
<span style="color:gold;">You are full.</span>
<</if>>
<<else>>
<span style="color:red;">No food!</span>
<</if>>
</div>
<div style="background: #1a1a1a; padding: 15px; border: 1px solid #444; border-radius: 8px;">
<h3>Rest</h3>
<<if $player.energy < 100>>
<<button "Rest (1 Hour)">>
<<passTime 60>>
<<set $player.energy to setup.clamp($player.energy + 25, 0, 100)>>
<<goto "FireplacePage">>
<</button>>
<<else>>
<span style="color:gold;">you feel reinvigorated.</span>
<</if>>
</div>
</div>
<hr>
<div style="text-align: center;">
[[Go Back|CampHub]]
</div>
<</nobr>><<nobr>>
<<if $tribe and $tribe.length gt 0>>
<<set _lowLoyaltyTribe to $tribe.filter(t => t.loyalty lt 55)>>
<<if _lowLoyaltyTribe.length gt 0>>
<<if random(1, 100) lte 30>>
<<set $activeNPC to _lowLoyaltyTribe.random()>>
<<set $activeNPCIndex to $tribe.findIndex(t => t.id === $activeNPC.id)>>
<<set $activeNPCType to "tribe">>
<<goto "Event_TribalChallenge">>
<</if>>
<</if>>
<</if>>
<div style="text-align:center;">
<img src="images/camp/my_hut.webp" style="width: 80%; max-width: 800px; border-radius: 8px; border: 2px solid #555;">
<h2>Your Private Hut</h2>
<p>It isn't much, but it's yours. The furs are warm and the floor is dry.</p>
<<set _hasMaid to setup.countJob("Maid")>>
<<set _isDay to ($hour gte 8 and $hour lt 20)>>
<div class="farm-staff-container" style="display: flex; gap: 20px; align-items: stretch; margin-bottom: 20px;">
<<if setup.countJob("Maid") gt 0 and $hour gte 7 and $hour lte 18>>
<div class="staff-video" style="flex: 1; max-width: 400px; background: #1a1a1a; padding: 15px; border: 1px solid #333; border-radius: 8px; display: flex; align-items: center; justify-content: center;">
<video src="images/NPC/maid.webm" autoplay loop muted style="width: 100%; height: auto; border-radius: 6px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);"></video>
</div>
<</if>>
<div class="staff-list" style="flex: 1; min-width: 250px;">
<<displayWorkingNPCs>>
</div>
</div>
</div>
<hr>
<<if $shamanFound and $quest_shaman is 2 and $timePhase is "Night">>
<div style="background: #2a0a0a; padding: 15px; border: 1px solid #ff4444; border-radius: 8px; margin-bottom: 15px;">
<h3 style="color: #ff4444;">An Unnatural Chill...</h3>
<p style="font-style: italic; color: #ddd;">
A freezing mist has rolled through the camp. You notice Kaelith's hut is strangely dark, and faint chanting echoes from the dark woods nearby.
</p>
<<button "Investigate the woods">>
<<goto "Event_ShamanRitual1">>
<</button>>
</div>
<</if>>
<div style="background: #1a1a1a; padding: 15px; border: 1px solid #444; border-radius: 8px;">
<h3>Sleep until Morning</h3>
<p>A full night's rest will restore your energy and heal your wounds.</p>
<<button "Sleep" (Pass to Day " + ($day + 1)")>>
<<nextDay>>
<</button>>
</div>
<br>
<div id="washing-display">
<div style="background: #1a1a1a; padding: 15px; border: 1px solid #444; border-radius: 8px;">
<h3>Go wash in the river</h3>
<p>Clean yourself and restore some energy.</p>
<<button "Wash in the River">>
<<set $player.energy += 25>>
<<passTime 30>>
<<replace "#washing-display">>
<div style="text-align:center; padding:20px; border:2px solid gold; background:#000; border-radius:8px;">
<h3>Taking a bath</h3>
<<if $player.bodyType is "female">>
<<set _vidNum to random(1, 4)>>
<<set _vidSrc to "images/actions/bath" + _vidNum + ".webm">>
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px;">
<source @src="_vidSrc" type="video/webm">
</video>
<<else>>
<video autoplay loop muted playsinline style="width:100%; max-width:400px; border-radius:5px;">
<source src="images/actions/bathm.webm" type="video/webm">
</video>
<</if>>
<p style="margin-top:15px;">You feel refreshed and your energy is restored.</p>
<<button "Finish">><<run Engine.show()>><</button>>
</div>
<</replace>>
<</button>>
</div>
</div>
<hr>
[[Exit Hut|CampHub]]<</nobr>><<nobr>>
<<if $timePhase is "Morning" and $main_stage is 1 and $player.str gte 20>>
<<goto "Elara_Spar">>
<</if>>
<div id="training-display">
<center> <img src="images/camp/trainingin.webp" style="width: 80%; max-width: 800px; border-radius: 8px; border: 2px solid #555;"></center>
<div style="text-align:center;">
<h2>The Training Grounds</h2>
<div style="background:#222; padding:10px; border-radius:5px; margin-bottom:20px; border:1px solid gold;">
💪 STR: $player.str |
🏃 AGI: $player.agi |
🛡️ CON: $player.con |
✨ CHA: $player.cha |
🧠 INT: $player.int |
⚡ Energy: $player.energy
</div>
</div>
<div style="display:grid; grid-template-columns:1fr 1fr; gap:10px;">
<div style="background:#1a1a1a; padding:15px; border:1px solid #444;">
<h4>Raw Power</h4>
<<if $player.energy >= 25>>
<<button "Train Strength">>
<<set $player.str += 1>>
<<passTime 120>>
<<replace "#training-display">>
<div style="text-align:center; padding:20px; border:2px solid gold; background:#000;">
<h3>Training Strength...</h3>
<<if $player.bodyType is "female">>
<<set _vidNum to random(1, 5)>>
<<set _vidSrc to "images/actions/str" + _vidNum + ".webm">>
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px;"><source @src="_vidSrc" type="video/webm"></video>
<<else>>
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px;"><source src="images/actions/strm.webm" type="video/webm"></video>
<</if>>
<p style="margin-top:15px;">You push your body to its absolute limits.</p>
<<button "Finish">><<run Engine.show()>><</button>>
</div>
<</replace>>
<</button>>
<<else>>
<span style="color:#fa5252;">Too tired!</span>
<</if>>
</div>
<div style="background:#1a1a1a; padding:15px; border:1px solid #444;">
<h4>Speed & Reflex</h4>
<<if $player.energy >= 25>>
<<button "Train Agility">>
<<set $player.agi += 1>>
<<passTime 120>>
<<replace "#training-display">>
<div style="text-align:center; padding:20px; border:2px solid gold; background:#000;">
<h3>Training Agility...</h3>
<<if $player.bodyType is "female">>
<<set _vidNum to random(1, 5)>>
<<set _vidSrc to "images/actions/agi" + _vidNum + ".webm">>
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px;"><source @src="_vidSrc" type="video/webm"></video>
<<else>>
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px;"><source src="images/actions/agim.webm" type="video/webm"></video>
<</if>>
<p style="margin-top:15px;">You dart between obstacles with sharpened reflexes.</p>
<<button "Finish">><<run Engine.show()>><</button>>
</div>
<</replace>>
<</button>>
<<else>>
<span style="color:#fa5252;">Too tired!</span>
<</if>>
</div>
<div style="background:#1a1a1a; padding:15px; border:1px solid #444;">
<h4>Hardening</h4>
<<if $player.energy >= 25>>
<<button "Train Constitution">>
<<set $player.con += 1>>
<<set $player.maxHp += 5>>
<<set $player.hp += 5>>
<<passTime 120>>
<<replace "#training-display">>
<div style="text-align:center; padding:20px; border:2px solid gold; background:#000;">
<h3>Training Constitution...</h3>
<<if $player.bodyType is "female">>
<<set _vidNum to random(1, 3)>>
<<set _vidSrc to "images/actions/con" + _vidNum + ".webm">>
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px;"><source @src="_vidSrc" type="video/webm"></video>
<<else>>
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px;"><source src="images/actions/conm.webm" type="video/webm"></video>
<</if>>
<p style="margin-top:15px;">You train your core until pain becomes familiar and your body hardens.</p>
<<button "Finish">><<run Engine.show()>><</button>>
</div>
<</replace>>
<</button>>
<<else>>
<span style="color:#fa5252;">Too tired!</span>
<</if>>
</div>
<div style="background:#1a1a1a; padding:15px; border:1px solid #444;">
<h4>Presence</h4>
<<if $player.energy >= 25>>
<<button "Train Charisma">>
<<set $player.cha += 1>>
<<passTime 120>>
<<replace "#training-display">>
<div style="text-align:center; padding:20px; border:2px solid gold; background:#000;">
<h3>Working on your tan...</h3>
<<if $player.bodyType is "female">>
<<set _vidNum to random(1, 3)>>
<<set _vidSrc to "images/actions/cha" + _vidNum + ".webm">>
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px;"><source @src="_vidSrc" type="video/webm"></video>
<<else>>
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px;"><source src="images/actions/cham.webm" type="video/webm"></video>
<</if>>
<p style="margin-top:15px;">You lay out in the sun, enhancing your natural allure.</p>
<<button "Finish">><<run Engine.show()>><</button>>
</div>
<</replace>>
<</button>>
<<else>>
<span style="color:#fa5252;">Too tired!</span>
<</if>>
</div>
<<if $hasShamanHut>>
<div style="background:#1a1a1a; padding:15px; border:1px solid #444;">
<h4>Mind</h4>
<<if $player.energy >= 25>>
<<button "Train Intelligence">>
<<set $player.int += 1>>
<<passTime 120>>
<<replace "#training-display">>
<div style="text-align:center; padding:20px; border:2px solid gold; background:#000;">
<h3>Studying the Shaman's Tome...</h3>
<<if $player.bodyType is "female">>
<<set _vidNum to random(1, 3)>>
<<set _vidSrc to "images/actions/int" + _vidNum + ".webm">>
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px;"><source @src="_vidSrc" type="video/webm"></video>
<<else>>
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px;"><source src="images/actions/intm.webm" type="video/webm"></video>
<</if>>
<p style="margin-top:15px;">You pore over the ancient runes, expanding your understanding of the world.</p>
<<button "Finish">><<run Engine.show()>><</button>>
</div>
<</replace>>
<</button>>
<<else>>
<span style="color:#fa5252;">Too tired!</span>
<</if>>
</div>
<<else>>
<div style="background:#111; padding:15px; border:1px solid #333;">
<h4 style="color:#666;">Mind</h4>
<span style="color:#888; font-style:italic;">Requires the Shaman's Hut to be constructed.</span>
</div>
<</if>>
</div>
<hr>
<div style="text-align:center;">
[[Go Back|CampHub]]
</div>
</div>
<</nobr>>
<<widget "showmeter">><<nobr>>
<<set _perc to setup.clamp(Math.round(($args[1] / ($args[2] || 100)) * 100), 0, 100)>>
<<set _clr to "#ccc">>
<<switch $args[0]>>
<<case "hp">><<set _clr to "#ff5f5f">>
<<case "energy">><<set _clr to "#4caf50">>
<<case "hunger">><<set _clr to "#ff9800">>
<<case "lust">><<set _clr to "#e91e63">>
<</switch>>
<div class="meter-container" style="border: 1px solid #444; background: #222; height: 20px; position: relative; margin: 5px 0; border-radius: 3px; overflow: hidden;">
<div class="meter-bar" @style="'width:' + _perc + '%; background-color:' + _clr + '; height: 100%; transition: width 0.5s;'"></div>
<div class="meter-text" style="position: absolute; width: 100%; text-align: center; top: 0; color: white; font-size: 0.8em; line-height: 20px; font-weight: bold; text-shadow: 1px 1px 2px black;">
_perc%
</div>
</div>
<</nobr>><</widget>>
<<widget "passTime">><<nobr>>
<<set _mins to $args[0]>>
<<set $minute += _mins>>
<<if $minute gte 60>>
<<set $hour += Math.floor($minute / 60)>>
<<set $minute to $minute % 60>>
<</if>>
<<if $hour gte 24>>
<<set $hour to $hour % 24>>
<<set $day += 1>>
<</if>>
<<if $player isnot undefined>>
<<set $player.energy to setup.clamp($player.energy - (_mins / 10), 0, $player.maxEnergy)>>
<<if $player.energy lte 0>>
<<goto "PassedOut">>
<</if>>
<</if>>
<<run if (setup.updatePhase) setup.updatePhase()>>
<</nobr>><</widget>>
<<widget "nextDay">><<nobr>>
<<set $day += 1>>
<<set $hour to 8>>
<<set $minute to 0>>
<<set $player.energy to $player.maxEnergy>>
<<set $food to $food + (setup.countJob("Farmer") * 2) + (setup.countJob("Hunter") * 2)>>
<<set $pelts to $pelts + (setup.countJob("Hunter") * 2)>>
<<set $wood to $wood + (setup.countJob("Wood Gatherer") * 2)>>
<<set $iron to $iron + (setup.countJob("Miner") * 2)>>
<<set _slaveManagers to setup.countJob("Slave Manager")>>
<<if _slaveManagers gt 0 and $slaves.length gt 0>>
<<for _i to 0; _i lt $slaves.length; _i++>>
<<set $slaves[_i].sub to setup.clamp($slaves[_i].sub + 1, 0, 100)>>
<</for>>
<<set $eventLog.push("Day " + $day + ": The Slave Manager(s) maintained strict discipline. All slaves gained +1 Submission.")>>
<</if>>
<<set _report to setup.dailyMaintenance()>>
<<if _report.fed>>
<<set $eventLog.push("Day " + $day + ": Everyone was fed. (" + _report.mouths + " mouths)")>>
<<elseif _report.starving>>
<<set $eventLog.push("Day " + $day + ": Starving! You lost " + _report.hpLoss + " HP.")>>
<<else>>
<<set $eventLog.push("Day " + $day + ": Not enough food! Hunger dropping.")>>
<</if>>
<<goto "DailyReport">>
<</nobr>><</widget>>
<<widget "updateResources">><<nobr>>
<<set _mins to $args[0] || 0>>
<<if $player isnot undefined>>
<<set $player.energy to setup.clamp($player.energy - (_mins / 10), 0, $player.maxEnergy)>>
<<if $player.energy <= 0>>
<<goto "PassedOut">>
<</if>>
<</if>>
<<run if (setup.updatePhase) setup.updatePhase()>>
<</nobr>><</widget>>
<<widget "acquireSlave">><<nobr>>
<<if $slaves.length < $slaveLimit>>
<<set _newSlave to setup.generateSlave($args[0])>>
<<run $slaves.push(_newSlave)>>
<div style="border-left: 4px solid lime; padding-left: 10px; margin: 10px 0;">
<span style="color:lime; font-weight:bold;">NEW SLAVE ACQUIRED</span><br>
Name: _newSlave.name | Origin: $args[0]<br>
<small><i>_newSlave.desc</i></small>
</div>
<<else>>
<div style="border-left: 4px solid red; padding-left: 10px; margin: 10px 0; color:red;">
<b>No Space Available!</b><br>
The Slave Pens are full ($slaves.length / $slaveLimit). You had to leave the prisoner behind.
</div>
<</if>>
<</nobr>><</widget>>
<<widget "listSlaves">><<nobr>>
<<if $slaves.length is 0>>
<p><i>You have no slaves yet.</i></p>
<<else>>
<div class="slave-grid" style="display:flex; flex-wrap:wrap; gap:15px;">
<<for _i to 0; _i lt $slaves.length; _i++>>
<<capture _i>>
<div style="border:1px solid #444; padding:10px; width:180px; background:#1a1a1a; border-radius: 8px; text-align: center;">
<div style="margin-bottom: 5px; cursor: pointer;">
<<link [img[$slaves[_i].img]] "NPC_Interaction">>
<<set $activeNPC to $slaves[_i]>>
<<set $activeNPCType to "slave">>
<<set $returnTo to passage()>>
<</link>>
</div>
<b style="color:gold;">$slaves[_i].name</b><br>
<small>$slaves[_i].origin</small><br>
<hr style="margin: 5px 0; border-color: #333;">
Job: <span style="color: #fff;">$slaves[_i].job</span><br>
<div style="font-size: 0.8em; margin-top: 5px; text-align: left; padding-left: 10px;">
Love: <span style="color:pink;">$slaves[_i].love</span><br>
Sub: <span style="color:purple;">$slaves[_i].sub</span>
</div>
</div>
<</capture>>
<</for>>
</div>
<</if>>
<</nobr>><</widget>>
<<widget "listTribe">><<nobr>>
<<if $tribe.length is 0>>
<p><i>The barracks are empty.</i></p>
<<else>>
<div class="tribe-grid" style="
display: grid;
grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
gap: 12px;
width: 100%;
box-sizing: border-box;">
<<for _i to 0; _i lt $tribe.length; _i++>>
<<capture _i>>
<div class="tribe-card" style="
border: 1px solid #444;
background: #1a1a1a;
border-radius: 8px;
text-align: center;
overflow: hidden;
display: flex;
flex-direction: column;
transition: border-color 0.2s;">
<<link "NPC_Interaction">>
<<set $activeNPC to $tribe[_i]>>
<<set $activeNPCType to "tribe">>
<<set $returnTo to passage()>>
<div style="width: 100%; height: 160px; overflow: hidden; background: #000; cursor: pointer;">
<img @src="$tribe[_i].img" style="width: 100%; height: 160px; object-fit: cover; object-position: center top; display: block;">
</div>
<</link>>
<div style="padding: 10px; font-size: 0.85em;">
<b style="color:cyan; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;" title="$tribe[_i].name">
$tribe[_i].name
</b>
<hr style="margin: 6px 0; border: 0; border-top: 1px solid #333;">
<div style="text-align: left; line-height: 1.5;">
<span style="color: #aaa;">Job:</span> <span style="color: #eee;">$tribe[_i].job</span><br>
<span style="color: #aaa;">Lyl:</span> <span style="color:lightblue;">$tribe[_i].loyalty</span> |
<span style="color: #aaa;">Mor:</span> <span style="color:orange;">$tribe[_i].morale</span>
</div>
</div>
</div>
<</capture>>
<</for>>
</div>
<</if>>
<</nobr>><</widget>>
<<widget "recruitMember">><<nobr>>
<<if $tribe.length < $tribeLimit>>
<<set _newMember to setup.generateTribeMember()>>
<<run $tribe.push(_newMember)>>
<div style="border-left: 4px solid cyan; padding-left: 10px; margin: 10px 0;">
<span style="color:cyan; font-weight:bold;">NEW TRIBE MEMBER JOINED</span><br>
_newMember.name has joined your ranks!
</div>
<<else>>
<div style="color:red;">The Barracks are full! ($tribe.length / $tribeLimit)</div>
<</if>>
<</nobr>><</widget>>
<<widget "displayWorkingNPCs">><<nobr>>
<<set _currentPassage = passage()>>
<<set _npcsHere = setup.getNPCsAtLocation(_currentPassage)>>
<<if _npcsHere.length > 0>>
<div class="working-npcs" style="max-width: 400px; margin: 1em auto; padding: 1em; background: rgba(0,0,0,0.3); border-radius: 5px; border: 1px solid #444;">
<<for _i = 0; _i < _npcsHere.length; _i++>>
<<set _npc = _npcsHere[_i]>>
<<set _jobInfo = setup.jobConfig[_npc.job]>>
<div class="npc-working" style="margin-bottom: 1em; padding: 0.5em; background: rgba(255,255,255,0.05); border-radius: 5px;">
<<if _jobInfo.image>>
<img @src="_jobInfo.image" alt="Working" style="width: 100%; max-height: 180px; border-radius: 5px; margin-bottom: 0.5em; object-fit: cover; display: block;">
<</if>>
<p style="margin: 0.5em 0;">
<strong><<print _npc.name>></strong> (<<print _npc.job>>) is here, <<print _jobInfo.workingText>>.
<<if _jobInfo.interactionAllowed>>
<<if $slaves and $slaves.includes(_npc)>>
<<set _npcIndex = $slaves.indexOf(_npc)>>
<<capture _npcIndex>>
<<link "➔ Approach" "NPC_Interaction">>
<<set $activeNPCIndex = _npcIndex>>
<<set $activeNPCType = "slave">>
<<set $returnTo = passage()>>
<</link>>
<</capture>>
<<elseif $tribe and $tribe.includes(_npc)>>
<<set _npcIndex = $tribe.indexOf(_npc)>>
<<capture _npcIndex>>
<<link "➔ Approach" "NPC_Interaction">>
<<set $activeNPCIndex = _npcIndex>>
<<set $activeNPCType = "tribe">>
<<set $returnTo = passage()>>
<</link>>
<</capture>>
<</if>>
<</if>>
</p>
</div>
<</for>>
</div>
<</if>>
<</nobr>><</widget>>
<<widget "jobSelectorEnhanced">><<nobr>>
<<set $activeNPC = setup.getActiveNPC()>>
<<if not $activeNPC>>
<p style="color: red;">Error: NPC not found.</p>
<<else>>
<div class="job-selector">
<h3 style="margin-bottom: 18px; color:#00ffff;">Current Job: <<print $activeNPC.job>></h3>
<<if $activeNPC.job !== "Unassigned">>
<<set _jobInfo = setup.jobConfig[$activeNPC.job]>>
<<if _jobInfo>>
<p class="job-details" style="margin-bottom: 20px; color:#bbb;">
<strong>Location:</strong>
<<if _jobInfo.locations>><<print _jobInfo.locations.join(", ")>><<else>><<print _jobInfo.location>><</if>>
<br>
<strong>Hours:</strong> <<print _jobInfo.workStart>>:00 - <<print _jobInfo.workEnd>>:00
</p>
<</if>>
<</if>>
<div class="job-grid" style="display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; text-align: center !important; justify-items: start !important;">
<<if $activeNPCType is "slave">>
<<if setup.countJob("Cook") is 0 or $activeNPC.job is "Cook">>
<div class="job-option" style="text-align: left !important;">
<<button "🍳 Cook" style="width:100%; text-align:left !important; padding-left:14px;">>
<<run setup.setActiveNPCJob("Cook")>>
<<goto "NPC_Interaction">>
<</button>>
</div>
<</if>>
<div class="job-option" style="text-align: left !important;">
<<button "🧹 Maid" style="width:100%; text-align:left !important; padding-left:14px;">>
<<run setup.setActiveNPCJob("Maid")>>
<<goto "NPC_Interaction">>
<</button>>
</div>
<div class="job-option" style="text-align: left !important;">
<<button "🌾 Farmer" style="width:100%; text-align:left !important; padding-left:14px;">>
<<run setup.setActiveNPCJob("Farmer")>>
<<goto "NPC_Interaction">>
<</button>>
</div>
<<if setup.countJob("Stable Manager") is 0 or $activeNPC.job is "Stable Manager">>
<div class="job-option" style="text-align: left !important;">
<<button "🐴 Stable Manager" style="width:100%; text-align:left !important; padding-left:14px;">>
<<run setup.setActiveNPCJob("Stable Manager")>>
<<goto "NPC_Interaction">>
<</button>>
</div>
<</if>>
<<if $mineUnlocked>>
<div class="job-option" style="text-align: left !important;">
<<button "⛏️ Miner" style="width:100%; text-align:left !important; padding-left:14px;">>
<<run setup.setActiveNPCJob("Miner")>>
<<goto "NPC_Interaction">>
<</button>>
</div>
<</if>>
<<elseif $activeNPCType is "tribe">>
<div class="job-option" style="text-align: left !important;">
<<button "🏹 Hunter" style="width:100%; text-align:left !important; padding-left:14px;">>
<<run setup.setActiveNPCJob("Hunter")>>
<<goto "NPC_Interaction">>
<</button>>
</div>
<div class="job-option" style="text-align: left !important;">
<<button "🛡️ Guard" style="width:100%; text-align:left !important; padding-left:14px;">>
<<run setup.setActiveNPCJob("Guard")>>
<<goto "NPC_Interaction">>
<</button>>
</div>
<<if $mineUnlocked>>
<div class="job-option" style="text-align: left !important;">
<<button "🛡️ Mine Guard" style="width:100%; text-align:left !important; padding-left:14px;">>
<<run setup.setActiveNPCJob("Mine Guard")>>
<<goto "NPC_Interaction">>
<</button>>
</div>
<</if>>
<div class="job-option" style="text-align: left !important;">
<<button "🪓 Wood Gatherer" style="width:100%; text-align:left !important; padding-left:14px;">>
<<run setup.setActiveNPCJob("Wood Gatherer")>>
<<goto "NPC_Interaction">>
<</button>>
</div>
<<if setup.countJob("Slave Manager") is 0 or $activeNPC.job is "Slave Manager">>
<div class="job-option" style="text-align: left !important;">
<<button "👥 Slave Manager" style="width:100%; text-align:left !important; padding-left:14px;">>
<<run setup.setActiveNPCJob("Slave Manager")>>
<<goto "NPC_Interaction">>
<</button>>
</div>
<</if>>
<</if>>
</div>
<div style="text-align: center; margin-top: 12px;">
<<button "Unassign">>
<<run setup.setActiveNPCJob("Unassigned")>>
<<goto "NPC_Interaction">>
<</button>>
</div>
<p class="job-tip" style="margin-top:20px; text-align:left; font-size:0.9em; color:#777;">
<em>Tip: NPCs will appear at their work locations during working hours.</em>
</p>
</div>
<</if>>
<</nobr>><</widget>>
<<widget "say">><<nobr>>
<<set _name to $args[0]>>
<<set _img to $args[1]>>
<<set _text to $args[2]>>
<<set _color to $args[3] || "#d4af37">>
<div style="display: flex; background: rgba(25, 25, 25, 0.9); border: 1px solid #444; border-left: 4px solid _color; border-radius: 8px; padding: 12px; margin: 12px 0; align-items: flex-start; gap: 15px; box-shadow: 2px 2px 8px rgba(0,0,0,0.5);">
<div style="flex-shrink: 0;">
<img @src="_img" style="width: 65px; height: 65px; object-fit: cover; border-radius: 8px; border: 2px solid _color;">
</div>
<div style="flex-grow: 1; font-family: sans-serif; line-height: 1.4;">
<strong @style="'color: ' + _color + '; font-size: 1.1em; text-transform: uppercase; letter-spacing: 1px; display: block; margin-bottom: 4px;'">_name</strong>
<span style="color: #eee; font-style: italic;">"_text"</span>
</div>
</div>
<</nobr>><</widget>>
<<widget "relBadge">><<nobr>>
<<set _badgeLoc to $args[0]>>
<<set _badgeNPCs to setup.getRelNPCsAt(_badgeLoc)>>
<<if _badgeNPCs and _badgeNPCs.length gt 0>>
<<for _bi to 0; _bi lt _badgeNPCs.length; _bi++>>
<<set _bKey to _badgeNPCs[_bi]>>
<<set _bDef to setup.relNPCDefs[_bKey]>>
<img @src="_bDef.profile"
class="rel-npc-badge"
@style="'right: ' + ((_bi * 30) + 5) + 'px;'"
@title="_bDef.name">
<</for>>
<</if>>
<</nobr>><</widget>>
<<widget "checkForEscape">>
<<if $slaves and $slaves.length gt 0>>
<<set _lowSubSlaves to $slaves.filter(s => s.sub lt 40)>>
<<if _lowSubSlaves.length gt 0 and random(1, 100) lte 30>>
<<set $activeNPC to _lowSubSlaves.random()>>
<<set $activeNPCIndex to $slaves.findIndex(s => s.id === $activeNPC.id)>>
<<set $activeNPCType to "slave">>
<<goto "Event_SlaveEscape">>
<<else>>
<<goto $args[0]>>
<</if>>
<<else>>
<<goto $args[0]>>
<</if>>
<</widget>><<nobr>>
<div style="background:#1a1208;border:1px solid #5c4d2d;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<center>
<img src="images/intro/father.webp" width="55%" style="border: 3px solid #5a2c0f; border-radius: 8px; box-shadow: 0 0 15px rgba(0,0,0,0.8);">
<div style="max-width: 680px; margin: 25px auto; text-align: left; line-height: 1.65; font-size: 1.05em; color: #ddd;">
You were born in the unforgiving North, son of the most feared warrior your tribe has ever known.
To his enemies he was a monster — a mountain of muscle and rage who left only ruin in his wake.
To you, he was **father**.
He raised you with iron in your blood and frost in your heart.
He taught you the only truth that matters in this frozen land:
<<say "father" "images/intro/father.webp" "You are either the hammer… or the anvil." "#c39f5f">>
One cold night, as the fire crackled and the wind howled outside the longhouse, he looked at you with those hard eyes and spoke: <br>
<<say "father" "images/intro/father.webp" "A name carries the weight of one’s soul, boy. When you fall in battle or die old in your hall, what shall the skalds sing when they tell your story?" "#c39f5f">>
</div>
<div style="margin: 30px 0 15px; font-size: 1.1em; color: #e0c080;">
<b>What name shall the skalds sing?</b>
</div>
<<textbox "$player.name" "Conan" autofocus>>
<br><br>
[[Next|Intro_2]]
</center>
</div>
<</nobr>><<nobr>><div style="background:#1a1208;border:1px solid #5c4d2d;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4"><center>
<img src="images/intro/childhood.webp" width="55%" style="border: 3px solid #5a2c0f; border-radius: 8px; box-shadow: 0 0 15px rgba(0,0,0,0.8);">
<h3>$player.name, child of the North.</h3>
<div style="max-width: 680px; margin: 25px auto; text-align: left; line-height: 1.65; font-size: 1.05em; color: #ddd;">
Some might think such a brutal life wouldn't be suitable for a child, but you grew happy and strong. You learned to hunt before you could read, and learned to raze before you could write.
And as you grew it was clear to all that you were born to walk in your father's steps. The tribe looked at you and saw their future leader...
</div>
But first... were you born male or female?
<center>
<table style="width:100%; border:none;">
<tr>
<td style="width:50%; text-align:center; vertical-align:top;">
<img src="images/portraits/male.webp" style="width:200px; border:2px solid #555; border-radius:10px;">
<br><br>
<<button "Son of the Wilds">>
<<set $player.gender to "male">>
<<set $player.bodyType to "male">>
<<set $player.genitals to "male">>
<<set $player.portrait to "images/portraits/male.webp">>
<<goto "Intro_Betrayal">>
<</button>>
</td>
<td style="width:50%; text-align:center; vertical-align:top;">
<img src="images/portraits/female.webp" style="width:200px; border:2px solid #555; border-radius:10px;">
<br><br>
<<button "Daughter of the Wilds">>
<<set $player.gender to "female">>
<<set $player.bodyType to "female">>
<<set $player.genitals to "female">>
<<set $player.portrait to "images/portraits/female.webp">>
<<goto "Intro_Betrayal">>
<</button>>
</td>
</tr>
</table>
</center>
</center><</nobr>><<nobr>>
<div style="background:#1a1208;border:1px solid #5c4d2d;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4"><center>
<img src="images/intro/funeral.webp" width="80%" style="border: 3px solid #4a1f0f; border-radius: 6px;">
<div style="max-width: 720px; margin: 25px auto; text-align: left; line-height: 1.7; font-size: 1.05em; color: #ddd;">
The North does not mourn its dead for long.
Your father — the man you believed was unbreakable — finally fell. Not in glorious battle, but to the slow, festering rot of an old wound that never truly healed. Or so the elders claimed.
The longhouse smelled of smoke, blood, and wet fur as his body lay upon the funeral bier. The pyre was already being prepared outside.<br><br>
Then He stepped forward.<br>
<center><img src="images/NPC/kurgan/kurgan.webp" width="80%" style="border: 3px solid #600; border-radius: 6px; margin: 20px 0;"></center>
<br>
Your father’s second-in-command. A man who had shared his table and his wars for years… a man who was like a brother to him.
Before the flames even touched the wood, Kurgan seized your father’s great axe and raised it high. His voice cut through the mourning like a blade:
<<say "kurgan" "images/NPC/kurgan/profile.webp" "The tribe needs a leader who can bleed for them <b>now</b>. Not some whelp still hiding behind his father’s shadow!" "#DC143C">>
A heavy silence fell over the hall. The warriors — cold, hungry, and fearful of the coming winter — said nothing. In their eyes you saw the bitter truth:
Loyalty dies quickly when bellies are empty and enemies are near.
Kurgan’s gaze finally turned to you, cold and challenging.
</div>
<br><br>
[[Demand your birthright|Intro_Exile]]
</center></div>
<</nobr>><<nobr>>
<div style="text-align:center">
<<if not $smithFound>>
<img src="images/camp/forge_empty.webp" style="width:70%;max-width:350px;border-radius:8px;border:2px solid #444;margin-bottom:15px" onerror="this.style.display='none'">
<<else>>
<<set _vidNum to random(1, 2)>>
<<set _vidSrc to "images/NPC/smith/working" + _vidNum + ".webm">>
<video autoplay loop muted playsinline style="width:70%;max-width:350px;border-radius:8px;border:2px solid #444;margin-bottom:15px">
<source @src="_vidSrc" type="video/webm">
</video>
<</if>>
<h2>The Forge</h2>
<p style="color:#aaa;font-size:0.9em">The heat of the forge is intense, the smell of coal and hot iron filling the air.</p>
</div>
<hr style="border:0;height:1px;background:#444;margin:10px 0">
<<if not $smithFound>>
<div style="background:#1a1a1a;border:1px solid #444;border-radius:6px;padding:15px;text-align:center;margin:15px auto;max-width:500px">
<<if not $quest_smith_find>>
<<set $quest_smith to 1>>
<p style="color:gold; font-weight:bold; text-transform:uppercase; letter-spacing:1px;">New Quest: Find a Blacksmith</p>
<p style="color:#ccc; font-size:0.95em;">You have constructed the forge, but the anvil sits cold and quiet. You need a skilled smith to craft weapons and armor for your tribe. Rumor has it there might be captives or renegades out in the wild who know the craft.</p>
<<else>>
<p style="color:#888;font-style:italic">The forge is silent. You still need to explore and find a blacksmith to work here.</p>
<</if>>
</div>
<<else>>
<div style="background:#1a1a1a;border:1px solid #444;border-radius:6px;padding:15px;margin:15px auto;max-width:500px">
<p style="text-align:center;"><i style="color:#aaa">Leva is hammering away at a piece of glowing iron, completely nude. Sweat glistens on her skin in the fiery light. She notices you staring and smirks, wiping her brow with a soot-stained forearm.</i></p>
<<say "Leva" "images/NPC/smith/profile.webp" "Don't look at me like that, Chief. It's simply too hot in here for clothes." "#cc6600">>
</div>
<div style="display:flex; flex-direction:column; gap:10px; max-width:400px; margin:0 auto;">
<<button "Talk to Leva">>
<<set $activeRelNPCKey to "leva">>
<<set $returnTo to "SmithPage">>
<<goto "RelNPC_Page">>
<</button>>
<<if $quest_smith is 2>>
<div style="background:#2a1a0a; border:1px solid #cc6600; border-radius:6px; padding:15px; margin:15px auto; max-width:500px; border-left: 5px solid #cc6600;">
<p style="color: #cc6600; font-weight: bold; margin-bottom: 5px;">CURRENT OBJECTIVE: SECURE THE MINE</p>
<<say "Leva" "images/NPC/smith/profile.webp" "I can't forge weapons out of thin air, Warlord. There's an abandoned iron mine up in the Mountains, but creatures have claimed it. Clear the infestation so we can start digging." "#cc6600">>
<div style="margin-top: 15px; padding: 8px; border-radius: 4px; font-size: 0.85em; color: #ff8888; border: 1px dashed #cc6600; text-align:center;">
Travel to the Mountains and defeat whatever is occupying the mine.
</div>
</div>
<<elseif $quest_smith is 3>>
<div style="background:#1a2a1a; border:1px solid #00ff00; border-radius:6px; padding:15px; margin:15px auto; max-width:500px; border-left: 5px solid #00ff00;">
<p style="color: #00ff00; font-weight: bold; margin-bottom: 5px;">✔ MINE SECURED</p>
<<say "Leva" "images/NPC/smith/profile.webp" "Chief! You actually did it — the mine is clear! I can already smell the sweet iron in the air!" "#cc6600">>
<<say "Leva" "images/NPC/smith/profile.webp" "Now listen. Take some wood and use them to properly set up the newly acquired karak as our mine. Once that's done, let's meet there I want to supervise the mine works" "#cc6600">>
<<set $quest_smith to 4>>
<<set $mineUnlocked to true>>
</div>
<<elseif $quest_smith >= 5>>
<div style="background:#1a1a1a;border:1px solid #444;border-radius:6px;padding:15px;margin:15px auto;max-width:500px">
<<say "Leva" "images/NPC/smith/profile.webp" "Keep the iron flowing, Warlord, and I'll keep your blades sharp. What do you need today?" "#cc6600">>
</div>
<</if>>
<div style="display:flex; flex-direction:column; gap:10px; max-width:400px; margin: 15px auto 0 auto;">
<<if $quest_smith >= 5>>
<<button "Craft Weapons & Armor (In Development)">>
<</button>>
<</if>>
</div>
<</if>>
<br><br>
<center>
[[Leave|CampHub]]
</center>
<</nobr>><<nobr>>
<div style="text-align:center; padding: 5px; line-height: 1.2;">
<h3 style="margin-bottom: 5px; color: gold;">Support</h3>
<div style="font-size: 0.85em; color: #ccc; margin-bottom: 10px;">
Enjoying $gameTitle? Help us grow on Patreon!
</div>
<div style="margin-bottom: 15px;">
<a href="https://patreon.com/DaveTheBarbarian999?utm_medium=unknown&utm_source=join_link&utm_campaign=creatorshare_creator&utm_content=copyLink" target="_blank"
style="display: inline-flex; align-items: center; background: #f96854; color: white; padding: 6px 14px; border-radius: 4px; text-decoration: none; font-size: 0.8em; font-weight: bold; border: 1px solid rgba(255,255,255,0.2);">
<svg viewBox="0 0 24 24" width="14" height="14" fill="white" style="margin-right: 8px;">
<path d="M15.386 0.5c-4.759 0-8.623 3.863-8.623 8.623 0 4.759 3.864 8.623 8.623 8.623 4.759 0 8.623-3.864 8.623-8.623 0-4.76-3.864-8.623-8.623-8.623zM0.486 23.5h4.154V0.5H0.486v23z"></path>
</svg>
PATREON
</a>
</div>
<hr style="border: 0; height: 1px; background: #333; margin: 10px 0;">
<div style="background: #1a1a1a; padding: 10px; border: 1px solid #444; border-radius: 4px;">
<div style="font-size: 0.8em; font-weight: bold; color: #aaa; margin-bottom: 8px;">REDEEM CODE</div>
<<textbox "_inputCode" "" autofocus>>
<div style="margin-top: 8px;">
<<button "Unlock">>
<<set _cleanCode to _inputCode.trim().toLowerCase()>>
<<if _cleanCode is $patreonCode>>
<<run Dialog.close()>>
<<goto "CheatRoom">>
<<else>>
<<run UI.alert("Invalid code.")>>
<</if>>
<</button>>
</div>
</div>
</div>
<</nobr>>
<<nobr>>
<div style="background: #111; border: 1px solid gold; padding: 10px; font-family: sans-serif; line-height: 1.1; font-size: 0.85em;">
<div style="text-align:center; color: gold; font-weight: bold; margin-bottom: 8px; border-bottom: 1px solid #333; padding-bottom: 4px;">
CHEAT CONSOLE
</div>
<div style="display: flex; gap: 15px; justify-content: space-around;">
<div style="flex: 1;">
<b style="color: #aaa; font-size: 0.75em;">RESOURCES</b>
<div style="margin-top: 5px; display: flex; flex-direction: column; gap: 4px;">
<<button "+1k Gold">> <<set $gold += 1000>> <</button>>
<<button "+100 Food">> <<set $food += 100>> <</button>>
<<button "+100 Wood">> <<set $wood += 100>> <</button>>
<<button "+100 Stone">> <<set $stone += 100>> <</button>>
<<button "+100 Iron">> <<set $iron += 100>> <</button>>
</div>
</div>
<div style="flex: 1; border-left: 1px solid #333; padding-left: 15px;">
<b style="color: #aaa; font-size: 0.75em;">CHARACTERISTICS</b>
<div id="stats-display" style="margin-top: 5px; line-height: 1.6;">
<<include "CheatRoomStats">>
</div>
</div>
</div>
</div>
<hr style="border: 0; border-top: 1px solid #333; margin: 8px 0;">
<div style="display: flex; gap: 5px; justify-content: center;">
<<button "Full Heal">> <<set $player.hp to $player.maxHp>> <</button>>
<<button "Refill Energy">> <<set $player.energy to 100>> <</button>>
<<button "Refill Satiety">> <<set $player.hunger to 100>> <</button>>
<<button "Reset Lust">> <<set $player.lust to 0>> <</button>>
<<button "Toggle Gender">>
<<if $player.gender is "male">>
<<set $player.gender to "female">>
<<set $player.bodyType to "female">>
<<set $player.genitals to "female">>
<<set $player.portrait to "images/portraits/female.webp">>
<<else>>
<<set $player.gender to "male">>
<<set $player.bodyType to "male">>
<<set $player.genitals to "male">>
<<set $player.portrait to "images/portraits/male.webp">>
<</if>>
<<run UI.alert("Gender changed to " + $player.gender + "!")>>
<<goto "CheatRoom">>
<</button>>
</div>
<div style="text-align: center; margin-top: 10px;">
<span style="font-size: 0.8em;">[[EXIT CHEAT ROOM|CampHub]]</span>
</div>
<</nobr>><<nobr>>
<<if not $merchantStock>>
<<set $merchantStock to {
pelts: { price: 12, label: "Pelt", emoji: "🦊" },
healthPotion: { price: 30, label: "Health Potion", emoji: "🧪", healAmount: 40 }
}>>
<</if>>
<div style="background:#1a1208;border:1px solid #8a6a2a;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/merchant.webp" style="width:100%;max-width:300px;border-radius:6px;border:2px solid #8a6a2a" onerror="this.style.display='none'">
</div>
<div style="text-align:center;color:#d4aa50;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
🧳 Wandering Merchant
</div>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;text-align:center;font-style:italic">
A weathered trader emerges from the treeline, pack mule in tow. He eyes you with a cautious smile. "Good timing, friend. I have wares — if you have coin."
</div>
<div style="background:#111;border:1px solid #333;border-radius:6px;padding:12px;margin-bottom:12px">
<div style="color:#888;font-size:0.8em;margin-bottom:8px;letter-spacing:1px">YOUR GOLD: <span style="color:#ffd700">$gold</span></div>
<div style="display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid #222">
<div>
<span style="font-size:1.1em">🦊</span>
<strong style="margin-left:6px">Pelt</strong>
<span style="color:#666;font-size:0.8em;margin-left:8px">You have: $pelts</span>
<br><span style="color:#888;font-size:0.8em;margin-left:22px">Soft furs, good for trade or warmth.</span>
</div>
<div style="display:flex;gap:6px;align-items:center">
<span style="color:#ffd700;font-size:0.85em">12g each</span>
<<if $gold gte 12>>
<<button "Buy">>
<<set $gold -= 12>>
<<set $pelts += 1>>
<<goto "Event_Merchant">>
<</button>>
<<else>>
<span style="color:#444;font-size:0.8em">Not enough gold</span>
<</if>>
</div>
</div>
<div style="display:flex;justify-content:space-between;align-items:center;padding:8px 0">
<div>
<span style="font-size:1.1em">🧪</span>
<strong style="margin-left:6px">Health Potion</strong>
<span style="color:#666;font-size:0.8em;margin-left:8px">You have: $healthpotions</span>
<br><span style="color:#888;font-size:0.8em;margin-left:22px">Restores 40 HP when used.</span>
</div>
<div style="display:flex;gap:6px;align-items:center">
<span style="color:#ffd700;font-size:0.85em">30g each</span>
<<if $gold gte 30>>
<<button "Buy">>
<<set $gold -= 30>>
<<set $healthpotions += 1>>
<<goto "Event_Merchant">>
<</button>>
<<else>>
<span style="color:#444;font-size:0.8em">Not enough gold</span>
<</if>>
</div>
</div>
</div>
<div style="text-align:center">
<<button "Leave">>
<<unset $merchantStock>>
<<goto "Forest">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<div style="background:#2a0505;border:1px solid #fa5252;padding:15px;font-family:sans-serif;line-height:1.2;">
<div style="text-align:center;color:#fa5252;font-weight:bold;margin-bottom:10px;text-transform:uppercase;letter-spacing:2px;">
⚠️ AMBUSH! ⚠️
</div>
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/ambush.webp" style="width:100%;max-width:400px;border-radius:6px;border:2px solid #8a6a2a" onerror="this.style.display='none'">
</div>
<div style="font-size:0.9em;color:#eee;margin-bottom:15px;text-align:center;">
A rustle in the canopy—then a whistle. Two hooded figures drop from the trees, rusted blades gleaming. You've been cornered by forest bandits!
</div>
<div style="display:flex;flex-direction:column;gap:8px;">
<<button "⚔ Fight">>
<<set $returnTo to "Forest">>
<<run setup.initCombat([
clone(setup.enemyPresets.Bandit),
clone(setup.enemyPresets.Bandit)
])>>
<<goto "CombatPage">>
<</button>>
<<button "🏃 Run for it!">>
<<if random(1, 2) is 1>>
<<set $lastEventText to "You vanished into the thicket. You're safe, but shaken.">>
<<else>>
<<set $player.hp to setup.clamp($player.hp - 5, 0, $player.maxHp)>>
<<set $lastEventText to "You escaped, but a stray arrow caught your shoulder. -5 HP">>
<</if>>
<<goto "Forest">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<<set $activeNPC to setup.getActiveNPC()>>
<div class="npc-ui-container" style="display: flex; gap: 20px; background: #111; padding: 20px; border: 1px solid #444;">
<div class="npc-portrait" style="flex: 1; text-align: center;">
<img @src="$activeNPC.img" style="width: 100%; max-width: 300px; height: 400px; object-fit: cover; border: 2px solid #555; border-radius: 8px;">
<h2 style="margin-top: 10px;">$activeNPC.name</h2>
<div style="margin-bottom: 10px;">
<span style="background: #444; padding: 2px 8px; border-radius: 4px; font-size: 0.9em;">
<<if $activeNPC.gender is "Female">>♀<<else>>♂<</if>> $activeNPC.origin
</span>
</div>
<span style="text-transform: uppercase; color: #aaa; font-size: 0.8em;">$activeNPCType</span>
</div>
<div class="npc-details" style="flex: 2;">
<div class="stats-box" style="background: #222; padding: 15px; border-radius: 5px;">
<<if $activeNPCType is "slave">>
<b>Submission:</b> <<showmeter "lust" $activeNPC.sub 100>>
<b>Love:</b> <<showmeter "hp" $activeNPC.love 100>>
<<else>>
<b>Loyalty:</b> <<showmeter "energy" $activeNPC.loyalty 100>>
<b>Morale:</b> <<showmeter "hunger" $activeNPC.morale 100>>
<</if>>
<div class="npc-description" style="background: #1a1a1a; padding: 15px; border-left: 3px solid #555; font-style: italic; margin: 15px 0; color: #ccc;">
"$activeNPC.desc"
</div>
<br>
<b>Current Job:</b> <span style="color: gold;">$activeNPC.job</span>
</div>
<hr style="border: 0; border-top: 1px solid #444; margin: 20px 0;">
<div style="background: #1a1a1a; padding: 10px; border: 1px dashed #555; margin-bottom: 20px;">
<<jobSelectorEnhanced>>
</div>
<div id="talk-result" style="margin-bottom: 10px; font-style: italic; color: #88ccff;"></div>
<div class="actions-grid" style="display: grid; grid-template-columns: 1fr 1fr; gap: 10px;">
<<button "Talk">>
<<passTime 20>>
<<if $activeNPCType is "slave">>
<<set $activeNPC.love to setup.clamp($activeNPC.love + 2, 0, 100)>>
<<set _statName to "Love">>
<<else>>
<<set $activeNPC.loyalty to setup.clamp($activeNPC.loyalty + 2, 0, 100)>>
<<set _statName to "Loyalty">>
<</if>>
<<replace "#talk-result">>
You spend some time talking with $activeNPC.name.
<<if ($activeNPC.love gt 60) or ($activeNPC.loyalty gt 60)>>
They seem to enjoy your company and trust you more.
<<else>>
The conversation is brief but pleasant.
<</if>>
<br>(@@color:lime;+2 _statName@@)
<</replace>>
<<replace ".stats-box">>
<<if $activeNPCType is "slave">>
<b>Submission:</b> <<showmeter "lust" $activeNPC.sub 100>>
<b>Love:</b> <<showmeter "hp" $activeNPC.love 100>>
<<else>>
<b>Loyalty:</b> <<showmeter "energy" $activeNPC.loyalty 100>>
<b>Morale:</b> <<showmeter "hunger" $activeNPC.morale 100>>
<</if>>
<div class="npc-description" style="background: #1a1a1a; padding: 15px; border-left: 3px solid #555; font-style: italic; margin: 15px 0; color: #ccc;">
"$activeNPC.desc"
</div>
<br>
<b>Current Job:</b> <span style="color: gold;">$activeNPC.job</span>
<</replace>>
<</button>>
<<if $activeNPCType is "slave">>
<<button "Punish">>
<<passTime 20>>
<<set $activeNPC.sub to setup.clamp($activeNPC.sub + 5, 0, 100)>>
<<set $activeNPC.love to setup.clamp($activeNPC.love - 10, 0, 100)>>
<<replace "#talk-result">>
You discipline $activeNPC.name harshly, reminding them of their place.
<</replace>>
<<replace ".stats-box">>
<b>Submission:</b> <<showmeter "lust" $activeNPC.sub 100>>
<b>Love:</b> <<showmeter "hp" $activeNPC.love 100>>
<div class="npc-description" style="background: #1a1a1a; padding: 15px; border-left: 3px solid #555; font-style: italic; margin: 15px 0; color: #ccc;">
"$activeNPC.desc"
</div>
<br>
<b>Current Job:</b> <span style="color: gold;">$activeNPC.job</span>
<</replace>>
<</button>>
<<button "Offer Freedom">>
<<goto "NPC_Release">>
<</button>>
<</if>>
<<if $activeNPCType is "tribe">>
<<button "Give Gift">> <<goto "NPC_Gift">> <</button>>
<<button "Sparring (Train)">> <<goto "NPC_Train">> <</button>>
<<button "Exile">> <<goto "NPC_Out">> <</button>>
<<set _alreadyCompanion to false>>
<<for _cj = 0; _cj < $companions.length; _cj++>>
<<if $companions[_cj].id eq $activeNPC.id>><<set _alreadyCompanion to true>><</if>>
<</for>>
<<if _alreadyCompanion>>
<<button "✓ In Party (Remove)">>
<<run setup.dismissCompanion($companions.findIndex(c => c.id === $activeNPC.id))>>
<<goto "NPC_Interaction">>
<</button>>
<<else>>
<<button "⚔ Recruit">>
<<run setup.recruitCompanion($tribe.findIndex(t => t.id === $activeNPC.id))>>
<<goto "NPC_Interaction">>
<</button>>
<</if>>
<</if>>
<<if setup.canIntimacy($activeNPC)>>
<div style="grid-column: span 2; border: 1px solid #e91e63; padding: 5px; text-align: center; margin-top: 10px;">
<<button "Fuck">>
<<set $returnPassage to "NPC_Interaction">>
<<set $lastIntimacyText to "You begin to get intimate with " + $activeNPC.name + ".">>
<<set $currentIntimacyVideo to "images/intimacy/generic/intro.webm">>
<<goto "IntimacyHub">>
<</button>>
</div>
<</if>>
</div>
<div style="margin-top: 30px; text-align: center; border-top: 1px solid #333; padding-top: 10px;">
<<link "↩ Return to Previous Screen">>
<<if def $returnTo>>
<<goto $returnTo>>
<<else>>
<<goto "CampHub">>
<</if>>
<</link>>
</div>
</div>
</div>
<</nobr>><<nobr>>
<div style="text-align:center;">
<img src="images/camp/pensin.webp" style="width: 80%; max-width: 800px; border-radius: 8px; border: 2px solid #555;">
<h2>The Slave Pens</h2>
<p>Capacity: $slaves.length / $slaveLimit</p>
</div>
<div class="farm-staff-container" style="display: flex; gap: 20px; align-items: stretch; margin-bottom: 20px;">
<<if setup.countJob("Slave Manager") gt 0 and $hour gte 6 and $hour lte 18>>
<<set _slaveManager to setup.getNPCsByJob("Slave Manager")[0]>>
<div class="staff-video" style="flex: 1; max-width: 800px; background: #1a1a1a; padding: 15px; border: 1px solid #333; border-radius: 8px; display: flex; align-items: center; justify-content: center;">
<<if _slaveManager and _slaveManager.gender is "Male">>
<video src="images/NPC/slaverm.webm" autoplay loop muted style="width: 100%; height: auto; border-radius: 6px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);"></video>
<<else>>
<video src="images/NPC/slaverf.webm" autoplay loop muted style="width: 100%; height: auto; border-radius: 6px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);"></video>
<</if>>
</div>
<</if>>
<div class="staff-list" style="flex: 1; min-width: 250px;">
<<displayWorkingNPCs>>
</div>
</div>
<hr>
<<if $slaves.length is 0>>
<p style="text-align:center; padding: 20px; background: #222; border: 1px dashed #444;">
<i>The slave pens are currently empty.</i>
</p>
<<else>>
<div class="slave-list" style="display: flex; flex-direction: column; gap: 10px;">
<<for _i to 0; _i lt $slaves.length; _i++>>
<<capture _i>>
<div class="slave-card" style="display: flex; align-items: center; background: #1a1a1a; padding: 10px; border: 1px solid #444; border-radius: 8px; gap: 15px;">
<div style="width: 60px; height: 60px; overflow: hidden; border-radius: 50%; border: 2px solid #555;">
<img @src="$slaves[_i].img" style="width: 100%; height: 100%; object-fit: cover; object-position: top;">
</div>
<div style="flex-grow: 1;">
<span style="font-size: 1.2em; color: gold;"><b>$slaves[_i].name</b></span><br>
<small style="color: #aaa;">$slaves[_i].origin | Job: <span style="color: #00ff00;">$slaves[_i].job</span></small>
</div>
<div style="text-align: right;">
<<link "Interact" "NPC_Interaction">>
<<set $activeNPCIndex to _i>>
<<set $activeNPCType to "slave">>
<<set $returnTo to "SlavePens">>
<</link>>
</div>
</div>
<</capture>>
<</for>>
</div>
<</if>>
<hr>
<div style="text-align:center;">
<<button "Go Back">><<goto `previous()`>><</button>>
<<button "Go to the Camp">><<goto "CampHub">><</button>>
</div>
<</nobr>><<nobr>><div style="text-align:center;">
<img src="images/camp/barracksin.webp" style="width: 80%; max-width: 800px; border-radius: 8px; border: 2px solid #555;">
<h2>The Barracks</h2>
<p>Capacity: $tribe.length / $tribeLimit</p>
</div>
<<displayWorkingNPCs>>
<hr>
<<if $tribe.length is 0>>
<p style="text-align:center; padding: 20px; background: #222; border: 1px dashed #444;">
<i>The barracks are currently empty.</i>
</p>
<<else>>
<div class="tribe-list" style="display: flex; flex-direction: column; gap: 10px;">
<<for _i to 0; _i lt $tribe.length; _i++>>
<<capture _i>>
<div class="tribe-card" style="display: flex; align-items: center; background: #1a1a1a; padding: 10px; border: 1px solid #444; border-radius: 8px; gap: 15px;">
<div style="width: 60px; height: 60px; overflow: hidden; border-radius: 50%; border: 2px solid #555;">
<img @src="$tribe[_i].img" style="width: 100%; height: 100%; object-fit: cover; object-position: top;">
</div>
<div style="flex-grow: 1;">
<<if $tribe[_i].gender is "Male">> <span style="font-size: 1.2em; color: cyan;"><b>$tribe[_i].name</b></span><<else>><span style="font-size: 1.2em; color: pink;"><b>$tribe[_i].name</b></span><</if>><br>
<small style="color: #aaa;">$tribe[_i].origin | Job: <span style="color: #00ff00;">$tribe[_i].job</span></small>
</div>
<div style="text-align: right;">
<<link "Interact" "NPC_Interaction">>
<<set $activeNPCIndex to _i>>
<<set $activeNPCType to "tribe">>
<<set $returnTo to "TheBarracks">>
<</link>>
</div>
</div>
<</capture>>
<</for>>
</div>
<</if>>
<hr>
<div style="text-align:center;">
<<button "Go Back">><<goto `previous()`>><</button>>
<<button "Go to the Camp">><<goto "CampHub">><</button>>
</div><</nobr>><<nobr>>
<h2 style="text-align:center;">The Gilded Cage</h2>
<<if not $marketStock>>
<<set $marketStock to setup.generateMarketSlaves("city")>>
<</if>>
<div id="market-screen">
<div class="market-grid" style="display: flex; flex-wrap: wrap; gap: 15px; justify-content: center;">
<<for _i to 0; _i lt $marketStock.length; _i++>>
<<capture _i>>
<div class="market-item" style="width: 180px; background: #222; padding: 10px; border: 1px solid #444; text-align: center; border-radius: 8px; position: relative;">
<div style="width: 160px; height: 200px; margin: 0 auto; border-radius: 5px; border: 1px solid #555; background: #000; position: relative; overflow: hidden;">
<img @src="$marketStock[_i].img" style="width: 100%; height: 100%; object-fit: cover; object-position: top; display: block;">
<<link " ">>
<<set $activeNPC to $marketStock[_i]>>
<<set $activeNPCType to "slave">>
<<set _marketIndex to _i>>
<<replace "#inspect-screen">><<include "Market_Inspect_Subpane">><</replace>>
<<run jQuery("#market-screen").hide(); jQuery("#inspect-screen").show();>>
<style> .market-item a { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 10; } </style>
<</link>>
</div>
<div style="margin-top: 10px; height: 50px;">
<b><<link $marketStock[_i].name>>
<<set $activeNPC to $marketStock[_i]>>
<<set $activeNPCType to "slave">>
<<set _marketIndex to _i>>
<<replace "#inspect-screen">><<include "Market_Inspect_Subpane">><</replace>>
<<run jQuery("#market-screen").hide(); jQuery("#inspect-screen").show();>>
<</link>></b><br>
<small style="color: #aaa;">$marketStock[_i].origin</small>
</div>
<hr style="border: 0; border-top: 1px solid #333; margin: 10px 0;">
<div style="margin-bottom: 10px; color: #ffd700;">Price: $marketStock[_i].price G</div>
<<if $gold gte $marketStock[_i].price>>
<<if $slaves.length lt $slaveLimit>>
<<button "Buy Slave">>
<<set $gold -= $marketStock[_i].price>>
<<run $slaves.push($marketStock[_i])>>
<<run $marketStock.splice(_i, 1)>>
<<goto "SlaveMarket">>
<</button>>
<<else>>
<button disabled style="opacity:0.5;">Pens Full</button>
<</if>>
<<else>>
<button disabled style="color: red; opacity:0.5;">Poor</button>
<</if>>
</div>
<</capture>>
<</for>>
</div>
<div style="margin-top: 30px; text-align: center;">
<<link "↩ Leave Market" "City">>
<<unset $marketStock>>
<</link>>
</div>
</div>
<div id="inspect-screen" style="display: none;"></div>
<</nobr>><<nobr>>
<<passTime 60>>
<div style="text-align:center; padding: 10px; border: 1px solid #3c4f5c; background: rgba(20, 25, 35, 0.9);">
<h2 style="color: #a5d8ff; margin-top: 0;">❄️ The Deep North</h2>
<p style="font-size: 0.9em;">Ice, silence, and ancient things buried beneath the snow.</p>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 15px;">
<div style="border-left: 4px solid #74c0fc; background: #222; padding: 10px;">
<b>🧭 Explore the Tundra</b> <small style="color: #fa5252;">(-25 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Frozen ruins and forgotten paths.</span>
<br>
<<button "March On">>
<<if $player.energy >= 25>>
<<set $player.energy -= 25>>
<<if $main_stage is 2 and not $foundCorro>>
<<goto "Event_MeetCorro">>
<<else>>
<<set _roll to random(1,100)>>
<<if _roll > 80>><<goto "Event_Ancient">>
<<elseif _roll > 40>><<goto "Event_Ambush">>
<<else>><<goto "Event_Quiet">><</if>>
<</if>>
<<else>>
<<run UI.alert("The cold steals your strength.")>>
<</if>>
<</button>>
</div>
<div style="border-left: 4px solid #ced4da; background: #222; padding: 10px;">
<b>🪵 Gather Firewood</b> <small style="color: #fa5252;">(-15 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Essential to survive the freezing nights.</span>
<br>
<<button "Break Icewood">>
<<if $player.energy >= 15>>
<<set $player.energy -= 15, _gain to random(6,14)>>
<<set $wood += _gain>>
<<run UI.alert("Gathered " + _gain + " wood.")>>
<<goto "North">>
<<else>>
<<run UI.alert("You can barely feel your fingers.")>>
<</if>>
<</button>>
</div>
<div style="border-left: 4px solid #fa5252; background: #222; padding: 10px;">
<b>🐺 Hunt Ice Beasts</b> <small style="color: #fa5252;">(-30 Energy)</small>
<br><span style="font-size: 0.8em; color: #aaa;">Only the strong return alive.</span>
<br>
<<button "Stalk the White Plains">>
<<if $player.energy >= 30>>
<<set $player.energy -= 30>>
<<goto "Event_HardHunt">>
<<else>>
<<run UI.alert("You would freeze to death.")>>
<</if>>
<</button>>
</div>
<<if $foundCorro>>
<div style="border-left: 4px solid #c9a227; background: #222; padding: 10px; margin-top: 15px;">
<b>🛖 Corro's Hut</b>
<br><span style="font-size: 0.8em; color: #aaa;">Your father's champion. Train your combat skills here for Gold.</span>
<br>
<<button "Enter Hut">>
<<goto "Corro">>
<</button>>
</div>
<</if>>
</div>
<br>
<center>[[Go Back|OutsideHub]]</center>
<</nobr>><<nobr>>
<div style="background:#0a1a0a; border:1px solid #00ffff; border-radius:8px; padding:15px; font-family:sans-serif; line-height:1.4;">
<h3 style="color:#00ffff; margin-top:0; text-transform:uppercase; letter-spacing:1px;">Sparring with $activeNPC.name</h3>
<div style="display:flex; gap:15px; align-items:center;">
<img @src="$activeNPC.img" style="width:100px; height:100px; object-fit:cover; border-radius:50%; border:2px solid cyan;">
<div style="color:#ccc;">
You head to the training grounds to spar with $activeNPC.name.<br>
It's a good way to build trust, keep morale high, and hone your combat skills.
</div>
</div>
<br>
<<if $player.energy >= 20>>
<<button "Light Sparring">>
<<set $activeNPC.atk += 1>>
<<set $activeNPC.def += 1>>
<<set $activeNPC.maxHp += 1>>
<<set $activeNPC.hp += 1>>
<<set $activeNPC.hp to Math.min($activeNPC.hp, $activeNPC.maxHp)>>
<<set $activeNPC.morale to Math.clamp($activeNPC.morale + 10, 0, 100)>>
<<set $activeNPC.loyalty to Math.clamp($activeNPC.loyalty + 5, 0, 100)>>
<<set $player.str += 1>>
<<passTime 60>>
<<for _i = 0; _i < $tribe.length; _i++>>
<<if $tribe[_i].id === $activeNPC.id>>
<<set $tribe[_i] to $activeNPC>>
<</if>>
<</for>>
<<for _j = 0; _j < $companions.length; _j++>>
<<if $companions[_j].id === $activeNPC.id>>
<<set $companions[_j] to $activeNPC>>
<</if>>
<</for>>
<<set _pGender to $player.gender.toLowerCase()>>
<<set _nGender to $activeNPC.gender.toLowerCase()>>
<<set _sparVideo to "">>
<<if _pGender is "female" and _nGender is "female">>
<<set _sparVideo to "images/actions/sparff" + random(1, 4) + ".webm">>
<<elseif _pGender is "male" and _nGender is "male">>
<<set _sparVideo to "images/actions/sparmm1.webm">>
<<else>>
<<set _sparVideo to "images/actions/sparfm" + random(1, 3) + ".webm">>
<</if>>
<<replace "#result">>
<div style="color:#ccc; border:1px solid cyan; background:#111; padding:15px; border-radius:6px; margin-top:15px; text-align:center;">
<<if _sparVideo != "">>
<video autoplay loop muted playsinline style="width:100%; max-height:800px; border-radius:6px; margin-bottom:12px; border:1px solid #444;">
<source @src="_sparVideo" type="video/webm">
</video>
<</if>>
<span style="color:cyan;">You exchange blows and sweat. $activeNPC.name appreciates the practice and grows stronger!</span><br><br>
<b style="color:#7bc47f;">
✅ Morale +10 | Loyalty +5<br>
📈 ATK +1 | DEF +1 | HP +1
</b>
</div>
<</replace>>
<</button>>
<<else>>
<div style="color:#ff5f5f; font-weight:bold; padding:10px 0;">You're too tired to spar. You need at least 20 Energy.</div>
<</if>>
<div id="result"></div>
<br>
<<button "Return">>
<<goto "NPC_Interaction">>
<</button>>
</div>
<</nobr>><<nobr>>
<<passTime 20>>
<div style="background:#0a1a0a; border:1px solid #00ffff; border-radius:8px; padding:20px; font-family:sans-serif; line-height:1.5;">
<h3 style="color:#00ffff; margin-top:0; text-transform:uppercase; letter-spacing:1px;">Give a Gift to $activeNPC.name</h3>
<p style="color:#ccc;">What would you like to give to improve their loyalty?</p>
<<if $food >= 10>>
<<button "Extra Rations (10 Food)">>
<<set $food -= 10>>
<!-- === UPDATE LOYALTY === -->
<<set _beforeLoyalty to $activeNPC.loyalty>>
<<set $activeNPC.loyalty += 10>>
<<if $activeNPC.loyalty > 100>><<set $activeNPC.loyalty to 100>><</if>>
<<if $activeNPC.loyalty < 0>><<set $activeNPC.loyalty to 0>><</if>>
<<for _i = 0; _i < $tribe.length; _i++>>
<<if $tribe[_i].id === $activeNPC.id>>
<<set $tribe[_i] = $activeNPC>>
<</if>>
<</for>>
<<goto "NPC_Interaction">>
<</button>>
<<else>>
<button disabled style="opacity:0.5; cursor:not-allowed;">Extra Rations (Need 10 Food)</button>
<</if>>
<br><br>
<<button "Back">>
<<goto "NPC_Interaction">>
<</button>>
</div>
<</nobr>><<nobr>><h3>Offer Freedom</h3>
<img @src="$activeNPC.img" style="width:200px; float:left; margin-right:15px; border:2px solid gold;">
You are about to remove the collar from <b>$activeNPC.name</b>.
<br><br>
Current Love: <span style="color:pink">$activeNPC.love</span><br>
Current Submission: <span style="color:purple">$activeNPC.sub</span>
<br><br>
<<if $activeNPC.love >= 80>>
<div style="color:lime; border:1px solid lime; padding:10px;">
$activeNPC.name looks at you with admiration. "If you free me... I would choose to stay. I want to fight for you."
</div>
<br>
<<button "Recruit into Tribe">>
<<set _index to $slaves.findIndex(slave => slave.id === $activeNPC.id)>>
<<if _index >= 0>><<run $slaves.splice(_index, 1)>><</if>>
<<set _newMember to setup.convertSlaveToTribe($activeNPC)>>
<<run $tribe.push(_newMember)>>
<<set $activeNPC to _newMember>>
<<set $activeNPCType to "tribe">>
<<replace "#result">>
<b>$activeNPC.name is now a free member of the tribe!</b>
<br><br>
<<button "Continue">><<goto "NPC_Interaction">><</button>>
<</replace>>
<</button>>
<<else>>
<div style="color:orange; border:1px solid orange; padding:10px;">
$activeNPC.name doesn't trust you enough to stay willingly. If you free them, they will leave forever.
</div>
<br>
<<button "Release (They leave forever)">>
<!-- Remove from slaves -->
<<set _index to $slaves.findIndex(slave => slave.id === $activeNPC.id)>>
<<if _index >= 0>><<run $slaves.splice(_index, 1)>><</if>>
<<goto "CampHub">>
<</button>>
<</if>>
<div id="result"></div>
<br style="clear:both;">
<br>
<<button "Cancel (Keep as Slave)">>
<<goto "NPC_Interaction">>
<</button>><</nobr>><<nobr>>
<<if $currentEncounter is undefined>>
<<set $currentEncounter to setup.generateTribeMember()>>
<</if>>
<<set _heShe to ($currentEncounter.gender is "Female" ? "she" : "he")>>
<<set _himHer to ($currentEncounter.gender is "Female" ? "her" : "him")>>
<h3>An Unexpected Encounter</h3>
<div style="display: flex; gap: 20px; background: #1a1a1a; padding: 20px; border: 1px solid #444; border-radius: 8px;">
<div style="flex: 1;">
<img @src="$currentEncounter.img" style="width: 100%; max-width: 250px; border: 2px solid #555; border-radius: 8px;">
</div>
<div style="flex: 2;">
<p>As you explore the area, you spot a figure among the vegetation. It is <b>$currentEncounter.name</b>, a <b>$currentEncounter.origin</b>. _heShe seems to wander aimlessly.</p>
<p><i>"$currentEncounter.desc"</i></p>
<hr>
<p>They watch you cautiously, studying your equipment and your posture.</p>
<div id="recruit-choice">
<<set _canRecruit to ($tribe.length < $tribeLimit)>>
<<set _charismaCheck to ($player.cha >= 10)>>
<<if $hasBarracks is true>>
<<if _canRecruit>>
<<button "Try recruiting _himHer (Requires Charisma)">>
<<if _charismaCheck>>
<<run $tribe.push($currentEncounter)>>
<<set $currentEncounter to undefined>>
<<replace "#recruit-choice">>
<div style="color: lime; border: 1px solid lime; padding: 10px; margin-top: 10px;">
<b>Success!</b> Your words are persuasive. The new member was impressed by your vision and decided to join your tribe.
<br><br>
<<button "Continue the exploration">><<goto $returnTo>><</button>>
</div>
<</replace>>
<<else>>
<<set $currentEncounter to undefined>>
<<replace "#recruit-choice">>
<div style="color: orange; border: 1px solid orange; padding: 10px; margin-top: 10px;">
<b>Fail.</b> You don't seem convincing enough. They look at you skeptically and decline the offer, preferring to stay on their own.
<br><br>
<<button "Continue">><<goto $returnTo>><</button>>
</div>
<</replace>>
<</if>>
<</button>>
<<else>>
<div style="color: red; border: 1px solid red; padding: 10px;">
<b>Barracks full!</b> Your camp doesn't have enough space ($tribe.length / $tribeLimit).
</div>
<</if>>
<</if>>
<br>
<<button "Ignore them and go on">>
<<set $currentEncounter to undefined>>
<<goto $returnTo>>
<</button>>
</div>
</div>
</div>
<</nobr>><<nobr>><b>STR:</b> $player.str
<<link "[+]">>
<<set $player.str += 5>>
<<replace "#stats-display">><<include "CheatRoomStats">><</replace>>
<</link>>
<br><b>AGI:</b> $player.agi
<<link "[+]">>
<<set $player.agi += 5>>
<<replace "#stats-display">><<include "CheatRoomStats">><</replace>>
<</link>>
<br><b>CON:</b> $player.con
<<link "[+]">>
<<set $player.con += 5>>
<<replace "#stats-display">><<include "CheatRoomStats">><</replace>>
<</link>>
<br><b>INT:</b> $player.int
<<link "[+]">>
<<set $player.int += 5>>
<<replace "#stats-display">><<include "CheatRoomStats">><</replace>>
<</link>>
<br><b>CHA:</b> $player.cha
<<link "[+]">>
<<set $player.cha += 5>>
<<replace "#stats-display">><<include "CheatRoomStats">><</replace>>
<</link>>
<br><b>REP:</b> $player.rep
<<link "[+]">>
<<set $player.rep += 5>>
<<replace "#stats-display">><<include "CheatRoomStats">><</replace>>
<</link>><</nobr>><<nobr>>
<div style="text-align:center;">
<img src="images/camp/farmin.webp" style="width: 80%; max-width: 800px; border-radius: 8px; border: 2px solid #555;">
<h2><i class="fa fa-leaf"></i> The Farm</h2>
</div>
<h3>Resources</h3>
<p>Current Food: <strong>$food</strong></p>
<div style="background: #111; padding: 10px; border-radius: 4px; border: 1px solid #333; margin-bottom: 15px;">
<small style="display: block; color: #aaa;">
🌾 <b>Expected Daily Harvest:</b> +<<print (setup.countJob("Farmer") * 2)>> Food (2 per Farmer)
</small>
</div>
<div class="farm-staff-container" style="display: flex; gap: 20px; align-items: stretch; margin-bottom: 20px;">
<<if setup.countJob("Farmer") gt 0 and $hour gte 6 and $hour lte 18>>
<div class="staff-video" style="flex: 1; max-width: 400px; background: #1a1a1a; padding: 15px; border: 1px solid #333; border-radius: 8px; display: flex; align-items: center; justify-content: center;">
<video src="images/NPC/farm.webm" autoplay loop muted style="width: 100%; height: auto; border-radius: 6px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);"></video>
</div>
<</if>>
<div class="staff-list" style="flex: 1; min-width: 250px;">
<<displayWorkingNPCs>>
</div>
</div>
<div style="flex: 1; background: #1a1a1a; padding: 15px; border: 1px solid #333; border-radius: 8px;">
<h3>Staffing</h3>
<p>Farmers: <strong><<print setup.countJob("Farmer")>></strong></p>
<<if $hour lt 8 or $hour gte 20>>
<span style="color: #ff5f5f;"><i class="fa fa-moon"></i> Fields are dark (Rollover production occurs at dawn)</span>
<<else>>
<span style="color: #4caf50;"><i class="fa fa-sun"></i> Workers are actively tending crops</span>
<</if>>
</div>
<div style="background: #222; padding: 15px; border-radius: 8px; margin-top: 20px; margin-bottom: 20px;">
<h3>Farm Management</h3>
<p>The fields are vital for the survival of your tribe. Without enough food, morale will plummet and your slaves will grow resentful.</p>
<<if $player.energy gte 20>>
<<button "Work in the fields (1 hour)">>
<<set $player.energy -= 20>>
<<set $food += 10>>
<<passTime 60>>
<<goto "Farm">>
<</button>>
<<else>>
<button disabled style="color: gray; background: #333; border: 1px solid #444; padding: 8px 16px; border-radius: 4px;">Too exhausted to work</button>
<</if>>
</div>
<hr>
[[Go Back|CampHub]]
<</nobr>><<nobr>>
<<set _npc to setup.getActiveNPC()>>
<<if $activeNPCType is "slave">>
<<set _npcLust to $slaves[$activeNPCIndex].lust>>
<<elseif $activeNPCType is "tribe">>
<<set _npcLust to $tribe[$activeNPCIndex].lust>>
<<else>>
<<set _npcLust to Object.values($relNPCs)[$activeNPCIndex].lust>>
<</if>>
<div class="intimacy-container-v3">
<div class="intimacy-main-content">
<div class="npc-mini-sidebar">
<img @src="_npc.img" class="side-portrait">
<div class="npc-name-tag">_npc.name</div>
</div>
<div class="video-display-area">
<<if $currentIntimacyVideo>>
<video autoplay loop muted playsinline class="main-video">
<source @src="$currentIntimacyVideo" type="video/webm">
</video>
<<else>>
<div class="video-placeholder">The air is thick with anticipation...</div>
<</if>>
<<if $lastIntimacyText>>
<div class="action-flavor-text">$lastIntimacyText</div>
<</if>>
</div>
</div>
<div class="intimacy-footer">
<div class="lust-bar-group">
<div class="lust-row">
<div class="lust-label">Your Lust ($player.lust%)</div>
<div class="bar-outer"><div class="bar-inner player-lust" @style="'width: ' + $player.lust + '%;'"></div></div>
</div>
<div class="lust-row">
<div class="lust-label">_npc.name's Lust (_npcLust%)</div>
<div class="bar-outer"><div class="bar-inner npc-lust" @style="'width: ' + _npcLust + '%;'"></div></div>
</div>
</div>
<div class="action-buttons-area">
<<if $climaxMode>>
<<set _origin to (_npc.origin || "generic").toLowerCase()>>
<<if _origin is "north">><<set _origin to "generic">>
<<elseif _origin is "arab">><<set _origin to "arab">>
<<elseif _origin is "asian">><<set _origin to "asian">>
<<elseif _origin is "black">><<set _origin to "black">>
<</if>>
<<if $climaxMode is "player_female" or $climaxMode is "npc_female">>
<<if $climaxMode is "player_female">>
<<set _climaxVid to setup.getIntimacyVideo("Female Player Climax", $player.gender, _npc.gender, _npc.origin)>>
<p style="color:#ff69b4;text-align:center;font-style:italic">You shudder and cry out, waves of pleasure crashing through you...</p>
<<else>>
<<set _climaxVid to setup.getIntimacyVideo("Female NPC Climax", $player.gender, _npc.gender, _npc.origin)>>
<p style="color:#ff69b4;text-align:center;font-style:italic">_npc.name arches her back and screams in pleasure...</p>
<</if>>
<video autoplay loop muted playsinline class="main-video" style="width:100%;max-height:300px">
<source @src="_climaxVid" type="video/webm">
</video>
<br>
<div style="display:flex;gap:10px;justify-content:center;margin-top:10px">
<<if $player.energy gt 0>>
<<button "Catch your breath and continue">>
<<if $climaxMode is "player_female">>
<<set $player.lust to 0>>
<<else>>
<<if $activeNPCType is "slave">><<set $slaves[$activeNPCIndex].lust to 0>>
<<elseif $activeNPCType is "tribe">><<set $tribe[$activeNPCIndex].lust to 0>>
<<else>>
<<set _relKey to Object.keys($relNPCs)[$activeNPCIndex]>>
<<set $relNPCs[_relKey].lust to 0>>
<</if>>
<</if>>
<<set $climaxMode to null>>
<<goto "IntimacyHub">>
<</button>>
<</if>>
<<button "Finish and Rest">>
<<set $climaxMode to null>>
<<goto "ClimaxStatReset">>
<</button>>
</div>
<<elseif $climaxMode is "player_male" or $climaxMode is "npc_male">>
<<if not $maleFinishChoice>>
<p style="color:#ff9800;text-align:center;margin-bottom:12px">
<<if $climaxMode is "player_male">>Where do you want to cum?<<else>>_npc.name is about to cum — where?<</if>>
</p>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:10px">
<<button "Body">><<set $maleFinishChoice to "body">><<goto "IntimacyHub">><</button>>
<<button "Facial">><<set $maleFinishChoice to "facial">><<goto "IntimacyHub">><</button>>
<<button "Mouth">><<set $maleFinishChoice to "mouth">><<goto "IntimacyHub">><</button>>
<<button "Creampie">><<set $maleFinishChoice to "creampie">><<goto "IntimacyHub">><</button>>
<<button "In Ass">><<set $maleFinishChoice to "anal">><<goto "IntimacyHub">><</button>>
</div>
<<else>>
<<set _pGen to $player.gender.toLowerCase()>>
<<set _nGen to _npc.gender.toLowerCase()>>
<<if $maleFinishChoice is "facial">><<set _finishAction to "Male Climax Facial">>
<<elseif $maleFinishChoice is "mouth">><<set _finishAction to "Male Climax Mouth">>
<<elseif $maleFinishChoice is "body">><<set _finishAction to "Male Climax Body">>
<<elseif $maleFinishChoice is "creampie">><<set _finishAction to "Male Climax Creampie">>
<<elseif $maleFinishChoice is "anal">><<set _finishAction to "Male Climax Anal Creampie">>
<</if>>
<<set _climaxVid to setup.getIntimacyVideo(_finishAction, $player.gender, _npc.gender, _npc.origin)>>
<video autoplay loop muted playsinline class="main-video" style="width:100%;max-height:300px">
<source @src="_climaxVid" type="video/webm">
</video>
<<if $maleFinishChoice is "creampie">><p style="color:#ddd;text-align:center;font-style:italic">A deep, warm release fills them completely...</p>
<<elseif $maleFinishChoice is "anal">><p style="color:#ddd;text-align:center;font-style:italic">A hot, intense finish deep inside...</p>
<<elseif $maleFinishChoice is "facial">><p style="color:#ddd;text-align:center;font-style:italic">The climax erupts across their face...</p>
<<elseif $maleFinishChoice is "mouth">><p style="color:#ddd;text-align:center;font-style:italic">Swallowed down eagerly, every last drop...</p>
<<else>><p style="color:#ddd;text-align:center;font-style:italic">A hot, messy finish across their body...</p><</if>>
<div style="display:flex;gap:10px;justify-content:center;margin-top:10px">
<<if $player.energy gt 0>>
<<button "Catch your breath and continue">>
<<if $climaxMode is "player_male">><<set $player.lust to 0>>
<<else>>
<<if $activeNPCType is "slave">><<set $slaves[$activeNPCIndex].lust to 0>>
<<elseif $activeNPCType is "tribe">><<set $tribe[$activeNPCIndex].lust to 0>>
<<else>><<set Object.values($relNPCs)[$activeNPCIndex].lust to 0>><</if>>
<</if>>
<<set $climaxMode to null>>
<<set $maleFinishChoice to null>>
<<goto "IntimacyHub">>
<</button>>
<</if>>
<<button "Finish and Rest">>
<<set $climaxMode to null>>
<<set $maleFinishChoice to null>>
<<goto "ClimaxStatReset">>
<</button>>
</div>
<</if>>
<</if>>
<<else>>
<div class="grid-actions">
<<if $player.gender is "male" and $player.lust gte 100>>
<<button "YOU CUM">>
<<set $climaxMode to "player_male">>
<<goto "IntimacyHub">>
<</button>>
<</if>>
<<if _npc.gender is "Male" and _npcLust gte 100>>
<<button "_npc.name CUMS">>
<<set $climaxMode to "npc_male">>
<<goto "IntimacyHub">>
<</button>>
<</if>>
<<if $player.gender is "female" and $player.lust gte 100>>
<<button "YOU CUM">>
<<set $climaxMode to "player_female">>
<<goto "IntimacyHub">>
<</button>>
<</if>>
<<if _npc.gender is "Female" and _npcLust gte 100>>
<<button "_npc.name CUMS">>
<<set $climaxMode to "npc_female">>
<<goto "IntimacyHub">>
<</button>>
<</if>>
<<button "Kiss">><<set $selectedAction to "Kiss">><<goto "IntimacyAction">><</button>>
<<button "Tease">><<set $selectedAction to "Tease">><<goto "IntimacyAction">><</button>>
<<if $player.gender is "female" and _npc.gender is "Female">>
<<button "Use Your Fingers">><<set $selectedAction to "Use Fingers">><<goto "IntimacyAction">><</button>>
<<button "She Fingers You">><<set $selectedAction to "Be Fingered">><<goto "IntimacyAction">><</button>>
<<button "Use your mouth">><<set $selectedAction to "Give Oral">><<goto "IntimacyAction">><</button>>
<<button "Receive Oral">><<set $selectedAction to "Receive Oral">><<goto "IntimacyAction">><</button>>
<<button "Scissors">><<set $selectedAction to "Scissors">><<goto "IntimacyAction">><</button>>
<<elseif $player.gender is "female" and _npc.gender is "Male">>
<<button "He Fingers You">><<set $selectedAction to "Be Fingered">><<goto "IntimacyAction">><</button>>
<<button "Stroke Him">><<set $selectedAction to "Handjob">><<goto "IntimacyAction">><</button>>
<<button "Use your mouth">><<set $selectedAction to "Give Oral">><<goto "IntimacyAction">><</button>>
<<button "Receive Oral">><<set $selectedAction to "Receive Oral">><<goto "IntimacyAction">><</button>>
<<button "Missionary">><<set $selectedAction to "Missionary">><<goto "IntimacyAction">><</button>>
<<button "Cowgirl">><<set $selectedAction to "Cowgirl">><<goto "IntimacyAction">><</button>>
<<button "Get it from Behind">><<set $selectedAction to "Doggy">><<goto "IntimacyAction">><</button>>
<<button "Anal">><<set $selectedAction to "Anal">><<goto "IntimacyAction">><</button>>
<<elseif $player.gender is "male" and _npc.gender is "Female">>
<<button "Use Fingers">><<set $selectedAction to "Use Fingers">><<goto "IntimacyAction">><</button>>
<<button "Handjob">><<set $selectedAction to "Handjob">><<goto "IntimacyAction">><</button>>
<<button "Use your mouth">><<set $selectedAction to "Give Oral">><<goto "IntimacyAction">><</button>>
<<button "Receive Oral">><<set $selectedAction to "Receive Oral">><<goto "IntimacyAction">><</button>>
<<button "Missionary">><<set $selectedAction to "Missionary">><<goto "IntimacyAction">><</button>>
<<button "Cowgirl">><<set $selectedAction to "Cowgirl">><<goto "IntimacyAction">><</button>>
<<button "Fuck Her from Behind">><<set $selectedAction to "Doggy">><<goto "IntimacyAction">><</button>>
<<button "Anal">><<set $selectedAction to "Anal">><<goto "IntimacyAction">><</button>>
<</if>>
<<button "Stop & Finish">><<goto "ClimaxStatReset">><</button>>
</div>
<</if>>
</div>
</div>
</div>
<</nobr>>
<style>
.intimacy-container-v3 {
display: flex;
flex-direction: column;
background: #111;
border: 2px solid #444;
padding: 15px;
gap: 20px;
}
.intimacy-main-content {
display: flex;
gap: 20px;
min-height: 400px;
}
.npc-mini-sidebar {
flex: 0 0 160px; /* Small portrait on the left */
display: flex;
flex-direction: column;
align-items: center;
}
.side-portrait {
width: 150px;
height: 220px;
object-fit: cover;
border: 2px solid #8B4513;
border-radius: 4px;
}
.npc-name-tag {
font-weight: bold;
color: #DAA520;
margin-top: 10px;
text-transform: uppercase;
}
.video-display-area {
flex: 1;
background: #000;
position: relative;
border: 1px solid #333;
display: flex;
justify-content: center;
align-items: center;
}
.main-video {
max-width: 100%;
max-height: 450px;
}
.action-flavor-text {
position: absolute;
bottom: 0;
width: 100%;
background: rgba(0,0,0,0.7);
color: #eee;
padding: 10px;
text-align: center;
font-style: italic;
}
/* Lust Bars Styling */
.lust-bar-group {
display: flex;
flex-direction: column;
gap: 10px;
margin-bottom: 20px;
}
.lust-label {
font-size: 0.9em;
margin-bottom: 4px;
color: #ccc;
}
.bar-outer {
width: 100%;
height: 15px;
background: #222;
border: 1px solid #444;
border-radius: 10px;
overflow: hidden;
}
.bar-inner {
height: 100%;
transition: width 0.4s ease-out;
}
.player-lust { background: linear-gradient(90deg, #4a148c, #7b1fa2); }
.npc-lust { background: linear-gradient(90deg, #b71c1c, #d32f2f); }
/* Climax Styling */
.climax-wrapper button {
width: 100%;
background: linear-gradient(to right, #800000, #ff0000) !important;
font-size: 1.5em !important;
padding: 15px !important;
animation: climaxGlow 1.5s infinite alternate;
}
@keyframes climaxGlow {
from { box-shadow: 0 0 5px #ff0000; }
to { box-shadow: 0 0 25px #ff0000; }
}
.grid-actions {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
gap: 10px;
}
.grid-actions button {
background: #2a2a2a;
border: 1px solid #555;
color: white;
padding: 8px;
cursor: pointer;
}
.grid-actions button:hover {
background: #444;
border-color: #DAA520;
}
</style><<nobr>>
<<set _farmers to setup.countJob("Farmer")>>
<<set _hunters to setup.countJob("Hunter")>>
<<set _woodcutters to setup.countJob("Wood Gatherer")>>
<<set _miners to setup.countJob("Miner")>>
<<set _managers to setup.countJob("Slave Manager")>>
<div style="text-align:center; margin-top: 50px;">
<h1 style="color: #e6c27a;">🌙 Night Falls...</h1>
<p>The camp settles down for the night. You rest, preparing for the challenges of tomorrow.</p>
<hr style="border-color: #444; width: 50%;">
<div style="background: #222; border: 1px solid #444; padding: 20px; text-align: left; max-width: 500px; margin: 0 auto; border-radius: 8px;">
<h3 style="margin-top: 0; color: gold; border-bottom: 1px solid #555; padding-bottom: 5px;">Daily Report: Day <<print $day - 1>></h3>
<div style="margin-bottom: 15px; padding: 10px; background: #1a1a1a; border-radius: 6px; border: 1px solid #333;">
<strong style="color: #e6c27a;">⚒ Today's Production</strong>
<table style="width: 100%; margin-top: 8px; border-collapse: collapse; font-size: 0.9em;">
<tr style="color: #aaa;">
<td style="padding: 3px 6px;">Workers</td>
<td style="padding: 3px 6px; text-align:right;">Count</td>
<td style="padding: 3px 6px; text-align:right;">Produced</td>
</tr>
<<if (_farmers + _hunters) gt 0>>
<tr>
<td style="padding: 3px 6px;">🥩 Farmers / Hunters</td>
<td style="padding: 3px 6px; text-align:right; color:#aaa;"><<print _farmers>> / <<print _hunters>></td>
<td style="padding: 3px 6px; text-align:right; color:#4caf50;">+<<print (_farmers + _hunters) * 2>> food</td>
</tr>
<</if>>
<<if _hunters gt 0>>
<tr>
<td style="padding: 3px 6px;">🐾 Hunters (pelts)</td>
<td style="padding: 3px 6px; text-align:right; color:#aaa;"><<print _hunters>></td>
<td style="padding: 3px 6px; text-align:right; color:#4caf50;">+<<print _hunters>> pelts</td>
</tr>
<</if>>
<<if _woodcutters gt 0>>
<tr>
<td style="padding: 3px 6px;">🪵 Wood Gatherers</td>
<td style="padding: 3px 6px; text-align:right; color:#aaa;"><<print _woodcutters>></td>
<td style="padding: 3px 6px; text-align:right; color:#4caf50;">+<<print _woodcutters>> wood</td>
</tr>
<</if>>
<<if _miners gt 0>>
<tr>
<td style="padding: 3px 6px;">⛏ Miners</td>
<td style="padding: 3px 6px; text-align:right; color:#aaa;"><<print _miners>></td>
<td style="padding: 3px 6px; text-align:right; color:#4caf50;">+<<print _miners>> iron</td>
</tr>
<</if>>
<<if _managers gt 0 and $slaves.length gt 0>>
<tr>
<td style="padding: 3px 6px;">👥 Slave Managers</td>
<td style="padding: 3px 6px; text-align:right; color:#aaa;"><<print _managers>></td>
<td style="padding: 3px 6px; text-align:right; color:#e91e63;">+1 Sub (All Slaves)</td>
</tr>
<</if>>
<<if (_farmers + _hunters + _woodcutters + _miners+ _managers) is 0>>
<tr>
<td colspan="3" style="padding: 6px; color:#777; font-style:italic;">No workers assigned — nothing was produced.</td>
</tr>
<</if>>
</table>
</div>
<strong style="color: #e6c27a;">📋 Events</strong>
<ul style="list-style-type: none; padding: 0; margin-top: 8px;">
<<if $eventLog and $eventLog.length gt 0>>
<<for _event range $eventLog>>
<li style="margin-bottom: 8px; padding-bottom: 8px; border-bottom: 1px dashed #333;">➤ _event</li>
<</for>>
<<else>>
<li><i style="color: #777;">No notable events today.</i></li>
<</if>>
</ul>
<div style="margin-top: 15px; font-size: 0.9em; color: #ccc;">
<strong>Resources Remaining:</strong><br>
🥩 Food: <span style="color: #ff9800;">$food</span> |
🪵 Wood: <span style="color: #8d6e63;">$wood</span> |
⛏ Iron: <span style="color: #90a4ae;">$iron</span> |
💰 Gold: <span style="color: #ffd700;">$gold</span>
</div>
</div>
<br><br>
<<button "Wake Up (Day $day)">>
<<set $eventLog to []>>
<<goto "WakeUpPage">>
<</button>>
</div>
<</nobr>><<nobr>>
<div style="background: rgba(20, 20, 20, 0.95); padding: 25px; border: 1px solid #444; border-radius: 8px;">
<div style="text-align:center; margin-bottom: 20px;">
<h2 style="color: #a0a0a0; font-family: serif; letter-spacing: 2px;">The Iron Mine</h2>
<img src="images/locations/mine.webp" style="width:100%; max-width:650px; border-radius:8px; border:2px solid #333; box-shadow: 0 0 15px rgba(0,0,0,0.5);" onerror="this.style.display='none'">
</div>
<<if $quest_smith is 4>>
<div style="background:#2a1a0a; border:1px solid #cc6600; border-radius:6px; padding:20px; margin:20px 0; border-left: 5px solid #cc6600;">
<h3 style="color: #cc6600; margin-top: 0; font-family: serif;">Structural Reinforcement Required</h3>
<p style="color: #ccc; line-height: 1.6; font-style: italic; text-align: justify;">
You arrive at the Karak to find Leva already assessing the entrance. She kicks a rotting support beam, and a shower of dust falls from the ceiling.
</p>
<<say "Leva" "images/NPC/smith/profile.webp" "The monsters are dead, but the mountain itself will kill us if we aren't careful. These old goblin supports are completely rotted out. I need 400 Wood to build new beams. Bring me the materials, and I'll make this place fully operational." "#cc6600">>
<div style="background: rgba(0,0,0,0.5); padding: 15px; margin-top: 20px; border-radius: 6px; text-align: center;">
<h4 style="margin: 0 0 10px 0; color: #aaa;">Materials Needed:</h4>
<div style="display: flex; justify-content: center; gap: 30px; margin-bottom: 15px; font-weight: bold;">
<span style="color: <<if $wood >= 400>>#4caf50<<else>>#e74c3c<</if>>;">Wood: $wood / 400</span>
</div>
<<if $wood >= 400>>
<<button "🏗️ Provide Materials & Rebuild Mine">>
<<set $wood -= 400>>
<<set $quest_smith to 5>>
<<goto "Mine_Build">>
<</button>>
<<else>>
<p style="color: #e74c3c; font-style: italic;">You do not have enough materials to begin reconstruction. Return to the Camp to gather resources.</p>
<</if>>
</div>
</div>
<<else>>
<p style="color: #ccc; line-height: 1.6; font-style: italic; padding: 0 10px; text-align: justify;">
The upper levels of the ancient Karak, once crawling with monsters, have been cleared and secured by your tribe. Sturdy new wooden beams hold the ceiling aloft, and the echoing darkness has been replaced by the rhythmic clinking of pickaxes. The stone here is rich with dark iron, ready to be stripped from the earth to forge weapons for your growing army.
</p>
<<if $necromancerslave is true>>
<div style="background: rgba(30, 10, 30, 0.8); padding: 15px; margin: 20px 0; border: 1px solid #8e44ad; border-left: 5px solid #a370f7; border-radius: 6px; display: flex; align-items: center; gap: 15px;">
<<link '<img src="images/NPC/necromancer/cage.webp" style="width: 80px; height: 80px; border-radius: 50%; border: 2px solid #8e44ad; object-fit:cover; object-position:center 30%;" onerror="this.style.display=\'none\'">'>>
<<goto "Necromancer">>
<</link>>
<div>
<h4 style="color: #bb8fce; margin: 0 0 5px 0;">Bound Sorceress</h4>
<p style="color: #ddd; margin: 0; font-size: 0.9em; line-height: 1.4;">
The defeated Lich Queen is chained in an improvised jail for you to use as you wish.
</p>
</div>
</div>
<</if>>
<hr style="border: 0; height: 1px; background: #333; margin: 25px 0;">
<div style="margin-bottom: 20px; padding: 15px; background: #111; border: 1px solid #222; border-radius: 6px;">
<h3 style="color: #888; margin-top: 0; font-size: 1.1em; border-bottom: 1px solid #333; padding-bottom: 5px;">Current Operations</h3>
<<displayWorkingNPCs>>
<div style="color: #a3a3a3; margin-top: 15px; font-weight: bold; font-size: 1.1em;">
Stockpile: <span style="color: #fff;">$iron Iron Ore</span>
</div>
</div>
<div style="border:1px solid #444; padding:20px; border-radius: 6px; background: #1a1a1a; text-align: center;">
<h3 style="margin-top:0; color: #ddd; font-family: serif;">Work the Mines</h3>
<<if $player.energy >= 20>>
<<button "⛏️ Swing the Pickaxe (1 Hour)">>
<<set $player.energy -= 20, _gain to random(3, 8) + Math.floor($player.str / 3)>>
<<set $iron += _gain>>
<<run UI.alert("Mined " + _gain + " Iron!")>>
<<goto "Iron_Mine">>
<</button>>
<<else>>
<p style="color: #e74c3c; font-weight: bold; margin: 10px 0;">
You are too exhausted to swing a pickaxe. You must rest before working again.
</p>
<</if>>
</div>
<</if>>
<div style="margin-top: 25px; text-align: center;">
<<button "← Return to the Mountain">>
<<goto "Mountain">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<<set _result to setup.processIntimacyAction($selectedAction, $activeNPCIndex, $activeNPCType)>>
<<if _result.error>>
<<if _result.needsRest>>
<div class="climax-text-box">
<p>You are completely exhausted. You don't have the strength to continue...</p>
<<link "Recover and Finish" "ClimaxStatReset">><</link>>
</div>
<<else>>
<p style="color: red;">Error: _result.error</p>
<<link "Return to Safety" "CampHub">><</link>>
<</if>>
<<else>>
<<set $currentIntimacyVideo to _result.video>>
<<set $lastIntimacyText to _result.text>>
<<passTime 15>>
<<goto "IntimacyHub">>
<</if>>
<</nobr>><<nobr>>
<div class="climax-rewards">
<<if $activeNPCType is "slave">>
<<set $slaves[$activeNPCIndex].love to setup.clamp($slaves[$activeNPCIndex].love + 10, 0, 100)>>
<<set $slaves[$activeNPCIndex].lust to 0>>
<p style="color:#ff69b4;">Bond Strengthened: Love +10</p>
<<elseif $activeNPCType is "tribe">>
<<set $tribe[$activeNPCIndex].loyalty to setup.clamp($tribe[$activeNPCIndex].loyalty + 8, 0, 100)>>
<<set $tribe[$activeNPCIndex].lust to 0>>
<p style="color:#ffd700;">Trust Deepened: Loyalty +8</p>
<<else>>
<<set _relKey to Object.keys($relNPCs)[$activeNPCIndex]>>
<<set $relNPCs[_relKey].love to setup.clamp($relNPCs[_relKey].love + 10, 0, 100)>>
<<set $relNPCs[_relKey].lust to 0>>
<p style="color:#ff69b4;">Bond Strengthened: Love +10</p>
<</if>>
<<set $player.lust to 0>>
<<passTime 10>>
<div style="margin-top:20px;">
<<link "Recover and Continue" $returnPassage>>
<<unset $currentIntimacyVideo>>
<<unset $lastIntimacyText>>
<</link>>
</div>
</div>
<</nobr>> <<set $gameTitle to "A Warlord's Claim">>
<<set $gameVersion to "0.03">>
<<if not $gameStarted>>
<<set $gameStarted to false>>
<<set $patreonCode to "attila">>
<<set $main_quest to 1>>
<<if not $player>>
<<set $player to {
name: "none",
gender: "none",
bodyType: "none",
genitals: "none",
portrait: "",
str: 5,
agi: 5,
con: 5,
int: 2,
cha: 2,
rep: 0,
hp: 100,
maxHp: 100,
energy: 100,
maxEnergy: 100,
hunger: 100,
maxHunger: 100,
lust: 0,
maxLust: 100,
climaxThreshold: 80,
equips: {
weapon: { name: "Rusty Axe", damage: 6 },
armor: { name: "Ragged Furs", "def": 2 },
boots: { name: "Barefoot", "def": 0 },
jewelry: { name: "None", effect: "None" },
paint: { name: "None", bonus: "None" }
}
}>>
<<set $inventory to []>>
<</if>>
<<set $day to 1>>
<<set $hour to 8>>
<<set $minute to 0>>
<<set $timePhase to "Morning">>
<<set $wood to 10>>
<<set $stone to 10>>
<<set $food to 10>>
<<set $pelts to 0>>
<<set $herbs to 0>>
<<set $iron to 0>>
<<set $gold to 50>>
<<set $healthpotions to 0>>
<<set $eventLog to []>>
<<set $hasDiscoveredForest to false>>
<<set $hasDiscoveredMountain to false>>
<<set $hasDiscoveredSwamp to false>>
<<set $hasDiscoveredVillage to false>>
<<set $hasDiscoveredCity to false>>
<<set $hasDiscoveredDeepNorth to false>>
<<set $lastTributeVisitDay to -30>>
<<set $isPrisoner to false>>
<<set $hasTrainingGrounds to false>>
<<set $hasSmith to false>>
<<set $hasShamanHut to false>>
<<set $hasLonghouse to false>>
<<set $hasSlavePens to false>>
<<set $hasBarracks to false>>
<<set $hasStables to false>>
<<set $hasFarm to false>>
<<run State.variables.relNPCs = {
"elara": {
name: "Elara", gender: "Female", origin: "Elara",
love: 0, sub: 0, lust: 0, maxLust: 100, climaxThreshold: 75,
img: "images/NPC/elara/profile.webp",
metPlayer: true
},
"ralia": {
name: "Ralia", gender: "Female", origin: "Ralia",
love: 0, sub: 0, lust: 0, maxLust: 100, climaxThreshold: 75,
img: "images/NPC/ralia/profile.webp",
metPlayer: false
},
"leva": {
name: "Leva", gender: "Female", origin: "Leva",
love: 0, sub: 0, lust: 0, maxLust: 100, climaxThreshold: 75,
img: "images/NPC/smith/profile.webp",
metPlayer: false
},
"kaelith": {
name: "Kaelith", gender: "Female", origin: "Kaelith",
love: 0, sub: 0, lust: 0, maxLust: 100, climaxThreshold: 75,
img: "images/NPC/shaman/profile.webp",
metPlayer: false
}
}>>
<<set $main_stage to 1>>
<<set $quest_smith to 0>>
<<set $mineFound to false>>
<<set $mineExplored to false>>
<<set $mineUnlocked to false>>
<<set $driderspare to false>>
<<set $forgeUnlocked to false>>
<<set $ring_power_unlocked to false>>
<<set $foundCorro to false>>
<<set $quest_hunter to 0>>
<<set $quest_shaman to 0>>
<<set $quest_villager to 0>>
<<set $necromancerslave to false>>
<<set $quest_strangering to 0>>
<<set $villageSaved to false>>
<<set $villageSaved to false>>
<<set $villageRaided to false>>
<<set $lastRaidDay to -30>>
<<set $villageTribute to 0>>
<<set $lastTributeDay to -30>>
<<set $slaves to []>>
<<set $slaveLimit to 4>>
<<set $slavePensLevel to 1>>
<<set $tribe to []>>
<<set $tribeLimit to 10>>
<<set $barracksLevel to 1>>
<<set $companions to []>>
<<set $combatConfig to null>>
<<set $combat to null>>
<<set $climaxMode to null>>
<<set $maleFinishChoice to null>>
<</if>>
<<if $player and $player.lust is undefined>>
<<set $player.lust to 0>>
<<set $player.maxLust to 100>>
<<set $player.climaxThreshold to 80>>
<</if>>
<<if $slaves>>
<<for _i, _s range $slaves>>
<<if _s.lust is undefined>>
<<set $slaves[_i].lust to 0>>
<<set $slaves[_i].maxLust to 100>>
<</if>>
<</for>>
<</if>>
<<if $tribe>>
<<for _i, _t range $tribe>>
<<if _t.lust is undefined>>
<<set $tribe[_i].lust to 0>>
<<set $tribe[_i].maxLust to 100>>
<</if>>
<</for>>
<</if>><<nobr>>
<<if not $combatConfig>><<set $combatConfig to {enemies: []}>><<endif>>
<div style="max-width:600px;margin:0 auto;padding:20px;color:#ddd">
<h2 style="color:#ff6b35;border-bottom:2px solid #ff6b35;padding-bottom:8px">⚔ Combat Setup</h2>
<div style="background:#1a1a1a;border:1px solid #333;border-radius:6px;padding:15px;margin-bottom:15px">
<h3 style="color:#ccc;margin-top:0;font-size:0.95em;letter-spacing:1px">QUICK ADD PRESETS</h3>
<div style="display:flex;gap:8px;flex-wrap:wrap">
<<link "Bandit">><<run $combatConfig.enemies.push(clone(setup.enemyPresets.Bandit))>><<goto "CombatSetup">><</link>>
<<link "Wolf">><<run $combatConfig.enemies.push(clone(setup.enemyPresets.Wolf))>><<goto "CombatSetup">><</link>>
<<link "Raider">><<run $combatConfig.enemies.push(clone(setup.enemyPresets.Raider))>><<goto "CombatSetup">><</link>>
<<link "Guard">><<run $combatConfig.enemies.push(clone(setup.enemyPresets.Guard))>><<goto "CombatSetup">><</link>>
<<link "Barbarian">><<run $combatConfig.enemies.push(clone(setup.enemyPresets.Barbarian))>><<goto "CombatSetup">><</link>>
<<link "Shaman">><<run $combatConfig.enemies.push(clone(setup.enemyPresets.Shaman))>><<goto "CombatSetup">><</link>>
</div>
</div>
<div style="background:#1a1a1a;border:1px solid #333;border-radius:6px;padding:15px;margin-bottom:15px">
<h3 style="color:#ccc;margin-top:0;font-size:0.95em;letter-spacing:1px">CUSTOM ENEMY</h3>
<table style="width:100%;border-collapse:collapse">
<tr>
<td style="padding:4px 8px;color:#888">Name</td>
<td style="padding:4px 8px"><<textbox "_cName" "Enemy">></td>
<td style="padding:4px 8px;color:#888">HP</td>
<td style="padding:4px 8px"><<numberbox "_cHp" 30>></td>
</tr>
<tr>
<td style="padding:4px 8px;color:#888">ATK</td>
<td style="padding:4px 8px"><<numberbox "_cAtk" 8>></td>
<td style="padding:4px 8px;color:#888">DEF</td>
<td style="padding:4px 8px"><<numberbox "_cDef" 3>></td>
</tr>
<tr>
<td style="padding:4px 8px;color:#888">Gold</td>
<td style="padding:4px 8px"><<numberbox "_cGold" 10>></td>
</tr>
</table>
<br>
<<button "+ Add Custom">>
<<set $combatConfig.enemies.push({
name: _cName,
hp: Number(_cHp), maxHp: Number(_cHp),
atk: Number(_cAtk), def: Number(_cDef),
spd: 5, xp: 20, gold: Number(_cGold), img: _cImg
})>>
<<goto "CombatSetup">>
<</button>>
</div>
<div style="background:#1a1a1a;border:1px solid #333;border-radius:6px;padding:15px;margin-bottom:15px">
<h3 style="color:#ccc;margin-top:0;font-size:0.95em;letter-spacing:1px">
ENEMY ROSTER
<span style="color:#ff6b35;margin-left:8px">$combatConfig.enemies.length</span>
</h3>
<<if $combatConfig.enemies.length eq 0>>
<p style="color:#555;font-style:italic;margin:0">No enemies added yet.</p>
<<else>>
<<for _ei = 0; _ei < $combatConfig.enemies.length; _ei++>>
<<set _ee to $combatConfig.enemies[_ei]>>
<<capture _ei, _ee>>
<div style="display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid #2a2a2a">
<span>
<strong><<= _ee.name>></strong>
<span style="color:#666;font-size:0.8em;margin-left:8px">
HP <<= _ee.hp>> | ATK <<= _ee.atk>> | DEF <<= _ee.def>>
</span>
</span>
<<link "✕ Remove">>
<<run $combatConfig.enemies.splice(_ei, 1)>>
<<goto "CombatSetup">>
<</link>>
</div>
<</capture>>
<</for>>
<</if>>
</div>
<<if $combatConfig.enemies.length gt 0>>
<div style="text-align:center;margin-bottom:15px">
<<button "⚔ Start Fight">>
<<set $returnTo to "CampHub">>
<<run setup.initCombat($combatConfig.enemies)>>
<<set $combatConfig to null>>
<<goto "CombatPage">>
<</button>>
</div>
<<else>>
<p style="color:#555;text-align:center">Add at least one enemy to begin.</p>
<</if>>
[[← Back|CampHub]]
</div>
<</nobr>><<nobr>>
<<if not $combat>><<goto "CampHub">><</if>>
<<if $combat.phase eq "defeat">>
<<set $player.hp to 1>>
<<set $combat to null>>
<<goto "Death">>
<</if>>
<div style="max-width:500px;margin:60px auto;padding:30px;text-align:center;color:#ddd">
<<if $combat.phase eq "victory">>
<<set $player.rep += $combat.rewards.rep>>
<h2 style="color:#44ff44;font-size:2em;margin-bottom:10px">Victory!</h2>
<p style="color:#aaa">You defeated all enemies in $combat.round rounds.</p>
<<if $combat.rewards.gold gt 0>>
<p style="color:#ffd700;font-size:1.2em">+ $combat.rewards.gold gold</p>
<</if>>
<<if $combat.rewards.rep gt 0>>
<p style="color:#ffd700;font-size:1.2em">+ $combat.rewards.rep reputation</p>
<</if>>
<<set $eventLog.push("Day " + $day + ": Won a battle (round " + $combat.round + ").")>>
<<elseif $combat.phase eq "fled">>
<h2 style="color:#ff9800;font-size:2em;margin-bottom:10px">Escaped!</h2>
<p style="color:#aaa">You managed to flee from the fight.</p>
<<else>>
<h2 style="color:#fa5252;font-size:2em;margin-bottom:10px">Defeated!</h2>
<p style="color:#aaa">You were overwhelmed.</p>
<</if>>
<br>
<<button "Continue">>
<<set $combat to null>>
<<goto $returnTo>>
<</button>>
</div>
<</nobr>><<set $returnTo to "Forest">> /* passage to return to after combat */
<<run setup.initCombat([
clone(setup.enemyPresets.Wolf),
clone(setup.enemyPresets.Bandit)
])>>
<<goto "CombatPage">>
Or send the player to CombatSetup for a configurable fight:
[[Enter Combat|CombatSetup]]
To add a "Fight" button on NPC_Interaction for a single enemy:
<<button "Fight">>
<<set $returnTo to "NPC_Interaction">>
<<set _foe to { name: _npc.name, hp: 40, maxHp: 40, atk: 10, def: 3, spd: 5, xp: 25, gold: 5, img: _npc.img }>>
<<run setup.initCombat([_foe])>>
<<goto "CombatPage">>
<</button>><<nobr>>
<div style="background:#1a1a2a;border:1px solid #4a4a6a;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;color:#a0a0ff;font-weight:bold;margin-bottom:10px;text-transform:uppercase;letter-spacing:2px">
🐺 Wolf Pack
</div>
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/wolf_pack.webp" style="width:100%;max-width:400px;border-radius:6px;border:2px solid #8a6a2a" onerror="this.style.display='none'">
</div>
<div style="font-size:0.9em;color:#eee;margin-bottom:15px;text-align:center">
Four wolves emerge from the treeline, hackles raised. They fan out, cutting off your retreat. Yellow eyes track your every move.
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "⚔ Fight">>
<<set $returnTo to "Forest">>
<<run setup.initCombat([
clone(setup.enemyPresets.Wolf),
clone(setup.enemyPresets.Wolf),
clone(setup.enemyPresets.Wolf),
clone(setup.enemyPresets.Wolf)
])>>
<<goto "CombatPage">>
<</button>>
<<button "🏃 Run for it!">>
<<if random(1, 2) is 1>>
<<set $lastEventText to "You sprint hard and lose them in the undergrowth. Close call.">>
<<else>>
<<set $player.hp to setup.clamp($player.hp - 8, 0, $player.maxHp)>>
<<set $lastEventText to "One catches you before you clear the trees. A deep gash — -8 HP.">>
<</if>>
<<goto "Forest">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<div style="background:#1f1208;border:1px solid #a8552a;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;color:#d4824a;font-weight:bold;margin-bottom:10px;text-transform:uppercase;letter-spacing:2px">
🐗 Boar Sounder
</div>
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/boars.webp" style="width:100%;max-width:400px;border-radius:6px;border:2px solid #8a6a2a" onerror="this.style.display='none'">
</div>
<div style="font-size:0.9em;color:#eee;margin-bottom:15px;text-align:center">
Three large boars burst from the undergrowth, tusks gleaming. They scatter in different directions — then regroup and charge.
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "⚔ Fight">>
<<set $returnTo to "Forest">>
<<run setup.initCombat([
clone(setup.enemyPresets.Boar),
clone(setup.enemyPresets.Boar),
clone(setup.enemyPresets.Boar)
])>>
<<goto "CombatPage">>
<</button>>
<<button "🏃 Climb a tree!">>
<<if random(1, 3) gt 1>>
<<set $lastEventText to "You haul yourself up just in time. The boars snort and eventually move on.">>
<<else>>
<<set $player.hp to setup.clamp($player.hp - 12, 0, $player.maxHp)>>
<<set $lastEventText to "One gores your leg before you get clear. -12 HP.">>
<</if>>
<<goto "Forest">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<div style="background:#1a0d00;border:1px solid #6d3a1f;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;color:#c47a3a;font-weight:bold;margin-bottom:10px;text-transform:uppercase;letter-spacing:2px">
🐻 The Old Bear
</div>
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/bear.webp" style="width:100%;max-width:400px;border-radius:6px;border:2px solid #8a6a2a" onerror="this.style.display='none'">
</div>
<div style="font-size:0.9em;color:#eee;margin-bottom:15px;text-align:center">
You nearly walk into it. A massive bear, old scars crossing its muzzle, rises to full height and lets out a roar that shakes the branches above you.
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "⚔ Fight">>
<<set $returnTo to "Forest">>
<<run setup.initCombat([
clone(setup.enemyPresets.Bear)
])>>
<<goto "CombatPage">>
<</button>>
<<button "🏃 Back away slowly...">>
<<set _roll to random(1, 10)>>
<<if _roll gt 4>>
<<set $lastEventText to "You hold its gaze and step back. After a long moment it loses interest and lumbers away.">>
<<else>>
<<set $player.hp to setup.clamp($player.hp - 20, 0, $player.maxHp)>>
<<set $lastEventText to "It charges before you can clear the area. You escape, barely. -20 HP.">>
<</if>>
<<goto "Forest">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<div style="background:#0a1a0a;border:1px solid #2d6e2d;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;color:#7bc47f;font-weight:bold;margin-bottom:10px;text-transform:uppercase;letter-spacing:2px">
🌿 The Leshy
</div>
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/leshy_enc.webp" style="width:100%;max-width:400px;border-radius:6px;border:2px solid #8a6a2a" onerror="this.style.display='none'">
</div>
<div style="font-size:0.9em;color:#eee;margin-bottom:15px;text-align:center">
The forest goes silent. Then the trees themselves seem to lean inward. A figure of bark and moss and rot rises from the earth — taller than any man, older than the pines. Its hollow eyes find you and it speaks without a mouth: <i>"You do not belong here."</i>
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "⚔ Fight">>
<<set $returnTo to "Forest">>
<<run setup.initCombat([
clone(setup.enemyPresets.Leshy)
])>>
<<goto "CombatPage">>
<</button>>
<<button "🙇 Offer tribute (costs 5 food)">>
<<if $food gte 5>>
<<set $food -= 5>>
<<set $lastEventText to "You lay food at its roots and bow your head. The forest exhales. The Leshy sinks back into the earth.">>
<<goto "Forest">>
<<else>>
<<run UI.alert("You have nothing worthy to offer. It watches you.")>>
<</if>>
<</button>>
<<button "🏃 Run">>
<<set $player.hp to setup.clamp($player.hp - 15, 0, $player.maxHp)>>
<<set $lastEventText to "The forest tangles at your feet the whole way back. You escape, bleeding from a dozen scratches. -15 HP.">>
<<goto "Forest">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<<if not $elfEncounterPhase>><<set $elfEncounterPhase to "intro">><</if>>
<div style="background:#0d1a0d;border:1px solid #3a6b3a;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/slaver_convoy.webp" style="width:100%;max-width:400px;border-radius:6px;border:2px solid #3a6b3a" onerror="this.style.display='none'">
</div>
<div style="text-align:center;color:#7bc47f;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
🌿 A Slaver in the Mire
</div>
<<if $elfEncounterPhase is "intro">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
Through the fog you spot a tall figure — pointed ears, silver hair slicked with swamp damp, fine leathers that look out of place in this mire. Behind her, two armored guards flank a chained captive. A northern woman, barely clothed, wrists bound. The elf meets your gaze with cold amusement. </div>
<<say "Slaver" "images/encounters/slaver.webp" "Well. A wanderer. How quaint.">>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "⚔ Attack the Slavers">>
<<set $elfEncounterPhase to "combat">>
<<set $returnTo to "Event_SlaveElf">>
<<run setup.initCombat([
clone(setup.enemyPresets.Slaver),
clone(setup.enemyPresets.SlaverGuard),
clone(setup.enemyPresets.SlaverGuard)
])>>
<<goto "CombatPage">>
<</button>>
<<if $gold gte 80>>
<<button "💰 Buy the slave (80 gold)">>
<<set $gold -= 80>>
<<set $elfEncounterPhase to "bought">>
<<goto "Event_SlaveElf">>
<</button>>
<<else>>
<div style="color:#444;font-size:0.85em;padding:6px;border:1px solid #222;border-radius:4px;text-align:center">
💰 Buy the slave (80 gold) — <span style="color:#fa5252">Not enough gold ($gold)</span>
</div>
<</if>>
<<button "🚶 Walk away">>
<<unset $elfEncounterPhase>>
<<goto "Swamp">>
<</button>>
</div>
<<elseif $elfEncounterPhase is "combat">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
The guards lie beaten in the mud. The elf backs away, hissing, and disappears into the fog — too proud to beg, too smart to stay. The northern woman watches you from the ground, chain still on her wrists, expression unreadable.
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "⛓ Take her — she's yours now">>
<<set _newSlave to setup.generateSlave("North", "Female")>>
<<set _newSlave.sub to 20>>
<<set _newSlave.love to 5>>
<<if $slaves.length lt $slaveLimit>>
<<set $slaves.push(_newSlave)>>
<<set $eventLog.push("Day " + $day + ": Claimed a northern slave from a swamp slaver.")>>
<<else>>
<<run UI.alert("Your slave pens are full. Build more capacity first.")>>
<</if>>
<<unset $elfEncounterPhase>>
<<goto "Swamp">>
<</button>>
<<button "🔓 Free her">>
<<set $eventLog.push("Day " + $day + ": Freed a northern captive from a slaver elf.")>>
<<set $elfEncounterPhase to "freed">>
<<goto "Event_SlaveElf">>
<</button>>
</div>
<<elseif $elfEncounterPhase is "freed">>
<div style="color:#7bc47f;font-style:italic;font-size:0.9em;margin:15px 0;text-align:center">
She holds your gaze a long moment, then disappears into the reeds without a word. You get nothing but the knowledge you did right.
</div>
<<button "Leave">>
<<unset $elfEncounterPhase>>
<<goto "Swamp">>
<</button>>
<<elseif $elfEncounterPhase is "bought">>
<<set _newSlave to setup.generateSlave("North", "Female")>>
<<set _newSlave.sub to 10>>
<<set _newSlave.love to 15>>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
The elf smiles thinly and counts the coin with practiced fingers. She drops the chain at your feet without ceremony. <<say "Slaver" "images/encounters/slaver.webp" "A pleasure doing business.">> She and her remaining guard melt back into the mist.
</div>
<<if $slaves.length lt $slaveLimit>>
<<set $slaves.push(_newSlave)>>
<div style="background:#111;border:1px solid #333;border-radius:6px;padding:12px;margin-bottom:12px;text-align:center">
<strong style="color:#eee"><<= _newSlave.name>></strong>
<span style="color:#666;font-size:0.8em;margin-left:6px"><<= _newSlave.origin>> · <<= _newSlave.gender>></span>
<<if _newSlave.img and _newSlave.img neq "">>
<br><img @src="_newSlave.img" style="width:80px;height:100px;object-fit:cover;border-radius:4px;border:1px solid #444;margin-top:8px">
<</if>>
<br><span style="font-size:0.8em;color:#888;margin-top:4px;display:block"><<= _newSlave.desc>></span>
</div>
<<set $eventLog.push("Day " + $day + ": Purchased a northern slave from a swamp slaver for 80 gold.")>>
<<else>>
<p style="color:#fa5252;text-align:center">Your slave pens are full. She has nowhere to go.</p>
<</if>>
<<button "Return to the swamp">>
<<unset $elfEncounterPhase>>
<<goto "Swamp">>
<</button>>
<</if>>
</div>
<</nobr>><<nobr>>
<<if not $witchPhase>><<set $witchPhase to "intro">><</if>>
<div style="background:#0d1a0f;border:1px solid #2d5a35;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;color:#7bc47f;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
🌿 Something in the Mist
</div>
/* ── INTRO ── */
<<if $witchPhase is "intro">>
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/swamp/witch_lure.webp" style="width:100%;max-width:800px;border-radius:6px;border:2px solid #2d5a35" onerror="this.style.display='none'">
</div>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You are about to turn back when you see her — standing waist-deep in the dark water, completely bare, skin pale as birch bark and glowing faintly in the swamp mist. She turns toward you slowly, hair spilling over her shoulders, lips parted in something between a smile and an invitation.
<br><br>She says nothing. She doesn't need to as she walks out of the water. <br>
<video width="100%" style="border-radius: 6px; margin: 15px 0;" autoplay loop muted>
<source src="images/encounters/swamp/witch_lure.webm" type="video/webm">
</video>
<br><br>Every instinct you have says this is wrong. Every other part of you disagrees.
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "Wade in toward her">>
<<set $witchPhase to "oral">>
<<goto "Event_Witch">>
<</button>>
<<button "Back away slowly">>
<<unset $witchPhase>>
<<goto "Swamp">>
<</button>>
</div>
/* ── ORAL ── */
<<elseif $witchPhase is "oral">>
<<if $player.gender is "male">>
<<set _vid to "images/encounters/swamp/witchm1.webm">>
<<set _text to "She pulls you close by the wrist, drops to her knees in the shallow water and takes you into her mouth without a word. Her eyes stay fixed on yours — dark, unblinking, bottomless. You should leave. You do not leave.">>
<<else>>
<<set _vid to "images/encounters/swamp/witchf1.webm">>
<<set _text to "She draws you in close, her cold fingers surprisingly gentle. Her mouth finds you with practiced precision, and the world narrows to sensation and mist. Something in the back of your mind screams at you to stop.">>
<</if>>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:6px;border:2px solid #2d5a35">
<source @src="_vid" type="video/webm">
</video>
</div>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
<<print _text>>
</div>
<<button "Don't stop">>
<<set $witchPhase to "sex">>
<<goto "Event_Witch">>
<</button>>
/* ── SEX ── */
<<elseif $witchPhase is "sex">>
<<if $player.gender is "male">>
<<set _vid to "images/encounters/swamp/witchm2.webm">>
<<set _text to "She pulls you down into the water with her, wrapping around you with inhuman grace. The cold doesn't bother her. Nothing about her is quite right — too smooth, too perfect, too still between movements. And yet you can't stop.">>
<<else>>
<<set _vid to "images/encounters/swamp/witchf2.webm">>
<<set _text to "She lays back into the black water like it's a bed, pulling you down with her. Her body is impossibly perfect — not a flaw, not a scar, not a single imperfection. It should comfort you. It doesn't.">>
<</if>>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:6px;border:2px solid #2d5a35">
<source @src="_vid" type="video/webm">
</video>
</div>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
<<print _text>>
</div>
<<button "Deeper into the mist">>
<<set $witchPhase to "climax">>
<<goto "Event_Witch">>
<</button>>
/* ── CLIMAX ── */
<<elseif $witchPhase is "climax">>
<<if $player.gender is "male">>
<<set _vid to "images/encounters/swamp/witchm3.webm">>
<<else>>
<<set _vid to "images/encounters/swamp/witchf3.webm">>
<</if>>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:6px;border:2px solid #2d5a35">
<source @src="_vid" type="video/webm">
</video>
</div>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
The moment you peak she throws her head back and laughs — a long, rattling cackle that doesn't sound like any human throat. The mist surges. The warmth vanishes. Something shifts.
</div>
<<button "What the—">>
<<set $witchPhase to "reveal">>
<<goto "Event_Witch">>
<</button>>
/* ── REVEAL ── */
<<elseif $witchPhase is "reveal">>
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/swamp/witch_true.webp" style="width:100%;max-width:800px;border-radius:6px;border:2px solid #7a1a1a" onerror="this.style.display='none'">
</div>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
The illusion collapses all at once. The pale girl is gone. What stands before you — calf-deep in black water, grinning with a mouth full of too many teeth — is ancient. Hunched. Warted and grey and delighted with itself.
<br><br>"Oh don't make that face," she wheezes, patting your cheek with a hand like a dead branch. "I needed feeding. You tasted fine."
<br><br>She vanishes into the mist like smoke. You are alone, waist-deep in freezing swamp water, exhausted, and profoundly ashamed of yourself.
</div>
<<set _hpLoss to Math.floor($player.maxHp * 0.25)>>
<<set $player.hp to setup.clamp($player.hp - _hpLoss, 1, $player.maxHp)>>
<<set $player.energy to setup.clamp($player.energy - 30, 0, $player.maxEnergy)>>
<<set $player.lust to 0>>
<<set $eventLog.push("Day " + $day + ": Seduced and drained by a witch in the swamp.")>>
<div style="background:#111;border:1px solid #7a1a1a;border-radius:6px;padding:10px;text-align:center;font-size:0.85em;color:#fa5252;margin-bottom:12px">
❤ -<<print _hpLoss>> HP | ⚡ -30 Energy | 💗 Lust reset
</div>
<<button "Drag yourself out of the swamp">>
<<unset $witchPhase>>
<<goto "Swamp">>
<</button>>
<</if>>
</div>
<</nobr>><<nobr>>
<<if not $villagerPhase>><<set $villagerPhase to "intro">><</if>>
<<set _chaCheck to $player.cha gte 7>>
<<set _strCheck to $player.str gte 10>>
<div style="background:#1a1208;border:1px solid #5a4a2d;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/villager_girl.webp" style="width:100%;max-width:400px;border-radius:6px;border:2px solid #8a6a2a" onerror="this.style.display='none'">
</div>
<div style="text-align:center;color:#d4aa50;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
🌲 A Woman on the Path
</div>
<<if $villagerPhase is "intro">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You hear footsteps on the narrow forest path before you see her — a young woman from the village, basket on her arm, humming softly to herself. She stops when she sees you, eyes wide but not yet panicked.
<br><br>"I — I'm just heading home. I don't want any trouble."
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "🚶 Let her pass">>
<<unset $villagerPhase>>
<<goto "Forest">>
<</button>>
<<button "🗣 Convince her to join your tribe">>
<<set $villagerPhase to "convince">>
<<goto "Event_Walk">>
<</button>>
<<button "⛓ Grab her">>
<<set $villagerPhase to "capture">>
<<goto "Event_Walk">>
<</button>>
<<if _chaCheck>>
<<button "😏 Seduce her" (CHA " + $player.cha + ")>>
<<set $villagerPhase to "seduce">>
<<goto "Event_Walk">>
<</button>>
<<else>>
<div style="color:#444;font-size:0.8em;padding:5px;border:1px solid #222;border-radius:4px;text-align:center">
😏 Seduce her — requires CHA 7 (yours: $player.cha)
</div>
<</if>>
<<if _strCheck>>
<<button "💪 Take her by force" (STR " + $player.str + ")>>
<<set $villagerPhase to "force">>
<<goto "Event_Walk">>
<</button>>
<<else>>
<div style="color:#444;font-size:0.8em;padding:5px;border:1px solid #222;border-radius:4px;text-align:center">
💪 Take her by force — requires STR 10 (yours: $player.str)
</div>
<</if>>
</div>
<<elseif $villagerPhase is "convince">>
<<set _roll to random(1, 20) + $player.cha>>
<<if _roll gte 15>>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You talk to her for a long while — of your camp, your plans, the life you're building. She's wary, then curious, then something shifts in her expression. She sets down her basket.
<br><br>"I've never liked the village much anyway."
</div>
<<set _newMember to setup.generateTribeMember("Female")>>
<<set _newMember.loyalty to 40>>
<<set _newMember.morale to 60>>
<<if $tribe.length lt $tribeLimit>>
<<set $tribe.push(_newMember)>>
<<set $eventLog.push("Day " + $day + ": A villager woman joined the tribe willingly.")>>
<div style="background:#111;border:1px solid #333;border-radius:6px;padding:10px;text-align:center;margin-bottom:12px">
<strong style="color:#eee"><<= _newMember.name>></strong> has joined your tribe.
</div>
<<else>>
<p style="color:#fa5252;text-align:center">Your tribe is at capacity.</p>
<</if>>
<<else>>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
Your words don't land the way you hoped. She backs away, shaking her head, and breaks into a run before you can say another word.
</div>
<</if>>
<<button "Continue">>
<<unset $villagerPhase>>
<<goto "Forest">>
<</button>>
<<elseif $villagerPhase is "capture">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
Before she can run you seize her wrist. She struggles, she screams, but out here there's no one to hear it. You bind her hands and drag her back toward camp.
</div>
<<set _newSlave to setup.generateSlave("North", "Female")>>
<<set _newSlave.sub to 10>>
<<set _newSlave.love to 0>>
<<if $slaves.length lt $slaveLimit>>
<<set $slaves.push(_newSlave)>>
<<set $eventLog.push("Day " + $day + ": Captured a villager woman in the forest.")>>
<div style="background:#111;border:1px solid #333;border-radius:6px;padding:10px;text-align:center;margin-bottom:12px">
<strong style="color:#eee"><<= _newSlave.name>></strong> has been added to your slaves.
</div>
<<else>>
<p style="color:#fa5252;text-align:center">Your slave pens are full. You let her go.</p>
<</if>>
<<button "Return to camp">>
<<unset $villagerPhase>>
<<goto "Forest">>
<</button>>
<<elseif $villagerPhase is "seduce">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You don't threaten her. You don't need to. A slow smile, the right words, fingers brushing her hand as you speak. Her breathing changes. The basket drops.
<br><br>"We shouldn't..." she whispers. But she doesn't move away.
</div>
<<set $activeNPCIndex to 0>>
<<set $activeNPCType to "slave">>
<<set _tempNPC to setup.generateSlave("North", "Female")>>
<<set _tempNPC.lust to 60>>
<<set _tempNPC.love to 30>>
<<set $slaves.unshift(_tempNPC)>>
<<set $returnPassage to "Event_Walk_End">>
<<set $villagerPhase to "seduced">>
<<set $currentIntimacyVideo to "">>
<<set $lastIntimacyText to "You draw her close in the dappled forest light...">>
<<button "Give in to the moment">>
<<goto "IntimacyHub">>
<</button>>
<<button "Leave her be">>
<<unset $villagerPhase>>
<<goto "Forest">>
<</button>>
<<elseif $villagerPhase is "force">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
She tries to run. Your hand closes around her arm. She's strong but you're stronger, and out here, strength is the only law that matters.
</div>
<<set $activeNPCIndex to 0>>
<<set $activeNPCType to "slave">>
<<set _tempNPC to setup.generateSlave("North", "Female")>>
<<set _tempNPC.lust to 20>>
<<set _tempNPC.love to 0>>
<<set _tempNPC.sub to 30>>
<<set $slaves.unshift(_tempNPC)>>
<<set $returnPassage to "Event_Walk_End">>
<<set $villagerPhase to "forced">>
<<set $currentIntimacyVideo to "">>
<<set $lastIntimacyText to "She has no say in what happens next.">>
<<button "Proceed">>
<<goto "IntimacyHub">>
<</button>>
<</if>>
</div>
<</nobr>><<nobr>>
<<if $slaves.length gt 0 and ($villagerPhase is "seduced" or $villagerPhase is "forced")>>
<<set $slaves.shift()>>
<</if>>
<div style="background:#1a1208;border:1px solid #5a4a2d;border-radius:8px;padding:20px;text-align:center;color:#ccc;font-style:italic">
<<if $villagerPhase is "seduced">>
She straightens her dress and picks up her basket without looking back. You watch her disappear down the path, unhurried.
<<else>>
She's gone the moment you release her — into the trees, swallowed by the forest. You are alone again.
<</if>>
</div>
<br>
<<button "Return to the forest">>
<<unset $villagerPhase>>
<<goto "Forest">>
<</button>>
<</nobr>><<nobr>>
<<if not $barbarianPhase>><<set $barbarianPhase to "intro">><</if>>
<<if $barbarianPhase is "intro">>
<div style="background:#1a0d00;border:1px solid #6b3a1f;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/rivals.webp" style="width:100%;max-width:800px;border-radius:6px;border:2px solid #6b3a1f" onerror="this.style.display='none'">
</div>
<div style="text-align:center;color:#c47a3a;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
⚔ Rival Warband
</div>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
a group of large warriors lean against the treeline, arms crossed, watching you with open contempt. Northmen by the look of them — scarred faces, heavy axes, the kind of men who measure everything by who they can break.
<br><br>The biggest one spits at your feet.
<br><br>"Look at this. A warlord with no army, no hall, and no land worth the name. How does it feel to be nothing?"
<br><br>His companions laugh.
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "⚔ Fight them">>
<<set $barbarianPhase to "combat">>
<<set $returnTo to "Event_RivalBarbarians">>
<<run setup.initCombat([
clone(setup.enemyPresets.RivalChieftain),
clone(setup.enemyPresets.RivalWarrior),
clone(setup.enemyPresets.RivalWarrior)
])>>
<<goto "CombatPage">>
<</button>>
<<button "🚶 Ignore them and walk on">>
<div style="font-size:0.85em;color:#888;font-style:italic;margin-top:8px;text-align:center">
Their laughter follows you down the path. You let it.
</div>
<<set $barbarianPhase to "ignored">>
<<goto "Event_RivalBarbarians">>
<</button>>
</div>
<<elseif $barbarianPhase is "ignored">>
<div style="font-size:0.9em;color:#888;margin-bottom:15px;font-style:italic;text-align:center">
Their laughter follows you down the path. You let it. A fight today isn't worth the energy — but you won't forget their faces.
</div>
<<button "Continue">>
<<unset $barbarianPhase>>
<<goto $returnTo>>
<</button>>
<<elseif $barbarianPhase is "combat">>
<div style="background:#1a0d00;border:1px solid #6b3a1f;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/rivals_defeat.webp" style="width:100%;max-width:800px;border-radius:6px;border:2px solid #6b3a1f" onerror="this.style.display='none'">
</div>
<div style="text-align:center;color:#c47a3a;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
⚔ Rival Warband
</div>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
They're on the ground. The chieftain clutches his side, breathing hard, pride broken along with a few ribs. The others look at you with something new in their eyes — not contempt anymore. Fear, maybe. Respect.
<br><br>The chieftain growls through bloodied teeth: "Finish it then."
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "🩸 Kill them all">>
<<set $barbarianPhase to "kill">>
<<goto "Event_RivalBarbarians">>
<</button>>
<<button "🤝 Offer them a place in your tribe">>
<<set $barbarianPhase to "recruit">>
<<goto "Event_RivalBarbarians">>
<</button>>
<<button "⛓ Enslave them">>
<<set $barbarianPhase to "enslave">>
<<goto "Event_RivalBarbarians">>
<</button>>
</div>
<<elseif $barbarianPhase is "kill">>
<div style="background:#1a0d00;border:1px solid #6b3a1f;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/rivals_dead.webp" style="width:100%;max-width:800px;border-radius:6px;border:2px solid #6b3a1f" onerror="this.style.display='none'">
</div>
<div style="text-align:center;color:#c47a3a;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
⚔ Rival Warband
</div>
<<set $gold += 40>>
<<set $eventLog.push("Day " + $day + ": Killed a group of rival barbarians. Took their gold.")>>
<div style="color:#ccc;font-style:italic;font-size:0.9em;margin-top:8px;text-align:center">
You make it quick. You take their coin and leave them for the crows. Word will spread.
</div>
<<button "Continue">>
<<unset $barbarianPhase>>
<<goto "Mountain">>
<</button>>
<<elseif $barbarianPhase is "recruit">>
<div style="background:#1a0d00;border:1px solid #6b3a1f;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/rivals_defeat.webp" style="width:100%;max-width:800px;border-radius:6px;border:2px solid #6b3a1f" onerror="this.style.display='none'">
</div>
<div style="text-align:center;color:#c47a3a;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
⚔ Rival Warband
</div>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You offer your hand to the chieftain. He stares at it a long moment, jaw tight. Then he takes it.
<br><br>"You fight well. We'll follow — for now."
</div>
<div style="text-align: center; margin-bottom: 10px; font-size: 0.85em;">
<<set _freeSpace to ($tribeLimit - $tribe.length)>>
<span style="color: #aaa;">Barracks Capacity:</span>
<span @style="(_freeSpace > 0 ? 'color: #00ff00;' : 'color: #ff6666;')">
$tribe.length / $tribeLimit
</span>
</div>
<<if not $tempRecruits>>
<<set $tempRecruits to []>>
<<run $tempRecruits.push(setup.generateTribeMember())>>
<<run $tempRecruits.push(setup.generateTribeMember())>>
<<run $tempRecruits.push(setup.generateTribeMember())>>
<</if>>
<div class="tribe-list" style="display: flex; flex-direction: column; gap: 10px;">
<<for _i to 0; _i lt $tempRecruits.length; _i++>>
<<capture _i>>
<div class="tribe-card" style="display: flex; align-items: center; background: #1a1a1a; padding: 10px; border: 1px solid #444; border-radius: 8px; gap: 15px;">
<div style="width: 60px; height: 60px; overflow: hidden; border-radius: 50%; border: 2px solid #555; flex-shrink: 0;">
<img @src="$tempRecruits[_i].img" style="width: 100%; height: 100%; object-fit: cover; object-position: top;">
</div>
<div style="flex-grow: 1;">
<<if $tempRecruits[_i].gender is "Male">><span style="font-size: 1.1em; color: cyan;"><b><<= $tempRecruits[_i].name >></b></span><<else>><span style="font-size: 1.1em; color: pink;"><b><<= $tempRecruits[_i].name >></b></span><</if>><br>
<small style="color: #aaa;">
</small>
</div>
<div style="text-align: right;">
<<if $tribe.length lt $tribeLimit>>
<<button "Recruit">>
<<run $tribe.push($tempRecruits[_i])>>
<<run $tempRecruits.deleteAt(_i)>>
<<goto "Event_RivalBarbarians">>
<</button>>
<<else>>
<small style="color: #ff6666; font-weight: bold; text-transform: uppercase;">Full</small>
<</if>>
</div>
</div>
<</capture>>
<</for>>
</div>
<<button "Continue">>
<<unset $barbarianPhase>>
<<unset $tempRecruits>>
<<goto "Mountain">>
<</button>>
<<elseif $barbarianPhase is "enslave">>
<div style="background:#1a0d00;border:1px solid #6b3a1f;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/rivals_defeat.webp" style="width:100%;max-width:800px;border-radius:6px;border:2px solid #6b3a1f" onerror="this.style.display='none'">
</div>
<div style="text-align:center;color:#c47a3a;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
⚔ Rival Warband
</div>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
They came here to mock you. Now they'll spend their days in your pens. You bind their wrists with their own belts and march them back to camp.
</div>
<div style="text-align: center; margin-bottom: 10px; font-size: 0.85em;">
<<set _freeSlaveSpace to ($slaveLimit - $slaves.length)>>
<span style="color: #aaa;">Slave Pen Capacity:</span>
<span @style="(_freeSlaveSpace > 0 ? 'color: #00ff00;' : 'color: #ff6666;')">
$slaves.length / $slaveLimit
</span>
</div>
<<if not $tempSlaves>>
<<set $tempSlaves to []>>
<<run $tempSlaves.push(setup.generateSlave())>>
<<run $tempSlaves.push(setup.generateSlave())>>
<<run $tempSlaves.push(setup.generateSlave())>>
<</if>>
<div class="slave-list" style="display: flex; flex-direction: column; gap: 10px;">
<<for _i to 0; _i lt $tempSlaves.length; _i++>>
<<capture _i>>
<div class="slave-card" style="display: flex; align-items: center; background: #1a1a1a; padding: 10px; border: 1px solid #444; border-radius: 8px; gap: 15px;">
<div style="width: 60px; height: 60px; overflow: hidden; border-radius: 50%; border: 2px solid #d4af77; flex-shrink: 0;">
<img @src="$tempSlaves[_i].img" style="width: 100%; height: 100%; object-fit: cover; object-position: top;">
</div>
<div style="flex-grow: 1;">
<span style="font-size: 1.1em; color: #d4af77;"><b><<= $tempSlaves[_i].name >></b></span><br>
<small style="color: #aaa;">
</small>
</div>
<div style="text-align: right;">
<<if $slaves.length lt $slaveLimit>>
<<button "Enslave">>
<<run $slaves.push($tempSlaves[_i])>>
<<run $tempSlaves.deleteAt(_i)>>
<<set $eventLog.push("Day " + $day + ": You force them on their knees.")>>
<<goto "Event_RivalBarbarians">>
<</button>>
<<else>>
<small style="color: #ff6666; font-weight: bold; text-transform: uppercase;">Full</small>
<</if>>
</div>
</div>
<</capture>>
<</for>>
<<if $tempSlaves.length is 0>>
<div style="text-align:center; color: #fa5252; font-style: italic; padding: 10px;">
No one of value remains.
</div>
<</if>>
</div>
<<button "Continue">>
<<unset $barbarianPhase>>
<<unset $tempSlaves>>
<<goto "Mountain">>
<</button>>
<<elseif $barbarianPhase is "done">>
<<button "Continue">>
<<unset $barbarianPhase>>
<<goto "Mountain">>
<</button>>
<</if>>
<</nobr>><<nobr>>
<<if not $dryadPhase>><<set $dryadPhase to "intro">><</if>>
<div style="background:#0a1a0a;border:1px solid #2d6e2d;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;margin-bottom:15px">
<video autoplay loop muted playsinline style="width:100%;max-width:420px;border-radius:8px;border:2px solid #5a4a2d">
<source src="images/encounters/dryad/dryad.webm" type="video/webm">
</video>
</div>
<div style="text-align:center;color:#7bc47f;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
🌊 The River Dweller
</div>
/* ── INTRO ── */
<<if $dryadPhase is "intro">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
The rushing sound of the river masks your approach, but she knew you were there. She rises slowly from the icy current, completely nude, water cascading down pale, skin. As she turns her head, you catch the subtle flare of gills fluttering softly behind her hears.
<br><br>She doesn't speak. She just stands waist-deep in the water, tilting her head, watching you with dark, depthless eyes that belong to something older than the forest itself.
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "🌊 Stay and watch">>
<<set $dryadPhase to "talk">>
<<goto "Event_Dryad">>
<</button>>
<<button "💋 Approach the water">>
<<set $dryadPhase to "approach">>
<<goto "Event_Dryad">>
<</button>>
<<button "🚶 Back away">>
<<unset $dryadPhase>>
<<goto "Forest">>
<</button>>
</div>
/* ── TALK ── */
<<elseif $dryadPhase is "talk">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
She wades closer to the bank, her movements entirely silent despite the rushing water. Up close, the gills on her sides pulse rhythmically. She reaches a dripping, webbed hand toward you, tracing a cold finger along your jawline. She still hasn't said a word, but the intent in her gaze is unmistakable.
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "💋 Pull her onto the bank">>
<<set $dryadPhase to "approach">>
<<goto "Event_Dryad">>
<</button>>
<<button "🚶 Leave her be">>
<<unset $dryadPhase>>
<<goto "Forest">>
<</button>>
</div>
/* ── APPROACH ── */
<<elseif $dryadPhase is "approach">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
She steps completely out of the river. The air is freezing, but her skin radiates a strange, humid warmth. The forest around you goes dead quiet; even the birds seem to hold their breath as she steps into your space, pressing her slick body against yours.
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "🌊 Give in">>
<<set $dryadPhase to "oral_1">>
<<goto "Event_Dryad">>
<</button>>
<<button "🚶 Step back">>
<<unset $dryadPhase>>
<<goto "Forest">>
<</button>>
</div>
/* ── ORAL PART 1 ── */
<<elseif $dryadPhase is "oral_1">>
<<if $player.gender is "male">>
<<set _dryadVid to "images/encounters/dryad/dryadm1.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
She steps out of the water and drops to her knees on the muddy bank. Pulling you close, she runs her warm, wet tongue along your cock in a slow, tantalizing lick.
</div>
<<else>>
<<set _dryadVid to "images/encounters/dryad/dryadf1.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
Her grip is deceptively strong. She shoves you down on your knees, immediately straddling your face and presenting her wet pussy to you. Hesitantly, you give her a shy, gentle lick.
</div>
<</if>>
<video autoplay loop muted playsinline style="width:100%;max-height:350px;border-radius:6px;margin-bottom:12px">
<source @src="_dryadVid" type="video/webm">
</video>
<div style="display:flex;gap:8px;justify-content:center">
<<button "Continue">>
<<set $dryadPhase to "oral_2">>
<<goto "Event_Dryad">>
<</button>>
</div>
/* ── ORAL PART 2 ── */
<<elseif $dryadPhase is "oral_2">>
<<if $player.gender is "male">>
<<set _dryadVid to "images/encounters/dryad/dryadm2.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
She doesn't wait long before taking you fully into her mouth. Her lips are cool, but inside she is burning hot, her tongue swirling around you with a practiced, liquid grace that makes your knees weak.
</div>
<<else>>
<<set _dryadVid to "images/encounters/dryad/dryadf2.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
Your shyness fades as her scent fills your senses. You bury your face in her wetness, licking her eagerly. She lets out a soft, echoing moan that seems to vibrate through the trees around you.
</div>
<</if>>
<video autoplay loop muted playsinline style="width:100%;max-height:350px;border-radius:6px;margin-bottom:12px">
<source @src="_dryadVid" type="video/webm">
</video>
<div style="display:flex;gap:8px;justify-content:center">
<<button "Push it further">>
<<set $dryadPhase to "sex_1">>
<<goto "Event_Dryad">>
<</button>>
</div>
/* ── SEX PART 1 ── */
<<elseif $dryadPhase is "sex_1">>
<<if $player.gender is "male">>
<<set _dryadVid to "images/encounters/dryad/dryadm3.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
She pushes you down onto your back in the damp dirt and straddles you. With a sharp gasp, she sinks down onto your cock, taking you entirely. Her hips roll in a steady, grinding rhythm as she rides you.
</div>
<<else>>
<<set _dryadVid to "images/encounters/dryad/dryadf3.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
She hauls you to your feet with surprising strength, spinning you around and slamming your back against the rough bark of a pine tree. Without hesitation, she drops to her knees and buries her face between your legs.
</div>
<</if>>
<video autoplay loop muted playsinline style="width:100%;max-height:350px;border-radius:6px;margin-bottom:12px">
<source @src="_dryadVid" type="video/webm">
</video>
<div style="display:flex;gap:8px;justify-content:center">
<<button "Keep going">>
<<set $dryadPhase to "sex_2">>
<<goto "Event_Dryad">>
<</button>>
</div>
/* ── SEX PART 2 ── */
<<elseif $dryadPhase is "sex_2">>
<<if $player.gender is "male">>
<<set _dryadVid to "images/encounters/dryad/dryadm4.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
She climbs off you for a brief moment, leaning down to take your slick cock back into her mouth. She tastes her own juices on you, looking up at you with a hungry, predatory gleam in her dark eyes.
</div>
<<else>>
<<set _dryadVid to "images/encounters/dryad/dryadf4.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
Her tongue lashes at you with ravenous intensity. The icy forest air on your skin and the wet heat of her mouth create an overwhelming contrast that drives you wild.
</div>
<</if>>
<video autoplay loop muted playsinline style="width:100%;max-height:350px;border-radius:6px;margin-bottom:12px">
<source @src="_dryadVid" type="video/webm">
</video>
<div style="display:flex;gap:8px;justify-content:center">
<<button "Reach the peak">>
<<set $dryadPhase to "climax_1">>
<<goto "Event_Dryad">>
<</button>>
</div>
/* ── CLIMAX PART 1 ── */
<<elseif $dryadPhase is "climax_1">>
<<if $player.gender is "male">>
<<set _dryadVid to "images/encounters/dryad/dryadm5.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You flip her onto her back, pinning her against the muddy bank. You pound into her relentlessly, the mud slicking against your bodies as you both near the absolute edge.
</div>
<<else>>
<<set _dryadVid to "images/encounters/dryad/dryadf5.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
She pulls you away from the tree and down into the mud, laying you on your back. She works her mouth over you with renewed desperation, driving you right to the absolute edge.
</div>
<</if>>
<video autoplay loop muted playsinline style="width:100%;max-height:350px;border-radius:6px;margin-bottom:12px">
<source @src="_dryadVid" type="video/webm">
</video>
<div style="display:flex;gap:8px;justify-content:center">
<<button "✨ Cum">>
<<set $dryadPhase to "climax_2">>
<<goto "Event_Dryad">>
<</button>>
</div>
/* ── CLIMAX PART 2 ── */
<<elseif $dryadPhase is "climax_2">>
<<if $player.gender is "male">>
<<set _dryadVid to "images/encounters/dryad/dryadm6.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You pull out just in time, blowing your load in thick, hot ropes across her slick, pale belly. She traces the mess with a webbed finger, offering a silent, satisfied smile before slipping backward into the churning river, disappearing completely into the current.
</div>
<<else>>
<<set _dryadVid to "images/encounters/dryad/dryadf6.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
Just as you shatter into a climax, she crawls up your body, throwing a leg over your face. Settling into a tight 69, she grinds against your mouth, climaxing hard against you. When you catch your breath, she is already sliding backward into the churning river, disappearing into the current.
</div>
<</if>>
<video autoplay loop muted playsinline style="width:100%;max-height:350px;border-radius:6px;margin-bottom:12px">
<source @src="_dryadVid" type="video/webm">
</video>
/* Reward: small lust reset, energy boost, slight HP restore */
<<set $player.lust to 0>>
<<set $player.energy to setup.clamp($player.energy + 20, 0, $player.maxEnergy)>>
<<set $player.hp to setup.clamp($player.hp + 10, 0, $player.maxHp)>>
<<set $eventLog.push("Day " + $day + ": Had an intense, surreal encounter with a river dweller in the Black Forest.")>>
<div style="background:#111;border:1px solid #2d6e2d;border-radius:6px;padding:10px;text-align:center;font-size:0.85em;color:#7bc47f;margin-bottom:12px">
The river's chill leaves you strangely invigorated. ⚡ +20 Energy | ❤ +10 HP | 💗 Lust reset
</div>
<<button "Return to the forest">>
<<unset $dryadPhase>>
<<goto "Forest">>
<</button>>
<</if>>
</div>
<</nobr>><<nobr>>
<<if not $centaurPhase>><<set $centaurPhase to "intro">><</if>>
<div style="background:#1a1208;border:1px solid #7a5c2a;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/centaurs.webp" style="width:100%;max-width:400px;border-radius:6px;border:2px solid #7a5c2a" onerror="this.style.display='none'">
</div>
<div style="text-align:center;color:#c9a040;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
🐴 The Centaurs
</div>
/* ── INTRO ── */
<<if $centaurPhase is "intro">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You round a bend in the path and nearly walk into them — two centaurs, massive and still, watching you from the shadow of the old pines. The larger one has a scar running from temple to jaw. The other is younger, nervous, hand resting on a short bow.
<br><br>Neither speaks first. They're waiting to see what you do.
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "🗣 Approach and speak">>
<<set $centaurPhase to "talk">>
<<goto "Event_Centaurs">>
<</button>>
<<button "⚔ Attack">>
<<set $centaurPhase to "combat">>
<<set $returnTo to "Event_Centaurs">>
<<run setup.initCombat([
clone(setup.enemyPresets.CentaurElder),
clone(setup.enemyPresets.CentaurYoung)
])>>
<<goto "CombatPage">>
<</button>>
<<button "🚶 Back away slowly">>
<<set $centaurPhase to "leave">>
<<goto "Event_Centaurs">>
<</button>>
</div>
/* ── TALK ── */
<<elseif $centaurPhase is "talk">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You raise your hands and step forward. The elder studies you with eyes that have seen more winters than you can guess. When you speak he listens without interrupting — a rare quality in anyone.
<br><br>"You build a camp to the south," she says finally. It isn't a question. "We have watched. You do not hunt more than you need. This is... acceptable."
<br><br>The younger one relaxes her grip on the bow.
<br><br>"These woods have laws older than your kind. Respect them and we will not trouble you. Break them —" she glances at the bow on her back — "and we will."
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "🤝 Agree to their terms">>
<<set $centaurPhase to "agreement">>
<<goto "Event_Centaurs">>
<</button>>
<<button "⚔ Challenge them">>
<<set $centaurPhase to "combat">>
<<set $returnTo to "Event_Centaurs">>
<<run setup.initCombat([
clone(setup.enemyPresets.CentaurElder),
clone(setup.enemyPresets.CentaurYoung)
])>>
<<goto "CombatPage">>
<</button>>
<<button "🚶 Take your leave">>
<<set $centaurPhase to "leave">>
<<goto "Event_Centaurs">>
<</button>>
</div>
<<elseif $centaurPhase is "agreement">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You nod. The elder holds your gaze a moment longer, then dips her head — just slightly, just enough.
<br><br>The two of them turn and canter back into the trees without another word, silent as shadows for creatures so large. The forest feels different after they're gone. Older. More present.
<br><br>Something tells you they'll remember this conversation.
</div>
<<set $metCentaurs to true>>
<<set $eventLog.push("Day " + $day + ": Reached an understanding with two centaurs in the forest.")>>
<div style="background:#111;border:1px solid #7a5c2a;border-radius:6px;padding:10px;text-align:center;font-size:0.85em;color:#c9a040;margin-bottom:12px">
The centaurs of the Black Forest know your name now.
</div>
<<button "Continue">>
<<unset $centaurPhase>>
<<goto "Forest">>
<</button>>
<<elseif $centaurPhase is "combat">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
They fought like the force of nature they are — all thunder and fury. But they're down. The elder breathes in ragged pulls, watching you with eyes that hold no fear, only a slow and terrible patience. <br><br>
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/centaurdefeat.webp" style="width:100%;max-width:400px;border-radius:6px;border:2px solid #7a5c2a" onerror="this.style.display='none'">
</div>
<br>"You have strength," she says. "Strength without wisdom is just destruction."
<br><br>She says nothing more.
</div>
<<set $eventLog.push("Day " + $day + ": Defeated two centaurs in the forest.")>>
<<button "Leave them and go">>
<<unset $centaurPhase>>
<<goto "Forest">>
<</button>>
<<button " Force them to serve you">>
<<set $centaurPhase to "oral">>
<<goto "Event_Centaurs">>
<</button>>
/* ── ORAL ── */
<<elseif $centaurPhase is "oral">>
<<if $player.gender is "male">>
<<set _riverVid to "images/encounters/centaurs.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:12px;font-style:italic;text-align:center">
<<set _riverVid to "images/encounters/centaurwinm.webm">>
You undo your pants, presenting yourself to the defeated creatures. The younger one hesitates, her eyes darting away, but the elder moves first, lowering her massive frame in submission. "Quickly," you command. "I won't wait all day." With quiet resignation, they lean in to service you.
</div>
<<else>>
<<set _riverVid to "images/encounters/centaurwinf.webm">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:12px;font-style:italic;text-align:center">
You look down at the two defeated centaurs, your shadow falling over them. "Now serve me," you command, your voice echoing off the pines. You strip away your pants, waiting expectantly. Reluctantly, the proud creatures bow their heads to the dirt to obey.
</div>
<</if>>
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:6px;margin-bottom:12px">
<source @src="_riverVid" type="video/webm">
</video>
<div style="display:flex;justify-content:center;margin-top:10px;">
<<button "Leave them to their shame">>
<<unset $centaurPhase>>
<<set $player.lust to 0>>
<<goto "Forest">>
<</button>>
</div>
/* ── LEAVE ── */
<<elseif $centaurPhase is "leave">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You hold their gaze for a moment, then step back off the path and let the trees swallow you. Some encounters aren't worth forcing. The elder watches you go without moving. You feel her eyes on your back for a long time after.
</div>
<<button "Continue">>
<<unset $centaurPhase>>
<<goto "Forest">>
<</button>>
<</if>>
</div>
<</nobr>><<nobr>>
<<if not $villageRiverPhase>><<set $villageRiverPhase to "intro">><</if>>
<div style="background:#1a1208;border:1px solid #5a4a2d;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.55">
<div style="text-align:center;color:#d4aa50;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">
💧 By the River
</div>
<<if $villageRiverPhase is "intro">>
<!-- INTRO - Bathing video -->
<div style="text-align:center;margin-bottom:15px">
<video autoplay loop muted playsinline style="width:100%;max-width:420px;border-radius:8px;border:2px solid #5a4a2d">
<source src="images/encounters/village/bath.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px;text-align:center">
The river bends gently here, sunlight dancing on the water. You hear soft splashing and then you see her — a beautiful young woman bathing completely naked.
Her wet skin glistens as she runs her hands through her long hair.
<br><br>She notices you almost immediately and dives into the water.
</div>
<div style="display:flex;flex-direction:column;gap:10px">
<<button "😏 Approach her">>
<<set $villageRiverPhase to "approach">>
<<goto "Event_VillageRiver">>
<</button>>
<<button "🚶 Leave her in peace">>
<<unset $villageRiverPhase>>
<<goto "Village">>
<</button>>
</div>
<<elseif $villageRiverPhase is "approach">>
<<if $player.gender is "male">>
<!-- ====================== MALE PATH ====================== -->
<div style="font-size:0.95em;color:#ddd;margin-bottom:18px">
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/village/bath.webp" style="width:100%;max-width:300px;border-radius:6px;border:2px solid #8a6a2a" onerror="this.style.display='none'">
</div>
You step closer. She doesn't move away. Water laps at her waist as she looks you up and down with open interest.
<br><br>"Well... if it isn't the mysterious stranger everyone's whispering about," she says, voice warm and teasing.
"Are you going to keep staring, or come closer?"
</div>
<div style="display:flex;flex-direction:column;gap:10px">
<<button "💋 Join her in the water">>
<<set $villageRiverPhase to "start">>
<<goto "Event_VillageRiver">>
<</button>>
<<button "🚶 Walk away">>
<<unset $villageRiverPhase>>
<<goto "Village">>
<</button>>
</div>
<<else>>
<!-- ====================== FEMALE PATH - Show ====================== -->
<div style="font-size:0.95em;color:#ddd;margin-bottom:18px">
You stay hidden behind the reeds for a moment, unable to look away. She's stunning — full breasts, soft curves, water streaming down her body like liquid silk.
<br><br>She suddenly turns her head toward you and giggles, clearly having known you were there the whole time.
<br><br>"Like what you see?" she calls out playfully.
</div>
<div style="text-align:center;margin-bottom:15px">
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:8px">
<source src="images/encounters/village/villager1.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">
She runs her hands slowly over her wet breasts and down her stomach, putting on a teasing little show just for you, biting her lip with amusement.
</div>
<div style="display:flex;flex-direction:column;gap:10px">
<<button "😳 Step out and approach">>
<<set $villageRiverPhase to "show">>
<<goto "Event_VillageRiver">>
<</button>>
<<button "🚶 Slip away quietly">>
<<unset $villageRiverPhase>>
<<goto "Village">>
<</button>>
</div>
<</if>>
<!-- ====================== FEMALE PATH CONTINUES ====================== -->
<<elseif $villageRiverPhase is "show" and $player.gender is "female">>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
You step out from behind the reeds. The girl immediately notices you and lets out a soft, delighted giggle.
<br><br>Instead of covering herself, she turns fully toward you with a playful smile and continues her show.
</div>
<div style="text-align:center;margin-bottom:15px">
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:8px">
<source src="images/encounters/village/villager2.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">
She arches her back seductively, runs her hands slowly over her wet breasts, then turns around, bends slightly and spreads her ass cheeks, giving you a clear, teasing view of her pussy.
<br><br>Her eyes sparkle with mischievous confidence as she watches your reaction.
</div>
<div style="display:flex;flex-direction:column;gap:10px">
<<button "💦 Join her in the water">>
<<set $villageRiverPhase to "kiss">>
<<goto "Event_VillageRiver">>
<</button>>
<<button "🚶 Leave before things go further">>
<<unset $villageRiverPhase>>
<<goto "Village">>
<</button>>
</div>
<<elseif $villageRiverPhase is "kiss" and $player.gender is "female">>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:8px">
<source src="images/encounters/village/villager3.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
You wade into the river. The moment you're close enough, she pulls you in and kisses you deeply.
Her wet naked body presses against yours, her lips warm and eager, tongue teasing yours with surprising hunger.
</div>
<div style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap">
<<button "👅 Let her go down on you">>
<<set $villageRiverPhase to "oral">>
<<goto "Event_VillageRiver">>
<</button>>
<<button "💋 Take turns pleasuring each other">>
<<set $villageRiverPhase to "climax">>
<<goto "Event_VillageRiver">>
<</button>>
</div>
<<elseif $villageRiverPhase is "oral" and $player.gender is "female">>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:8px">
<source src="images/encounters/village/villager4.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
She kneels in the shallow water, lifts one of your legs over her shoulder and buries her face between your thighs.
Her tongue is slow, skilled, and eager — licking and sucking your clit while the river flows around you both.
</div>
<div style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap">
<<button "🔄 Return the favor">>
<<set $villageRiverPhase to "lick_her">>
<<goto "Event_VillageRiver">>
<</button>>
<<button "✨ Let her finish you">>
<<set $villageRiverPhase to "climax">>
<<goto "Event_VillageRiver">>
<</button>>
</div>
<<elseif $villageRiverPhase is "lick_her" and $player.gender is "female">>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:8px">
<source src="images/encounters/village/villager5.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
You help her sit on a low tree branch hanging over the water. She spreads her legs for you as you kneel between them and start licking her soaked pussy.
Her moans echo softly over the river as your tongue explores her.
</div>
<div style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap">
<<button "👆 Finger her">>
<<set $villageRiverPhase to "fingering">>
<<goto "Event_VillageRiver">>
<</button>>
<<button "✨ Make her cum">>
<<set $villageRiverPhase to "climax">>
<<goto "Event_VillageRiver">>
<</button>>
</div>
<<elseif $villageRiverPhase is "climax" and $player.gender is "female">>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:8px">
<source src="images/encounters/village/villager7.webm" type="video/webm"> <!-- replace with your actual 69 video if you have one -->
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:22px">
The pleasure becomes too much to stay upright.
You pull her down onto the soft mossy bank with you, spinning her body so her soaked pussy hovers right above your face.
She understands immediately and eagerly lowers herself onto you while taking your clit back into her mouth.
<br><br>
Locked in a heated <b>69</b>, both of you devour each other with desperate hunger.
Her tongue flicks rapidly over your swollen clit while you suck and lick hers just as eagerly.
Soft, wet sounds mix with your muffled moans as you grind against each other’s faces.
<br><br>
Her thighs start trembling around your head. You feel her getting closer, just as the pressure inside you builds to the breaking point.
<br><br>
She cums first — hard.
Her hips buck violently as she cries out against your pussy, her juices coating your tongue and lips.
The intense sight and taste of her orgasm pushes you over the edge right after her.
You both shake and moan into each other, riding wave after wave of pleasure together until your bodies finally go limp, tangled and breathless on the riverbank.
</div>
<<set $player.lust to 0>>
<<set $player.energy to setup.clamp($player.energy + 28, 0, $player.maxEnergy)>>
<<set $eventLog.push("Day " + $day + ": Had intense mutual orgasm in 69 position with the village girl by the river.")>>
<div style="background:#111;border:1px solid #5a4a2d;border-radius:6px;padding:10px;text-align:center;font-size:0.85em;color:#d4aa50;margin:15px 0">
⚡ +28 Energy | 💗 Lust reset
</div>
<<button "Head back to the village">>
<<unset $villageRiverPhase>>
<<goto "Village">>
<</button>>
<<elseif $villageRiverPhase is "fingering" and $player.gender is "female">>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:8px">
<source src="images/encounters/village/villager6.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
You play with her clit has she grips your hair tightly.
<br><br>
Soon she is moaning loudly. Orgasming — hard and loud — and the sight of her cumming pushes you over the edge too.
</div>
<<set $player.lust to 0>>
<<set $player.energy to setup.clamp($player.energy + 25, 0, $player.maxEnergy)>>
<<set $eventLog.push("Day " + $day + ": Had intense lesbian sex with a village girl by the river.")>>
<div style="background:#111;border:1px solid #5a4a2d;border-radius:6px;padding:10px;text-align:center;font-size:0.85em;color:#d4aa50;margin:15px 0">
⚡ +25 Energy | 💗 Lust reset
</div>
<<button "Head back to the village">>
<<unset $villageRiverPhase>>
<<goto "Village">>
<</button>>
<!-- ====================== MALE PATH - START (Kiss + Oral) ====================== -->
<<elseif $villageRiverPhase is "start" and $player.gender is "male">>
<div style="font-size:0.95em;color:#ddd;margin-bottom:18px">
You wade into the water and pull her close. She melts into you immediately as you claim her lips in a deep, hungry kiss.
Her wet naked body presses against yours, her nipples hard from the cool river and growing arousal.
<br><br>
After a long, heated kiss she pulls back with a mischievous smile, slowly sinking to her knees in the shallow water.
<br><br>
<i>"Let me taste you..."</i> she whispers, looking up at you with hungry, lust-filled eyes.
</div>
<!-- Video 1: She takes your cock in her mouth -->
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:8px">
<source src="images/encounters/village/oral_male.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
She takes your cock into her warm mouth without hesitation, her tongue swirling around the head as she begins to suck eagerly.
The sound of the river mixes with the wet sounds of her mouth working you.
</div>
<!-- Video 2: Deeper blowjob -->
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:8px">
<source src="images/encounters/village/oral2.webm" type="video/webm">
</video>
</div>
<div style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap">
<<button "💪 Pull her up and fuck her">>
<<set $villageRiverPhase to "sex">>
<<goto "Event_VillageRiver">>
<</button>>
<<button "✨ Finish in her mouth">>
<<set $villageRiverPhase to "climax_oral">>
<<goto "Event_VillageRiver">>
<</button>>
</div>
<!-- ====================== MALE PATH - SEX ====================== -->
<<elseif $villageRiverPhase is "sex" and $player.gender is "male">>
<!-- Video 1: Laying her on the bank -->
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:8px">
<source src="images/encounters/village/sex_male.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
You lift her out of the water and lay her down on the soft grassy riverbank. She spreads her legs eagerly as you slide your cock deep inside her tight, wet pussy.
<br><br>
She moans loudly at first, then bites your shoulder to muffle her cries while you fuck her with deep, steady thrusts.
</div>
<!-- Video 2: She rides you from behind -->
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:8px">
<source src="images/encounters/village/sex2.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">
She pushes you onto your back and climbs on top, turning around so you have a perfect view of her ass as she rides your cock hard, bouncing with increasing desperation.
</div>
<<button "✨ Pull out and cum">>
<<set $villageRiverPhase to "climax">>
<<goto "Event_VillageRiver">>
<</button>>
<!-- ====================== MALE - CLIMAX (Pull out & Cum) ====================== -->
<<elseif $villageRiverPhase is "climax" and $player.gender is "male">>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:8px">
<source src="images/encounters/village/climax_male.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:22px">
You feel your orgasm approaching fast. With a deep grunt you pull out of her tight pussy and flip her onto her back.
She immediately understands and opens her mouth wide, tongue out, looking up at you with eager, slutty eyes.
<br><br>
Thick ropes of cum erupt from your cock — the first few landing across her tongue and open mouth, the rest painting her heaving breasts and stomach in pearly white streaks.
She moans softly as she feels your hot load covering her, then scoops some from her chest with her fingers and brings it to her lips, tasting you with a satisfied smile.
</div>
<<set $player.lust to 0>>
<<set $player.energy to setup.clamp($player.energy + 25, 0, $player.maxEnergy)>>
<<set $eventLog.push("Day " + $day + ": Had passionate sex with a village girl by the river and came on her face and tits.")>>
<div style="background:#111;border:1px solid #5a4a2d;border-radius:6px;padding:10px;text-align:center;font-size:0.85em;color:#d4aa50;margin:15px 0">
⚡ +25 Energy | 💗 Lust reset
</div>
<<button "Return to the village">>
<<unset $villageRiverPhase>>
<<goto "Village">>
<</button>>
<!-- ====================== OPTIONAL: Pure Oral Climax (if player chooses "Finish in her mouth") ====================== -->
<<elseif $villageRiverPhase is "climax_oral" and $player.gender is "male">>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:320px;border-radius:8px">
<source src="images/encounters/village/climax_mouth.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:22px">
You groan loudly as pleasure overwhelms you. You grab her wet hair and thrust deeper into her mouth as you start to cum hard.
She moans around your cock, eagerly swallowing every spurt while looking up at you with lust-filled eyes.
<br><br>
When you finally pull out, a thin string of cum connects her lips to your cock. She licks her lips clean and gives you a wicked smile.
<br><br>
"Mmm… you taste even better than I hoped," she purrs. "Come find me again soon. I want much more than this next time."
</div>
<<set $player.lust to 0>>
<<set $player.energy to setup.clamp($player.energy + 20, 0, $player.maxEnergy)>>
<<set $eventLog.push("Day " + $day + ": Received an eager blowjob from a village girl by the river.")>>
<div style="background:#111;border:1px solid #5a4a2d;border-radius:6px;padding:10px;text-align:center;font-size:0.85em;color:#d4aa50;margin:15px 0">
⚡ +20 Energy | 💗 Lust reset
</div>
<<button "Return to the village">>
<<unset $villageRiverPhase>>
<<goto "Village">>
<</button>>
<</if>>
</div>
<</nobr>><<nobr>>
<<if $villageRaidPhase is "fight_wave1">>
<<set $raidPhase to "defend_wave1">>
<<unset $villageRaidPhase>>
<<elseif $villageRaidPhase is "fight_boss">>
<<set $raidPhase to "defend_boss">>
<<unset $villageRaidPhase>>
<<elseif $villageRaidPhase is "fight_attack">>
<<set $raidPhase to "attack_victory">>
<<unset $villageRaidPhase>>
<</if>>
<<if not $raidPhase>><<set $raidPhase to "intro">><</if>>
<div style="background:#1a0505;border:1px solid #7a1a1a;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;margin-bottom:12px">
<<if $raidPhase is "attack_victory" or $raidPhase is "orgy">>
<<else>>
<img src="images/encounters/village/raid.webp" style="width:100%;max-width:800px;border-radius:6px;border:2px solid #7a1a1a" onerror="this.style.display='none'">
<</if>>
</div>
<div style="text-align:center;color:#fa5252;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
🔥 The Village is Under Attack
</div>
/* ── INTRO ── */
<<if $raidPhase is "intro">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You smell the smoke before you see it. Coming over the hill you find the village in chaos — a warband of hard-looking men pouring through the gate, torches in hand, villagers scattering. A handful of local guards are trying to hold a barricade near the well, outnumbered and losing ground fast.
<br><br>No one has noticed you yet. You have a choice to make.
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "🛡 Join the Defenders">>
<<set $villageRaidPhase to "fight_wave1">>
<<set $returnTo to "Event_VillageRaid">>
<<run setup.initCombat([
clone(setup.enemyPresets.Raider),
clone(setup.enemyPresets.Raider),
clone(setup.enemyPresets.Raider)
])>>
<<goto "CombatPage">>
<</button>>
<<button "⚔ Join the Attackers">>
<<set $villageRaidPhase to "fight_attack">>
<<set $returnTo to "Event_VillageRaid">>
<<run setup.initCombat([
clone(setup.enemyPresets.Guard),
clone(setup.enemyPresets.Militia),
clone(setup.enemyPresets.Militia)
])>>
<<goto "CombatPage">>
<</button>>
<<button "🚶 Keep walking — not your problem">>
<<set $raidPhase to "ignored">>
<<goto "Event_VillageRaid">>
<</button>>
</div>
/* ── IGNORED ── */
<<elseif $raidPhase is "ignored">>
<div style="font-size:0.9em;color:#888;margin-bottom:15px;font-style:italic;text-align:center">
You circle wide around the village and keep moving. Behind you the screaming fades with distance. Whatever happens there today is no concern of yours — at least, that's what you tell yourself.
<br><br>The village will remember who was here and did nothing.
</div>
<<set $eventLog.push("Day " + $day + ": Ignored a raid on the village.")>>
<<button "Continue">>
<<unset $raidPhase>>
<<goto "Village">>
<</button>>
/* ── DEFEND WAVE 1 (after combat returns here) ── */
<<elseif $raidPhase is "defend_wave1">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
The first wave breaks. Three raiders down, the rest scrambling back from the barricade. A village guard claps you on the shoulder, breathless.
<br><br>"There's more of them — and their chief is coming through the east gate. Big bastard with a greatsword. We can't hold if he gets in."
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "⚔ Face the raid leader">>
<<set $villageRaidPhase to "fight_boss">>
<<set $returnTo to "Event_VillageRaid">>
<<run setup.initCombat([
clone(setup.enemyPresets.Raider),
clone(setup.enemyPresets.Raider),
clone(setup.enemyPresets.RaidLeader)
])>>
<<goto "CombatPage">>
<</button>>
<<button "🏃 You've done enough — fall back">>
<<set $raidPhase to "defend_partial">>
<<goto "Event_VillageRaid">>
<</button>>
</div>
/* ── DEFEND PARTIAL REWARD ── */
<<elseif $raidPhase is "defend_partial">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You helped break the first wave and that's something. The village takes more damage before the raiders finally move on, but fewer people die than would have. A grateful villager presses a small purse into your hand before you go.
</div>
<<set $gold += 25>>
<<set $eventLog.push("Day " + $day + ": Helped defend the village against the first wave of raiders. +25 gold.")>>
<div style="background:#111;border:1px solid #555;border-radius:6px;padding:10px;text-align:center;font-size:0.85em;color:#ffd700;margin-bottom:12px">
💰 +25 gold
</div>
<<button "Leave">>
<<unset $raidPhase>>
<<goto "Village">>
<</button>>
/* ── DEFEND BOSS VICTORY ── */
<<elseif $raidPhase is "defend_boss">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
The raid leader falls hard and the fight goes out of his men instantly. They scatter into the hills, leaving their dead and wounded behind. The village erupts — cheering, crying, people pouring out of hiding.
<br><br>The village elder pushes through the crowd, old eyes bright. He takes both your hands in his.
<br><br>"Name your reward. Whatever we have, it's yours."
</div>
<<set $gold += 80>>
<<set $player.rep += 5>>
<<set $eventLog.push("Day " + $day + ": Defeated the raid leader and saved the village. +80 gold.")>>
<div style="background:#111;border:1px solid #ffd700;border-radius:6px;padding:10px;text-align:center;font-size:0.85em;color:#ffd700;margin-bottom:12px">
💰 +80 gold | The village owes you a debt.
</div>
<<set $villageSaved to true>>
<<button "Accept their thanks and go">>
<<unset $raidPhase>>
<<goto "Village">>
<</button>>
/* ── ATTACK VICTORY (Returns here after attacking guards) ── */
<<elseif $raidPhase is "attack_victory">>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
The guards break. With the defense shattered the raiders flood in and the village is theirs within the hour. Their leader — a broad, scarred man with a raven banner — finds you in the aftermath and looks you up and down.
<br><br>"You fight well for a stranger. There's coin in this for you." He tosses you a heavy purse. "But the real spoils belong to the victors. Stay and celebrate with us."
<br><br>
<img src="images/encounters/village/captive.webp" style="width:100%;max-width:800px;border-radius:6px;border:2px solid #7a1a1a" onerror="this.style.display='none'"> <br>Around you, the village burns as the raiders drag captives into the square.
</div>
<<set $gold += 60>>
<<set $player.rep += 10>>
<<set $eventLog.push("Day " + $day + ": Helped raiders sack the village. +60 gold.")>>
<div style="background:#111;border:1px solid #fa5252;border-radius:6px;padding:10px;text-align:center;font-size:0.85em;color:#fa5252;margin-bottom:12px">
💰 +60 gold | The village will not forget this.
</div>
<<set $villageRaided to true>>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "Join the celebration">>
<<set $raidPhase to "orgy">>
<<goto "Event_VillageRaid">>
<</button>>
<<button "Take the coin and go">>
<<unset $raidPhase>>
<<goto "Village">>
<</button>>
</div>
/* ── ATTACK ORGY SCENE ── */
<<elseif $raidPhase is "orgy">>
<<set _orgyVid to "images/encounters/raid_orgy.webm">>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:6px;border:2px solid #fa5252">
<source @src="_orgyVid" type="video/webm">
</video>
</div>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
The night devolves into debauchery. The raiders claim what they want, and as their temporary ally, you are offered the same. Among the flames and the broken remnants of the village, you take part in the spoils of war.
</div>
<<set $player.lust to 0>>
<<set $eventLog.push("Day " + $day + ": Participated in the raiders' victory celebration.")>>
<div style="background:#111;border:1px solid #fa5252;border-radius:6px;padding:10px;text-align:center;font-size:0.85em;color:#fa5252;margin-bottom:12px">
💗 Lust reset
</div>
<<button "Leave them to the ashes">>
<<unset $raidPhase>>
<<goto "Village">>
<</button>>
<</if>>
</div>
<</nobr>><<nobr>>
<<if not $combat or $combat is null>>
<<goto "CampHub">>
<<elseif $combat.phase eq "victory" or $combat.phase eq "defeat">>
<<goto "CombatResult">>
<<else>>
<<if not $combatMenu>><<set $combatMenu to "main">><</if>>
<div style="max-width:800px; margin:0 auto; padding:20px; color:#eee; font-family:sans-serif; background:#0a0a0a; border:2px solid #333; border-radius:12px; box-shadow:0 0 20px rgba(0,0,0,0.5);">
<div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; border-bottom:1px solid #444; padding-bottom:10px;">
<span style="color:#888; font-size:0.9em; text-transform:uppercase;">Round $combat.round</span>
<span style="color:#ff6b35; font-weight:bold; letter-spacing:4px; font-size:1.2em;">⚔ FIGHT</span>
<span style="color:#888; font-size:0.9em;">$combat.enemies.length Hostiles</span>
</div>
<div style="display:flex; gap:15px; margin-bottom:20px; background:linear-gradient(180deg, #111 0%, #050505 100%); border:1px solid #222; border-radius:8px; padding:20px; min-height:220px;">
<div style="flex:1; display:flex; flex-wrap:wrap; gap:12px; justify-content:center; align-items:center;">
<<for _ei = 0; _ei < $combat.enemies.length; _ei++>>
<<set _ee to $combat.enemies[_ei]>>
<div style="text-align:center; width:120px; <<if _ee.hp lte 0>>opacity:0.3; filter:grayscale(1)<</if>>">
<<if _ee.img and _ee.img neq "">>
<img @src="_ee.img" style="width:100px; height:130px; object-fit:cover; border-radius:8px; border:2px solid <<if _ee.hp lte 0>>#444<<else>>#aa0000<</if>>;">
<<else>>
<div style="width:100px; height:130px; background:#200; border:2px solid #aa0000; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:2.5em; margin:0 auto;">💀</div>
<</if>>
<div style="font-size:0.8em; margin-top:5px; font-weight:bold; color:#ffb3b3;"><<= _ee.name>></div>
<<if _ee.hp gt 0>>
<<showmeter "hp" `_ee.hp` `_ee.maxHp`>>
<div style="font-size:0.7em; color:#999;"><<= _ee.hp>> / <<= _ee.maxHp>></div>
<</if>>
</div>
<</for>>
</div>
<div style="display:flex; align-items:center; color:#ff6b35; font-weight:bold; font-size:1.5em; text-shadow:0 0 10px #ff6b35;">VS</div>
<div style="flex:1; display:flex; flex-wrap:wrap; gap:12px; justify-content:center; align-items:center;">
<<for _ai = 0; _ai < $combat.allies.length; _ai++>>
<<set _aa to $combat.allies[_ai]>>
<div style="text-align:center; width:120px; <<if _aa.hp lte 0>>opacity:0.3; filter:grayscale(1)<</if>>">
<<if _aa.img and _aa.img neq "">>
<img @src="_aa.img" style="width:100px; height:130px; object-fit:cover; border-radius:8px; border:2px solid <<if _aa.isPlayer>>#ffd700<<else>>#005a00<</if>>;">
<<else>>
<div style="width:100px; height:130px; background:#020; border:2px solid #005a00; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:2.5em; margin:0 auto;">🛡️</div>
<</if>>
<div style="font-size:0.8em; margin-top:5px; font-weight:bold; color:#b3ffb3;"><<= _aa.name>></div>
<<showmeter "hp" `_aa.hp` `_aa.maxHp`>>
<<if _aa.isPlayer>>
<<showmeter "energy" `_aa.energy` `_aa.maxEnergy`>>
<</if>>
</div>
<</for>>
</div>
</div>
<div style="background:rgba(0,0,0,0.8); border:1px solid #333; border-radius:6px; padding:15px; margin-bottom:20px; height:100px; overflow-y:auto; font-family:monospace; border-left:4px solid #ff6b35;">
<<set _logStart to Math.max(0, $combat.log.length - 5)>>
<<for _li = _logStart; _li < $combat.log.length; _li++>>
<div style="margin-bottom:4px; font-size:0.9em; color:<<if _li eq ($combat.log.length - 1)>>#fff<<else>>#777<</if>>">
> <<= $combat.log[_li]>>
</div>
<</for>>
</div>
<div style="background:#1a1a1a; padding:20px; border-radius:10px; border:1px solid #444;">
<<if $combat.selectedAction neq null>>
<div style="text-align:center;">
<p style="color:#ff9800; font-weight:bold; margin-bottom:15px; text-transform:uppercase; letter-spacing:1px;">
<<if $combat.selectedAction eq "special">>⚡ Select target for Power Strike
<<elseif $combat.selectedAction eq "cleave">>🗡️ Select target for Shattering Cleave
<<else>>⚔ Select target to Attack<</if>>
</p>
<div style="display:flex; gap:10px; flex-wrap:wrap; justify-content:center;">
<<for _ti = 0; _ti < $combat.enemies.length; _ti++>>
<<set _tt to $combat.enemies[_ti]>>
<<if _tt.hp gt 0>>
<<capture _ti>>
<<button `$combat.enemies[_ti].name + " (" + $combat.enemies[_ti].hp + " HP)"`>>
<<if $combat.selectedAction eq "special">>
<<set $combat.allies[0].energy -= $combat.psCost>>
<<elseif $combat.selectedAction eq "cleave">>
<<set $combat.allies[0].energy -= 15>> /* Cleave Cost */
<</if>>
<<set $player.energy to $combat.allies[0].energy>>
<<run setup.resolveCombatRound($combat.selectedAction, _ti)>>
<<set $combat.selectedAction to null>>
<<set $combatMenu to "main">>
<<goto "CombatPage">>
<</button>>
<</capture>>
<</if>>
<</for>>
<div style="width:100%; margin-top:10px;">
<<button "🔙 Cancel">>
<<set $combat.selectedAction to null>>
<<set $combatMenu to "main">>
<<goto "CombatPage">>
<</button>>
</div>
</div>
</div>
<<elseif $combatMenu eq "main">>
<div style="display:grid; grid-template-columns:1fr 1fr; gap:10px;">
<<button "⚔ ATTACK">>
<<set $combat.selectedAction to "attack">>
<<set $combatMenu to "main">>
<<goto "CombatPage">>
<</button>>
<<button "💥 Abilities">>
<<set $combatMenu to "abilities">>
<<goto "CombatPage">>
<</button>>
<<button "🎒 Items">>
<<set $combatMenu to "items">>
<<goto "CombatPage">>
<</button>>
<<button "🏃 FLEE">>
<<run setup.resolveCombatRound("flee", 0)>>
<<goto "CombatResult">>
<</button>>
</div>
<<elseif $combatMenu eq "abilities">>
<<set $combat.psCost to Math.max(5, 20 - Math.floor($player.agi * 0.3))>>
<<set _cleaveCost to 15>>
<<set _berserkCost to 20>>
<<set _whirlwindCost to 30>>
<div style="display:grid; grid-template-columns:1fr 1fr; gap:10px;">
<<if $combat.allies[0].energy gte $combat.psCost>>
<<button "⚡ Power Strike">>
<<set $combat.selectedAction to "special">>
<<set $combatMenu to "main">>
<<goto "CombatPage">>
<</button>>
<<else>>
<button disabled style="opacity:0.5; cursor:not-allowed;">⚡ Power Strike (Need $combat.psCost NRG)</button>
<</if>>
<<if $player.hasCleaveSkill>>
<<if $combat.allies[0].energy gte _cleaveCost>>
<<button "🗡️ Cleave">>
<<set $combat.selectedAction to "cleave">>
<<set $combatMenu to "main">>
<<goto "CombatPage">>
<</button>>
<<else>>
<button disabled style="opacity:0.5;">🗡️ Cleave (Need _cleaveCost NRG)</button>
<</if>>
<</if>>
<<if $player.hasBerserkSkill>>
<<if $combat.allies[0].energy gte _berserkCost>>
<<button "🩸 Berserk">>
<<set $combat.allies[0].energy -= _berserkCost>>
<<set $player.energy to $combat.allies[0].energy>>
<<set $combatMenu to "main">>
<<run setup.resolveCombatRound("berserk", 0)>>
<<goto "CombatPage">>
<</button>>
<<else>>
<button disabled style="opacity:0.5;">🩸 Berserk (Need _berserkCost NRG)</button>
<</if>>
<</if>>
<<if $player.hasWhirlwindSkill>>
<<if $combat.allies[0].energy gte _whirlwindCost>>
<<button "🌪️ Whirlwind">>
<<set $combat.allies[0].energy -= _whirlwindCost>>
<<set $player.energy to $combat.allies[0].energy>>
<<set $combatMenu to "main">>
<<run setup.resolveCombatRound("whirlwind", "all")>>
<<goto "CombatPage">>
<</button>>
<<else>>
<button disabled style="opacity:0.5;">🌪️ Whirlwind (Need _whirlwindCost NRG)</button>
<</if>>
<</if>>
<<button "🔙 BACK">>
<<set $combatMenu to "main">>
<<goto "CombatPage">>
<</button>>
</div>
<<elseif $combatMenu eq "items">>
<div style="display:grid; grid-template-columns:1fr 1fr; gap:10px;">
<<if $healthpotions gt 0>>
<<button "🧪 Health Potion ($healthpotions left)">>
<<set $combatMenu to "main">>
<<run setup.resolveCombatRound("item", 0)>>
<<goto "CombatPage">>
<</button>>
<<else>>
<button disabled style="opacity:0.5;">No Potions Left</button>
<</if>>
<button disabled style="opacity:0.3;">🧪 Empty Slot</button>
<<button "🔙 BACK">>
<<set $combatMenu to "main">>
<<goto "CombatPage">>
<</button>>
</div>
<</if>>
</div>
</div>
<</if>>
<</nobr>><<nobr>>
<div style="background:#1a1a1a;border:1px solid #5c4d2d;padding:15px;border-radius:8px">
<div style="text-align:center;color:#d4aa50;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">🌲 The Forest Shifts</div>
<<set _roll to random(1,3)>>
<<if _roll is 1>>
<p>You stumble upon a ruined stone altar half-swallowed by roots. Strange runes glow faintly. You leave an offering and feel renewed.</p>
<<set $player.energy to setup.clamp($player.energy + 15, 0, $player.maxEnergy)>>
<p style="color:#44ff44"><b>+15 Energy</b></p>
<<elseif _roll is 2>>
<p>Hidden beneath a hollow log — a leather sack with old coins and dried herbs left by some long-gone traveler.</p>
<<set _g to random(5,15)>><<set $gold += _g>>
<p style="color:#ffd700"><b>+<<= _g>> Gold</b></p>
<<else>>
<p>The forest grows strangely quiet. Birds cease their calls. You feel watched from the shadows — but whatever lurks there does not move against you. Not today.</p>
<p style="color:#aaa;font-style:italic">You retreat before it becomes something worse.</p>
<</if>>
<br>
<<button "Return to the Forest">><<goto "Forest">><</button>>
</div>
<</nobr>><<nobr>>
<div style="background:#1a1a1a;border:1px solid #444;padding:15px;border-radius:8px">
<div style="text-align:center;color:#aaa;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">... Nothing</div>
<<set _roll to random(1,3)>>
<<if _roll is 1>>
<p>You search for a long while and find nothing of value. At least you return safely.</p>
<<elseif _roll is 2>>
<p>The terrain is harsh but uneventful. You find a few loose rocks — not much, but something.</p>
<<set $stone += random(2,4)>>
<p style="color:#adb5bd"><b>+<<= random(2,4)>> Stone</b></p>
<<else>>
<p>Silence. Just wind and the sound of your own breathing. Sometimes that's all there is.</p>
<</if>>
<br>
<<button "Go Back">><<goto "OutsideHub">><</button>>
</div>
<</nobr>><<nobr>>
<div style="background:#1a1a1a;border:1px solid #5a4a2d;padding:15px;border-radius:8px">
<div style="text-align:center;color:#d4aa50;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">🗣 Village Gossip</div>
<<set _roll to random(1,4)>>
<<if _roll is 1>>
<p>An old merchant leans close: <i>"Slavers are working the road east of here. Bold ones. Word is they've got fresh stock."</i></p>
<p style="color:#74c0fc">The Slave Market may have new arrivals.</p>
<<elseif _roll is 2>>
<p>A farmer grumbles then mentions: <i>"Strange ruins up on the mountain. My boy swears he saw a light there last night."</i></p>
<p style="color:#74c0fc">The Mountain may hold hidden things.</p>
<<elseif _roll is 3>>
<p>A traveling bard shares a tale of a warlord who built an empire from nothing. For a few coins he regales you — and something stirs in your blood.</p>
<<set _cost to random(3,6)>>
<<if $gold >= _cost>>
<<set $gold -= _cost>><<set $player.cha to $player.cha + 1>>
<p style="color:#ffd700">Spent <<= _cost>> gold. <b>CHA +1</b></p>
<<else>>
<p style="color:#aaa">You can't afford to tip him. He doesn't finish the story.</p>
<</if>>
<<else>>
<p>The villagers are suspicious of you. Mouths stay shut. You learn nothing today.</p>
<</if>>
<br>
<<button "Return to Village">><<goto "Village">><</button>>
</div>
<</nobr>><<nobr>>
<div style="background:#0d1520;border:1px solid #3c5a7c;padding:15px;border-radius:8px">
<div style="text-align:center;color:#a5d8ff;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">❄️ Ancient Ruins</div>
<p>You push through a snowdrift and nearly walk into a wall of carved black stone — ruins of something vast and old, half-buried in the permafrost. The carvings are in no language you know.</p>
<<set _roll to random(1,3)>>
<<if _roll is 1>>
<p>Inside a collapsed chamber, a stone chest. Your axe breaks the rusted lock. Inside: old coins and a preserved potion vial.</p>
<<set _g to random(30,60)>><<set $gold += _g>><<set $healthpotions += 1>>
<p style="color:#ffd700"><b>+<<= _g>> Gold | +1 Health Potion</b></p>
<<elseif _roll is 2>>
<p>A guardian stirs from the shadows. You fight it off and loot what's left. The struggle costs you.</p>
<<set _g to random(15,35)>><<set $gold += _g>>
<<set $player.hp to setup.clamp($player.hp - random(10,20), 1, $player.maxHp)>>
<p style="color:#ffd700"><b>+<<= _g>> Gold</b> (and some wounds to remember it by)</p>
<<else>>
<p>You find nothing to carry, but the runes hold a kind of dark knowledge. You emerge wiser — or perhaps just stranger.</p>
<<set $player.int to $player.int + 1>>
<p style="color:#74c0fc"><b>INT +1</b></p>
<</if>>
<br>
<<button "Return to the North">><<goto "North">><</button>>
</div>
<</nobr>><<nobr>>
<div style="background:#0d1520;border:1px solid #5c3a3a;padding:15px;border-radius:8px">
<div style="text-align:center;color:#fa5252;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">🐺 Ice Beast Hunt</div>
<p>The white plains are deceptively quiet. You track prints in the snow for over an hour before the beast finds <i>you</i> first.</p>
<<set _roll to random(1,100) + ($player.str * 2) + ($player.agi * 2)>>
<<if _roll > 100>>
<p>You read its charge perfectly and bring it down in a single powerful strike. Clean and lethal.</p>
<<set _f to random(15,30)>><<set $food += _f>><<set $pelts += 2>>
<p style="color:#44ff44"><b>+<<= _f>> Food | +2 Pelts</b></p>
<<elseif _roll > 60>>
<p>A vicious struggle — you take hits but emerge the victor. The carcass alone was worth the risk.</p>
<<set _f to random(8,18)>><<set $food += _f>><<set $pelts += 1>>
<<set $player.hp to setup.clamp($player.hp - random(8,18), 1, $player.maxHp)>>
<p style="color:#ffd700"><b>+<<= _f>> Food | +1 Pelt</b> (took some damage)</p>
<<else>>
<p>The beast outmaneuvers you. You barely escape empty-handed and bleeding.</p>
<<set $player.hp to setup.clamp($player.hp - random(15,25), 1, $player.maxHp)>>
<p style="color:#fa5252"><b>You return wounded. HP lost.</b></p>
<</if>>
<br>
<<button "Return to the North">><<goto "North">><</button>>
</div>
<</nobr>><<nobr>>
<div style="text-align:center;padding:20px;background:#1a1a1a;border:1px solid #555;border-radius:8px;margin:20px auto;max-width:500px">
<h2 style="color:gold">🏛️ Longhouse</h2>
<p style="color:#aaa;font-style:italic">This building is still being constructed. Full functionality is coming in a future update.</p>
<br>
<<button "Return to Camp">><<goto "CampHub">><</button>>
</div>
<</nobr>><<nobr>>
<div style="text-align:center">
<img src="images/camp/hunterin.webp" style="width:70%;max-width:350px;border-radius:8px;border:2px solid #444;margin-bottom:15px">
<h2>Huntress' Hut</h2>
<p style="color:#aaa;font-size:0.9em">A small but well-kept hut, smelling of pine and leather.</p>
</div>
<hr style="border:0;height:1px;background:#444;margin:10px 0">
<<set _npcKey to "elara">>
<<set _def to setup.relNPCDefs[_npcKey]>>
<<set _stats to setup.getRelNPC(_npcKey)>>
<<set _loc to setup.getRelNPCLocation(_npcKey)>>
<<if _loc is "Forest">>
<div style="background:#1a1a1a;border:1px solid #444;border-radius:6px;padding:15px;text-align:center;margin:15px 0">
<img @src="_def.profile" style="width:60px;height:60px;border-radius:50%;object-fit:cover;object-position:top;border:2px solid #666;opacity:0.5;margin-bottom:8px"><br>
<span style="color:#888;font-style:italic">Elara is out hunting. She won't be back until afternoon.</span>
</div>
<<else>>
<center> <img src="images/NPC/elara/inhut.webp" style="width:50%;max-width:350px;border-radius:8px;border:2px solid #444;margin-bottom:15px"> </center>
<<if $quest_hunter is 1>>
<div style="background:#1a1a1a;border:1px solid #444;border-radius:6px;padding:15px;margin:15px auto;max-width:500px">
<p><i>As you enter the hut, Elara looks up from the bow she is restringing. Her sharp eyes scan your body, assessing your posture and movements.</i></p>
<<say "Elara" "images/NPC/elara/profile.webp" "You're healing faster than I expected. The frost didn't claim you, and your wounds are closing." "#006400">>
<<say "Elara" "images/NPC/elara/profile.webp" "But surviving isn't the same as conquering. If you hope to be formidable enough to take back your birthright, a single hut and a campfire won't cut it. You need a warband." "#006400">>
<p><i>She points an arrow toward the window, out at the snowy clearing of your camp.</i></p>
<<say "Elara" "images/NPC/elara/profile.webp" "Build a Training Ground so your people can hone their skills, and head out into the wilds to recruit some new blood. Do that, and we'll see if you have what it takes to be a true Warlord." "#006400">>
</div>
<center>
<<button "I'll get it done.">>
<<set $quest_hunter to 2>>
<<goto "HunterPage">>
<</button>>
</center>
<<elseif $quest_hunter is 2 and $hasTrainingGrounds is true and $tribe.length gt 0>>
<div style="background:#1a1a1a;border:1px solid #444;border-radius:6px;padding:15px;margin:15px auto;max-width:500px">
<p><i>Elara meets you at the door of her hut, a rare, faint smile touching her lips. She listens to the distant sounds of the camp—footsteps, voices, and the thud of training weapons.</i></p>
<<say "Elara" "images/NPC/elara/profile.webp" "I hear the sounds of a growing camp. You built the Training Grounds and brought in new hands to hold the line. Good." "#006400">>
<p><i>She gives you a respectful nod, her eyes reflecting a newfound appreciation for your leadership.</i></p>
<<say "Elara" "images/NPC/elara/profile.webp" "You're no longer just a frozen exile. You have the beginnings of a true army. Keep expanding, and Kurgan will have a real war on his hands." "#006400">>
</div>
<<set _stats.love to setup.clamp(_stats.love + 5, 0, 100)>>
<center>
<div style="color:lime; margin-bottom:10px; font-weight:bold;">+5 Love</div>
<<button "Continue">>
<<set $quest_hunter to 3>>
<<goto "HunterPage">>
<</button>>
</center>
<<else>>
<<if $quest_hunter is 2>>
<p style="color:#aaa; font-style:italic; text-align:center;">"Remember," she murmurs without looking up, "We need a Training Ground and new recruits if you want to survive the winter."</p>
<<else>>
<p style="text-align:center;"><i style="color:#aaa">She's sharpening an arrowhead by the window, glancing up as you enter.</i></p>
<</if>>
<div style="display:flex; flex-direction:column; gap:10px; max-width:400px; margin:0 auto;">
<<button "Talk to Elara">>
<<set $activeRelNPCKey to "elara">>
<<set $returnTo to "HunterPage">>
<<goto "RelNPC_Page">>
<</button>>
<<button "Hunt together (-15 energy)">>
<<if $player.energy gte 15>>
<<set $player.energy -= 15>>
<<set _stats.love to setup.clamp(_stats.love + 3, 0, 100)>>
<<passTime 120>>
<<run UI.alert("You spend the morning hunting with Elara. She seems to appreciate the company, even if she doesn't say it.")>>
<<goto "HunterPage">>
<<else>>
<<run UI.alert("You're too tired for that.")>>
<</if>>
<</button>>
</div>
<</if>>
<</if>>
<br>
<center>
[[Leave|CampHub]]
</center>
<</nobr>><<nobr>>
<div style="text-align:center">
<<if not $shamanFound>>
<img src="images/camp/shamanin.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #444;margin-bottom:15px" onerror="this.style.display='none'">
<<else>>
<video autoplay loop muted playsinline style="width:70%;max-width:800px;border-radius:8px;border:2px solid #444;margin-bottom:15px">
<source src="images/NPC/shaman/working.webm" type="video/webm">
</video>
<</if>>
<h2>The Shaman's Hut</h2>
<p style="color:#aaa;font-size:0.9em">The air is thick with the pungent aroma of dried herbs, earth, and strange incense.</p>
</div>
<hr style="border:0;height:1px;background:#444;margin:10px 0">
<<if not $shamanFound>>
<div style="background:#1a1a1a;border:1px solid #444;border-radius:6px;padding:15px;text-align:center;margin:15px auto;max-width:500px">
<<if not $quest_shaman>>
<<set $quest_shaman to 1>>
<p style="color:gold; font-weight:bold; text-transform:uppercase; letter-spacing:1px;">New Quest: Spiritual Guidance</p>
<p style="color:#ccc; font-size:0.95em;">Your tribe requires a healer and a guide for the spirits. Rumors speak of strange lights and chants deep within the <b>Forest at night</b>. You must investigate and see if a Shaman resides there.</p>
<<else>>
<p style="color:#888;font-style:italic">The tent is quiet and empty. You still need to explore the forest at night to find a Shaman.</p>
<</if>>
</div>
<<else>>
<<if $quest_shaman is 3>>
<div style="border:1px solid #a366ff; border-radius:6px; padding:15px; margin:15px auto; max-width:500px; border-left: 5px solid #a366ff;">
<p style="color: #ff4444; font-weight: bold; margin-bottom: 5px;"></p>
<p style="font-size: 0.9em; line-height: 1.4;">Kaelith has a map spread across her knees. Her eyes are dark with anticipation as she looks at the frozen peaks to the North. She turns toward you, her expression growing serious.</p>
<<say "Kaelith" "images/NPC/shaman/profile.webp" "The Frozen Peaks call to us, Warlord... but we cannot go unprepared. For an expedition of this magnitude we will need ample supplies — food, furs, climbing gears, torches. We should also gather worthy companions, those strong enough to face the dangers with us." "#a366ff">>
</div>
<</if>>
<div style="background:#1a1a1a;border:1px solid #444;border-radius:6px;padding:15px;margin:15px auto;max-width:500px">
<p style="text-align:center;"><i style="color:#aaa">The Shaman is sitting cross-legged, meticulously grinding glowing roots in a stone mortar. They glance up as you enter, eyes reflecting the dim candlelight, before speaking.</i></p>
<<say "Shaman" "images/NPC/shaman/profile.webp" "The spirits are restless today, Warlord. Do you require my aid, or merely a quiet place to think?" "#8f00ff">>
</div>
<div style="display:flex; flex-direction:column; gap:10px; max-width:400px; margin:0 auto;">
<<button "Talk to the Shaman">>
<<set $activeRelNPCKey to "kaelith">>
<<set $returnTo to "ShamanPage">>
<<goto "RelNPC_Page">>
<</button>>
<<if $shaman_potion_day is $day>>
<div style="text-align:center; padding:10px; border:1px solid #555; border-radius:4px; color:#888; background:#1a1a1a;">
<i>The Shaman has already brewed a potion today. Their spiritual energy must replenish before they can craft another.</i>
</div>
<<else>>
<<button "Brew Health Potion (Free, 1/Day)">>
<<set $shaman_potion_day to $day>>
<<set $healthpotions = ($healthpotions || 0) + 1>>
<<run UI.alert("The Shaman hands you a bubbling vial. \n\nReceived: 1x Health Potion")>>
<<goto "ShamanPage">>
<</button>>
<</if>>
<div style="text-align:center; margin-top:10px; font-size:0.85em; color:#aaa; font-style:italic;">
Note: More advanced potions and status effects will be implemented in a future update!
</div>
</div>
<</if>>
<br><br>
<center>
[[Leave|CampHub]]
</center>
<</nobr>><<nobr>>
<div style="text-align:center;padding:20px;background:#1a1a1a;border:1px solid #555;border-radius:8px;margin:20px auto;max-width:500px">
<h2 style="color:gold">🐎 Stables</h2>
<p style="color:#aaa;font-style:italic">This building is still being constructed. Full functionality is coming in a future update.</p>
<br>
<<button "Return to Camp">><<goto "CampHub">><</button>>
</div>
<</nobr>><<nobr>>
<<passTime 30>>
<style>
.hub-grid { display:flex; flex-wrap:wrap; justify-content:center; gap:15px; margin-top:20px; }
.hub-item { width:160px; text-align:center; background:#1a1a1a; border:1px solid #444; border-radius:8px; padding:10px; transition:0.2s; }
.hub-item img { width:140px !important; height:140px !important; object-fit:cover; border-radius:4px; display:block; margin:0 auto 10px auto; }
.hub-item:hover { border-color:gold; transform:scale(1.05); }
.hub-item a { text-decoration:none; color:#eee; font-weight:bold; font-size:0.9em; }
</style>
<div style="text-align:center; padding:10px; border:1px solid #5a4a2d; background:rgba(35,30,20,0.85);">
<h2 style="color:#e6c27a; margin-top:0;">🏰 Highcrest</h2>
<p style="font-size:0.9em;">Heart of power and wealth, where nobles and merchants shape the fate of the realm.</p>
</div>
<div class="hub-grid">
<div class="hub-item">
<<link [img[images/locations/tavern.webp][Tavern]]>><<set $returnTo to "City">><</link>>
<br>Tavern
</div>
<div class="hub-item">
<<link [img[images/locations/cathedral.webp][Cathedral]]>><<set $returnTo to "City">><</link>>
<br>Cathedral
</div>
<div class="hub-item">
<<link [img[images/locations/market.webp][CityMarket]]>><<set $returnTo to "City">><</link>>
<br>Market
</div>
<div class="hub-item">
<<link [img[images/locations/sewer.webp][Sewer]]>><<set $returnTo to "City">><</link>>
<br>Sewer Entrance
</div>
<div class="hub-item">
<<link [img[images/locations/brothelout.webp][Brothel]]>><<set $returnTo to "City">><</link>>
<br>The Red Swan
</div>
<<if $hasSlavePens is true>>
<div class="hub-item">
<<if $quest_villager gt 3 and ($hour gte 20 or ($hour lte 5))>>
<<relBadge "Brothel">>
<</if>>
<<link [img[images/locations/slave_market.webp][SlaveMarket]]>><<passTime 30>><</link>>
<br>Slave Market
</div>
<</if>>
<div class="hub-item" style="border-style:dotted;">
<<link [img[images/locations/camp_thumb.webp][OutsideHub]]>><</link>>
<br><span style="color:#aaa;">Leave City</span>
</div>
<div class="hub-item">
<<link [img[images/locations/jailout.webp][CityJail]]>><<set $returnTo to "City">><</link>>
<br>City's Prison
</div>
</div>
<</nobr>><<nobr>>
<div style="text-align:center; padding:10px; border:1px solid #5a4a2d; background:rgba(35,30,20,0.85); margin-bottom:15px;">
<h2 style="color:#e6c27a; margin-top:0;">🍺 The Rusty Flagon</h2>
<img src="images/locations/tavern.webp" style="width:100%;max-width:600px;border-radius:8px;border:2px solid #222;margin-bottom:15px">
<p style="font-size:0.9em;">Smoke-stained beams, spilled ale, and the kind of conversations that get people killed.</p>
</div>
<div style="display:flex; flex-direction:column; gap:10px;">
<div style="border-left:4px solid #fab005; background:#222; padding:10px;">
<b>🍺 Order a Drink</b>
<br><span style="font-size:0.8em; color:#aaa;">Spend a coin, hear a rumour.</span>
<br><<button "Drink">>
<<if $gold >= 2>>
<<set $gold -= 2>>
<<run UI.alert("The barkeep slides you a cup. You hear something interesting...")>>
<<else>>
<<run UI.alert("You're short on coin. The barkeep eyes you coldly.")>>
<</if>>
<<goto "Tavern">>
<</button>>
</div>
<div style="border-left:4px solid #444; background:#222; padding:10px; color:#666;">
<b>🎲 More to come...</b>
<br><span style="font-size:0.8em;">Gambling, mercenaries for hire, and trouble.</span>
</div>
</div>
<br>
<center>[[Back to the City|City]]</center>
<</nobr>><<nobr>>
<<set $lastTributeVisitDay to $day>>
<<if not $tributePhase>><<set $tributePhase to "intro">><</if>>
<div style="background:#1a1a0a;border:1px solid #7a6a1a;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.55">
<div style="text-align:center;color:#ffd700;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">
🏘 A Delegation from the Village
</div>
<<if $tributePhase is "intro">>
<div style="text-align:center;margin-bottom:15px">
<img src="images/encounters/tribute/delegation.webp" style="width:100%;max-width:800px;border-radius:8px;border:3px solid #7a6a1a" onerror="this.style.display='none'">
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px;text-align:center">
A small group approaches your camp under a white banner of truce. At the front walks the village elder, flanked by two nervous guards.
Behind them follows a young woman in simple but clean clothes, eyes downcast, fiery red hair catching the light.
<br><br>
The elder bows stiffly and places a heavy purse of gold at your feet.
<<if $villageSaved>>
"My lord... as agreed. Our tribute, and our deepest gratitude. The village sends its finest as a token of personal appreciation."
<<else>>
"We bring what you demanded," the elder says flatly, voice thick with shame.
<</if>>
</div>
<<set $gold += $villageTribute>>
<<set $eventLog.push("Day " + $day + ": Village delegation arrived. Collected " + $villageTribute + " gold tribute.")>>
<div style="background:#111;border:1px solid #ffd700;border-radius:6px;padding:10px;text-align:center;font-size:0.85em;color:#ffd700;margin-bottom:18px">
💰 +$villageTribute gold collected
</div>
<div style="display:flex;flex-direction:column;gap:10px">
<<button "Accept the woman as tribute">>
<<set $tributePhase to "accept">>
<<goto "Event_TributeVisit">>
<</button>>
<<button "Take only the gold and dismiss them">>
<<set $tributePhase to "gold_only">>
<<goto "Event_TributeVisit">>
<</button>>
</div>
<!-- ====================== GOLD ONLY ====================== -->
<<elseif $tributePhase is "gold_only">>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
You wave them off without another word. The elder looks visibly relieved. The red-haired girl keeps her eyes on the ground as the group turns and walks back toward the village.
<br><br>
The arrangement still stands. They will return next time.
</div>
<<button "Return to camp">>
<<unset $tributePhase>>
<<goto "CampHub">>
<</button>>
<!-- ====================== ACCEPT TRIBUTE ====================== -->
<<elseif $tributePhase is "accept">>
<div style="text-align:center;margin-bottom:15px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/tribute.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
The delegation leaves quickly once you accept. The young woman steps forward, cheeks flushed.
Without a word, she loosens her tunic and lets it drop to the ground at your feet, revealing her gorgeous body barely covered by thin, almost transparent underwear.
She is stunning — cute face, vibrant red hair cascading over her shoulders, full breasts, and soft curves that make your blood run hotter.
</div>
<<if $player.gender is "male">>
<!-- ====================== MALE PATH ====================== -->
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delm1.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
Inside your hut, she drops to her knees. With slightly trembling hands she takes your cock and gives it a slow, tentative first lick.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delm2.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">
She quickly grows more confident, giving you a skilled and enthusiastic blowjob. Her cute face looks incredibly erotic as she works your cock with her mouth and tongue.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delm3.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
You push her gently onto the bed and slowly slide inside her. She gasps softly as you fill her.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delm4.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
You enjoy the beautiful view of her tits bouncing with every deep thrust while she lies beneath you.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delm5.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">
She turns around and rides you reverse, her ass and back arched beautifully as she moves on your cock.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delm6.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:22px">
Finally she kneels in front of you again, stroking your cock rapidly with both hands until you explode. Thick ropes of cum cover her beautiful face, tits, and body.
<br><br>
She looks up at you with a shy but sexy smile and softly asks:
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delm7.webm" type="video/webm">
</video>
</div>
<i>"...May I come again next time, my lord?"</i>
</div>
<<else>>
<!-- ====================== FEMALE PATH ====================== -->
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delf1.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
Inside your hut you pull her close and kiss her deeply. She is hesitant at first, but slowly begins to kiss you back as you guide her toward the bed.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delf2.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
Her resistance melts away. She returns the kiss with growing passion, her body pressing against yours.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delf3.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
You push her onto the bed and go down on her, licking her pussy slowly and thoroughly until she’s moaning and gripping the furs.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delf4.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
She becomes bolder and returns the favor, eagerly going down on you.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delf5.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
You kiss her again deeply, tasting yourself on her lips as she moans into your mouth.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delf6.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
You both rub your wet pussies together in a passionate tribbing session, grinding hard against one another.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delf7.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
Your fingers find each other’s clits and soaked entrances. You finger each other frantically until you both reach a powerful, shaking orgasm.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:8px">
<source src="images/encounters/tribute/delf8.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">
Not satisfied yet, you go down on her one final time, licking her through a second, even stronger orgasm.
</div>
<</if>>
<!-- Shared ending -->
<<set $player.lust to 0>>
<<set $player.energy to setup.clamp($player.energy + 30, 0, $player.maxEnergy)>>
<<set $eventLog.push("Day " + $day + ": Accepted the red-haired tribute girl and spent the night with her.")>>
<div style="background:#111;border:1px solid #7a6a1a;border-radius:6px;padding:12px;text-align:center;font-size:0.85em;color:#ffd700;margin:15px 0">
⚡ +30 Energy | 💗 Lust reset
</div>
<<button "Send her back to the village before dawn">>
<<unset $tributePhase>>
<<goto "CampHub">>
<</button>>
<</if>>
</div>
<</nobr>><<nobr>>
<<if not $brothelPhase>><<set $brothelPhase to "intro">><</if>>
<<if $quest_villager is 2>>
<<goto "Ralia_Brothel">>
<</if>>
<div style="background:#1a0a0f;border:1px solid #7a1a3a;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.55">
<div style="text-align:center;color:#ff69b4;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">
<img src="images/locations/brothelin.webp" style="width:80%;max-width:800px;border-radius:8px;border:2px solid #555;"><br>
🌹 The Red Swan
</div>
<!-- ====================== INTRO ====================== -->
<<if $brothelPhase is "intro">>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px;text-align:center">
Madam Cynthia smiles warmly.<br>
<<say "Madam Cynthia" "images/encounters/redswan/madam.webp" "Fifty gold for one unforgettable hour. Which of my girls would you like tonight? <br><br> Or perhaps you want two of them?" "#ff69b4">>
</div>
<div style="background:#111;border:1px solid #444;border-radius:6px;padding:10px;text-align:center;font-size:0.85em;color:#ffd700;margin:15px 0">
💰 Cost: 50 gold | You have: $gold gold
</div>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:12px">
<!-- Astrid -->
<div style="background:#1a1a1a;border:1px solid #555;border-radius:8px;padding:12px;text-align:center">
<img src="images/encounters/redswan/blonde.webp" style="width:100%;height:210px;object-fit:cover;border-radius:6px;object-position:80% 5%;margin-bottom:8px">
<div style="color:#eee;font-weight:bold">Astrid</div>
<div style="color:#aaa;font-size:0.8em">“The Northern Beauty”</div>
<<if $gold >= 50>>
<<button "Choose Astrid">>
<<set $brothelGirl to "blonde">>
<<set $brothelPhase to "scene">>
<<set $gold -= 50>>
<<goto "Brothel">>
<</button>>
<<else>>
<span style="color:#fa5252">Not enough gold</span>
<</if>>
</div>
<!-- Elara -->
<div style="background:#1a1a1a;border:1px solid #555;border-radius:8px;padding:12px;text-align:center">
<img src="images/encounters/redswan/brunette.webp" style="width:100%;height:210px;object-fit:cover;object-position:80% 10%;border-radius:6px;margin-bottom:8px">
<div style="color:#eee;font-weight:bold">Elara</div>
<div style="color:#aaa;font-size:0.8em">“The Wild Rose”</div>
<<if $gold >= 50>>
<<button "Choose Elara">>
<<set $brothelGirl to "brunette">>
<<set $brothelPhase to "scene">>
<<set $gold -= 50>>
<<goto "Brothel">>
<</button>>
<<else>>
<span style="color:#fa5252">Not enough gold</span>
<</if>>
</div>
<!-- Zara -->
<div style="background:#1a1a1a;border:1px solid #555;border-radius:8px;padding:12px;text-align:center">
<img src="images/encounters/redswan/black.webp" style="width:100%;height:210px;object-fit:cover;border-radius:6px;object-position:80% 20%;margin-bottom:8px">
<div style="color:#eee;font-weight:bold">Zara</div>
<div style="color:#aaa;font-size:0.8em">“The Desert Flame”</div>
<<if $gold >= 50>>
<<button "Choose Zara">>
<<set $brothelGirl to "black">>
<<set $brothelPhase to "scene">>
<<set $gold -= 50>>
<<goto "Brothel">>
<</button>>
<<else>>
<span style="color:#fa5252">Not enough gold</span>
<</if>>
</div>
<<if $quest_villager gte 3 and ($hour gte 20 or ($hour lte 5))>>
<div style="background:#1a1a1a;border:1px solid #555;border-radius:8px;padding:12px;text-align:center">
<img src="images/NPC/ralia/brothel_profile.webp" style="width:100%;height:210px;object-fit:cover;border-radius:6px;object-position:50% 20%;margin-bottom:8px">
<div style="color:#eee;font-weight:bold">Ralia</div>
<div style="color:#aaa;font-size:0.8em">“The Villager”</div>
<<if $gold >= 50>>
<<button "Choose Ralia">>
<<set $gold -= 50>>
<<goto "Ralia_Choose">>
<</button>>
<<else>>
<span style="color:#fa5252">Not enough gold</span>
<</if>>
</div>
<</if>>
<!-- Threesome -->
<div style="background:#1a1a1a;border:1px solid #555;border-radius:8px;padding:12px;text-align:center;grid-column:1/3">
<img src="images/encounters/redswan/threesome.webp" style="width:100%;max-height:210px;object-fit:cover;object-position:80% 10%;border-radius:6px;margin-bottom:8px" onerror="this.style.display='none'">
<div style="color:#eee;font-weight:bold">Threesome – Astrid & Elara</div>
<<if $gold >= 70>>
<<button "Choose Threesome (70 gold)">>
<<set $brothelGirl to "threesome">>
<<set $brothelPhase to "scene">>
<<set $gold -= 70>>
<<goto "Brothel">>
<</button>>
<<else>>
<span style="color:#fa5252">Not enough gold</span>
<</if>>
</div>
</div>
<br><center>[[Leave|City]]</center>
<!-- ====================== AFTER CHOOSING ====================== -->
<<elseif $brothelPhase is "scene">>
<<if $brothelGirl is "blonde">>
<<set _girlName to "Astrid">>
<<set _girlImg to "images/encounters/redswan/blonde.webp">>
<<elseif $brothelGirl is "brunette">>
<<set _girlName to "Elara">>
<<set _girlImg to "images/encounters/redswan/brunette.webp">>
<<elseif $brothelGirl is "black">>
<<set _girlName to "Zara">>
<<set _girlImg to "images/encounters/redswan/black.webp">>
<<else>>
<<set _girlName to "Astrid & Elara">>
<<set _girlImg to "images/encounters/redswan/threesome.webp">>
<</if>>
<div style="text-align:center;margin-bottom:15px">
<img @src="_girlImg" style="width:100%;max-width:420px;border-radius:8px;border:3px solid #7a1a3a">
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px;text-align:center">
<<print _girlName>> leads you into a private room and closes the door.
</div>
<<button "Begin the session">>
<<set $brothelPhase to "play">>
<<goto "Brothel">>
<</button>>
<!-- ====================== PLAY SEQUENCE ====================== -->
<<elseif $brothelPhase is "play">>
<<if $player.gender is "female">>
<!-- ====================== FEMALE PATHS ====================== -->
<<if $brothelGirl is "blonde">>
<!-- ====================== ASTRID (Blonde) - fw1 to fw7 ====================== -->
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw1.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">Astrid pours warm scented oil over your body and slowly rubs it into your pussy with gentle, teasing strokes.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw2.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She uses both hands — one finger sliding deep inside you while her other hand rubs your clit in slow circles.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw3.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">Her speed increases. You moan loudly as your first powerful orgasm crashes over you.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw4.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She locks her legs with yours in a tight scissors position, grinding her wet pussy hard against yours.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw5.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She climbs on top of you into a passionate 69. You both lick each other until she cums hard on your tongue.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw6.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">Still not done, she fingers you again with expert precision until you cum a second time.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw7.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">You both lie tangled together, breathing heavily, bodies glistening with oil and sweat.</div>
<<elseif $brothelGirl is "brunette">>
<!-- ====================== ASTRID (Blonde) - fw1 to fw7 ====================== -->
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw1.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">Elara pours warm scented oil over your body and slowly rubs it into your pussy with gentle, teasing strokes.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw2.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She uses both hands — one finger sliding deep inside you while her other hand rubs your clit in slow circles.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw3.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">Her speed increases. You moan loudly as your first powerful orgasm crashes over you.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw4.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She locks her legs with yours in a tight scissors position, grinding her wet pussy hard against yours.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw5.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She climbs on top of you into a passionate 69. You both lick each other until she cums hard on your tongue.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw6.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">Still not done, she fingers you again with expert precision until you cum a second time.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fw7.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">You both lie tangled together, breathing heavily, bodies glistening with oil and sweat.</div>
<<elseif $brothelGirl is "black">>
<!-- ====================== ELARA (Brunette) - fb1 to fb7 ====================== -->
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fb1.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">Zara makes you crouch on all fours while she pours warm oil over your ass and pussy.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fb2.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">In the same position she rubs your vagina with both hands, spreading the oil everywhere.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fb3.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She slides her fingers deep inside you, fingering you steadily.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fb4.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She puts on a leather strap-on and starts fucking you hard from behind.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fb5.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She flips you onto your back, rubs your clit while licking and sucking your tits.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fb6.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">You cum hard while rubbing her pussy at the same time.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/fb7.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">She doesn’t stop — she increases speed until both of you cum together again.</div>
<<else>>
<!-- ====================== THREESOME (f31 to f36) ====================== -->
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/f31.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">You lie on your belly on the massage bed while both girls pour warm oil over your skin and begin rubbing you sensually.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/f32.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">They massage your vulva, insert a finger, and caress your asshole with a palm.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/f33.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">You turn onto your back as they continue the sensual massage.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/f34.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">They massage inside and outside your pussy, taking you right to the edge of orgasm.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/f35.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">You relax and let the pleasure build as you get closer and closer.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/f36.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">One of the girls leans down and licks you to a long, shaking orgasm while the other kisses your neck and breasts.</div>
<</if>>
<<else>>
<!-- ====================== MALE PATHS ====================== -->
<<if $brothelGirl is "blonde">>
<!-- Astrid mw1-mw8 -->
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw1.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">You lie naked on the massage bed. Astrid, completely nude, straddles you and pours warm oil over your chest and cock, rubbing it in with slow, sensual strokes.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw2.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She sensually grabs your hard cock with both hands and begins stroking and caressing it.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw3.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She grinds her wet pussy along the length of your cock, teasing you mercilessly.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw4.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She rubs the swollen tip of your cock against her slick pussy lips, teasing you until you’re desperate to thrust inside her.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw5.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She slides down and takes your cock deep into her warm mouth, sucking you with expert skill.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw6.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She finally sinks down, taking your entire length inside her tight pussy.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw7.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She rides you hard, her breasts bouncing as she brings you right to the edge.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw8.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">You explode. She quickly pulls off and catches every thick rope of cum in her hand, giggling playfully as she looks up at you.</div>
<<elseif $brothelGirl is "brunette">>
<!-- Elara mw1-mw8 -->
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw1.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">You lie naked on the massage bed. Elara, completely nude, straddles you and pours warm oil over your chest and cock, rubbing it in with slow, sensual strokes.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw2.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She sensually grabs your hard cock with both hands and begins stroking and caressing it.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw3.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She grinds her wet pussy along the length of your cock, teasing you mercilessly.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw4.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She rubs the swollen tip of your cock against her slick pussy lips, teasing you until you’re desperate to thrust inside her.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw5.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She slides down and takes your cock deep into her warm mouth, sucking you with expert skill.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw6.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She finally sinks down, taking your entire length inside her tight pussy.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw7.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She rides you hard, her breasts bouncing as she brings you right to the edge.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mw8.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">You explode. She quickly pulls off and catches every thick rope of cum in her hand, giggling playfully as she looks up at you.</div>
<<elseif $brothelGirl is "black">>
<!-- Zara mb1-mb6 -->
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mb1.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">Zara kneels between your legs, completely naked and glistening with oil. She strokes your hard cock with both hands.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mb2.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She leans down and licks the sensitive tip of your cock slowly.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mb3.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She gives you a long, deep, and very wet blowjob, eyes locked on yours.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mb4.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">She turns around and rides you reverse cowgirl, her ass bouncing perfectly.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mb5.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">You flip her onto her back, spread her legs wide, and fuck her deep and hard.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/mb6.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">At the last second you pull out and cum all over her smooth belly and breasts.</div>
<<else>>
<!-- Threesome m31-m37 -->
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/m31.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">You lie on your back as both girls, completely naked and covered in oil, rub their bodies all over yours.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/m32.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">They both wrap their hands around your cock and give you a slow, slippery double handjob.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/m33.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">Zara straddles your cock and grinds her wet pussy along the shaft while Elara rubs her pussy against your chest and stomach.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/m34.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">Elara guides your cock into Zara’s pussy as she sinks down onto you.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/m35.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">Zara rides you hard while Elara plays with your balls and kisses your neck.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/m36.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">Zara moans loudly as she rides you faster and faster.</div>
<div style="text-align:center;margin-bottom:12px"><video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/redswan/m37.webm" type="video/webm"></video></div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">At the last moment Zara lifts off and both girls stroke you together until you explode, covering their hands and breasts with thick ropes of cum.</div>
<</if>>
<</if>>
<!-- SHARED ENDING -->
<<set $player.lust to 0>>
<<set $player.energy to setup.clamp($player.energy + 28, 0, $player.maxEnergy)>>
<<set $eventLog.push("Day " + $day + ": Spent a passionate hour at The Red Swan with " + _girlName + ".")>>
<div style="background:#111;border:1px solid #7a1a3a;border-radius:6px;padding:12px;text-align:center;margin:25px 0;color:#ffd700">
⚡ +28 Energy | 💗 Lust reset
</div>
<<button "Get dressed and leave">>
<<unset $brothelPhase>>
<<unset $brothelGirl>>
<<goto "City">>
<</button>>
<</if>>
</div>
<</nobr>><<nobr>>
<div style="background:#1a1208;border:1px solid #5c4d2d;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4"><center>
<video width="50%" style="border-radius: 6px; margin: 15px 0;" autoplay loop muted>
<source src="images/intro/heal.webm" type="video/webm">
</video>
<div style="max-width: 720px; margin: 0 auto; text-align: left; line-height: 1.75; font-size: 1.05em; color: #ddd;">
The wind howled mercilessly outside, but inside the broken shelter Elara had dragged you into, a small fire crackled defiantly.
You lay on a bed of furs and pine branches, teeth still chattering, body aching from the beating and the freezing cold. Every breath burned.
Elara moved with quiet efficiency. She stripped off your soaked outer furs, cleaned the cuts on your face and knuckles with melted snow, and wrapped your frostbitten hands in strips of clean cloth.
<<say "Elara" "images/NPC/elara/profile.webp" "You’re lucky the cold numbed the pain... maybe you won't lose any fingers" "#006400">> She says as she checks your hands. <br>
Then she held a steaming bowl of broth mixed with herbs to your lips.
<br>
<<say "Elara" "images/NPC/elara/profile.webp" "Drink. Slowly." "#006400">> <br>
As warmth slowly returned to your body, you watched her. She was younger than you first thought — strong, capable, with sharp green eyes that missed nothing. Her dark braids were dusted with snow, and despite the harsh conditions, there was a quiet beauty in her weathered grace. <br>
After you had eaten, she sat back on her heels and studied you.
<br>
<<say "Elara" "images/NPC/elara/profile.webp" "You’re $player.name, child of the old chief. The one they threw out like garbage. Yet here you are, still breathing. That means something." "#006400">>
<br>
You told her your plan — weak as it was: to build a camp here, gather strength, and one day take back what was stolen from you.
<br><br>
Elara was silent for a long moment, staring into the fire.
<br><br>
Then she nodded.
<br>
<<say "Elara" "images/NPC/elara/profile.webp" "Very well. I’ll help you. But not out of pity." "#006400">><br>
A faint, dangerous smile touched her lips. <br>
<<say "Elara" "images/NPC/elara/profile.webp" "I want to see if the blood of that monster father of yours truly runs in your veins." "#006400">>
<br>
<center><img src="images/intro/costruction.webp" width="75%" style="border: 3px solid #5a2c0f; border-radius: 8px; margin: 25px 0;"></center><br>
For the next two days you worked together like wolves building a den.
<br>
With a rusted axe and Elara’s hunting knife, you cut young pines, stripped bark, and lashed logs together using sinew and rope she had brought. The first hut was crude — little more than a low, sturdy shelter with a smoke hole and a dirt floor — but it was yours.
<br>
When the final log was set and the wind no longer cut straight through, Elara stepped back, wiping sweat and dirt from her brow. She looked at the small structure, then at you.
<br>
<center><img src="images/camp/yourhut.webp" width="75%" style="border: 3px solid #5a2c0f; border-radius: 8px; margin: 25px 0;"></center><br>
<br>
<<say "Elara" "images/NPC/elara/profile.webp" "Not bad for a dead warrior. This is only the beginning, $player.name. A single hut today… an empire tomorrow, if you’re strong enough." "#006400">>
She turned to face you fully, firelight dancing in her eyes.
<<say "Elara" "images/NPC/elara/profile.webp" "The North respects only strength and will..." "#006400">>
</div>
<br><br>
<h3 style="color: #c39f5f;">The first hut is built. Your camp has begun.</h3>
<<set $gameStarted to true>>
<<set $quest_hunter to 1>>
[[Go to your camp|CampHub]]
</center></div>
<</nobr>><<nobr>>
<<set _npcKey to $activeRelNPCKey>>
<<set _def to setup.relNPCDefs[_npcKey]>>
<<set _stats to setup.getRelNPC(_npcKey)>>
<<if not $relTalkPhase>><<set $relTalkPhase to "main">><</if>>
<div class="npc-ui-container" style="display:flex;gap:20px;background:#111;padding:20px;border:1px solid #444;border-radius:8px;">
/% ── LEFT: PORTRAIT ── %/
<div class="npc-portrait" style="flex:1;text-align:center;">
<img @src="_def.profile" style="width:100%;max-width:300px;height:400px;object-fit:cover;object-position:top;border:2px solid #555;border-radius:8px;" onerror="this.style.display='none'">
<h2 style="margin-top:10px;"><<= _def.name>></h2>
<span style="color:#aaa;font-size:0.85em;text-transform:uppercase;letter-spacing:1px"><<= _def.title>></span>
<div style="margin-top:12px;text-align:left;padding:0 10px">
<small style="color:#888">Love</small>
<<showmeter "hp" `_stats.love` 100>>
<small style="color:#888">Submission</small>
<<showmeter "lust" `_stats.sub` 100>>
</div>
</div>
/% ── RIGHT: CONTENT ── %/
<div class="npc-details" style="flex:2;">
/% ════════════════════════════════
MAIN MENU
════════════════════════════════ %/
<<if $relTalkPhase is "main">>
<div style="background:#1a1a1a;padding:15px;border-left:3px solid #555;font-style:italic;margin-bottom:15px;color:#ccc;border-radius:4px">
<<= _def.desc || "A person of few words.">>
</div>
<div id="rel-talk-result" style="margin-bottom:10px;font-style:italic;color:#88ccff;min-height:1.2em"></div>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:10px;">
/% ── TALK (opens dialogue tree) ── %/
<<button "Talk">>
<<set $relTalkPhase to "talk_main">>
<<goto "RelNPC_Page">>
<</button>>
/% ── GIVE GIFT ── %/
<<button "Give Gift (5 gold)">>
<<if $gold gte 5>>
<<set $gold -= 5>>
<<set $relNPCs[_npcKey].love to setup.clamp($relNPCs[_npcKey].love + 5, 0, 100)>>
<<replace "#rel-talk-result">>
<<= _def.name>> accepts your gift with a small nod. (+5 Love)
<</replace>>
<<else>>
<<replace "#rel-talk-result">>
<span style="color:#fa5252">Not enough gold.</span>
<</replace>>
<</if>>
<</button>>
/% ── NPC-SPECIFIC ACTIONS ── %/
<<if _npcKey is "elara">>
<<button "Hunt together (-15 energy)">>
<<if $player.energy gte 15>>
<<set $player.energy -= 15>>
<<set _stats.love to setup.clamp(_stats.love + 3, 0, 100)>>
<<passTime 120>>
<<replace "#rel-talk-result">>
You spend the morning hunting with Elara. She seems to appreciate the company. (+3 Love)
<</replace>>
<<else>>
<<replace "#rel-talk-result">>
<span style="color:#fa5252">You're too tired for that.</span>
<</replace>>
<</if>>
<</button>>
<</if>>
<<if _npcKey is "ralia">>
<<button "Help at the market (-10 energy)">>
<<if $player.energy gte 10>>
<<set $player.energy -= 10>>
<<set _stats.love to setup.clamp(_stats.love + 3, 0, 100)>>
<<passTime 60>>
<<replace "#rel-talk-result">>
You help Ralia with her stall. She thanks you warmly. (+3 Love)
<</replace>>
<<else>>
<<replace "#rel-talk-result">>
<span style="color:#fa5252">You're too tired for that.</span>
<</replace>>
<</if>>
<</button>>
<</if>>
<<if _npcKey is "leva">>
<<button "Help at the forge (-15 energy)">>
<<if $player.energy gte 15>>
<<set $player.energy -= 15>>
<<set _stats.love to setup.clamp(_stats.love + 3, 0, 100)>>
<<passTime 120>>
<<replace "#rel-talk-result">>
You pump the bellows and hold hot iron while Leva strikes. She nods in approval of your strength. (+3 Love)
<</replace>>
<<else>>
<<replace "#rel-talk-result">>
<span style="color:#fa5252">You're too tired to swing a hammer right now.</span>
<</replace>>
<</if>>
<</button>>
<</if>>
<<if _npcKey is "kaelith">>
<<button "Meditate together (-15 energy)">>
<<if $player.energy gte 15>>
<<set $player.energy -= 15>>
<<set _stats.love to setup.clamp(_stats.love + 3, 0, 100)>>
<<passTime 120>>
<<replace "#rel-talk-result">>
You sit in silence with Kaelith, breathing in the strange incense. It clears your mind and she seems pleased. (+3 Love)
<</replace>>
<<else>>
<<replace "#rel-talk-result">>
<span style="color:#fa5252">You lack the mental focus to sit still right now.</span>
<</replace>>
<</if>>
<</button>>
<</if>>
/% ── INTIMACY ── %/
<<if setup.canRelIntimacy(_npcKey)>>
<div style="grid-column:span 2;border:1px solid #e91e63;padding:8px;text-align:center;margin-top:5px;border-radius:4px">
<<button "Get closer...">>
<<set $activeNPCType to "rel">>
<<set $activeNPCIndex to setup.getRelNPCIndex(_npcKey)>>
<<set $returnPassage to "RelNPC_Page">>
<<goto "IntimacyHub">>
<</button>>
</div>
<</if>>
</div>
<div style="margin-top:20px;text-align:center;border-top:1px solid #333;padding-top:10px">
<<link "↩ Leave">>
<<set $relTalkPhase to "main">>
<<if def $returnTo>><<goto $returnTo>><<else>><<goto "CampHub">><</if>>
<</link>>
</div>
/% ════════════════════════════════
TALK MENU (shared for all NPCs)
════════════════════════════════ %/
<<elseif $relTalkPhase is "talk_main">>
<p><i style="color:#aaa">
<<if _npcKey is "elara">>She sets down her work and looks at you, waiting.
<<elseif _npcKey is "ralia">>She smiles as you approach her stall.
<<elseif _npcKey is "leva">>She rests her hammer on the anvil, wiping sweat from her brow as she looks at you.
<<elseif _npcKey is "kaelith">>She opens her eyes slowly, pulling herself from a deep trance to look at you.
<<else>>They turn to face you.
<</if>>
</i></p>
<div style="display:flex;flex-direction:column;gap:8px;">
<<button "Ask about their past">>
<<set $relTalkPhase to "talk_past">>
<<goto "RelNPC_Page">>
<</button>>
<<if _npcKey is "elara">>
<<button "Ask about the forest">>
<<set $relTalkPhase to "talk_forest">>
<<goto "RelNPC_Page">>
<</button>>
<<button "Ask why she helped you">>
<<set $relTalkPhase to "talk_why">>
<<goto "RelNPC_Page">>
<</button>>
<</if>>
<<if _npcKey is "leva">>
<<button "Ask about her craft">>
<<set $relTalkPhase to "talk_craft">>
<<goto "RelNPC_Page">>
<</button>>
<<button "Ask why she stays here">>
<<set $relTalkPhase to "talk_why">>
<<goto "RelNPC_Page">>
<</button>>
<</if>>
<<if _npcKey is "kaelith">>
<<button "Ask about the spirits">>
<<set $relTalkPhase to "talk_spirits">>
<<goto "RelNPC_Page">>
<</button>>
<<button "Ask why she joined you">>
<<set $relTalkPhase to "talk_why">>
<<goto "RelNPC_Page">>
<</button>>
<</if>>
<<if _stats.love gte 20 and (not $relCompliment or not $relCompliment[_npcKey])>>
<<button "Tell her she matters">>
<<set $relTalkPhase to "talk_compliment">>
<<goto "RelNPC_Page">>
<</button>>
<</if>>
<<if _stats.love gte 40>>
<<button "Ask about her feelings">>
<<set $relTalkPhase to "talk_feelings">>
<<goto "RelNPC_Page">>
<</button>>
<</if>>
</div>
<div style="margin-top:15px">
<<button "← Back">>
<<set $relTalkPhase to "main">>
<<goto "RelNPC_Page">>
<</button>>
</div>
/% ════════════════════════════════
TALK BRANCHES
════════════════════════════════ %/
<<elseif $relTalkPhase is "talk_past">>
<<if _npcKey is "elara">>
<<say "Elara" `_def.profile` "I grew up in a village three days north of here. Nothing left of it now. Raiders came when I was fifteen." "#4a9e5c">>
<p>She says it without self-pity. Just facts.</p>
<<say "Elara" `_def.profile` "I survived because I was in the forest when it happened. Spent the next year learning that the forest doesn't care about your grief. So neither do I." "#4a9e5c">>
<p><i style="color:#aaa">She picks her work back up. The conversation is over — for now.</i></p>
<<elseif _npcKey is "ralia">>
<<say "Ralia" `_def.profile` "Born here, probably die here. The village isn't much but it's mine." "#c8a45a">>
<p>She shrugs, but there's warmth in it.</p>
<<elseif _npcKey is "leva">>
<<say "Leva" `_def.profile` "My father was a master smith in a big city. He wanted a son to pass his forge to. Instead, he got me." "#cc6600">>
<p>She smirks, leaning against the anvil.</p>
<<say "Leva" `_def.profile` "I beat the hell out of every apprentice he ever brought in until he finally had no choice but to hand me the hammer. Then, well... I decided I didn't like his rules, so I left." "#cc6600">>
<<elseif _npcKey is "kaelith">>
<<say "Kaelith" `_def.profile` "I was not born in a village of wood and straw. I was born to the roots and the mud." "#a366ff">>
<p>She sifts a pinch of sparkling powder between her fingers, eyes distant.</p>
<<say "Kaelith" `_def.profile` "The women who raised me did not use words. They used signs, smoke, and blood. I am exactly what I was made to be." "#a366ff">>
<<else>>
<p><i style="color:#aaa">They share a little about where they came from. You listen.</i></p>
<</if>>
<<set _stats.love to setup.clamp(_stats.love + 2, 0, 100)>>
<p style="color:#4a9e5c;font-size:0.85em">+2 Love</p>
<<button "Continue">>
<<set $relTalkPhase to "talk_main">>
<<goto "RelNPC_Page">>
<</button>>
<<elseif $relTalkPhase is "talk_forest">>
/% Elara-specific %/
<<say "Elara" `_def.profile` "Most people fear it. They should. But fear and respect aren't the same thing." "#4a9e5c">>
<p>She gestures toward the tree line visible through her small window.</p>
<<say "Elara" `_def.profile` "The forest feeds this camp. Every piece of meat your people eat came from out there. Remember that." "#4a9e5c">>
<p><i style="color:#aaa">There's a quiet pride in how she talks about it.</i></p>
<<set _stats.love to setup.clamp(_stats.love + 1, 0, 100)>>
<p style="color:#4a9e5c;font-size:0.85em">+1 Love</p>
<<button "Continue">>
<<set $relTalkPhase to "talk_main">>
<<goto "RelNPC_Page">>
<</button>>
<<elseif $relTalkPhase is "talk_craft">>
/% Leva-specific %/
<<say "Leva" `_def.profile` "Metal is honest. It doesn't lie, it doesn't plot against you, and it doesn't break promises." "#cc6600">>
<p>She runs a soot-stained hand over a cooling blade.</p>
<<say "Leva" `_def.profile` "If you strike it wrong, it breaks. But if you strike it right... it sings. There's a purity in that you can't find in people." "#cc6600">>
<<set _stats.love to setup.clamp(_stats.love + 1, 0, 100)>>
<p style="color:#4a9e5c;font-size:0.85em">+1 Love</p>
<<button "Continue">>
<<set $relTalkPhase to "talk_main">>
<<goto "RelNPC_Page">>
<</button>>
<<elseif $relTalkPhase is "talk_spirits">>
/% Kaelith-specific %/
<p>You ask her what exactly she speaks to when she throws powder into the fire.</p>
<<say "Kaelith" `_def.profile` "They are not ghosts of dead men, Warlord. Men are too small, too fleeting." "#a366ff">>
<p>She leans forward, her eyes catching the light.</p>
<<say "Kaelith" `_def.profile` "They are the pulse of the earth. The hunger of the wolf, the patience of the stone, the wrath of the storm. They speak only to those who know how to listen... and how to bleed." "#a366ff">>
<<set _stats.love to setup.clamp(_stats.love + 1, 0, 100)>>
<p style="color:#4a9e5c;font-size:0.85em">+1 Love</p>
<<button "Continue">>
<<set $relTalkPhase to "talk_main">>
<<goto "RelNPC_Page">>
<</button>>
<<elseif $relTalkPhase is "talk_why">>
<<if _npcKey is "elara">>
<p>She's quiet for a moment. Her jaw tightens slightly.</p>
<<say "Elara" `_def.profile` "You were half dead in the snow. What was I supposed to do, step over you?" "#4a9e5c">>
<p>You press her — surely she had a choice.</p>
<<say "Elara" `_def.profile` "..." "#4a9e5c">>
<p><i style="color:#aaa">She doesn't answer. Just goes back to her work. But something shifted for just a moment.</i></p>
<<elseif _npcKey is "leva">>
<p>You ask her why she stays in a crude warlord camp instead of finding a proper city.</p>
<<say "Leva" `_def.profile` "In a city, I'd be making horseshoes for fat merchants, expected to wear a suffocating dress, and told to watch my mouth." "#cc6600">>
<p>She gestures to her bare, sweat-glistening body and the hot forge around her.</p>
<<say "Leva" `_def.profile` "Here, I make weapons for war. You let me work my way, and I don't have to wear a damn thing. What's not to like?" "#cc6600">>
<<elseif _npcKey is "kaelith">>
<p>You ask her why a woman with her strange powers would submit to living in your camp.</p>
<<say "Kaelith" `_def.profile` "Because the embers showed me your face in the smoke. A conqueror, yes... but more importantly, a vessel." "#a366ff">>
<p>She offers a slow, unnerving smile.</p>
<<say "Kaelith" `_def.profile` "I stay to see what you will be filled with. And perhaps... to pour a little of myself into you as well." "#a366ff">>
<</if>>
<<set _stats.love to setup.clamp(_stats.love + 3, 0, 100)>>
<p style="color:#4a9e5c;font-size:0.85em">+3 Love</p>
<<button "Continue">>
<<set $relTalkPhase to "talk_main">>
<<goto "RelNPC_Page">>
<</button>>
<<elseif $relTalkPhase is "talk_compliment">>
<<if _npcKey is "elara">>
<p>You tell her plainly — this camp wouldn't eat without her.</p>
<p><i style="color:#aaa">She looks up sharply, checking whether you're mocking her.</i></p>
<<say "Elara" `_def.profile` "I hunt because it's what I do. Not for gratitude." "#4a9e5c">>
<p>She pauses.</p>
<<say "Elara" `_def.profile` "But... I hear you." "#4a9e5c">>
<p><i style="color:#aaa">The faintest softening around her eyes. Gone almost before it arrived.</i></p>
<<elseif _npcKey is "leva">>
<p>You tell her that her steel is the backbone of your growing army.</p>
<p><i style="color:#aaa">She chuckles, resting her hammer on her shoulder.</i></p>
<<say "Leva" `_def.profile` "Flattery won't get you a discount on steel, Warlord... but I appreciate the sentiment." "#cc6600">>
<<elseif _npcKey is "kaelith">>
<p>You tell her that her mystical guidance is the soul of the camp.</p>
<p><i style="color:#aaa">Her eyes widen a fraction before she smiles an unsettling, knowing smile.</i></p>
<<say "Kaelith" `_def.profile` "The soul is a fragile thing, Warlord. Make sure you don't break it... or let it break you." "#a366ff">>
<<else>>
<p>You tell <<= _def.name>> that you appreciate what they do.</p>
<p><i style="color:#aaa">They seem genuinely touched.</i></p>
<</if>>
<<set _stats.love to setup.clamp(_stats.love + 4, 0, 100)>>
<p style="color:#4a9e5c;font-size:0.85em">+4 Love</p>
/% Mark as used so the button disappears %/
<<if not $relCompliment>><<set $relCompliment to {}>><</if>>
<<set $relCompliment[_npcKey] to true>>
<<button "Continue">>
<<set $relTalkPhase to "talk_main">>
<<goto "RelNPC_Page">>
<</button>>
<<elseif $relTalkPhase is "talk_feelings">>
<<if _npcKey is "elara">>
<p>You ask her directly — what does she think of you, after all this time?</p>
<p><i style="color:#aaa">A long silence. She sets her work down properly this time.</i></p>
<<say "Elara" `_def.profile` "You're not what I expected when I dragged a frozen exile out of the snow." "#4a9e5c">>
<<say "Elara" `_def.profile` "I don't know what I think of you yet. But I'm still here. That's more than I give most people." "#4a9e5c">>
<p><i style="color:#aaa">She holds your gaze a moment longer than usual before looking away.</i></p>
<<elseif _npcKey is "leva">>
<p>You ask her how she feels about her savior and Warlord.</p>
<p><i style="color:#aaa">She smirks, sizing you up boldly.</i></p>
<<say "Leva" `_def.profile` "You're ruthless, arrogant, and highly dangerous." "#cc6600">>
<<say "Leva" `_def.profile` "But... you respect my craft, you let me be myself, and you did save my life from those minotaurs. I've definitely kept worse company." "#cc6600">>
<<elseif _npcKey is "kaelith">>
<p>You ask her how she feels about you.</p>
<p><i style="color:#aaa">She doesn't blink. She steps unnervingly close, her voice a soft, vibrating hum.</i></p>
<<say "Kaelith" `_def.profile` "You are a storm, Warlord. Destructive, loud, and careless..." "#a366ff">>
<<say "Kaelith" `_def.profile` "But storms bring rain, and rain brings life. I find you... entirely intoxicating." "#a366ff">>
<<else>>
<p>You ask <<= _def.name>> how they feel about you.</p>
<p><i style="color:#aaa">They seem to consider it carefully before answering.</i></p>
<</if>>
<<set _stats.love to setup.clamp(_stats.love + 5, 0, 100)>>
<p style="color:#4a9e5c;font-size:0.85em">+5 Love</p>
<<button "Continue">>
<<set $relTalkPhase to "talk_main">>
<<goto "RelNPC_Page">>
<</button>>
<</if>>
/% end phase switch %/
</div>
</div>
<</nobr>><<nobr>>
<div style="background:#1a1208;border:1px solid #7a5c2a;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<div style="text-align:center;margin-bottom:12px">
<img src="images/encounters/mountain/nest.webp" style="width:100%;max-width:400px;border-radius:6px;border:2px solid #7a5c2a" onerror="this.style.display='none'">
</div>
<div style="text-align:center;color:#c9a040;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
🦅 The Harpies' Roost
</div>
<div style="font-size:0.9em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
High on a jagged cliff face, the wind carries the foul stench of rotting meat. Tucked into a narrow gorge is a massive nest built from dead pines and the bleached bones of unfortunate climbers.
<br><br>
Above it, two winged women with razor-sharp talons circle in the updraft, screeching at one another. You can see the glint of scavenged gold sparkling among the bones in their nest.
</div>
<div style="display:flex;flex-direction:column;gap:8px">
<<button "⚔ Attack the flock">>
<<set $returnTo to "Mountain">>
<<run setup.initCombat([
clone(setup.enemyPresets.Harpy),
clone(setup.enemyPresets.Harpy)
])>>
<<goto "CombatPage">>
<</button>>
<<button "🚶 Back away into the shadows">>
<div style="font-size:0.85em;color:#888;font-style:italic;margin-top:8px;text-align:center">
A few coins aren't worth getting your eyes pecked out. You retreat quietly.
</div>
<<goto "Mountain">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<<if not $smithRescuePhase>><<set $smithRescuePhase to "intro">><</if>>
<div style="background:#1a1208;border:1px solid #5c4d2d;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<<if $smithRescuePhase is "intro">>
<div style="text-align:center;margin-bottom:12px">
<img src="images/NPC/smith/captive.webp" style="width:100%;max-width:800px;border-radius:6px;border:2px solid #5c4d2d" onerror="this.style.display='none'">
</div>
<div style="text-align:center;color:#d9b36c;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:2px">
🐂 Beasts on the Trail
</div>
<div style="font-size:0.95em;color:#ccc;margin-bottom:15px;font-style:italic;text-align:center">
You are climbing a narrow, treacherous stretch of the mountain path when you hear heavy, thundering footsteps approaching. You duck behind an outcrop just in time.
<br><br>
Two massive Minotaur warriors stomp down the trail. Slung casually over the shoulder of the largest beast is a completely nude woman, her hands bound tightly. She is kicking and fighting like a wildcat, though the beast hardly seems to notice.
<br><br>
Suddenly, she locks eyes with you hidden in the rocks.
<br><br>
"Hey! You!" she screams, thrashing wildly. "Don't just stand there! Help me!"
</div>
<div style="display:flex;flex-direction:column;gap:10px">
<<button "⚔ Attack the Minotaurs">>
<<set $smithRescuePhase to "victory">>
<<set $returnTo to "Event_SmithRescue">>
<<run setup.initCombat([
clone(setup.enemyPresets.Minotaur),
clone(setup.enemyPresets.Minotaur)
])>>
<<goto "CombatPage">>
<</button>>
<<button "🚶 Ignore her and hide">>
<div style="font-size:0.85em;color:#888;font-style:italic;margin-top:8px;text-align:center">
You press your back against the stone and let them pass. You need a smith, but risking your life against two minotaurs right now is madness. You'll have to come back later.
</div>
<<goto "Mountain">>
<</button>>
</div>
<<elseif $smithRescuePhase is "victory">>
<div style="text-align:center;margin-bottom:12px">
<img src="images/NPC/smith/saved.webp" style="width:100%;max-width:600px;border-radius:6px;border:2px solid #5c4d2d" onerror="this.style.display='none'">
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px;text-align:center">
The massive beasts hit the dirt with a ground-shaking thud. The woman had been dropped during the fight and is currently lying on the rocky ground, panting heavily, her wrists still tied. You walk over, draw your knife, and slice the thick ropes.
</div>
<div style="text-align:center;margin-bottom:12px">
<img src="images/NPC/smith/sit.webp" style="width:100%;max-width:600px;border-radius:6px;border:2px solid #5c4d2d" onerror="this.style.display='none'">
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px;text-align:center">
She rubs her wrists, wincing slightly, before climbing up to sit on a nearby boulder. She doesn't seem the least bit bothered by her complete lack of clothing.
<br><br>
<<say "Leva" "images/NPC/smith/profile.webp" "Well. You certainly know how to swing an axe. Who are you?" "#cc6600">>
<br>
You tell her your name, and that you are building a camp in the valley below. Her eyes light up with interest.
<br><br>
<<say "Leva" "images/NPC/smith/profile.webp" "I'm Leva. I'm a Blacksmith by trade. Those overgrown cows raided my caravan and took all my gear... and my clothes, apparently. Tell me, Warlord—does your camp need an experienced smith?" "#cc6600">>
</div>
<div style="display:flex;flex-direction:column;gap:10px">
<<button "🤝 Yes. Welcome to the tribe.">>
<<set $smithRescuePhase to "recruit">>
<<goto "Event_SmithRescue">>
<</button>>
<<button "😏 I saved your life. How about a different kind of reward first?">>
<<set $smithRescuePhase to "joke">>
<<goto "Event_SmithRescue">>
<</button>>
<<button "🚶 No. Go your own way.">>
<<set $smithRescuePhase to "reject">>
<<goto "Event_SmithRescue">>
<</button>>
</div>
<<elseif $smithRescuePhase is "joke">>
<div style="text-align:center;margin-bottom:12px">
<img src="images/NPC/smith/finger.webp" style="width:100%;max-width:600px;border-radius:6px;border:2px solid #5c4d2d" onerror="this.style.display='none'">
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px;text-align:center">
You look her up and down, making your intentions clear. She bursts out laughing, shaking her head.
<br><br>
<<say "Leva" "images/NPC/smith/profile.webp" "Nice try, Warlord!" "#cc6600">>
<br>
She flashes you a bright smile and raises her middle finger right at your face.
<br><br>
<<say "Leva" "images/NPC/smith/profile.webp" "I work with steel, I don't pay my debts on my back. Now, are you going to hire me or what?" "#cc6600">>
</div>
<div style="display:flex;flex-direction:column;gap:10px">
<<button "🤝 Fine, you're hired. Let's go.">>
<<set $smithRewardBonus to 5>>
<<set $smithRescuePhase to "recruit">>
<<goto "Event_SmithRescue">>
<</button>>
<<button "🚶 Then I don't need you. Get lost.">>
<<set $smithRescuePhase to "reject">>
<<goto "Event_SmithRescue">>
<</button>>
</div>
<<elseif $smithRescuePhase is "recruit">>
<<if $smithRewardBonus is 5>>
<div style="text-align:center;margin-bottom:12px">
<video autoplay muted playsinline style="width:100%;max-width:800px;border-radius:8px;border:2px solid #5c4d2d">
<source src="images/NPC/smith/joke.webm" type="video/webm">
</video>
</div>
<<else>>
<div style="text-align:center;margin-bottom:12px">
<img src="images/NPC/smith/join.webp" style="width:100%;max-width:600px;border-radius:6px;border:2px solid #5c4d2d">
</div>
<</if>>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px;text-align:center">
<<if $smithRewardBonus is 5>>
<p><i>As she gets up, she looks back at you with a wicked glint in her eye. She pauses, deliberately arching her back to show off her bare ass, shaking it playfully before laughing.</i></p>
<<say "Leva" "images/NPC/smith/profile.webp" "There. That's the only 'reward' you're getting today. Now move it, Chief!" "#cc6600">>
<<else>>
<p>She grins broadly and hops off the rock, prying a massive weapon from a dead minotaur to use as a walking stick.</p>
<<say "Leva" "images/NPC/smith/profile.webp" "Lead the way, Boss. Let's see this forge of yours." "#cc6600">>
<</if>>
</div>
<<set $smithFound to true>>
<<set $quest_smith to 2>>
<<set _totalLove to 10 + ($smithRewardBonus || 0)>>
<<set $relNPCs["leva"].love to setup.clamp($relNPCs["leva"].love + _totalLove, 0, 100)>>
<div style="color:#88ccff; text-align:center; font-weight:bold; margin-bottom:10px;">
Leva has joined the camp! (<<print "+" + _totalLove>> Love)
</div>
<<set $eventLog.push("Day " + $day + ": Rescued Leva the Smith. She has joined the camp.")>>
<<button "Continue up the mountain">>
<<unset $smithRescuePhase>>
<<unset $smithRewardBonus>>
<<unset $smithVideoShown>>
<<goto "Mountain">>
<</button>>
<<elseif $smithRescuePhase is "reject">>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px;text-align:center">
Her smile vanishes instantly. She glares at you, crossing her arms over her bare chest.
<br><br>
<<say "Leva" "images/NPC/smith/profile.webp" "Your loss, Warlord. Hope your swords rust." "#cc6600">>
<br>
She turns on her heel and begins marching down the mountain path alone, picking up a heavy branch along the way to defend herself. You watch her go.
</div>
<<button "Continue up the mountain">>
<<unset $smithRescuePhase>>
<<goto "Mountain">>
<</button>>
<</if>>
</div>
<</nobr>><<nobr>>
<<if not $shamanPhase>><<set $shamanPhase to "intro">><</if>>
<div style="background:#0a050f;border:1px solid #4b2c5e;border-radius:8px;padding:15px;font-family:serif;line-height:1.6">
<!-- ====================== INTRO ====================== -->
<<if $shamanPhase is "intro">>
<div style="text-align:center;margin-bottom:12px">
<img src="images/NPC/shaman/rite.webp" style="width:100%;max-width:400px;border-radius:6px;border:2px solid #4b2c5e">
</div>
<div style="text-align:center;color:#a366ff;font-weight:bold;margin-bottom:8px;text-transform:uppercase;letter-spacing:3px">
✨ The Midnight Rite
</div>
<div style="font-size:0.95em;color:#ccc;margin-bottom:15px;text-align:center">
The forest is unnaturally silent tonight. Following a faint violet glow, you find a small clearing.<br><br>
A woman stands nude before a swirling bonfire, her back to you. She is chanting in a tongue that makes your skin crawl. Suddenly, she flings a handful of shimmering powder into the flames.
</div>
<div style="text-align:center;margin-bottom:15px">
<video autoplay muted playsinline style="width:100%;max-width:800px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/explosion.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ccc;margin-bottom:15px;text-align:center">
<b>BOOM.</b> The world disappears in a flash of thick, sweet-smelling smoke. Your knees buckle as the ground feels like liquid beneath you.
</div>
<<button "🌀 Let the smoke take you...">>
<<set $shamanPhase to "dream">>
<<goto "Event_ShamanRescue">>
<</button>>
<<elseif $shamanPhase is "dream">>
<<if $player.gender is "male">>
<!-- ====================== MALE MC DREAM ====================== -->
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:800px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/dream_m1.webm" type="video/webm">
</video>
</div>
<div style="font-size:1.05em;color:#e0b3ff;margin-bottom:18px;text-align:center">
You float weightless in a sea of stars and violet mist. The shaman appears before you, her body glowing, eyes burning with ancient hunger.
<br><br>She straddles you in mid-air, her slick heat sliding down your cock in one smooth motion.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:800px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/dream_m2.webm" type="video/webm">
</video>
</div>
<div style="font-size:1.05em;color:#e0b3ff;margin-bottom:18px;text-align:center">
She rides you slowly at first, then harder, her breasts bouncing as purple sparks swirl around you both.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:800px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/dream_m3.webm" type="video/webm">
</video>
</div>
<div style="font-size:1.05em;color:#e0b3ff;margin-bottom:25px;text-align:center">
She leans down, kissing you deeply while grinding on your cock. Her voice echoes in your mind:
<i>"Give me your seed, Warlord… let the spirits taste your power."</i>
</div>
<<button "✨ Surrender to the vision">>
<<set $shamanPhase to "recruit">>
<<goto "Event_ShamanRescue">>
<</button>>
<<else>>
<!-- ====================== FEMALE MC DREAM ====================== -->
<div style="text-align:center;margin-bottom:12px">
<img src="images/NPC/shaman/ritekiss.webp" style="width:100%;max-width:400px;border-radius:6px;border:2px solid #4b2c5e">
</div>
<div style="font-size:1.05em;color:#e0b3ff;margin-bottom:18px;text-align:center">
You float in a glowing purple void. The shaman appears, her skin shimmering. She presses her naked body against yours, kissing you with hungry passion.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:800px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/dream_f2.webm" type="video/webm">
</video>
</div>
<div style="font-size:1.05em;color:#e0b3ff;margin-bottom:18px;text-align:center">
She slides down your body and buries her face between your thighs, licking and sucking your clit with supernatural skill.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:800px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/dream_f3.webm" type="video/webm">
</video>
</div>
<div style="font-size:1.05em;color:#e0b3ff;margin-bottom:18px;text-align:center">
You both lock into a passionate 69, licking each other desperately while floating in the mist.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:380px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/dream_f4.webm" type="video/webm">
</video>
</div>
<div style="font-size:1.05em;color:#e0b3ff;margin-bottom:25px;text-align:center">
She scissors her soaked pussy against yours, grinding hard until both of you shatter in a shared, mind-breaking orgasm.
</div>
<<button "✨ Wake from the vision">>
<<set $shamanPhase to "recruit">>
<<goto "Event_ShamanRescue">>
<</button>>
<</if>>
<!-- ====================== RECRUIT ====================== -->
<<elseif $shamanPhase is "recruit">>
<div style="text-align:center;margin-bottom:12px">
<img src="images/NPC/shaman/kneeling.webp" style="width:100%;max-width:500px;border-radius:6px;border:2px solid #4b2c5e">
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px;text-align:center">
You gasp awake. The fire has burned low. Kaelith kneels beside you, wrapped in a fur shawl, watching you with a satisfied smile.
<br><br>
<<say "Kaelith" "images/NPC/shaman/profile.webp" "A powerful vision… your soul has a very distinctive taste, Warlord." "#a366ff">>
<br>
She stands and offers you her hand.
<br><br>
<<say "Kaelith" "images/NPC/shaman/profile.webp" "I am Kaelith, speaker of the old spirits. I have seen your camp in the smoke. You will need a healer who understands the ancient ways. Shall I join you?" "#a366ff">>
</div>
<<set $shamanFound to true>>
<<set $quest_shaman to 2>>
<<set $relNPCs["kaelith"].love to setup.clamp($relNPCs["kaelith"].love + 10, 0, 100)>>
<div style="color:#a366ff; text-align:center; font-weight:bold; margin:15px 0;">
✨ Kaelith has joined your camp! (+10 Love)
</div>
<<button "Lead her back to camp">>
<<unset $shamanPhase>>
<<goto "CampHub">>
<</button>>
<</if>>
</div>
<</nobr>><<nobr>>
<<if not $marketPhase>><<set $marketPhase to "browse">><</if>>
<div style="text-align:center">
<img src="images/locations/market.webp" style="width:100%;max-width:600px;border-radius:8px;border:2px solid #d9b36c;margin-bottom:15px">
<h2>Highcrest Central Market</h2>
<p style="color:#aaa;font-size:0.9em">The smell of spices, raw meat, and expensive perfume fills the air. Merchants shout prices while guards in polished armor patrol the cobblestone streets.</p>
</div>
<hr style="border:0;height:1px;background:#d9b36c;margin:15px 0">
<div id="market-feedback" style="text-align:center; color:gold; font-weight:bold; min-height:1.5em; margin-bottom:10px;"></div>
<<if $marketPhase is "browse">>
<table style="width:100%; border-collapse: collapse; background: #1a1a1a; color: #eee; text-align: center;">
<tr style="border-bottom: 2px solid #444;">
<th>Resource</th>
<th>Price</th>
<th>In Bag</th>
<th>Action</th>
</tr>
<tr>
<td>🪵 Wood</td>
<td>10g</td>
<td>$wood</td>
<td>
<<button "Buy">>
<<if $gold gte 10>>
<<set $gold -= 10>><<set $wood++>>
<<replace "#market-feedback">>Purchased 1 Wood.<</replace>>
<<goto "CityMarket">>
<<else>>
<<replace "#market-feedback">><span style="color:red">Not enough gold!</span><</replace>>
<</if>>
<</button>>
</td>
</tr>
<tr>
<td>⛏️ Iron</td>
<td>20g</td>
<td>$iron</td>
<td>
<<button "Buy">>
<<if $gold gte 20>>
<<set $gold -= 20>><<set $iron++>>
<<replace "#market-feedback">>Purchased 1 Iron.<</replace>>
<<goto "CityMarket">>
<<else>>
<<replace "#market-feedback">><span style="color:red">Not enough gold!</span><</replace>>
<</if>>
<</button>>
</td>
</tr>
<tr>
<td>🦊 Pelts</td>
<td>15g / 10g</td>
<td>$pelts</td>
<td>
<<button "Buy">>
<<if $gold gte 15>>
<<set $gold -= 15>><<set $pelts++>>
<<goto "CityMarket">>
<</if>>
<</button>>
<<button "Sell">>
<<if $pelts gte 1>>
<<set $gold += 10>><<set $pelts-->>
<<replace "#market-feedback">>Sold 1 Pelt.<</replace>>
<<goto "CityMarket">>
<</if>>
<</button>>
</td>
</tr>
</table>
<div style="margin-top:20px; background:#221a10; padding:15px; border:1px solid #444; border-radius:8px;">
<h3>🌘 The Shady Alley</h3>
<p>You notice an unattended cart full of supplies near a dark alley. The guards are currently distracted by a drunken brawl nearby.</p>
<<button "🧤 Attempt to Steal (Risk of Guards)">>
<<set _roll to random(1, 100)>>
<<if _roll gt 60>>
<<set $marketPhase to "guards">>
<<goto "CityMarket">>
<<else>>
<<set _loot to random(1, 3)>>
<<set $gold += random(5, 15)>>
<<replace "#market-feedback">>Success! You snatched a pouch full of coins.<</replace>>
<</if>>
<</button>>
<br><br>
<<button "💋 Look for company (30g)">>
<<if $gold gte 30>>
<<set $gold -= 30>>
<<goto "Event_Prostitute">>
<<else>>
<<replace "#market-feedback">><span style="color:#ff4444">You don't have enough gold for that.</span><</replace>>
<</if>>
<</button>>
</div>
<<elseif $marketPhase is "guards">>
<div style="background:#400; border:2px solid red; padding:20px; border-radius:8px; text-align:center;">
<h2 style="color:white;">HALT!</h2>
<p>A pair of City Guards spot you with your hands in the merchant's cart. They draw their maces and block your path.</p>
<div style="display:flex; flex-direction:column; gap:10px; max-width:300px; margin:0 auto;">
<<button "🏃 Run for it">>
<<if $player.agi gte 15>>
<<set $marketPhase to "browse">>
<<run UI.alert("You slip through the crowd and vanish into the sewers!")>>
<<goto "City">>
<<else>>
<<run UI.alert("You tripped over a cabbage crate! They've got you pinned.")>>
<</if>>
<</button>>
<<button "💰 Bribe them (50g)">>
<<if $gold gte 50>>
<<set $gold -= 50>>
<<set $marketPhase to "browse">>
<<run UI.alert("'We didn't see anything... this time.' The guards walk away.")>>
<<goto "CityMarket">>
<<else>>
<<run UI.alert("You don't have enough gold to satisfy their greed.")>>
<</if>>
<</button>>
<<button "⚔️ Fight your way out">>
<<set $returnTo to "CityMarket">>
<<set $marketPhase to "browse">>
<<run setup.initCombat([
clone(setup.enemyPresets.Guard),
clone(setup.enemyPresets.Guard),
clone(setup.enemyPresets.Guard)
])>>
<<goto "CombatPage">>
<</button>>
<<button "⚖️ Surrender (Arrested)">>
<<set $gold to Math.floor($gold * 0.5)>>
<<set $isPrisoner to true>>
<<set $marketPhase to "browse">>
<<goto "CityJail">>
<</button>>
</div>
</div>
<</if>>
<br>
<center>
<<button "Leave Market">>
<<set $marketPhase to "browse">>
<<goto "City">>
<</button>>
</center>
<</nobr>><<nobr>>
<<if not $prostitutePhase>><<set $prostitutePhase to "intro">><</if>>
<div style="background:#1a0a0f;border:1px solid #7a1a3a;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.55">
<div style="text-align:center;color:#ff69b4;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">
💋 Quick Encounter
</div>
<!-- ====================== MAIN PICTURE (same for both genders) ====================== -->
<<if $prostitutePhase is "intro">>
<div style="text-align:center;margin-bottom:15px">
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a">
<source src="images/encounters/city/prostitute.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px;text-align:center">
The young prostitute smiles at you with practiced hunger and she unfastens her corset to show her merchandise. She is beautiful, with full lips and teasing eyes, clearly experienced in giving exactly what her clients want.
</div>
<<button "Begin">>
<<set $prostitutePhase to "play">>
<<goto "Event_Prostitute">>
<</button>>
<!-- ====================== PLAY SEQUENCE ====================== -->
<<elseif $prostitutePhase is "play">>
<<if $player.gender is "male">>
<!-- ====================== MALE MC ====================== -->
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a">
<source src="images/encounters/city/male_1.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
You push her down to her knees in the alley. She looks up at you eagerly as you take out your cock and slide it between her soft lips.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a">
<source src="images/encounters/city/male_2.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">
You grab her hair and fuck her mouth deep and hard. She takes it beautifully, gagging slightly but never pulling away.
<br><br>
At the last moment you pull out and explode across her pretty face and open mouth, thick ropes of cum painting her lips, cheeks and tongue.
</div>
<<else>>
<!-- ====================== FEMALE MC ====================== -->
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a">
<source src="images/encounters/city/female_1.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:20px">
You lean back against the wall, spread your legs wide and pull her face between your thighs. She immediately starts licking your pussy with long, eager strokes.
</div>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a">
<source src="images/encounters/city/female_2.webm" type="video/webm">
</video>
</div>
<div style="font-size:0.95em;color:#ddd;margin-bottom:25px">
Her tongue works expertly on your clit until you cum hard, moaning as you grind against her face. She keeps licking through your orgasm, then looks up with a satisfied smile, your juices glistening on her lips.
</div>
<</if>>
<!-- SHARED ENDING -->
<<set $player.lust to 0>>
<<set $eventLog.push("Day " + $day + ": Quick encounter with a prostitute.")>>
<<button "Leave her and continue">>
<<unset $prostitutePhase>>
<<goto "City">> <!-- or wherever you want to return -->
<</button>>
<</if>>
</div>
<</nobr>><<nobr>>
<div style="background:#2b0f0f; border:1px solid red; padding:20px; border-radius:8px; text-align:center;">
<h2 style="color:#ff4444;">CAMP UNDER ATTACK!</h2>
<div style="text-align:center;margin-bottom:15px">
<img src="images/encounters/raiders.webp" style="width:100%;max-width:800px;border-radius:8px;border:3px solid #7a6a1a" onerror="this.style.display='none'">
</div>
<p style="color:#ddd; font-size:1.1em;">
You are jolted awake by the sound of splintering wood and screaming.
You step out of your tent to find the camp surrounded. It seems the bandits you fought off at the village tracked you back to your base.
</p>
<<button "Grab your weapon and fight!">>
<<goto "CombatPage">>
<</button>>
</div>
<</nobr>><<nobr>>
<div style="text-align:center">
<img src="images/locations/sewer.webp" style="width:100%;max-width:600px;border-radius:8px;border:2px solid #222;margin-bottom:15px">
<h2 style="color:#555;">The Sewer Grate</h2>
</div>
<div style="background:#050505; padding:20px; border:1px solid #222; border-radius:8px; color:#888; font-style:italic;">
A heavy iron grate lies partially ajar here, leading down into the city's underbelly. A thick, foul-smelling mist clings to the stone steps.
<br><br>
You lean over the edge, but the darkness below is absolute. It's like looking into an abyss—without a **strong light source**, entering would be suicide. You'd likely trip and break your neck, or worse, walk straight into the arms of whatever dwells in the filth.
</div>
<div style="margin-top:20px; text-align:center;">
<div style="padding:10px; border:1px solid #333; color:#444; display:inline-block; border-radius:4px; margin-bottom:10px;">
⚔️ Enter the Sewers (Requires Light Source)
</div>
<br>
<<button "↩ Back to the City">>
<<goto "City">>
<</button>>
</div>
<</nobr>><<nobr>>
<div style="text-align:center">
<img src="images/locations/jailin.webp" style="width:100%;max-width:600px;border-radius:8px;border:2px solid #555;margin-bottom:15px">
<h2>Highcrest City Jail</h2>
</div>
<<if $isPrisoner>>
<div style="background:#2a0000; padding:20px; border:2px solid #ff4444; border-radius:8px; margin-bottom:15px;">
<p style="color:#ffaaaa; font-weight:bold;">You are behind bars.</p>
<p>The iron door slams shut. A guard with a bored expression rattles his keys against the bars. "You've got two choices, thief. Pay the fine for your 'misunderstanding' or rot in here until morning."</p>
<div style="display:flex; flex-direction:column; gap:10px; max-width:300px; margin:0 auto;">
<<button "💰 Pay Fine (100g)">>
<<if $gold gte 100>>
<<set $gold -= 100>>
<<set $isPrisoner to false>>
<<run UI.alert("The guard grunts and unlocks the cell. 'Don't let me see your face again today.'")>>
<<goto "CityJail">>
<<else>>
<<run UI.alert("You don't have enough gold to pay the fine!")>>
<</if>>
<</button>>
<<button "💤 Sleep in Jail (Pass 1 Day)">>
<<passTime 1440>> /% 24 Hours %/
<<set $isPrisoner to false>>
<<run UI.alert("You spend a miserable night on a cold stone floor. You are released the next morning, hungry and sore.")>>
<<goto "CityJail">>
<</button>>
</div>
</div>
<<else>>
<div style="background:#1a1a1a; padding:15px; border:1px solid #444; border-radius:8px; margin-bottom:15px;">
<p>The air here is damp and smells of rust. A few guards sit at a desk, ignoring you as you walk through the public entrance.</p>
<h3 style="color:#64b5f6;">Notice Board</h3>
<p style="font-style:italic; color:#888;">There are several **Wanted Posters** pinned to the board. Most are for petty thieves, but a few mention dangerous beasts in the outskirts.</p>
<div style="padding:10px; border:1px solid #333; color:#555; display:inline-block; border-radius:4px;">
📜 Examine Wanted Posters (Coming Soon)
</div>
</div>
<div style="text-align:center;">
<<button "↩ Leave Jail">>
<<goto "City">>
<</button>>
</div>
<</if>>
<</nobr>><<nobr>>
<div style="text-align:center">
<img src="images/locations/cathedralin.webp" style="width:100%;max-width:600px;border-radius:8px;border:2px solid #d4af37;margin-bottom:15px">
<h2 style="color:#d4af37;">The Grand Cathedral</h2>
</div>
<div style="background:#111; padding:15px; border:1px solid #444; border-radius:8px; margin-bottom:20px;">
<p style="color:#ccc;">The air here is cool and thick with the smell of myrrh and burning wax. The stained glass windows cast long, bloody shadows across the stone floor. Priests in heavy robes murmur in the corners.</p>
<p style="color:#aaa; font-style:italic;">Tucked away in the darkest alcove is a heavy wooden confessional booth. The velvet curtain is drawn back, inviting the weary to unburden their souls.</p>
<<if $quest_strangering is 2>>
<hr style="border:0; height:1px; background:#444; margin:15px 0;">
<p style="color:#ff8866; margin:0; font-weight:bold;">
The ring pulses against your skin, resonating with a faint, holy energy beneath your feet. You notice an iron-wrought door heavily shadowed behind the main altar—the entrance to the forgotten crypts.
</p>
<</if>>
</div>
<div style="text-align:center; display:flex; flex-direction:column; gap:10px; max-width: 300px; margin: 0 auto;">
<<button "🙏 Confess your sins">>
<<goto "Event_Confession">>
<</button>>
<<if $quest_strangering is 2>>
<br>
<<button "🗝️ Slink into the Crypts">>
<<goto "Cathedral_Crypts">>
<</button>>
<</if>>
<br>
<<button "↩ Leave Cathedral">>
<<goto "City">>
<</button>>
</div>
<</nobr>><<nobr>>
<<set $confessionStage to $confessionStage || "intro">>
<div style="background:#0a0a0a; border:1px solid #d4af37; padding:25px; border-radius:8px; text-align:center; max-width:720px; margin:0 auto;">
<h2 style="color:#d4af37; margin-bottom:20px;">The Confessional</h2>
<<if $confessionStage is "intro">>
<div style="margin-bottom:20px;">
<img src="images/encounters/city/confessional.webp" style="width:100%; max-width:520px; border-radius:8px; border:2px solid #d4af37;">
</div>
<div style="text-align:left; color:#ddd; line-height:1.6; font-style:italic; padding:0 20px; margin-bottom:25px;">
You kneel in the cramped, pitch-black booth. The wooden lattice screen slides open with a dry scrape. You can’t see the priest, but you hear his slow, wheezing breath.<br><br>
You speak of the blood on your hands, the villages you burned, the men you cut down to build your empire. For a long time the priest says nothing.
</div>
<</if>>
<<if $player.gender is "male">>
<div style="text-align:left; color:#ddd; line-height:1.6; font-style:italic; padding:0 20px; margin-bottom:25px;"> The priest’s breathing suddenly turns into a snarl. </div>
<p style="color:#ddd; text-align:left;">
<<say "Priest" "images/encounters/city/priest.webp" "You… you dare bring such filth into the house of the gods?!” he roars. “Butcher! Monster! You have spilled innocent blood and now you seek absolution?! Get OUT!">>
</p>
The priest slams the lattice shut, then bursts out of his side of the booth and drags you into the middle of the cathedral square, still screaming:
<div style="background:#220000; padding:18px; font-style:italic; color:#ff8888; text-align:left; max-width:500px; margin:0 auto 25px;">
<<say "Priest" "images/encounters/city/priest.webp" "Look upon this warlord! This killer of the faithful! The gods reject you!">>
</div>
<div style="color:#ffaa77; font-weight:bold; margin-bottom:20px;">
The crowd stares. You are publicly shamed. (-15 Energy, -20 Reputation)
</div>
<<button "Leave in shame">>
<<unset $confessionStage>>
<<goto "Cathedral">>
<</button>>
<<else>>
<<if $confessionStage is "intro">>
<div style="margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a">
<source src="images/encounters/city/confessional_confess.webm" type="video/webm">
</video>
</div>
<div style="text-align:left; background:#1a0f0f;">
<<say "Priest" "images/encounters/city/priest.webp" "“Such heavy sins for one so beautiful…” the priest murmurs, voice thick with lust. “Words alone are not enough for the gods to forgive you, child.<br><br>
Would you… perform a true act of repentance? Right here… through the screen?”">>
</div>
<<button "Agree to his request">>
<<set $confessionStage = "blowjob">>
<<goto "Event_Confession">>
<</button>>
<<button "Refuse and leave">>
<<unset $confessionStage>>
<<goto "Cathedral">>
<</button>>
<<elseif $confessionStage is "blowjob">>
<div style="margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a">
<source src="images/encounters/city/confessional_blowjob1.webm" type="video/webm">
</video>
</div>
<div style="font-weight:bold; margin-bottom:20px;">
You reluctantly lean forward and take the priest’s thick cock into your mouth, licking him slowly at first and then taking all of his throbbing shaft.
</div>
<div style="margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a">
<source src="images/encounters/city/confessional_blowjob2.webm" type="video/webm">
</video>
</div>
<<button "Let him cum on your face">>
<<set $confessionStage = "facial1">>
<<goto "Event_Confession">>
<</button>>
<<button "Tell him to come inside the stall and fuck you">>
<<set $confessionStage = "ride">>
<<goto "Event_Confession">>
<</button>>
<<elseif $confessionStage is "facial1">>
<div style="margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a">
<source src="images/encounters/city/confessional_facial.webm" type="video/webm">
</video>
</div>
<div style="font-weight:bold; margin:25px 0;">
The priest groans and explodes across your face, thick ropes of cum painting your cheeks and lips.
</div>
<<button "Step out of the booth">>
<<unset $confessionStage>>
<<goto "Cathedral">>
<</button>>
<<elseif $confessionStage is "ride">>
<div style="margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a">
<source src="images/encounters/city/confessional_ride.webm" type="video/webm">
</video>
</div>
<div style="text-align:left; color:#ddd; padding:0 20px; margin-bottom:20px;">
The priest slips into your side of the booth. You push him down and ride his thick cock deep inside you.
</div>
<<button "Continue in missionary">>
<<set $confessionStage = "missionary">>
<<goto "Event_Confession">>
<</button>>
<<elseif $confessionStage is "missionary">>
<div style="margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a">
<source src="images/encounters/city/confessional_missionary.webm" type="video/webm">
</video>
</div>
<div style="font-weight:bold; margin:25px 0;">
He bends you over the wooden bench and fucks you hard in missionary, pounding deep.
</div>
<div style="margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a">
<source src="images/encounters/city/confessional_missionary2.webm" type="video/webm">
</video>
</div>
<<button "Receive his final load">>
<<set $confessionStage = "facial2">>
<<goto "Event_Confession">>
<</button>>
<<elseif $confessionStage is "facial2">>
<div style="margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a">
<source src="images/encounters/city/confessional_facial.webm" type="video/webm">
</video>
</div>
<div style="font-weight:bold; margin:25px 0;">
He pulls out and covers your face and tits with hot cum, marking you as truly repentant.
</div>
<<button "Step out of the booth">>
<<unset $confessionStage>>
<<goto "Cathedral">>
<</button>>
<</if>>
<</if>>
</div>
<</nobr>><<nobr>>
<div style="background: #111; padding: 20px; border: 1px solid #555; border-radius: 5px; box-shadow: 0 0 15px rgba(100, 0, 0, 0.3);">
<<if $shamanEventPhase is undefined>>
<<set $shamanEventPhase to "intro">>
<</if>>
<<if $shamanEventPhase is "intro">>
<h2 style="color: #ff4444; border-bottom: 1px solid #444; padding-bottom: 5px;">The Anchor of Flesh</h2>
<p>You wake up in the dead of night. An unnatural, freezing mist has rolled through the camp, chilling you to the bone. Glancing toward Kaelith's tent, you notice the flap is open and she is nowhere to be found.</p>
<br>
<center> <img src="images/NPC/shaman/empty.webp" style="width:100%;max-width:700px;border-radius:8px;border:2px solid #444;margin-bottom:15px" onerror="this.style.display='none'"></center>
<br>
<p>A faint, rhythmic chanting echoes from the treeline just beyond the camp's borders. Following her bare footprints in the frost, you step into the dark woods.</p>
<br>
<<button "Follow the chanting">>
<<set $shamanEventPhase to "voyeur">>
<<goto "Event_ShamanRitual1">>
<</button>>
<<elseif $shamanEventPhase is "voyeur">>
<h2 style="color: #ff4444; border-bottom: 1px solid #444; padding-bottom: 5px;">A Bloody Altar</h2>
<p>You find her in a clearing illuminated only by pale moonlight. Kaelith has constructed a crude altar of animal bones. She is completely nude, her skin painted in strange, glowing red runes.</p>
<p>She is in the throes of an intense, frantic dance, arms raised to the sky as she chants in an obscure, guttural language.</p>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:800px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/ritual1.webm" type="video/webm">
</video>
</div>
<p>As you watch, the air around her begins to physically distort. The temperature plummets, and you hear a terrifying, echoing sound: the rapid chattering of razor-sharp teeth coming from the empty air above the altar.</p>
<p>You look down. The shaman has collapsed onto her back on the frozen ground. Her chest heaves violently, her painted breasts rising and falling in desperate gasps. Her eyes are half-lidded and glassy, her lips parted in a silent, needy moan. An invisible, otherworldly force has seized her — a dark, primal lust that makes her body arch and tremble uncontrollably, her thighs rubbing together as her hips buck helplessly against nothing.</p>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:800px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/ritual2.webm" type="video/webm">
</video>
</div>
<p>Her painted hands slide frantically down her sweat-slicked body until they reach between her spread thighs. With a broken moan she begins to masturbate furiously — two fingers plunging deep inside her soaked pussy while her thumb rubs her swollen clit in desperate, frantic circles.</p>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:800px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/ritesolo.webm" type="video/webm">
</video>
</div>
<p>Her moans grow louder and more desperate. Her back arches violently off the ground as the invisible force drives her closer and closer to the edge. Suddenly her entire body seizes up — she lets out a raw, shattering cry as a powerful orgasm tears through her.</p>
<p>At the exact moment she cums, the rift above the altar tears open violently. A blinding explosion of purple light and thick smoke erupts, throwing her body back against the frozen dirt. The chattering teeth fall silent as the veil between worlds snaps shut.</p>
<br>
<<button "Step out of the shadows">>
<<set $shamanEventPhase to "lore">>
<<goto "Event_ShamanRitual1">>
<</button>>
<<elseif $shamanEventPhase is "lore">>
<h2 style="color: #ff4444; border-bottom: 1px solid #444; padding-bottom: 5px;">The Faceless Maw</h2>
<p>As you approach, she doesn't bother to cover herself. She looks up at you, frustrated, wiping a mixture of sweat and blood from her thigh.</p>
<p><<say "Kaelith" "images/NPC/shaman/profile.webp" "It wasn't enough," she pants. "There is a demon trapped in the ice of the Deep North. A creature of pure, ravenous lust. It has no eyes to see, no nose to smell... only pale flesh and a maw of jagged teeth." "#a366ff">></p>
<p>She pulls herself up, stepping close enough that her bare breasts brush against your armor. <<say "Kaelith" "images/NPC/shaman/profile.webp" "It guards an artifact that grants absolute dominion over form and desire. I tried to pull the creature through the veil, to force a pact... but my solitary lust isn't strong enough. It needs a true anchor." "#a366ff">></p>
<p> Her glowing eyes lock onto yours, full of carnal hunger. <<say "Kaelith" "images/NPC/shaman/profile.webp" "I need your raw, dominant essence, Warlord. Claim me on this altar. Imprint your violence onto my runes, so I can become the conduit." "#a366ff">></p>
<br>
<<button "Anchor her (Begin the Ritual)">>
<<set $shamanEventPhase to "climax">>
<<goto "Event_ShamanRitual1">>
<</button>>
<<elseif $shamanEventPhase is "climax">>
<h2 style="color: #ff4444; border-bottom: 1px solid #444; padding-bottom: 5px;">Imprinting the Runes</h2>
<<if $player.gender is "female">>
<!-- ====================== FEMALE MC - 5 VIDEO SEQUENCE ====================== -->
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:380px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/ritef1.webm" type="video/webm">
</video>
</div>
<p style="font-style:italic; color:#e0b3ff;">
Kaelith stands near the bloody altar stones and guides you to her glistening pussy. The glowing red runes on her thighs pulse in time with her heartbeat. You drop to your knees and devour her hungrily, tongue plunging deep inside her while you suck on her swollen clit.
</p>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:380px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/ritef2.webm" type="video/webm">
</video>
</div>
<p style="font-style:italic; color:#e0b3ff;">
With a wild moan she suddenly pushes you onto your back and dives between your legs, grinding her mouth on your soaked pussy as she takes control.
</p>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:380px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/ritef3.webm" type="video/webm">
</video>
</div>
<p style="font-style:italic; color:#e0b3ff;">
You spin her around and open her legs to lick her again. The runes on her skin flare brighter with every moan.
</p>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:380px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/ritef4.webm" type="video/webm">
</video>
</div>
<p style="font-style:italic; color:#e0b3ff;">
You slide two fingers deep inside her and finger-fuck her hard while sucking her clit. She screams as a violent orgasm rips through her, her pussy clenching around your fingers.
</p>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:380px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/ritef5.webm" type="video/webm">
</video>
</div>
<p style="font-style:italic; color:#e0b3ff;">
Still trembling, she immediately returns the favor — thrusting her fingers into you and rubbing your clit until you shatter in a powerful orgasm of your own.
</p>
<<else>>
<!-- ====================== MALE MC - 5 VIDEO SEQUENCE ====================== -->
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:380px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/ritem1.webm" type="video/webm">
</video>
</div>
<p style="font-style:italic; color:#e0b3ff;">
Kaelith drops to her knees on the cold altar stones, her glowing red runes pulsing. She looks up at you with hungry eyes and takes your hard cock into her warm mouth, sucking you eagerly and deeply.
</p>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:380px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/ritem2.webm" type="video/webm">
</video>
</div>
<p style="font-style:italic; color:#e0b3ff;">
She climbs on top of you, straddling your hips. With a desperate moan she grabs your cock and guides it into her soaked, tight pussy, sinking down until every inch is buried inside her.
</p>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:380px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/ritem3.webm" type="video/webm">
</video>
</div>
<p style="font-style:italic; color:#e0b3ff;">
She rides you hard and fast, her heavy breasts bouncing wildly as she fucks herself on your cock with primal need. The runes on her skin flare brighter with every slam of her hips.
</p>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:380px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/ritem4.webm" type="video/webm">
</video>
</div>
<p style="font-style:italic; color:#e0b3ff;">
You flip her onto her back and drive into her in missionary. Her thick, fat pussy lips stretch around your cock as you watch yourself disappear deep inside her with every powerful thrust.
</p>
<div style="text-align:center;margin-bottom:12px">
<video autoplay loop muted playsinline style="width:100%;max-height:380px;border-radius:8px;border:2px solid #a366ff">
<source src="images/NPC/shaman/ritem5.webm" type="video/webm">
</video>
</div>
<p style="font-style:italic; color:#e0b3ff;">
She looks up at you with desperate, lust-filled eyes and begs in a husky voice: <i> <<say "Kaelith" "images/NPC/shaman/profile.webp" "Give it to me… give me your cum!" "#a366ff">></i><br><br>
You pull out and slide your throbbing cock between her soft, heavy tits. She squeezes them around you as you fuck her cleavage. Moments later you explode, thick ropes of cum shooting across her face and into her hungry, open mouth.
</p>
<</if>>
<p>As you both catch your breath on the cold altar, Kaelith smiles weakly up at you, her body still trembling.</p>
<p><<say "Kaelith" "images/NPC/shaman/profile.webp" "It is done… The demon now knows your scent. We must go to it before the mark fades." "#a366ff">></p>
<div style="margin-top:20px; border: 1px solid #ffd700; padding: 15px; background: rgba(255, 215, 0, 0.1);">
<h3 style="color: #ffd700; margin-top: 0;">The Faceless Hunger</h3>
<p>Kaelith needs to travel to the Deep North to meet the demon. </p>
</div>
<<set $player.lust to 0>>
<<set $player.energy to Math.max($player.energy - 15, 0)>>
<<set $quest_shaman to 3>>
<<button "Return to Camp">>
<<set $shamanEventPhase to "intro">>
<<goto "CampHub">>
<</button>>
<</if>>
<</nobr>><<nobr>>
<div style="text-align:center">
<img src="images/locations/mine_entrance.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #444;" onerror="this.style.display='none'">
</div>
<div style="background: rgba(0,0,0,0.7); padding: 20px; border: 1px solid #555; border-radius: 8px; margin-top: 20px;">
<h2 style="color: #d9b36c;">The Hidden Maw</h2>
<p>Squinting against the glare of the mountain snow, you spot it—a geometric shadow that doesn't belong among the jagged rocks. As you draw closer, the scale of the find becomes clear. It isn't just a cave; it's a gate.</p>
<p>Leaning precariously against the entrance is a massive, broken dwarven statue. Its face is long since weathered away, but the heavy stone axe it clutches still points toward the dark tunnel within. This was once a <i>Karak</i>—a subterranean fortress of the old world.</p>
<div style="text-align:center">
<img src="images/locations/mine_in.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #444;" onerror="this.style.display='none'">
</div>
<p>As you step into the threshold, the temperature drops instantly. The air is stale, smelling of cold stone and the sickly sweet scent of rot. Thick, thorny vines crawl across the masonry, disappearing into a darkness so absolute it seems to swallow the light from the entrance.</p>
<hr style="border:0; height:1px; background:#444;">
<p style="font-style: italic; color: #aaa;">
<<if $player.gender is "male">>
You tighten the grip on your weapon, your instincts as a Warlord screaming of hidden eyes in the dark.
<<else>>
You adjust your gear, your senses sharp and blood-pressure rising as the shadows of the Karak loom over you.
<</if>>
</p>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 20px; align-items: center;">
<<button "Enter the abandoned Karak">>
<<set $dungeon_depth to 1>>
<<goto "Karak_Floor_1">>
<</button>>
<<button "Retreat to Safety">>
<<goto "Mountain">>
<</button>>
</div>
<</nobr>><<nobr>>
<div style="text-align:center">
<img src="images/encounters/driders.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #502d80;" onerror="this.style.display='none'">
</div>
<div style="background: rgba(20, 10, 30, 0.9); padding: 20px; border: 1px solid #502d80; border-radius: 8px; margin-top: 20px; border-left: 5px solid #502d80;">
<h2 style="color: #a370f7;">The Weavers in the Dark</h2>
<p>The narrow dwarven corridor opens into a vaulted transit chamber. Thick, greyish-white webbing blankets everything, vibrating with a rhythmic pulse.</p>
<p>Two shapes descend. Pale, lithe women from the waist up—bloated, hairy arachnids from the waist down.</p>
<p><strong>Drider:</strong> "Fresh meat... heart beats so loudly... let us wrap it in silk."</p>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 20px; align-items: center;">
<<button "⚔ Draw Weapon and Fight">>
<<set $returnTo to "Karak_Floor_1">>
<<run setup.initCombat([
clone(setup.enemyPresets.Drider),
clone(setup.enemyPresets.Drider)
])>>
<<goto "CombatPage">>
<</button>>
<<if $player.agi >= 15>>
<<button "🧭 Attempt to slip through the webs">>
<<set _roll to random(1, 20) + $player.agi>>
<<if _roll >= 30>>
<<run UI.alert("You move like a shadow, slipping through the webbing unnoticed.")>>
<<goto "Karak_Floor_1">>
<<else>>
<<run UI.alert("A strand of web snaps! The vibrations give you away—they've spotted you!")>>
<<set $returnTo to "Karak_Floor_1">>
<<run setup.initCombat([
clone(setup.enemyPresets.Drider),
clone(setup.enemyPresets.Drider)
])>>
<<goto "CombatPage">>
<</if>>
<</button>>
<<else>>
<div style="color: #666; font-size: 0.8em; font-style: italic;">(Agility 15 required to sneak)</div>
<</if>>
</div>
<</nobr>><<nobr>>
<div style="text-align:center">
<img src="images/encounters/karak_loot.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #d9b36c;" onerror="this.style.display='none'">
</div>
<div style="background: rgba(25, 20, 10, 0.9); padding: 20px; border: 1px solid #d9b36c; border-radius: 8px; margin-top: 20px; border-left: 5px solid #d9b36c;">
<h2 style="color: #d9b36c;">Dwarven Spoils</h2>
<p>In a side chamber off the main hall, you find the remains of what must have been a supply depot. Massive stone chests lie smashed open, their contents spilled across the dusty floor.</p>
<p>Most of the organic material—leather, grain, cloth—has long since rotted away into black sludge. However, the metal of the Dwarves was forged to last forever. You sift through the debris, looking for anything your tribe can use to survive the coming winter.</p>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 20px; align-items: center;">
<<button "Search the Ruins">>
<<set _roll to random(1, 30)>>
<<set _message to "You scavenged the following:\n\n">>
<<if _roll > 20>>
<<set _gain to random(10, 50)>>
<<set $gold += _gain>>
<<set _message += "💰 Gold: " + _gain>>
<<elseif _roll > 10>>
<<set _gain to random(5, 12)>>
<<set $iron += _gain>>
<<set _message += "⛏️ Iron: " + _gain>>
<<else>>
<<set _gain to random(10, 25)>>
<<set $stone += _gain>>
<<set _message += "🪨 Stone: " + _gain>>
<</if>>
<<run UI.alert(_message)>>
<<goto "Karak_Floor_1">>
<</button>>
<<button "Ignore and move on">>
<<goto "Karak_Floor_1">>
<</button>>
</div>
<</nobr>><<nobr>>
<div style="text-align:center">
<img src="images/locations/karaklibrary.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #4a90e2;" onerror="this.style.display='none'">
</div>
<div style="background: rgba(10, 20, 35, 0.9); padding: 20px; border: 1px solid #4a90e2; border-radius: 8px; margin-top: 20px; border-left: 5px solid #4a90e2;">
<h2 style="color: #4a90e2;">The Silent Archive</h2>
<p>You push open a set of heavy bronze doors, revealing a chamber lined with thousands of alcoves. Unlike the rest of the Karak, this room is eerily preserved. Dust motes dance in the light of your torch, settling on countless scrolls and stone-bound books.</p>
<p>In the center of the room sits a reading plinth. Resting upon it is a massive tome, its cover embossed with silver filigree depicting intertwining serpents.</p>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 20px; align-items: center;">
<<button "Open the Tome">>
<<goto "Karak_Event_Library_Read">>
<</button>>
<<button "Leave the archive alone">>
<<goto "Karak_Floor_1">>
<</button>>
</div>
<</nobr>><<nobr>>
<div style="background: rgba(30, 10, 20, 0.9); padding: 20px; border: 1px solid #ff69b4; border-radius: 8px; margin-top: 20px;">
<h3 style="color: #ff69b4;">Ancient Erotica</h3>
<center> <img src="images/encounters/book1.webp" style="width:100%; max-width:700px;" onerror="this.style.display='none'">
</center>
<p>You flip the heavy vellum pages. Instead of dry histories or ledger lines, you find incredibly detailed, hand-painted illustrations. They depict creatures of myth—centaurs, dryads, and even ancient gods—engaged in various acts of carnal intimacy.</p>
<center>
<img src="images/encounters/book2.webp" style="width:100%; max-width:700px;" onerror="this.style.display='none'">
</center>
<p>The drawings are more than just art; they are anatomical studies, meticulously labeled in an old dialect. You find yourself captivated by the complexity of the biology and the techniques described within the margins.</p>
<hr style="border:0; height:1px; background:#444;">
<<if not $library_read_bonus>>
<p style="color: #00ff00; font-weight: bold;">
Your mind expands as you decipher the ancient texts.
<br>+1 Intelligence
</p>
<<set $player.int += 1>>
<<set $library_read_bonus to true>>
<<else>>
<p style="color: #aaa; font-style: italic;">
You've already studied these texts. While the drawings remain impressive, there is nothing new to learn.
</p>
<</if>>
/* Increase Lust slightly because of the content */
<<set $player.lust = ($player.lust || 0) + 10>>
</div>
<div style="margin-top: 20px; text-align: center;">
<<button "Close the book and continue">>
<<goto "Karak_Floor_1">>
<</button>>
</div>
<</nobr>><<nobr>>
<div style="text-align:center; margin-bottom: 20px;">
<img src="images/encounters/young_drider.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #a89f91;" onerror="this.style.display='none'">
</div>
<div style="background: rgba(20, 15, 10, 0.95); padding: 20px; border: 1px solid #a89f91; border-radius: 8px; border-left: 5px solid #a89f91; margin-bottom: 20px;">
<h2 style="color: #d4c4a9;">An Unexpected Warning</h2>
<p>Before you reach the grand archway leading deeper into the Karak, a small shape drops from the ceiling. You draw your weapon but immediately pause. This Drider is smaller, her human half completely unblemished by the feral corruption of the Brood-Sisters you fought earlier.</p>
<p>She raises her hands in a placating gesture, her spider-legs tucking nervously beneath her.</p>
<p><<say "Lonely Drider" "images/encounters/young_drider.webp" "P-please, wait! I don't want to fight! My sisters... they can't help themselves. They are bound by the spell of the <b>Witch</b> who rules the deep dark.">></p>
<p><<say "Lonely Drider" "images/encounters/young_drider.webp" "If you want to end the corruption, you must reach her lair. But the archway is sealed. the way down is blocked.">></p>
<p>With a skittering retreat, she vanishes back up into the dark webbing, leaving you to face the archway alone.</p>
</div>
<div id="mirror-event-container">
<div style="background: rgba(10, 20, 35, 0.9); padding: 20px; border: 1px solid #4a90e2; border-radius: 8px; border-left: 5px solid #4a90e2;">
<h3 style="color: #4a90e2;">The Mirror of Souls</h3>
<img src="images/encounters/mirror/mirror.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #a89f91;" onerror="this.style.display='none'">
<p>You step up to the gate. Spanning the entire archway is a perfectly smooth barrier of liquid silver. As you approach, the surface ripples, and an exact replica of you steps forward from the silvery depths. The reflection mimics your posture perfectly, standing motionless, blocking the path forward.</p>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 20px; align-items: center;">
<<button "Step Left / Right">>
<<replace "#mirror-event-container">>
<div style="text-align:center; margin-bottom: 15px;">
<<if $player.gender is "male">>
<img src="images/encounters/mirror/standm.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #a89f91;" onerror="this.style.display='none'">
<<else>>
<img src="images/encounters/mirror/standf.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #a89f91;" onerror="this.style.display='none'">
<</if>>
</div>
<div style="background: rgba(10, 20, 35, 0.9); padding: 20px; border: 1px solid #4a90e2; border-radius: 8px;">
<p>You shift your weight and step to the side. The reflection does exactly the same, matching your speed and keeping itself perfectly positioned between you and the way forward. It refuses to yield the path.</p>
</div>
<div style="margin-top: 15px; text-align: center;">
<<button "Try something else">>
<<goto "Karak_Gate">>
<</button>>
</div>
<</replace>>
<</button>>
<<button "Touch the Mirror">>
<<replace "#mirror-event-container">>
<div style="background: rgba(10, 20, 35, 0.9); padding: 20px; border: 1px solid #4a90e2; border-radius: 8px;">
<<if $player.gender is "male">>
<img src="images/encounters/mirror/touchm.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #a89f91;" onerror="this.style.display='none'">
<<else>>
<img src="images/encounters/mirror/touchf.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #a89f91;" onerror="this.style.display='none'">
<</if>>
<p>You slowly raise your hand. The reflection raises its own hand in perfect sync. Your fingertips meet the cold, unyielding surface of the glass. There is no warmth, only a chilling magical barrier that pushes back with equal force. You cannot push through.</p>
</div>
<div style="margin-top: 15px; text-align: center;">
<<button "Try something else">>
<<goto "Karak_Gate">>
<</button>>
</div>
<</replace>>
<</button>>
<<if $player.gender is "female">>
<<button "Flash the mirror">>
<<replace "#mirror-event-container">>
<div style="text-align:center; margin-bottom: 15px;">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:10px;border:2px solid #9b4dff;">
<source src="images/encounters/mirror/flash.webm" type="video/webm">
</video>
</div>
<div style="background: rgba(10, 20, 35, 0.9); padding: 20px; border: 1px solid #4a90e2; border-radius: 8px;">
<p>You untie the rope that binds your leather chest armor and slowly let it fall open, fully exposing your breasts to the mirror.
It might be your imagination… but for a split second, you could swear your reflection winked at you with a sly, knowing grin. </p>
</div>
<div style="margin-top: 15px; text-align: center;">
<<button "Try something else">>
<<goto "Karak_Gate">>
<</button>>
</div>
<</replace>>
<</button>>
<</if>>
<<button "⚔️ Shatter the Glass (Attack)">>
<<set $returnTo to "Karak_Floor_1">>
<<set $gate_opened to true>>
<<set _mirror to clone(setup.enemyPresets.DarkReflection)>>
<<if $player.gender is "male">>
<<set _mirror.img to "images/portraits/male.webp">>
<<else>>
<<set _mirror.img to "images/portraits/female.webp">>
<</if>>
<<run setup.initCombat([_mirror])>>
<<goto "CombatPage">>
<</button>>
<<button "Turn and Walk Away">>
<<replace "#mirror-event-container">>
<div style="background: rgba(10, 30, 15, 0.95); padding: 20px; border: 1px solid #2ecc71; border-radius: 8px; border-left: 5px solid #27ae60;">
<h3 style="color: #2ecc71;">The Illusion Breaks</h3>
<p>Realizing that force and persistence are futile against a perfect reflection, you sigh, turn your back to the gate, and take a deliberate step away.</p>
<p>Behind you, there is a strange, wet sound—like tearing silk. You look over your shoulder. In the silver surface, your reflection didn't turn around with you. Instead, the dark image simply steps <i>out</i> of the frame, its form dissolving into ash and shadow.</p>
<img src="images/encounters/mirror/empty.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #a89f91;" onerror="this.style.display='none'">
<p>The silver liquid drains away, leaving the archway empty. The puzzle is solved, and the path to the Sorceress is open.</p>
<<set $gate_opened to true>>
</div>
<div style="margin-top: 15px; text-align: center;">
<<button "Descend Deeper">>
<<goto "Karak_Floor_1">>
<</button>>
</div>
<</replace>>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<div style="text-align:center">
<img src="images/encounters/goblin_ambush.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #502d80;" onerror="this.style.display='none'">
</div>
<div style="background: rgba(10, 30, 10, 0.9); padding: 20px; border: 1px solid #2d8030; border-radius: 8px; margin-top: 20px; border-left: 5px solid #2d8030;">
<h2 style="color: #4ef75e;">Silent Eyes in the Dark</h2>
<p>You step over a pile of dwarven rubble, the absolute silence of the Karak suddenly feeling like a weight against your chest. There is no skittering, no breathing—only the sudden, cold realization that you are being watched.</p>
<p>From the deep shadows behind the jagged stone pillars, four small, nimble figures materialize like ghosts. They are female Night Goblins, their skin a fungal green that blends perfectly with the damp masonry. They don't scream; they simply move with the lethal efficiency of practiced hunters.</p>
<p>Two of them crouch low, their serrated scrap-iron knives held in reverse grips, ready to ham-string you. Above them, perched silently on a crumbling ledge, two others have already drawn their black-wood bows. The faint glint of poison on their arrowheads is the only warning you get before they let fly.</p>
<p>They communicate only with sharp, bird-like hand signals, closing the circle around you with chilling precision.</p>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 20px; align-items: center;">
<<button "⚔ Draw Weapon and Fight">>
<<set $returnTo to "Karak_Floor_1">>
<<run setup.initCombat([
clone(setup.enemyPresets.Goblin),
clone(setup.enemyPresets.Goblin),
clone(setup.enemyPresets.GoblinArcher),
clone(setup.enemyPresets.GoblinArcher)
])>>
<<goto "CombatPage">>
<</button>>
</div>
<</nobr>><<nobr>>
<div id="lake-event-container">
<div style="text-align:center">
<img src="images/locations/karak_lake.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #48c9b0;" onerror="this.style.display='none'">
</div>
<div style="background: rgba(10, 25, 30, 0.9); padding: 20px; border: 1px solid #48c9b0; border-radius: 8px; margin-top: 20px; border-left: 5px solid #48c9b0;">
<h2 style="color: #48c9b0;">The Whispering Pool</h2>
<p>The narrow tunnel gives way to a massive, domed cavern. In the center lies a perfectly still, eerie subterranean lake, glowing faintly from bio-luminescent algae.</p>
<p>As you approach the water's edge, the surface ripples. A figure rises from the depths—a gorgeous, ethereal woman whose body seems made of semi-transparent water and pale light. She floats effortlessly up above the surface, gliding closer to you.</p>
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/lake_float.webm" type="video/webm"></video>
<p><<say "Lake Spirit" "images/encounters/lake_spirit.webp" "I have watched you wander these broken halls, your body carries the bruises of the deep dark. I can wash your pain away... if you are willing to receive my blessing." "#088f84">></p>
<p>She smiles, her gaze hungry yet benevolent, waiting for your answer.</p>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 20px; align-items: center;">
<<button "Accept her help">>
<<replace "#lake-event-container">>
<div style="background: rgba(10, 25, 30, 0.9); padding: 20px; border: 1px solid #48c9b0; border-radius: 8px; border-left: 5px solid #48c9b0;">
<p>You nod, stepping to the edge of the stone bank. The spirit's smile widens into something deeply carnal. She drifts closer until she is hovering directly over you.</p>
<p>To your surprise, she reaches down between her own translucent thighs. Her fingers move with practiced, fluid grace, tracing the wet folds of her ethereal pussy. She moans, a sound like rushing water echoing through the cavern, as she brings herself to the edge of orgasm.</p>
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/blessing.webm" type="video/webm"></video>
<p>With a final, shivering gasp, she arches her back. A torrent of glowing, sweet-smelling essence bursts from her pussy, raining directly down over your face. <br>
<div style="text-align:center; margin-bottom: 20px;">
<<if $player.gender is "male">>
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/lakem.webm" type="video/webm"></video>
<<else>>
<video autoplay loop muted playsinline style="width:100%;max-height:360px;border-radius:8px;border:2px solid #7a1a3a"><source src="images/encounters/lakef.webm" type="video/webm"></video>
<</if>>
</div>
As the warm, magical nectar coats your skin and passes your lips, an incredible surge of vitality rushes through your veins. Your wounds close, your exhaustion vanishes, and a raw, primal energy takes root in your chest.</p>
<hr style="border:0; height:1px; background:#444;">
<div style="text-align: center; color: #48c9b0; font-weight: bold; font-size: 1.1em;">
✨ You have been fully restored! ✨
</div>
<<if $player.hp isnot undefined and $player.maxHp isnot undefined>>
<<set $player.hp to $player.maxHp>>
<</if>>
<<if $player.energy isnot undefined>>
<<set $player.energy to 100>>
<</if>>
<<set $player.lust = ($player.lust || 0) + 20>>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 20px; align-items: center;">
<<button "Wipe your face and continue deeper">>
<<goto "Karak_Floor_1">>
<</button>>
</div>
<</replace>>
<</button>>
<<button "Decline and back away">>
<<run UI.alert("You politely decline, unsure of the spirit's true intentions. She sinks back into the depths.")>>
<<goto "Karak_Floor_1">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<div style="background: rgba(30, 10, 30, 0.9); padding: 20px; border: 1px solid #a370f7; border-radius: 8px; border-left: 5px solid #a370f7;">
<h2 style="color: #a370f7;">The Hall of Bones </h2>
<p>The air here is cloyingly sweet, like jasmine and rot. As you walk, the shadows on the walls begin to move independently. They don't attack; they take shape.</p>
<p><<if $player.gender is "male">> <center><img src="images/encounters/mirror/trialm.webp" style="width:80%;height:500px;object-fit:cover;border-radius:6px;object-position:80% 30%;margin-bottom:8px"></center> <br> You see the most beautiful women of your tribe kneeling before you, their eyes vacant and adoring. <<else>> <center><img src="images/encounters/mirror/trialf.webp" style="width:70%;height:400px;object-fit:cover;border-radius:6px;object-position:80% 35%;margin-bottom:8px"></center> You see yourself crowned in bone and shadow, the world trembling at your feet. <</if>></p>
<p><<say "Necromancer" "images/encounters/lich1.webp" "Why struggle in the cold mud of the surface? Here, in the silence of the Karak, I can give you everything the world denied you. You need only... stop. Lay down your steel. Stay with me." "#7a3285">></p>
<p>The visions feel warm. Your limbs grow heavy with a sudden, overwhelming lethargy. The urge to simply sit down and let the ghosts embrace you is almost physical.</p>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 20px; align-items: center;">
<<button "Bite your tongue and focus">>
<<set _roll to random(1, 100) + ($player.int || 5)>>
<<if _roll >= 40>>
<<replace "#trial-result">>
<div style="color: #2ecc71; margin-top: 10px;">
<b>SUCCESS:</b> You bite your lip until it bleeds, the sharp pain shattering the illusion. The beautiful ghosts scream and dissolve into black smoke. The path clears!
<br><br>
<<button "Proceed">>
<<set $trial_passed to true>>
<<goto "Karak_Floor_1">>
<</button>>
</div>
<</replace>>
<<else>>
<<replace "#trial-result">>
<div style="color: #e74c3c; margin-top: 10px;">
<b>FAILURE:</b> The visions are too strong. You lose track of time as spectral hands caress your skin. You snap out of it hours later, drained and shivering.
<<set $player.energy -= 30>>
<<set $player.lust += 20>>
<br><br>
<<button "Shake it off and move on">>
<<set $trial_passed to true>>
<<goto "Karak_Floor_1">>
<</button>>
</div>
<</replace>>
<</if>>
<</button>>
<<button "Lean into the embrace">>
<<goto "Karak_Trial_Corruption">>
<</button>>
<div id="trial-result"></div>
</div>
<</nobr>><<nobr>>
<div style="text-align:center; margin-bottom: 20px;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/grave_digger.webm" type="video/webm">
</video>
</div>
<div style="background: rgba(15, 15, 15, 0.95); padding: 20px; border: 1px solid #444; border-radius: 8px; border-left: 5px solid #777;">
<h2 style="color: #aaa; text-transform: uppercase; letter-spacing: 2px;">The Warden of the Graves</h2>
<p>The air here is thick with the smell of freshly turned earth and ancient decay. You find yourself in a massive cavernous pit where the floor is not stone, but a sea of shallow, uneven graves. </p>
<p>Standing in the center is a hulking horror—a <b>Zombie Grave Digger</b>. His flesh is grey and stretched tight over massive, unnatural muscles. He doesn't breathe, but as he notices your presence, a low, wet growl vibrates in his throat. He slams a massive, rusted iron shovel into the dirt, using it as a crutch as he heaves his rotted frame into a fighting stance.</p>
<p>He opens his mouth as if he's about to say something but nothing comes out but a cold death breeze</p>
<p>He isn't just a mindless corpse; he is the Necromancer's servant, and he intends to bury you alive alongside the fallen dwarves of the Karak.</p>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 20px; align-items: center;">
<<button "⚔️ Fight the Gravedigger">>
<<set $returnTo to "Karak_Lieutenant_Victory">>
<<run setup.initCombat([
clone(setup.enemyPresets.GraveDigger)
])>>
<<set $karak_boss_defeated to true>>
<<goto "CombatPage">>
<</button>>
<<button "🏃 Attempt to Retreat">>
<<run UI.alert("The Gravedigger's presence is oppressive, but you manage to slip back into the dark tunnels.")>>
<<set $dungeon_depth -= 1>>
<<goto "Karak_Floor_1">>
<</button>>
</div>
<</nobr>><<nobr>>
<<set $dungeon_depth to 10>>
<<set $lieutenant_dead to true>>
<div style="text-align:center; margin-bottom: 20px;">
<img src="images/encounters/gravedigger_defeat.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #2ecc71; box-shadow: 0 0 15px rgba(46, 204, 113, 0.3);" onerror="this.style.display='none'">
</div>
<div style="background: rgba(10, 30, 15, 0.95); padding: 20px; border: 1px solid #2ecc71; border-radius: 8px; border-left: 5px solid #27ae60;">
<p>The hulking monstrosity lets out a final, gurgling rattle. Its unnatural strength vanishes in an instant, and the Grave Digger collapses into the very pit it spent centuries digging. The rusted iron shovel clatters against the stone, snapping into jagged shards.</p>
<p>For the first time in an age, the burial chamber is silent. You wipe the grime and rotted earth from your armor, feeling a strange, cold wind blowing from the deeper tunnels—the path to the Heart of the Karak is finally clear.</p>
<hr style="border:0; height:1px; background:#2ecc71; margin: 15px 0;">
<<set _gold to 150>>
<<set _iron to 20>>
<<set $gold += _gold>>
<<set $iron += _iron>>
<div style="display: flex; justify-content: space-around; font-weight: bold; color: #2ecc71;">
<span>💰 +_gold Gold</span>
<span>⛏️ +_iron Iron</span>
</div>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 20px; align-items: center;">
<<button "Proceed to the Heart of the Mine">>
<<goto "Karak_Floor_1">>
<</button>>
<<button "Return to Surface to Rest">>
<<goto "Mountain">>
<</button>>
</div>
<</nobr>><<nobr>>
<div style="background: rgba(20, 5, 35, 0.95); padding: 25px; border: 3px solid #9b4dff; border-radius: 12px;">
<h2 style="color: #d44eff; text-align:center;">Eternal Puppet of the Lich Queen</h2>
<p style="font-style:italic; color:#c8a2ff; text-align:center;">
You stop fighting. You let the visions take you completely.
</p>
<<if $player.gender is "male">>
<!-- ====================== MALE BAD ENDING ====================== -->
<div style="text-align:center;margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:10px;border:2px solid #9b4dff;">
<source src="images/encounters/mirror/male1.webm" type="video/webm">
</video>
</div>
<p>The ghostly women of your tribe surround you, kneeling, sucking your cock with perfect, hungry devotion.</p>
<div style="text-align:center;margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:10px;border:2px solid #9b4dff;">
<source src="images/encounters/mirror/male2.webm" type="video/webm">
</video>
</div>
<p>They ride you endlessly, their cold bodies milking you over and over while the Lich Queen’s laughter echoes in your mind.</p>
<div style="text-align:center;margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:10px;border:2px solid #9b4dff;">
<source src="images/encounters/mirror/final.webm" type="video/webm">
</video>
</div>
<p style="color:#d44eff; font-style:italic;">
"Good boy… You belong to me now. Forever my obedient toy."
</p>
<<else>>
<!-- ====================== FEMALE BAD ENDING ====================== -->
<div style="text-align:center;margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:10px;border:2px solid #9b4dff;">
<source src="images/encounters/mirror/female1.webm" type="video/webm">
</video>
</div>
<p>The ghostly women of your tribe surround you, worshipping your body like a goddess while the Necromancer watches with hungry eyes.</p>
<div style="text-align:center;margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:10px;border:2px solid #9b4dff;">
<source src="images/encounters/mirror/female2.webm" type="video/webm">
</video>
</div>
<p>You fall to the lust of the Necromancer, forever as a mindless slave of her world of endless lust and pleasure </p>
<div style="text-align:center;margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:10px;border:2px solid #9b4dff;">
<source src="images/encounters/mirror/final.webm" type="video/webm">
</video>
</div>
<p style="color:#d44eff; font-style:italic;">
"My perfect little puppet… You will serve me for all eternity."
</p>
<</if>>
<<button "The End">>
<<goto "Death">>
<</button>>
</div>
<</nobr>><<nobr>>
<div style="text-align:center; margin-bottom: 20px;">
<img src="images/death.webp" style="width:100%; max-width:800px; border-radius:8px; border:2px solid #8b0000; box-shadow: 0 0 20px rgba(139, 0, 0, 0.5);" onerror="this.style.display='none'">
</div>
<div style="background: rgba(20, 5, 5, 0.95); padding: 30px; border: 1px solid #8b0000; border-radius: 8px; border-left: 5px solid #ff3333; text-align: center;">
<h1 style="color: #ff3333; font-family: serif; text-transform: uppercase; letter-spacing: 5px; margin-top: 0;">You Have Fallen</h1>
<p style="color: #ccc; font-size: 1.1em; line-height: 1.5;">Your strength finally gives out. The darkness of the world closes in, and your knees hit the cold ground. As your vision fades to black, the triumphant sounds of your enemies echo in your fading mind. With time, the snow claims your body, and your name is forgotten. </p>
</div>
<div style="display: flex; flex-direction: column; gap: 15px; margin-top: 30px; align-items: center;">
<<button "Load a Previous Save">>
<<script>>UI.saves();<</script>>
<</button>>
<<button "Accept Defeat (Restart Game)">>
<<run Engine.restart()>>
<</button>>
</div>
<</nobr>><<nobr>>
<div style="background: rgba(20, 10, 25, 0.95); padding: 30px; border: 1px solid #6c3483; border-radius: 8px; border-left: 5px solid #8e44ad;">
<h2 style="color: #bb8fce; font-family: serif; letter-spacing: 2px;">The Descent into the Abyss</h2>
<p>You step past the threshold, leaving the familiar dust of the upper tunnels behind. The path plunges sharply into the raw, uncarved belly of the earth. There is no natural light here, only the sickly, pulsing violet glow of necrotic moss clinging to the walls.</p>
<div style="text-align:center; margin-bottom: 20px;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/deep.webm" type="video/webm">
</video>
</div>
<p>With every step downward, the air grows thicker. It presses against your armor and squeezes your lungs, feeling less like air and more like deep, freezing water. This isn't just atmospheric pressure—it is the raw, suffocating weight of the Death Sorceress's magic, saturating the very stone.</p>
<div id="continue-trigger" style="text-align: center; margin: 20px 0;">
<<button "Step into the Darkness...">>
/* 1. Remove the 'hidden' class from the next section */
<<removeclass "#suddenly-section" "hidden">>
<<replace "#continue-trigger">><</replace>>
<</button>>
</div>
<div id="suddenly-section" class="hidden">
<p>Suddenly, a violent flash sears across your vision.</p>
<div style="text-align:center; margin-bottom: 20px;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/death.webm" type="video/webm">
</video>
</div>
<blockquote style="border-left: 3px solid #e74c3c; background: rgba(0,0,0,0.5); padding: 10px; color: #e74c3c; font-style: italic;">
You see death visions. You see flesh peeling away like wet paper, leaving bleached bones behind. You hear the screams of your tribe echoing in a sea of blood and ash.
</blockquote>
<p>You stagger, gripping your weapon tight to ground yourself in reality. The flashes of doom and death batter against your mind, trying to break your spirit before you even draw your blade. The Sorceress knows you are coming.</p>
<p>Pushing through the suffocating dread, you reach the bottom of the stairs. Heavy, iron-bound doors stand slightly ajar, spilling a cold, ethereal light into the corridor. The Heart of the Mine lies just beyond.</p>
<div style="display: flex; flex-direction: column; gap: 15px; margin-top: 30px; align-items: center;">
<<button "Push forward">>
<<goto "Karak_DridersLair">>
<</button>>
<<button "The pressure is too much">>
<<run UI.alert("The visions of death overwhelm you. You turn and flee back to the surface to steel your mind.")>>
<<goto "Mountain">>
<</button>>
</div>
</div>
</div>
<</nobr>><<nobr>>
<div style="text-align:center">
<img src="images/locations/karakin.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #502d80;" onerror="this.style.display='none'">
</div>
<div style="text-align:center; padding: 10px; background: #0a0a0a; border: 2px solid #333;">
<h3 style="color: #888; margin: 0;">Karak - Depth: $dungeon_depth</h3>
</div>
<div style="margin-top: 20px;">
<p>The hallways are wide enough for three men to march abreast, yet the ceiling feels like it's pressing down on you. Faint, bioluminescent fungi pulse with a dim green light along the floor.</p>
<<if $dungeon_depth is 1>>
<p>You find yourself in the <b>Great Entry Hall</b>. Shattered stone pillars litter the ground like the ribs of a giant.</p>
<</if>>
</div>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 20px;">
<<if $player.energy >= 15>>
<<button "Proceed Deeper into the Dark">>
<<passTime 30>>
<<set $dungeon_depth += 1>>
<<if $dungeon_depth > 5 and not $gate_opened>>
<<goto "Karak_Gate">>
<<elseif $dungeon_depth > 8 and not $trial_passed>>
<<goto "Karak_Trial">>
<<elseif $dungeon_depth >9 and not $lieutenant_dead>>
<<goto "Karak_Lieutenant">>
<<else>>
<<set _roll to random(1, 100)>>
<<if _roll > 75>>
<<goto "Karak_Event_Library">>
<<elseif _roll > 60>>
<<goto "Karak_Event_Loot">>
<<elseif _roll > 45>>
<<goto "Karak_Combat_Drider">>
<<elseif _roll > 30>>
<<goto "Karak_Combat_Goblin">>
<<elseif _roll > 15>>
<<goto "Karak_Event_Lake">>
<<else>>
<<goto "Karak_Floor_1">>
<</if>>
<</if>>
<</button>>
<<else>>
<div style="color: #fa5252; font-size: 0.9em; font-style: italic;">
⚠️ You are too exhausted to press deeper. Rest before continuing.
</div>
<</if>>
<<if $dungeon_depth >= 10 and $lieutenant_dead is true>>
<<button "Investigate the Heart of the Mine">>
<<goto "Karak_Deep">>
<</button>>
<</if>>
<<button "Turn Back (Leave Mine)">>
<<run UI.alert("You retreat to the surface to rest and resupply.")>>
<<goto "Mountain">>
<</button>>
</div>
<</nobr>><<nobr>>
<<if not $LichQueenPhase>><<set $LichQueenPhase to "intro">><</if>>
<<if $LichQueenPhase is "intro">>
<div style="background: rgba(20, 10, 25, 0.95); padding: 30px; border: 1px solid #6c3483; border-radius: 8px; border-left: 5px solid #8e44ad;">
<h2 style="color: #bb8fce; font-family: serif; letter-spacing: 2px;">The Vanguard of Bone</h2>
<div style="text-align:center; margin-bottom: 20px;">
<img src="images/locations/karak_door_guards.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555;" onerror="this.style.display='none'">
</div>
<p>You descend the final staircase and arrive before a colossal iron door, ancient and scarred by centuries of neglect. Flanking the entrance are two towering piles of dust-covered bones and rusted armor. The air is deathly still… until you take one step closer.</p>
<p>Violet witch-fire suddenly ignites deep within the visors of their helmets. The bones clatter and snap together with horrifying speed, reassembling into two <b>Undead Guards</b>. Rusted pikes rise in perfect unison, their edges still gleaming with necrotic energy. They stand as silent, eternal sentinels between you and the heart of the Karak.</p>
<div style="display: flex; flex-direction: column; gap: 15px; margin-top: 30px; align-items: center;">
<<button "⚔️ Fight the Guards">>
<<set $LichQueenPhase to "Queen">>
<<set $returnTo to "Karak_LichQueen">>
<<run setup.initCombat([
clone(setup.enemyPresets.Skeleton),
clone(setup.enemyPresets.Skeleton)
])>>
<<goto "CombatPage">>
<</button>>
</div>
</div>
<<elseif $LichQueenPhase is "Queen">>
<div style="background: rgba(20, 10, 25, 0.95); padding: 30px; border: 1px solid #6c3483; border-radius: 8px; border-left: 5px solid #8e44ad;">
<h2 style="color: #bb8fce; font-family: serif; letter-spacing: 2px;">The Heart of the Karak</h2>
<div style="text-align:center; margin-bottom: 20px;">
<img src="images/locations/karak_dooropen.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555;" onerror="this.style.display='none'">
</div>
<p>You step over the shattered remains of the guards and shove the massive iron doors open. They groan like dying men. The chamber beyond is vast — a cathedral of darkness illuminated by dozens of floating orbs of cold, necrotic fire. Black pillars carved with screaming faces rise into the shadows above. The air is thick with the scent of ozone and grave-dust.</p>
<p>At the far end, upon a throne forged from fused spines and blackened iron, sits the <b>Necromancer</b>. Gorgeous and terrible, with violet flames that flicker in her empty eye sockets as she slowly lifts her gaze to you.</p>
<div style="text-align:center; margin-bottom: 20px;">
<img src="images/encounters/lich_queen.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555;" onerror="this.style.display='none'">
</div>
<p><strong>The Necromancer's voice echoes through the hall like cracking ice:</strong><<say "Necromancer" "images/encounters/lich_profile.webp" "Well… well… the mighty Warlord finally crawls into my sanctum. How bold. How <em>foolish</em>. I have watched you slaughter your way through my servants. Tell me, little conqueror… did you come all this way just to die at my feet?" "#7a3285">>
</p>
<div id="queen-actions" style="display: flex; flex-direction: column; gap: 15px; margin-top: 30px; align-items: center;">
<<button "🗣️ Speak with the Sorceress">>
<<removeclass "#queen-dialogue" "hidden">>
<<replace "#queen-actions">><</replace>>
<</button>>
<<button "⚔️ Attack Immediately (Boss Fight)">>
<<set $returnTo to "Karak_LichQueen_Victory">>
<<run setup.initCombat([
clone(setup.enemyPresets.LichQueen),
clone(setup.enemyPresets.Skeleton),
clone(setup.enemyPresets.Skeleton)
])>>
<<goto "CombatPage">>
<</button>>
</div>
<div id="queen-dialogue" class="hidden" style="margin-top: 20px; border-top: 1px solid #6c3483; padding-top: 20px;">
<p>The Lich leans forward on her throne, violet flames dancing in her eyes as she studies you with predatory interest.</p>
<<say "Lich Sorceress" "images/encounters/lich_profile.webp" "So much effort. So much blood spilled just to reach me… and yet here you stand, still breathing. Impressive. Most who come this far are already broken toys for my collection." "#7a3285">>
<div style="text-align:center;margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:10px;border:2px solid #9b4dff;">
<source src="images/encounters/lich_queen.webm" type="video/webm">
</video>
</div>
<p>She rises angrily. The ground trembles faintly beneath your feet as raw necromantic power coils around her.</p>
<<say "Lich Sorceress" "images/encounters/lich_profile.webp" "I could crush you where you stand… but I sense something in you. Ambition. Strength. Hunger. Why waste such potential on pointless death when we could share so much more?" "#7a3285">>
<p>Her voice drops to a sultry, echoing purr.</p>
<<say "Lich Sorceress" "images/encounters/lich_profile.webp" "Kneel before me, Warlord. Swear yourself to me and I will grant you power beyond your wildest dreams… and pleasures your mortal flesh has never known. My undead legions will be yours to command. My body — cold, eternal, and eager — will be yours to claim whenever you desire." "#7a3285">>
<div style="text-align:center;margin:20px 0;">
<video autoplay loop muted playsinline style="width:100%;max-height:400px;border-radius:10px;border:2px solid #9b4dff;">
<source src="images/encounters/lich_queen_fight.webm" type="video/webm">
</video>
</div>
<p>She extends her pale arms, violet energy crackling between her fingers.</p>
<<set _strengthRoll = Math.floor(Math.random() * 20) + 1 + ($player.str || 0)>>
<<if _strengthRoll >= 75>>
<p><strong style="color:#e74c3c;">(Strength Success!)</strong> You stand tall, muscles tensed, radiating raw dominance. Your presence alone makes the ancient sorceress hesitate.</p>
<<say "Lich Sorceress" "images/encounters/lich_profile.webp" "…No. You are strong, but not strong enough to bend me to your will." "#7a3285">>
<p>She shakes her head, violet flames flaring brighter in her eye sockets. A cruel smile stretches across her skeletal face.</p>
<<say "Lich Sorceress" "images/encounters/lich_profile.webp" "If you will not kneel… then you will break!" "#7a3285">>
<div style="text-align: center; margin-top: 25px;">
<<button "⚔️ The final battle begins!">>
<<set $returnTo to "Karak_LichQueen_Victory">>
<<run setup.initCombat([
clone(setup.enemyPresets.LichQueen),
clone(setup.enemyPresets.Skeleton),
clone(setup.enemyPresets.Skeleton)
])>>
<<goto "CombatPage">>
<</button>>
</div>
<<else>>
<p><strong style="color:#f1c40f;">(Strength Failure)</strong> Despite your power, the Lich’s ancient will proves stronger than your raw might in this moment.</p>
<<say "Lich Sorceress" "images/encounters/lich_profile.webp" "Still so proud… Very well. If you will not kneel as my equal, then kneel as my slave. I will become your devoted mistress. You will be at my eternal service. I will use you however i wish, Warlord." "#7a3285">>
<div style="display: flex; flex-direction: column; gap: 12px; margin-top: 25px; align-items: center;">
<<button "Accept her as your Mistress">>
<<set $LichQueenPhase to "defeated">>
<<goto "Karak_Trial_Corruption">>
<</button>>
<<button "Refuse and fight anyway">>
<<set $returnTo to "Karak_LichQueen_Victory">>
<<run setup.initCombat([
clone(setup.enemyPresets.LichQueen),
clone(setup.enemyPresets.Skeleton),
clone(setup.enemyPresets.Skeleton)
])>>
<<goto "CombatPage">>
<</button>>
</div>
<</if>>
</div>
</div>
<</if>>
<</nobr>><<nobr>>
<div style="background: rgba(20, 10, 25, 0.95); padding: 30px; border: 1px solid #6c3483; border-radius: 8px; border-left: 5px solid #8e44ad;">
<h2 style="color: #bb8fce; font-family: serif; letter-spacing: 2px;">Victory in the Heart of the Karak</h2>
<p>The Necromancer collapses to her knees amid the shattered bones of her guards. falling to the ground with a hollow clatter. For the first time in centuries, true fear flickers across her face as you tower over her, breathing hard, victorious.</p>
<div style="text-align:center; margin: 25px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 20px rgba(142, 68, 173, 0.6);">
<source src="images/encounters/lich_defeat.webm" type="video/webm">
</video>
</div>
<<say "Necromancer" "images/encounters/lich_profile.webp" "No… impossible…" "#7a3285">>
<p>she hisses, voice cracking like dry bone. But you are the Warlord. You do not spare the defeated.</p>
<p><strong>You look down at your defeated adversary.</strong> Even broken and on her knees, the Necromancer looks strangely gorgeous. Her pale, flawless skin glows with an eerie moonlight sheen under the flickering necrotic lights. Her once-regal body still radiates a dark, forbidden beauty that stirs something primal inside you. A hot, heavy pulse of arousal begins to throb between your legs.</p>
<<if $player.gender is "male">>
<div style="text-align:center; margin: 20px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 20px rgba(231, 76, 60, 0.6);">
<source src="images/encounters/mirror/winm1.webm" type="video/webm">
</video>
</div>
<p>You grab her by her white hair and force her head down. The once-mighty Necromancer gags and chokes as you shove your thick cock past her cold lips, using her throat like a fleshlight. Her eyes widen in humiliated defeat while you fuck her face without mercy.</p>
<div style="text-align:center; margin: 20px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 20px rgba(231, 76, 60, 0.6);">
<source src="images/encounters/mirror/winm2.webm" type="video/webm">
</video>
</div>
<p>Soon you bend the proud sorceress over her own throne of iron and slam into her tight, cunt from behind. She moans in broken ecstasy and shame as you claim every inch of her ancient body. Your hips slap against her bony ass with savage rhythm until you feel your climax rising.</p>
<div style="text-align:center; margin: 20px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 20px rgba(231, 76, 60, 0.6);">
<source src="images/encounters/mirror/winm3.webm" type="video/webm">
</video>
</div>
<p>At the last moment you pull out and paint her pale face with thick ropes of hot cum. It drips down her cheeks and into her open mouth as she kneels, utterly broken and marked as your conquest.</p>
<<else>>
<p>You grab the Necromancer by her hair and shove her face between your thighs. “Lick, whore,” you growl. Her cold tongue slides desperately over your dripping pussy, the defeated sorceress forced to worship the woman who broke her empire.</p>
<div style="text-align:center; margin: 20px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 20px rgba(231, 76, 60, 0.6);">
<source src="images/encounters/mirror/winf1.webm" type="video/webm">
</video>
</div>
<p>You ride her face harder has you cum hard on her face, marking the once-mighty Lich Sorceress as nothing more than your personal pleasure toy.</p>
<div style="text-align:center; margin: 20px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 20px rgba(231, 76, 60, 0.6);">
<source src="images/encounters/mirror/winf2.webm" type="video/webm">
</video>
</div>
<p> Then you lift her up as you start to play with her pussy, her body shuddering in humiliated pleasure. her cold, broken moans vibrate against your face as you play with the Sorceress as she's your toy. </p>
<div style="text-align:center; margin: 20px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 20px rgba(231, 76, 60, 0.6);">
<source src="images/encounters/mirror/winf3.webm" type="video/webm">
</video>
</div>
<p>To seal her utter defeat, you make the Necromancer turn around on her knees. You slide two fingers deep into her tight, cold ass and start fingering her relentlessly. She tries desperately to hold back her moans, biting her lip hard, but her body betrays her as she cums hard around your fingers, shuddering in humiliated ecstasy.</p>
<</if>>
<p style="margin-top: 30px; color: #bb8fce; font-style: italic;">With the Necromancer defeated and claimed, you stand victorious in her sanctum. What will you do now?</p>
<center><div style="display: flex; flex-direction: column; gap: 12px; margin: 25px 0;">
<div id="loot-area">
<<if $quest_strangering isnot 1>>
<<button "Loot the Necromancer's Lair">>
<<set $quest_strangering to 1>>
<<set $inventory to $inventory or []>>
<<run $inventory.push("Necromancer's Ring")>>
<<set $gold to ($gold || 0) + 1000>>
<<set $iron to ($iron || 0) + 250>>
<<set $player.rep += 10>>
<<replace "#loot-area">>
<div style="background: rgba(15, 10, 20, 0.9); padding: 25px; border-radius: 10px; border: 1px solid #4a235a; box-shadow: 0 0 20px rgba(142, 68, 173, 0.3); font-family: 'Georgia', serif; color: #e0e0e0; animation: fadeIn 0.8s;">
<p style="font-style: italic; color: #aaa; line-height: 1.6; border-left: 3px solid #8e44ad; padding-left: 15px; margin-bottom: 25px;">
The heavy silence of the tomb settles over you as you sift through the wreckage of the Necromancer's ambition. You gather fistfuls of ancient coins stamped with forgotten kings and hoist heavy scraps salvaged from broken dwarven armours, but your focus wavers...
</p>
<div style="display: flex; background: linear-gradient(135deg, #1a1a1a 0%, #2c1a36 100%); border: 2px solid #8e44ad; border-radius: 12px; padding: 20px; align-items: center; box-shadow: inset 0 0 15px rgba(142, 68, 173, 0.5); margin-bottom: 20px;">
<div style="flex-shrink: 0; position: relative;">
<img src="images/objects/necro_ring.webp" style="width: 110px; height: 110px; border-radius: 50%; border: 3px solid #9b59b6; object-fit: cover;" onerror="this.src='https://via.placeholder.com/110?text=Ring'">
</div>
<div style="margin-left: 25px;">
<h3 style="margin: 0 0 10px 0; color: #d488ff; text-transform: uppercase; letter-spacing: 2px; font-size: 1.1em;">The Necromancer's Ring</h3>
<p style="margin: 0; font-size: 0.95em; color: #efefef;">Your attention is relentlessly captured by a single, blackened band sitting amidst the dust. A strange light pulses within its black gem, sparkling with lights of many colors—not like a flicker of fire, but like the steady thrum of a heartbeat. You feel an inexplicable magnetic pull, as if the ring itself is calling you.</p>
</div>
</div>
<div style="display: flex; justify-content: space-around; background: rgba(0,0,0,0.5); border-radius: 6px; padding: 12px; border: 1px solid #333;">
<span style="color: #f1c40f; font-weight: bold;">+1,000 Gold</span>
<span style="color: #bdc3c7; font-weight: bold;">+250 Iron</span>
</div>
</div>
<</replace>>
<</button>>
<<else>>
<div style="padding: 10px; color: #666; font-style: italic; text-align: center;">The lair has been looted.</div>
<</if>>
</div>
<div id="imprison-area">
<<if not $necromancerslave>>
<<button "Imprison the Necromancer">>
<<set $necromancerslave to true>>
<<replace "#imprison-area">>
<div style="background: rgba(10, 10, 10, 0.95); border: 2px solid #c0392b; border-radius: 12px; overflow: hidden; box-shadow: 0 0 25px rgba(192, 57, 43, 0.4); animation: fadeIn 0.8s;">
<div style="display: flex; padding: 20px; align-items: center; gap: 20px;">
<div style="flex-shrink: 0;">
<img src="images/NPC/necromancer/cage.webp" style="width: 120px; height: 160px; object-fit: cover; border: 1px solid #444; border-radius: 4px;" onerror="this.src='https://via.placeholder.com/120x160?text=Necromancer'">
</div>
<div style="flex-grow: 1;">
<h3 style="margin: 0 0 10px 0; color: #e74c3c; font-family: 'Georgia', serif; font-size: 1.4em;">The Fallen Mistress</h3>
<p style="font-style: italic; color: #bbb; line-height: 1.5;">You step back and watch the once-mighty Necromancer collapse, her dark incantations reduced to ragged gasps. Cold iron shackles snap shut around her wrists, siphoning the last of her violet spark. Her pride is broken; her life is now yours to command.</p>
</div>
</div>
</div>
<</replace>>
<</button>>
<<else>>
<div style="padding: 10px; color: #666; font-style: italic; text-align: center;">The Necromancer is in your cells.</div>
<</if>>
</div>
</div>
<<button "Return to the Surface">>
<<set $LichQueenPhase to "defeated">>
<<set $quest_smith to 3>>
<<set $mineExplored to true>>
<<goto "Mountain">>
<</button>>
<span id="result"></span>
</center>
<</nobr>><<nobr>>
<div style="background: rgba(15, 20, 15, 0.95); padding: 30px; border: 1px solid #2e402e; border-radius: 8px; border-left: 5px solid #4caf50;">
<h2 style="color: #81c784; font-family: serif; letter-spacing: 2px;">The Silken Depths</h2>
<div style="text-align:center; margin-bottom: 20px;">
<img src="images/locations/mine_web.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555;" onerror="this.style.display='none'">
</div>
<p>As you press deeper into the Karak, the jagged, hard angles of the tunnels begin to soften. At first, it is just a few stray threads catching on your armor—thin, silvery strands that shimmer in the faint light. But soon, the stone walls are entirely obscured by thick, pulsating sheets of heavy webbing.</p>
<p>The air here is incredibly stale, smelling of old copper, dried blood, and a sweet, sickly perfume that makes your head spin. The floor is spongy beneath your boots, layered with centuries of molted exoskeletons and the desiccated remains of careless explorers wrapped tight in silk cocoons.</p>
<p>You draw your weapon, stepping carefully. Every movement you make sends microscopic vibrations through the floor. Above you, in the suffocating darkness of the cavern ceiling, you hear it: the unmistakable, rhythmic <i>skitter-click, skitter-click</i> of dozens of clawed legs moving in perfect unison.</p>
<p>Suddenly, the darkness above erupts. Three massive shapes drop from the ceiling, landing with heavy, meaty thuds around you. They are Driders—hideous fusions of dark elves and monstrous arachnids. Their lower spider halves twitch with predatory excitement, while their humanoid torsos wield rusted, venom-dripping spears. They hiss, a sound like tearing parchment, and lunge!</p>
<div style="display: flex; flex-direction: column; gap: 15px; margin-top: 30px; align-items: center;">
<<button "⚔️ Break the Ambush">>
<<set $returnTo to "Karak_DridersLair_Mother">>
<<run setup.initCombat([
clone(setup.enemyPresets.Drider),
clone(setup.enemyPresets.Drider),
clone(setup.enemyPresets.Drider)
])>>
<<goto "CombatPage">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<div style="background: rgba(20, 10, 15, 0.95); padding: 30px; border: 1px solid #4a1c24; border-radius: 8px; border-left: 5px solid #e74c3c;">
<h2 style="color: #ff6b6b; font-family: serif; letter-spacing: 2px;">The Heart of the Brood</h2>
<div style="text-align:center; margin-bottom: 20px;">
<img src="images/locations/mine_nest.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555;" onerror="this.style.display='none'">
</div>
<p>You kick the twitching corpse of the last Drider aside and slash your way through a massive curtain of hardened silk. Beyond it lies a chamber so vast that your light cannot reach the ceiling. This is the heart of the nest. Great pillars of silk stretch from the floor into the abyss above, and the walls are lined with hundreds of pulsing, translucent egg sacs.</p>
<p>A deep, guttural chittering echoes through the chamber, vibrating right through the soles of your boots and into your teeth. The shadows at the back of the room detach themselves, stepping into the dim light.</p>
<div style="text-align:center; margin-bottom: 20px;">
<img src="images/enemies/drider_queen.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555;" onerror="this.style.display='none'">
</div>
<p>It is the <b>Drider Mother</b>. She is a towering monstrosity of chitin and corrupted flesh and eight massive, spiked legs. Her humanoid half is clad in ancient, rotting silks, her face a terrifying mask of beautiful humanoid features twisted by pure, predatory malice. Eight black eyes lock onto you with burning hatred for slaughtering her children.</p>
<p>With an ear-splitting shriek that forces you to cover your ears, she rears up on her back legs. From the shadows of the egg sacs, three more of her elite Drider guards skitter forward, raising their weapons. You have stepped into the lion's den, and the Mother demands blood.</p>
<div style="display: flex; flex-direction: column; gap: 15px; margin-top: 30px; align-items: center;">
<<button "⚔️ Slay the Brood Mother (Boss Fight)">>
<<set $returnTo to "Karak_Drider_Victory">>
<<run setup.initCombat([
clone(setup.enemyPresets.DriderMother),
clone(setup.enemyPresets.Drider),
clone(setup.enemyPresets.Drider),
clone(setup.enemyPresets.Drider)
])>>
<<goto "CombatPage">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<div style="background: rgba(15, 15, 20, 0.95); padding: 30px; border: 1px solid #2e3b4e; border-radius: 8px; border-left: 5px solid #5fa8d3;">
<h2 style="color: #89c2d9; font-family: serif; letter-spacing: 2px;">Mercy in the Dark</h2>
<p>The battle is a bloodbath of ichor and shattered chitin. The three elite guards lie dead, their bodies broken beneath your might. The Drider Mother collapses with a shuddering gasp. Her massive legs give out, and she crashes onto the webbed floor, leaking dark, virulent blood. She looks up at you, no longer a terrifying predator, but a defeated creature waiting for the inevitable execution.</p>
<p>You raise your weapon, breathing heavily, ready to bring it down and sever her beautiful, twisted head from her monstrous body.</p>
<p><<say "Lonely Drider" "images/encounters/young_drider.webp" "No! Wait! Please, Warlord, stop!">></p>
<p>A smaller figure bursts from the shadows, rushing directly into the path of your descending blade. You halt your swing just in time, the wind of your weapon parting the hair of the creature. It is the <b>Lonely Drider</b>. She stands trembling between you and the massive, wounded Mother, her arms spread wide in a desperate, futile attempt to shield her creator.</p>
<p>Tears stream down the Lonely Drider's pale face. <<say "Lonely Drider" "images/encounters/young_drider.webp" "She was only protecting the nest! She is bound to this place by the Necromancer's magic, driven mad by the darkness! If you kill her, the brood will shatter. We will have nothing left. I beg of you... you have proven your strength. Please, show mercy!">></p>
<p>The Mother chitters weakly, laying her head against the web. She does not attack. She has submitted. The air is entirely still as the Lonely Drider looks up at you with large, pleading eyes. The choice is yours.</p>
<div style="display: flex; gap: 20px; margin-top: 30px; justify-content: center; flex-wrap: wrap;">
<<button "Lower your weapon">>
<<goto "Karak_Drider_Spare">>
<</button>>
<<button "Bring the blade down">>
<<goto "Karak_Drider_Kill">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<div style="background: rgba(15, 20, 15, 0.95); padding: 30px; border: 1px solid #2e402e; border-radius: 8px; border-left: 5px solid #4caf50;">
<p>Slowly, deliberately, you lower your weapon. You shake the thick, viscous blood from the blade and step back. The tension in the cavern shatters instantly.</p>
<p>The Lonely Drider falls to her knees, weeping with profound relief. She turns to the wounded Mother, whispering gently to her in a strange, clicking dialect. The giant Mother shifts her gaze to you. Slowly, the monstrous queen lowers her upper body, pressing her forehead against the webbed floor in a deep, absolute bow of submission and gratitude.</p>
<p><<say "Lonely Drider" "images/encounters/young_drider.webp" "Thank you... thank you,">> the Lonely Drider whispers, turning back to you. <<say "Lonely Drider" "images/encounters/young_drider.webp" "We will not forget this, Warlord. The tunnels ahead are treacherous, but the brood will not touch you. Go. The Lich Sorceress waits below.">></p>
<p>As you walk past them, the shadows part. Dozens of glowing eyes watch you from the darkness, but not a single Drider raises a weapon. You have earned the respect of the monsters in the deep.</p>
<div style="text-align: center; margin-top: 30px;">
<<button "Continue deeper into the darkness...">>
<<set $driderspare to true>>
<<goto "Karak_LichQueen">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<div style="background: rgba(20, 5, 5, 0.95); padding: 30px; border: 1px solid #4a1c24; border-radius: 8px; border-left: 5px solid #ff3333;">
<p>Your face remains cold as stone. You did not come into this pitch-black hell to show mercy to monsters. With a violent, decisive motion, you bring your blade down, cleaving through the Drider Mother's neck.</p>
<p>A horrific, gurgling screech fills the chamber before she goes entirely still. The Lonely Drider screams—a sound of pure, heart-shattering agony. She falls to the floor, her hands desperately clawing at the lifeless body of her matriarch, her sobs echoing terribly against the walls of the cavern.</p>
<p><<say "Lonely Drider" "images/encounters/young_drider.webp" "Monster!">> she wails, her voice thick with venom and despair. <<say "Lonely Drider" "images/encounters/young_drider.webp" "You are no better than the things that crawl in the dark! Get out! GET OUT!">></p>
<p>You turn your back on her weeping form. You take what valuable silks and ancient gold you can scavenge from the nest. Around you, the unseen brood in the shadows scatters in absolute terror, too afraid to even look at the Warlord who slaughtered their god.</p>
<p>You step through the remains of the nest, your boots leaving bloody footprints on the silk as you continue your descent.</p>
<<set $gold += 150>>
<div style="text-align: center; margin-top: 30px;">
<<button "Continue deeper into the darkness...">>
<<goto "Karak_LichQueen">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<<set $returnTo to "Iron_Mine">>
<div style="text-align:center">
<img src="images/locations/mine_entrance.webp" style="width:100%; max-width:700px; border-radius:8px; border:2px solid #444;" onerror="this.style.display='none'">
</div>
<div style="background:#1a1a1a; border:2px solid #664400; border-radius:8px; padding:20px; margin:15px auto; max-width:800px;">
You arrive at the newly cleared karak with a wagon full of timber, iron tools, and support beams. The entrance to the mine looks dark and promising now that the creatures have been driven out. Leva is already there, and for once she is wearing clothes, her powerful blacksmith body glistening under the mountain sun. Her arms sway heavily as she gestures and barks orders at the workers, sweat already rolling her front.
<<say "Leva" "images/NPC/smith/profile.webp" "Alright, you lazy bastards! I want support beams every ten paces and the main shaft cleared before nightfall. Chief, you here to watch or actually get your hands dirty?" "#cc6600">>
She says as she sees you coming with the rest of the material. You grin and roll up your sleeves. "Both." You grab an axe and follow her as she enters the dark tunnels.
<br><br>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/mine1.webm" type="video/webm">
</video>
<br><br>
Leva works tirelessly, walking among the workers, her boots kicking up dust, her muscular body flexing with every step.
The work is brutal and hot. Hours pass. Your muscles burn as you lift, hammer, and haul. Sweat pours down your chest and back. Leva works right beside you more often than not — handing you tools, steadying beams, her hardned body brushing against yours again and again. The heat of the mountain sun combined with the physical labor makes her skin shine. Droplets of sweat run down her neck through her cleavage.
<br><br>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/mine2.webm" type="video/webm">
</video></center>
<br><br>
Every time she leans over to inspect your work, her breasts are right in front of you. When she bends down to pick up a tool, her round ass is presented perfectly. The scent of her — sweat, coal smoke, and feminine musk — fills your nose more and more.
The longer you work side-by-side with this powerful blacksmith, the harder it gets to focus on the mine. Your eyes keep drifting to her glistening body. She notices. A small, knowing smirk appears on her lips, but she says nothing… yet.
Finally, during a short water break, you step close behind her as she drinks from a waterskin. Her back is to you. You can see the way her shoulders rise and fall with each breath, the sweat making her dark skin glow.
You reach out. Your calloused hand slides slowly up her side, feeling the heat of her skin and the firmness of her muscles. Leva stops for a second, then lets out a low, throaty chuckle.
<<say "Leva" "images/NPC/smith/profile.webp" "Mmm… careful, Warlord. You keep touching me like that and this mine isn’t getting finished anytime soon…" "#cc6600">>
Your other hand moves to her hip, pulling her back against you. She doesn’t resist. Your fingers glide over her slick, sweaty skin, cupping one of her heavy breasts. A soft growl escapes her throat as she presses her ass back against your body.
<br><br>
<<if $player.gender is "female">>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minef.webm" type="video/webm">
</video></center>
<<else>>
<br><br>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/mine2.webm" type="video/webm">
</video></center>
<</if>>
<br><br>
The air between you crackles with raw lust.
</div>
<div style="text-align:center; margin-top:25px;">
<<button "Keep touching Leva">>
<<goto "Leva_Mine">>
<</button>>
<<button "Focus on the work">>
<<set $mineUnlocked to true>>
<<set $forgeUnlocked to true>>
<<run UI.alert("The mining operation is now established!\n\nYou can now assign tribe members to the mine and the forge is fully operational.")>>
<<goto "Iron_Mine">>
<</button>>
</div>
<</nobr>><<nobr>>
<div style="background:#1a0f1f; border:2px solid #cc0066; border-radius:10px; padding:20px; margin:15px auto; max-width:640px; color:#ffddcc;">
The tension snaps. You drop the heavy beam you were carrying and pull Leva hard against your body.
<<say "Leva" "images/NPC/smith/profile.webp" "Finally… I’ve been waiting for you to snap, Chief." "#cc0066">>
<<if $player.gender is "female">>
Leva grabs your face with both hands and kisses you like she’s starving. Her tongue forces its way into your mouth, hot and demanding, while her naked, sweaty body presses flush against yours. You can feel her firm breasts dragging across your skin as she devours your mouth.
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexf1.webm" type="video/webm">
</video></center>
With a wicked grin she shoves you onto your back on a pile of soft furs someone left behind. Leva drops between your spread thighs, hooks your legs over her strong shoulders, and buries her face in your pussy. Her tongue is thick, hot, and relentless — licking long strokes before sucking hard on your clit.
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexf2.webm" type="video/webm">
</video></center>
Leva lifts her glistening face just long enough to slide two thick fingers deep inside you. She curls them perfectly, pumping fast while her thumb circles your swollen clit. “That’s it… soak my hand, girl,” she growls.
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexf3.webm" type="video/webm">
</video></center>
She climbs on top of you, scissoring her powerful thighs with yours. Her wet, hot pussy grinds directly against your own, clit rubbing clit in slick, urgent strokes. Leva’s heavy breasts bounce as she rides you harder, sweat flying.
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexf4.webm" type="video/webm">
</video></center>
Leva spins around and drops her soaked pussy right onto your face. “Lick me, Warlord.” She rides your mouth shamelessly, grinding her clit back and forth across your tongue, smothering you in her heat and scent while she moans loudly.
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexf5.webm" type="video/webm">
</video></center>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexf6.webm" type="video/webm">
</video></center>
Leva finally flips onto her back, spreading her thick, muscular legs wide open for you. You dive in — sucking her swollen clit and pumping two fingers deep inside her tight, dripping pussy. She bucks hard, thighs clamping around your head as she explodes with a loud, throaty roar.
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexf7.webm" type="video/webm">
</video></center>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexf8.webm" type="video/webm">
</video></center>
Leva lies there panting, a satisfied, predatory smile on her face. She pulls you up and kisses you again, tasting herself on your lips.
<<say "Leva" "images/NPC/smith/profile.webp" "Mmm… good girl. This is going to be a lot more fun from now on." "#cc0066">>
<<else>>
You grab Leva from behind and push her forward. She bends over a sturdy wooden support beam, looking back at you with a wild, hungry smile.
Leva arches her back, presenting her thick ass to you. Sweat glistens on her tanned skin as she grins over her shoulder.
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexm1.webm" type="video/webm">
</video></center>
You grab a piece of rope from the mining supplies and quickly tie her strong wrists together behind her back. Leva lets out a low, excited laugh.
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexm2.webm" type="video/webm">
</video></center>
You drop to your knees, spread her ass, and bury your tongue deep in her dripping pussy. You lick her hungrily, then spit on her clit and pussy to make her even wetter.
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexm3.webm" type="video/webm">
</video></center>
You stand up, line up your rock-hard cock, and shove it deep into her tight pussy in one powerful thrust. You fuck her hard and deep, your hips slamming against her ass as she moans loudly.
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexm4.webm" type="video/webm">
</video></center>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexm5.webm" type="video/webm">
</video></center>
You pull out, spin her around and push her down on her knees. You grab her hair and shove your cock straight into her eager mouth, fucking her face hard while she looks up at you with lust-filled eyes.
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexm6.webm" type="video/webm">
</video></center>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexm7.webm" type="video/webm">
</video></center>
You pull her back up, bend her over once more and slam back into her pussy from behind. Then you flip her onto her back on the furs, spread her legs wide, and fuck her deep and hard while looking into her eyes.
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexm8.webm" type="video/webm">
</video></center>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexm9.webm" type="video/webm">
</video></center>
You finally pull out, stroke your cock furiously, and explode all over her sweaty body — thick ropes of cum painting her heavy breasts, stomach, and pussy.
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/smith/minesexm10.webm" type="video/webm">
</video></center>
Leva lies there panting, covered in your cum, a very satisfied smirk on her face.
<<say "Leva" "images/NPC/smith/profile.webp" "Mmm… that’s how a real Warlord claims his forge, Chief. Now let’s get this mine running properly." "#cc6600">>
<</if>>
</div>
<div style="text-align:center; margin:25px 0;">
<<button "Finish up and establish the mine">>
<<set $forgeUnlocked to true>>
<<run UI.alert("Mining operation established!\n\nThe Forge is now fully operational and you can assign workers to the mine.")>>
<<goto "Iron_Mine">>
<</button>>
</div>
<br><br>
<center>[[Go to the mine|Iron_Mine]]</center>
<</nobr>><<nobr>>
<<if $quest_villager eq 0 and $player.rep gt 50>>
<<set $quest_villager to 1>>
<<goto "Rumor">>
<</if>>
<div style="text-align:center">
<img src="images/locations/village_square.webp" style="width:100%;max-width:600px;border-radius:8px;border:2px solid #8b5a2b;margin-bottom:15px">
<h2>Oakvale Village Square</h2>
<p style="color:#ddd;font-size:0.9em">The heart of the village. Children chase each other around the old stone well while villagers chat and laugh. Along the eastern side stands a small cluster of wooden market stalls — the local market stands division.</p>
</div>
<hr style="border:0;height:1px;background:#8b5a2b;margin:15px 0">
<div id="square-feedback" style="text-align:center; color:#ffcc66; font-weight:bold; min-height:1.5em; margin-bottom:10px;"></div>
<<if $villageSquarePhase is "browse">>
<div style="background:#2b2118; padding:15px; border:2px solid #664422; border-radius:8px; margin-bottom:25px;">
<h3 style="text-align:center; color:#ffddaa; margin-top:0;">🛒 Market Stands</h3>
<table style="width:100%; border-collapse: collapse; background: #3d2a1f; color: #eee; text-align: center;">
<tr style="border-bottom: 2px solid #664422;">
<th>Resource</th>
<th>Price</th>
<th>In Bag</th>
<th>Action</th>
</tr>
<tr>
<td>🥩 Food</td>
<td>5g</td>
<td>$food</td>
<td>
<<button "Buy">>
<<if $gold gte 5>>
<<set $gold -= 5>><<set $food += 1>>
<<replace "#square-feedback">>Bought 1 sack of Grain.<</replace>>
<<goto "VillageSquare">>
<<else>>
<<replace "#square-feedback">><span style="color:#ff6666">Not enough gold!</span><</replace>>
<</if>>
<</button>>
</td>
</tr>
<tr>
<td>🪵 Wood</td>
<td>8g</td>
<td>$wood</td>
<td>
<<button "Buy">>
<<if $gold gte 8>>
<<set $gold -= 8>><<set $wood++>>
<<replace "#square-feedback">>Bought 1 bundle of Wood.<</replace>>
<<goto "VillageSquare">>
<<else>>
<<replace "#square-feedback">><span style="color:#ff6666">Not enough gold!</span><</replace>>
<</if>>
<</button>>
</td>
</tr>
<tr>
<td>🌿 Herbs</td>
<td>8g</td>
<td>$herbs</td>
<td>
<<button "Buy">>
<<if $gold gte 8>>
<<set $gold -= 8>><<set $herbs++>>
<<replace "#square-feedback">>Bought 1 bundle of Herbs.<</replace>>
<<goto "VillageSquare">>
<<else>>
<<replace "#square-feedback">><span style="color:#ff6666">Not enough gold!</span><</replace>>
<</if>>
<</button>>
</td>
</tr>
<tr>
<td>🦊 Pelts</td>
<td>12g / 7g</td>
<td>$pelts</td>
<td>
<<button "Buy">>
<<if $gold gte 12>>
<<set $gold -= 12>><<set $pelts++>>
<<goto "VillageSquare">>
<</if>>
<</button>>
<<button "Sell">>
<<if $pelts gte 1>>
<<set $gold += 7>><<set $pelts-->>
<<replace "#square-feedback">>Sold 1 Pelt to the tanner.<</replace>>
<<goto "VillageSquare">>
<</if>>
<</button>>
</td>
</tr>
</table>
</div>
<<if $villageSaved or $villageRaided>>
<div style="border-left:4px solid #ffd700;background:#222;padding:10px">
<b>💰 Village Tribute</b>
<<if $villageTribute gt 0>>
<<set _daysSinceTribute to $day - $lastTributeDay>>
<br><span style="font-size:0.8em;color:#aaa">
<<if $villageSaved>>
The village pays tribute in exchange for your protection.
<<else>>
The village pays tribute to keep you from burning the rest of it down.
<</if>>
</span>
<br><span style="font-size:0.8em;color:#ffd700">Rate: $villageTribute gold every 30 days</span>
<<if _daysSinceTribute gte 30>>
<br><span style="font-size:0.8em;color:#44ff44">Payment is due.</span>
<br><<button "Collect tribute">>
<<set $gold += $villageTribute>>
<<set $lastTributeDay to $day>>
<<set $eventLog.push("Day " + $day + ": Collected " + $villageTribute + " gold tribute from the village.")>>
<<goto "Village">>
<</button>>
<<else>>
<br><span style="font-size:0.8em;color:#888">
Next payment in <<= 30 - _daysSinceTribute>> days.
</span>
<</if>>
<<else>>
<br>
<<if $villageSaved>>
<span style="font-size:0.8em;color:#aaa">The villagers are grateful. The village head wishes to speak with you.</span>
<br><<button "Meet with the village head">>
<<goto "VillageTributeOffer">>
<</button>>
<<else>>
<span style="font-size:0.8em;color:#aaa">They hate you — but they fear you more. Time to remind them who rules here.</span>
<br><<button "Confront the village head">>
<<goto "VillageTributeDemand">>
<</button>>
<</if>>
<</if>>
</div>
<</if>>
<</if>>
<br>
<center>
<<button "Leave the Square">>
<<set $villageSquarePhase to "browse">>
<<goto "Village">>
<</button>>
</center>
<</nobr>><<nobr>>
<div style="text-align:center">
<h2>☀️ The Village Head Approaches</h2>
<img src="images/encounters/village/chief.webp" style="width:100%;max-width:600px;border-radius:8px;border:2px solid #8b5a2b;margin-bottom:15px">
<p>An elderly man with a kind but weary face steps forward, accompanied by two villagers. He bows slightly.</p>
<p>"Warlord... we are grateful for your protection. The raids have stopped since you claimed this land. We would like to offer you a regular tribute in exchange for your continued safeguard."</p>
<<button "Accept their offer">>
<<set $villageTribute to 50>>
<<set $lastTributeDay to $day>>
<<set $eventLog.push("Day " + $day + ": Village head offered tribute. 50 gold every 30 days in exchange for protection.")>>
<<goto "VillageSquare">>
<</button>>
<<button "Refuse">>
<<goto "VillageSquare">>
<</button>>
</div>
<</nobr>><<nobr>>
<div style="text-align:center">
<h2>⚔️ Forcing the Tribute</h2>
<img src="images/encounters/village/chief.webp" style="width:100%;max-width:600px;border-radius:8px;border:2px solid #8b5a2b;margin-bottom:15px">
<p>You storm into the village square and loudly demand the village head. The old man arrives quickly, looking pale and nervous.</p>
<p>"You... you want us to pay you?" he says, voice trembling. "We barely have enough as it is..."</p>
<div id="tribute-result"></div>
<<button "Demand a tribute">>
<<set $villageTribute to 30>>
<<set $lastTributeDay to $day>>
<<set $eventLog.push("Day " + $day + ": Forced village head to pay 30 gold tribute every 30 days.")>>
<<goto "VillageSquare">>
<</button>>
<<button "Ask for more (reputation >25)">>
<<if $player.rep gt 25>>
<<replace "#tribute-result">>
<div style="color:#2ecc71; margin:15px 0;">
<b>SUCCESS:</b> The old man flinches under your glare and quickly agrees to your demand.
<<set $villageTribute to 50>>
<<set $lastTributeDay to $day>>
<<set $eventLog.push("Day " + $day + ": Intimidated village head into paying 50 gold tribute every 30 days.")>>
<br><br>
<<button "Leave him">>
<<goto "VillageSquare">>
<</button>>
</div>
<</replace>>
<<else>>
<<replace "#tribute-result">>
<div style="color:#e74c3c; margin:15px 0;">
<b>FAILURE:</b> You're not famous enough.The village head stands his ground. He refuses to pay more than the base amount.
<<set $villageTribute to 30>>
<<set $lastTributeDay to $day>>
<<set $eventLog.push("Day " + $day + ": Failed to intimidate village head. Only received 30 gold tribute every 30 days.")>>
<br><br>
<<button "Shake it off and move on">>
<<goto "VillageSquare">>
<</button>>
</div>
<</replace>>
<</if>>
<</button>>
<<button "Leave them be for now">>
<<goto "VillageSquare">>
<</button>>
</div>
<</nobr>><<nobr>>
[[Character|Character]]
[[Pack|Pack]]
[[Journal|Journal]]
[[Camp|Camp]]
[[Map|Map]]
[[Companions|Companions]]
<</nobr>><<nobr>>
<div style="max-width:600px;margin:0 auto;padding:20px;color:#ddd">
<h2 style="color:#64b5f6;border-bottom:2px solid #64b5f6;padding-bottom:8px">Party</h2>
<<if not $companions or $companions.length eq 0>>
<p style="color:#555;font-style:italic">No companions yet. Recruit someone from your tribe below.</p>
<<else>>
<<for _pi = 0; _pi < $companions.length; _pi++>>
<<set _pc to $companions[_pi]>>
<<capture _pi, _pc>>
<div style="background:#1a1a1a;border:1px solid #333;border-radius:6px;padding:12px;margin-bottom:10px;display:flex;gap:12px;align-items:flex-start">
<<if _pc.img and _pc.img neq "">>
<img @src="_pc.img" style="width:52px;height:52px;border-radius:50%;object-fit:cover;border:2px solid #444">
<</if>>
<div style="flex:1">
<strong style="font-size:1.05em"><<= _pc.name>></strong>
<span style="color:#666;font-size:0.8em;margin-left:8px"><<= _pc.origin>></span>
<br>
<span style="font-size:0.8em;color:#888">
ATK <<= _pc.atk || "?">> | DEF <<= _pc.def || "?">> | HP <<= _pc.maxHp || "?">>
</span>
<<showmeter "hp" `_pc.hp !== undefined ? _pc.hp : (_pc.maxHp || 50)` `_pc.maxHp || 50`>>
</div>
<<button "Dismiss">>
<<run setup.dismissCompanion(_pi)>>
<<goto "Companions">>
<</button>>
</div>
<</capture>>
<</for>>
<</if>>
<hr style="border:0;height:1px;background:#333;margin:20px 0">
<h3 style="color:#ccc;font-size:0.9em;letter-spacing:1px">RECRUIT FROM TRIBE</h3>
<<if not $tribe or $tribe.length eq 0>>
<p style="color:#555;font-style:italic">Your tribe is empty.</p>
<<else>>
<<set _anyEligible to false>>
<<for _ri = 0; _ri < $tribe.length; _ri++>>
<<set _rm to $tribe[_ri]>>
<<set _alreadyIn to false>>
<<for _rj = 0; _rj < $companions.length; _rj++>>
<<if $companions[_rj].id eq _rm.id>><<set _alreadyIn to true>><</if>>
<</for>>
<<if not _alreadyIn>>
<<set _anyEligible to true>>
<<capture _ri, _rm>>
<div style="background:#111;border:1px solid #2a2a2a;border-radius:6px;padding:10px;margin-bottom:8px;display:flex;gap:12px;align-items:center">
<<if _rm.img and _rm.img neq "">>
<img @src="_rm.img" style="width:40px;height:40px;border-radius:50%;object-fit:cover;border:1px solid #333">
<</if>>
<div style="flex:1">
<strong><<= _rm.name>></strong>
<span style="color:#666;font-size:0.8em;margin-left:8px"><<= _rm.origin>></span>
<br>
<span style="font-size:0.75em;color:#666">Loyalty: <<= _rm.loyalty>> | Morale: <<= _rm.morale>></span>
</div>
<<button "Recruit">>
<<run setup.recruitCompanion(_ri)>>
<<goto "Companions">>
<</button>>
</div>
<</capture>>
<</if>>
<</for>>
<<if not _anyEligible>>
<p style="color:#555;font-style:italic">All tribe members are already in your party.</p>
<</if>>
<</if>>
</div>
<hr>
<center>
<<button "Go Back">>
<<goto `previous() || "CampHub"`>>
<</button>>
</center>
<</nobr>> <<nobr>>
<<link [img[images/camp/map.webp][CampHub]]>><</link>>
<hr>
<center>
<<button "Go Back">>
<<goto `previous() || "CampHub"`>>
<</button>>
</center>
<</nobr>><<nobr>>
<div style="text-align:center;">
<h2>⚔️ Character</h2>
</div>
<div style="display:flex; flex-wrap:wrap; gap:20px; justify-content:center;">
<div style="flex:1; min-width:220px; max-width:280px; background:#1a1a1a; padding:15px; border-radius:8px; border:1px solid #444;">
<h3 style="text-align:center; color:gold; margin-top:0; border-bottom:1px solid #333; padding-bottom:8px;">Your Form</h3>
<div style="text-align:center; margin-bottom:16px;">
<small style="color:#777; text-transform:uppercase; letter-spacing:1px;">Hair</small><br>
<<if $player.bodyType is "female">>
<img src="images/body/hairf.webp" style="width:160px; border:2px solid #555; border-radius:8px; margin-top:6px;">
<<else>>
<img src="images/body/hairm.webp" style="width:160px; border:2px solid #555; border-radius:8px; margin-top:6px;">
<</if>>
</div>
<div style="text-align:center; margin-bottom:16px;">
<small style="color:#777; text-transform:uppercase; letter-spacing:1px;">Body</small><br>
<<if $player.equips.armor.name isnot "None">>
<<set _arm to setup.items[$player.equips.armor.name]>>
<<if _arm>>
<<set _armVisual to (typeof _arm.img === "object" ? ($player.bodyType === "male" ? _arm.img.male : _arm.img.female) : _arm.img)>>
<img @src="_armVisual" style="width:160px; border:2px solid #555; border-radius:8px; margin-top:6px; box-shadow: 0 0 8px rgba(77, 171, 247, 0.3);">
<p style="color:#999; font-size:0.85em; margin:6px 0 6px 0; font-style:italic;"><<= _arm.desc>></p>
<<button "✕ Unequip">><<run setup.unequipSlot("armor")>><<goto "Character">><</button>>
<</if>>
<<else>>
<<if $player.bodyType is "female">>
<img src="images/body/chestfemale.webp" style="width:160px; border:2px solid #555; border-radius:8px; margin-top:6px;">
<<else>>
<img src="images/body/chestmale.webp" style="width:160px; border:2px solid #555; border-radius:8px; margin-top:6px;">
<</if>>
<p style="color:#aaa; font-size:0.85em; margin:6px 0 0 0; font-style:italic;">Your bare chest.</p>
<</if>>
</div>
<div style="text-align:center;">
<small style="color:#777; text-transform:uppercase; letter-spacing:1px;">Genitals</small><br>
<<if $player.genitals is "female">>
<img src="images/body/genitalsfemale.webp" style="width:160px; border:2px solid #555; border-radius:8px; margin-top:6px;">
<<elseif $player.genitals is "male">>
<img src="images/body/genitalsmale.webp" style="width:160px; border:2px solid #555; border-radius:8px; margin-top:6px;">
<</if>>
</div>
</div>
<div style="flex:1; min-width:280px; max-width:400px; background:#1a1a1a; padding:15px; border-radius:8px; border:1px solid #444;">
<h3 style="margin-top:0; border-bottom:1px solid #333; padding-bottom:8px;">Attributes</h3>
<table style="width:100%; border:none; line-height:2;">
<tr><td>💪 Strength</td> <td style="text-align:right; font-weight:bold; color:#fa5252;">$player.str</td></tr>
<tr><td>🏃 Agility</td> <td style="text-align:right; font-weight:bold; color:#4dabf7;">$player.agi</td></tr>
<tr><td>🛡️ Constitution</td> <td style="text-align:right; font-weight:bold; color:#51cf66;">$player.con</td></tr>
<tr><td>🧠 Intelligence</td> <td style="text-align:right; font-weight:bold; color:#74c0fc;">$player.int</td></tr>
<tr><td>👑 Charisma</td> <td style="text-align:right; font-weight:bold; color:#fcc419;">$player.cha</td></tr>
</table>
<hr style="border:0; border-top:1px solid #333; margin:10px 0;">
<table style="width:100%; border:none; line-height:2;">
<tr><td>🌟 Reputation</td> <td style="text-align:right; font-weight:bold; color:#f9a825;">$player.rep</td></tr>
</table>
<h3 style="margin-top:20px; border-bottom:1px solid #333; padding-bottom:8px;">Equipped Gear</h3>
<div style="margin-bottom: 10px; padding: 8px; background: #252525; border-left: 4px solid #fa5252; display:flex; justify-content:space-between; align-items:center;">
<div style="display: flex; gap: 10px; align-items: center;">
<<if $player.equips.weapon.name isnot "None" and setup.items[$player.equips.weapon.name] and setup.items[$player.equips.weapon.name].img>>
<img @src="setup.items[$player.equips.weapon.name].img" style="width: 40px; height: 40px; border-radius: 4px; border: 1px solid #555; object-fit: cover;">
<</if>>
<div>
<small style="color: #aaa; display:block;">WEAPON</small>
<<if $player.equips.weapon.name is "None">>
<span style="color:#555;">(No Weapon)</span>
<<else>>
<b>$player.equips.weapon.name</b>
<small style="color:#fa5252;"> (+$player.equips.weapon.damage Atk)</small>
<</if>>
</div>
</div>
<<if $player.equips.weapon.name isnot "None">>
<<button "✕">>
<<run setup.unequipSlot("weapon")>>
<<goto "Character">>
<</button>>
<</if>>
</div>
<div style="margin-bottom: 10px; padding: 8px; background: #252525; border-left: 4px solid #fcc419; display:flex; justify-content:space-between; align-items:center;">
<div style="display: flex; gap: 10px; align-items: center;">
<<if $player.equips.jewelry.name isnot "None" and setup.items[$player.equips.jewelry.name] and setup.items[$player.equips.jewelry.name].img>>
<img @src="setup.items[$player.equips.jewelry.name].img" style="width: 40px; height: 40px; border-radius: 4px; border: 1px solid #555; object-fit: cover;">
<</if>>
<div>
<small style="color: #aaa; display:block;">JEWELRY</small>
<<if $player.equips.jewelry.name is "None">>
<span style="color:#555;">(No Jewelry)</span>
<<else>>
<b style="color:#fcc419;">$player.equips.jewelry.name</b>
<<set _jewelryDef to setup.items[$player.equips.jewelry.name]>>
<<if _jewelryDef>>
<<if _jewelryDef.locked_effect and not $ring_power_unlocked>>
<small style="color:#aaa; display:block;">_jewelryDef.locked_effect</small>
<<elseif _jewelryDef.effect>>
<small style="color:#aaa; display:block;">_jewelryDef.effect</small>
<</if>>
<</if>>
<</if>>
</div>
</div>
<<if $player.equips.jewelry.name isnot "None">>
<<button "✕">>
<<run setup.unequipSlot("jewelry")>>
<<goto "Character">>
<</button>>
<</if>>
</div>
<div style="margin-bottom: 10px; padding: 8px; background: #252525; border-left: 4px solid #fa5252; display:flex; justify-content:space-between; align-items:center;">
<div style="display: flex; gap: 10px; align-items: center;">
<<if $player.equips.boots.name isnot "None" and setup.items[$player.equips.boots.name] and setup.items[$player.equips.boots.name].img>>
<img @src="setup.items[$player.equips.boots.name].img" style="width: 40px; height: 40px; border-radius: 4px; border: 1px solid #555; object-fit: cover;">
<</if>>
<div>
<small style="color: #aaa; display:block;">BOOTS</small>
<<if $player.equips.boots.name is "Barefoot">>
<span style="color:#555;">(Barefoot)</span>
<<else>>
<b>$player.equips.boots.name</b>
<small style="color:#fa5252;"> (+$player.equips.boots.def Def)</small>
<</if>>
</div>
</div>
<<if $player.equips.boots.name isnot "Barefoot">>
<<button "✕">>
<<run setup.unequipSlot("boots")>>
<<goto "Character">>
<</button>>
<</if>>
</div>
</div>
</div>
<br><hr>
<center>
<<button "Go Back">><<goto `previous() || "CampHub"`>><</button>>
</center>
<</nobr>><<nobr>>
<<if not $convoyPhase>><<set $convoyPhase to "intro">><</if>>
<div style="background:#1a1208; border:1px solid #5a4a2d; border-radius:8px; padding:15px; font-family:sans-serif; line-height:1.4">
<div style="text-align:center; margin-bottom:12px">
<img src="images/encounters/refugees.webp" style="width:100%; max-width:800px; border-radius:6px; border:2px solid #8a6a2a" onerror="this.style.display='none'">
</div>
<div style="text-align:center; color:#d4aa50; font-weight:bold; margin-bottom:8px; text-transform:uppercase; letter-spacing:2px">
Desperate Refugee Caravan
</div>
<<if $convoyPhase is "intro">>
<div style="font-size:0.9em; color:#ccc; margin-bottom:15px; font-style:italic; text-align:center">
In the distance you spot a ragged column of carts and weary people trudging along the old road... <br><br>
A young woman at the front notices you and freezes. The whole convoy slowly comes to a halt.
</div>
<div style="display:flex; flex-direction:column; gap:8px">
<<button "🚶 Let them pass">>
<<unset $convoyPhase>>
<<goto "OutsideHub">>
<</button>>
<<if $hasBarracks is true>>
<<button "🗣 Approach and speak with them">>
<<set $convoyPhase to "convince">>
<<goto "Event_Convoy">>
<</button>>
<</if>>
<<if $hasSlavePens is true>>
<<button "⛓ Raid the convoy">>
<<set $convoyPhase to "capture">>
<<set $returnTo to "Event_Convoy">>
<<run setup.initCombat([
clone(setup.enemyPresets.Militia),
clone(setup.enemyPresets.Militia),
clone(setup.enemyPresets.Militia)
])>>
<<goto "CombatPage">>
<</button>>
<</if>>
<<button "💪 Intimidate and take what you want">>
<<set $convoyPhase to "force">>
<<set $returnTo to "Event_Convoy">>
<<run setup.initCombat([
clone(setup.enemyPresets.Militia),
clone(setup.enemyPresets.Militia),
clone(setup.enemyPresets.Militia)
])>>
<<goto "CombatPage">>
<</button>>
</div>
<<elseif $convoyPhase is "convince">>
<<set _roll to random(1, 100) + $player.cha>>
<<if _roll gte 45>>
<div style="font-size:0.9em; color:#ccc; margin-bottom:15px; text-align:center">
Your charismatic pitch works. A few refugees step forward, looking for a place in your camp.
</div>
<div style="text-align: center; margin-bottom: 10px; font-size: 0.85em;">
<<set _freeSpace to ($tribeLimit - $tribe.length)>>
<span style="color: #aaa;">Barracks Capacity:</span>
<span @style="(_freeSpace > 0 ? 'color: #00ff00;' : 'color: #ff6666;')">
$tribe.length / $tribeLimit
</span>
</div>
<<if not $tempRecruits>>
<<set $tempRecruits to []>>
<<run $tempRecruits.push(setup.generateTribeMember())>>
<<run $tempRecruits.push(setup.generateTribeMember())>>
<<run $tempRecruits.push(setup.generateTribeMember())>>
<</if>>
<div class="tribe-list" style="display: flex; flex-direction: column; gap: 10px;">
<<for _i to 0; _i lt $tempRecruits.length; _i++>>
<<capture _i>>
<div class="tribe-card" style="display: flex; align-items: center; background: #1a1a1a; padding: 10px; border: 1px solid #444; border-radius: 8px; gap: 15px;">
<div style="width: 60px; height: 60px; overflow: hidden; border-radius: 50%; border: 2px solid #555; flex-shrink: 0;">
<img @src="$tempRecruits[_i].img" style="width: 100%; height: 100%; object-fit: cover; object-position: top;">
</div>
<div style="flex-grow: 1;">
<<if $tempRecruits[_i].gender is "Male">><span style="font-size: 1.1em; color: cyan;"><b><<= $tempRecruits[_i].name >></b></span><<else>><span style="font-size: 1.1em; color: pink;"><b><<= $tempRecruits[_i].name >></b></span><</if>><br>
<small style="color: #aaa;">
</small>
</div>
<div style="text-align: right;">
<<if $tribe.length lt $tribeLimit>>
<<button "Recruit">>
<<run $tribe.push($tempRecruits[_i])>>
<<run $tempRecruits.deleteAt(_i)>>
<<goto "Event_Convoy">>
<</button>>
<<else>>
<small style="color: #ff6666; font-weight: bold; text-transform: uppercase;">Full</small>
<</if>>
</div>
</div>
<</capture>>
<</for>>
<<if $tempRecruits.length is 0>>
<div style="text-align:center; color: gold; font-style: italic; padding: 10px;">
Everyone has been processed.
</div>
<</if>>
</div>
<<else>>
<div style="font-size:0.9em; color:#ccc; margin-bottom:15px; font-style:italic; text-align:center">
Your words fall flat. They huddle together and hurry on.
</div>
<</if>>
<br>
<center>
<<button "Continue">>
<<unset $convoyPhase>>
<<unset $tempRecruits>>
<<goto "OutsideHub">>
<</button>>
</center>
<<elseif $convoyPhase is "capture">>
<div style="font-size:0.9em; color:#ccc; margin-bottom:15px; font-style:italic; text-align:center">
The guards lie dead or broken. The surviving refugees huddle in terror as your men round them up. Choose who to take back to the pens.
</div>
<div style="text-align: center; margin-bottom: 10px; font-size: 0.85em;">
<<set _freeSlaveSpace to ($slaveLimit - $slaves.length)>>
<span style="color: #aaa;">Slave Pen Capacity:</span>
<span @style="(_freeSlaveSpace > 0 ? 'color: #00ff00;' : 'color: #ff6666;')">
$slaves.length / $slaveLimit
</span>
</div>
<<if not $tempSlaves>>
<<set $tempSlaves to []>>
<<run $tempSlaves.push(setup.generateSlave())>>
<<run $tempSlaves.push(setup.generateSlave())>>
<<run $tempSlaves.push(setup.generateSlave())>>
<</if>>
<div class="slave-list" style="display: flex; flex-direction: column; gap: 10px;">
<<for _i to 0; _i lt $tempSlaves.length; _i++>>
<<capture _i>>
<div class="slave-card" style="display: flex; align-items: center; background: #1a1a1a; padding: 10px; border: 1px solid #444; border-radius: 8px; gap: 15px;">
<div style="width: 60px; height: 60px; overflow: hidden; border-radius: 50%; border: 2px solid #d4af77; flex-shrink: 0;">
<img @src="$tempSlaves[_i].img" style="width: 100%; height: 100%; object-fit: cover; object-position: top;">
</div>
<div style="flex-grow: 1;">
<span style="font-size: 1.1em; color: #d4af77;"><b><<= $tempSlaves[_i].name >></b></span><br>
<small style="color: #aaa;">
</small>
</div>
<div style="text-align: right;">
<<if $slaves.length lt $slaveLimit>>
<<button "Enslave">>
<<run $slaves.push($tempSlaves[_i])>>
<<run $tempSlaves.deleteAt(_i)>>
<<set $eventLog.push("Day " + $day + ": Captured a slave from the caravan.")>>
<<goto "Event_Convoy">>
<</button>>
<<else>>
<small style="color: #ff6666; font-weight: bold; text-transform: uppercase;">Full</small>
<</if>>
</div>
</div>
<</capture>>
<</for>>
<<if $tempSlaves.length is 0>>
<div style="text-align:center; color: #fa5252; font-style: italic; padding: 10px;">
No one of value remains.
</div>
<</if>>
</div>
<br>
<center>
<<button "Go Away">>
<<unset $convoyPhase>>
<<unset $tempSlaves>>
<<goto "OutsideHub">>
<</button>>
</center>
<<elseif $convoyPhase is "force">>
<<set _tempNPC to setup.generateSlave()>>
<<set _tempNPC.lust to 20>>
<<set _tempNPC.love to 0>>
<<set _tempNPC.sub to 30>>
<<set $pendingSlave to _tempNPC>>
<<set $returnPassage to "OutsideHub">>
<<set $currentIntimacyVideo to "">>
<<set _heShe to (_tempNPC.gender is "Female" ? "she" : "he")>>
<<set _himHer to (_tempNPC.gender is "Female" ? "her" : "him")>>
<<set $lastIntimacyText to "They have no say in what happens next.">>
<div style="font-size:0.9em; color:#ccc; margin-bottom:15px; font-style:italic; text-align:center">
You step forward and make your demands clear. The refugees tremble as you survey them like cattle. You point to one and beckon _heShe forward; _heShe has no choice but to submit.
</div>
<center>
<div style="display: inline-block; cursor: pointer;">
<div style="width: 120px; height: 120px; overflow: hidden; border-radius: 50%; border: 4px solid #d4af77; box-shadow: 0 0 15px rgba(212, 175, 119, 0.5); margin: 0 auto;">
<img @src="_tempNPC.img" style="width: 100%; height: 100%; object-fit: cover; object-position: top;">
</div>
</div>
</center>
<br>
<center>
<<if $slaves.length < $slaveLimit>>
<<print '<<button "Claim ' + _tempNPC.name + '">>
<<run $slaves.unshift($pendingSlave)>>
<<set $activeNPCIndex to 0>>
<<set $activeNPCType to "slave">>
<<unset $convoyPhase>>
<<goto "IntimacyHub">>
<</button>>'>>
<<else>>
<button disabled style="color: gray; background: #333; border: 1px solid #444; padding: 8px 16px; border-radius: 4px;">Pens Full</button>
<div style="color: #ff5f5f; font-size: 0.85em; margin-top: 5px;">Your slave pens are full. You must let them go.</div>
<</if>>
</center>
<br>
<center>
<<button "Actually, let them go">>
<<unset $pendingSlave>>
<<unset $convoyPhase>>
<<goto "OutsideHub">>
<</button>>
</center>
<</if>>
</div>
<</nobr>><<nobr>>
<div class="exile-container" style="padding: 20px; background: #111; border: 1px solid #444; border-radius: 8px;">
<h3>Exile</h3>
<img @src="$activeNPC.img" style="width:200px; height:250px; object-fit:cover; float:left; margin-right:15px; border:2px solid gold; border-radius: 4px;">
<p>You are about to kick <b>$activeNPC.name</b> out of the tribe.</p>
<div class="stats-preview" style="margin-bottom: 20px;">
<b>Loyalty:</b> <<showmeter "energy" $activeNPC.loyalty 100>>
<b>Morale:</b> <<showmeter "hunger" $activeNPC.morale 100>>
</div>
<<if $activeNPC.loyalty lt 40>>
<div style="color:orange; border:1px solid orange; padding:10px; background: rgba(255,165,0,0.1); margin-bottom: 20px;">
$activeNPC.name doesn't trust you enough to stay willingly. If you free them, they will leave forever.
</div>
<<else>>
<div style="color:cyan; border:1px solid cyan; padding:10px; background: rgba(0,255,255,0.1); margin-bottom: 20px;">
$activeNPC.name is a loyal member of the tribe. Exiling them may affect the morale of others.
</div>
<</if>>
<div class="actions" style="margin-top: 20px;">
<<button "Exile (They leave forever)">>
<<set _sIndex to $slaves.findIndex(npc => npc.id === $activeNPC.id)>>
<<if _sIndex >= 0>><<run $slaves.splice(_sIndex, 1)>><</if>>
<<set _tIndex to $tribe.findIndex(npc => npc.id === $activeNPC.id)>>
<<if _tIndex >= 0>><<run $tribe.splice(_tIndex, 1)>><</if>>
<<set _cIndex to $companions.findIndex(npc => npc.id === $activeNPC.id)>>
<<if _cIndex >= 0>><<run $companions.splice(_cIndex, 1)>><</if>>
<<goto "CampHub">>
<</button>>
<<button "Cancel (Keep $activeNPC.name)">>
<<goto "NPC_Interaction">>
<</button>>
</div>
<div id="result"></div>
<br style="clear:both;">
</div>
<</nobr>><<nobr>>
<<if not $ralia_meet_phase>>
<<set $ralia_meet_phase to 1>>
<</if>>
<div style="background:#1a1208;border:1px solid #5c4d2d;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<h3 style="color:#00ff88; text-align:center; margin-top:0; font-size:1.4em;">The Swamp Ambush</h3>
<<if $ralia_meet_phase is 1>>
<div style="text-align:center;margin-bottom:12px">
<img src="images/NPC/ralia/swamp_path.webp" style="width:100%;max-width:800px;border-radius:6px;" onerror="this.style.display='none'">
</div>
<p>The deeper you push into the swamp, the more the world seems to close in around you. Thick mist clings to everything. The air is heavy, damp, and reeks of rotting vegetation and stagnant water. Twisted black trees loom overhead, their roots snaking through the mud like veins. Every step makes a wet, sucking sound as the ground tries to swallow your boots.</p>
<p>Suddenly the water to your left erupts in a violent splash. Two massive, slime-covered tentacles bursts from the murk. They are as thick as your thigh, covered in glistening black and foul-smelling mucus and snap toward your throat as they lunge with terrifying speed.</p>
<div style="text-align:center;margin-bottom:15px">
<video autoplay loop muted playsinline style="width:100%;max-width:800px;border-radius:8px;border:2px solid #5a4a2d">
<source src="images/NPC/ralia/swamp.webm" type="video/webm">
</video>
</div>
<p>Your heart pounds. This is no ordinary beast. The swamp itself seems to have come alive to test you.</p>
<center> <<button "⚔ Fight">>
<<set $returnTo to "Event_MeetRalia">>
<<set $ralia_meet_phase to 2>>
<<run setup.initCombat([
clone(setup.enemyPresets.Tentacle),
clone(setup.enemyPresets.Tentacle),
clone(setup.enemyPresets.Tentacle)
])>>
<<goto "CombatPage">>
<</button>>
</center>
<<elseif $ralia_meet_phase is 2>>
<p>You roar and meet the beast head-on. Your blade flashes through the mist, slicing into slick flesh. The swamp lurker thrashes wildly, spraying foul water and mucus everywhere. Its powerful coils slam into your side, nearly knocking you off your feet, but you stand firm. With a final, brutal strike you drive your weapon deep into its flesh. The creature has a final spasm and collapses into the muddy water disappearing.</p>
<p>You stand there panting, covered in slime and swamp water, when a high-pitched, terrified <strong>scream</strong> cuts through the mist from deeper in the swamp.</p>
<p>You sprint through the reeds and tangled roots, heart hammering. Branches slap at your face. The scream echoes again — closer this time. You burst into a small, murky clearing and skid to a halt.</p>
<div style="text-align:center;margin-bottom:12px">
<img src="images/NPC/ralia/struggle.webp" style="width:100%;max-width:800px;border-radius:6px;" onerror="this.style.display='none'">
</div>
<p>Pressed against a half-sunken tree is a young woman. Her clothes are torn and soaked, long brown hair plastered to her skin. Her eyes are wide with pure terror.</p>
<p>Trying to pull her in the dark waters there is a thing of nightmare. A bloated, pulsating mass of flesh with a bunch of thick, writhing tentacles covered in slick mucus and suction cups. one tentacle have already wrapped around her legs and waist, slowly dragging her towards a certain death.</p>
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/ralia/lurker.webm" type="video/webm">
</video></center>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Please! Someone—help me! I can’t break free!" "#ff88cc">>
<p>Her voice cracks with fear. For a brief moment her eyes meet yours across the clearing, desperate and pleading… and something else flickers there — a spark of hope.</p>
<center><<button "⚔ Fight">>
<<set $returnTo to "Event_MeetRalia">>
<<set $ralia_meet_phase to 3>>
<<run setup.initCombat([
clone(setup.enemyPresets.SwampLurker),
clone(setup.enemyPresets.Tentacle),
clone(setup.enemyPresets.Tentacle),
clone(setup.enemyPresets.Tentacle),
clone(setup.enemyPresets.Tentacle)
])>>
<<goto "CombatPage">>
<</button>>
</center>
<<elseif $ralia_meet_phase is 3>>
<p>The Bog Horror turns its attention to you the moment you charge. Its tentacles whip through the air like living lashes. You dodge, slash, and hack at the writhing limbs. One tentacle slams into your chest, knocking the wind out of you, but you refuse to fall. With a battle cry you leap forward and drive your blade deep into the creature’s central body. Foul black ichor sprays everywhere. The monster lets out a wet, gurgling shriek as its tentacles convulse and go limp. It collapses into the swamp with a heavy splash, slowly sinking beneath the dark water.</p>
<video autoplay loop muted playsinline style="width:100%;max-width:800px;border-radius:8px;border:2px solid #5a4a2d">
<source src="images/NPC/ralia/defeated.webm" type="video/webm">
</video>
<<say "Ralia" "images/NPC/ralia/profile.webp" "You… you actually saved me. I thought I was going to die here…" "#ff88cc">>
<p>She’s trembling, breathing hard, her cheeks flushed. Her torn clothes cling to her body. She looks up at you with wide, glistening eyes — a mixture of shock, gratitude, and unmistakable warmth. For a moment she can’t seem to look away from your face.</p>
<div style="text-align:center;margin-bottom:12px">
<img src="images/NPC/ralia/saved.webp" style="width:100%;max-width:800px;border-radius:6px;" onerror="this.style.display='none'">
</div>
<center> <<button "Help her up and escort her out of the swamp">>
<<set $ralia_meet_phase to 4>>
<<goto "Event_MeetRalia">>
<</button>></center>
<<elseif $ralia_meet_phase is 4>>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin-bottom:20px;">
<source src="images/NPC/ralia/stand.webm" type="video/webm">
</video></center>
<p>After a long moment she slowly pushes herself up, wincing slightly as she brushes dirt from her ripped dress. Even disheveled and covered in grime, she is stunning.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "You saved me. I thought I was dead. Thank you…" "#ff88cc">>
<p>She takes a shaky breath, then looks toward the distant village hedge.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Please… would you escort me out of this stupid swamp? I don’t want to be alone out here anymore." "#ff88cc">>
<p>You nod, still stunned. She’s beautiful — dangerously so — and she doesn’t look at you with the fear most people do. That alone throws you off balance.</p>
<p>She starts walking ahead of you, carefully picking her way through the roots and mud. You can’t stop staring at her. The way her torn dress clings to her body, the sway of her hips, the strands of wet hair sticking to her neck… you feel like a complete idiot, but your eyes refuse to look anywhere else.</p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:20px 0;">
<source src="images/NPC/ralia/walk.webm" type="video/webm">
</video></center>
<p>The two of you walk in near silence until the trees begin to thin and the ground grows firmer. As you finally step out of the swamp, she stops and turns toward you.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Thank you… I don’t know what I would have done without you." "#ff88cc">>
<p>She gives you a small, warm smile, then turns and begins walking toward the village hedge. You just stand there like a fool, watching her go, unable to look away.</p>
<p>After a few steps she suddenly pauses, glances back over her shoulder, and flashes you one last bright smile while raising her hand in a gentle wave.</p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:20px 0;">
<source src="images/NPC/ralia/bye.webm" type="video/webm">
</video></center>
<p>Your heart skips a hard beat.</p>
<center><<button "Continue">>
<<set $quest_villager to 2>>
<<set $relNPCs["ralia"].love to setup.clamp($relNPCs["ralia"].love + 10, 0, 100)>> <<goto "Swamp">>
<</button>></center>
<</if>>
</div>
<</nobr>><<nobr>>
<div style="background:#1a1208;border:1px solid #5c4d2d;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.4">
<br>
<center><img src="images/locations/village_square.webp" style="width:100%;max-width:600px;border-radius:8px;border:2px solid #8b5a2b;margin-bottom:15px"></center><br>
You stroll through the bustling village square, the air thick with the scent of woodsmoke and roasting meat. Villagers huddle in small groups, speaking in low, worried tones.
<br>
As you pass a cluster of older women near the well, one of them grabs another's arm and whispers loudly enough for you to hear
<center><img src="images/encounters/village/chatting.webp" style="width:100%;max-width:600px;border-radius:8px;border:2px solid #8b5a2b;margin-bottom:15px"></center>
<br>
<<say "Old Woman" "images/encounters/village/vil1.webp" "Three more this month... first it was Old Bren, then little Mira, and now the blacksmith's son. All of them went into that cursed swamp looking for herbs or game and never came back.">>
Another woman shudders. <<say "Not As Old Woman" "images/encounters/village/vil2.webp" "The mist takes them. Something evil lives out there. Mark my words — the swamp is hungry.">>
The first woman lowers her voice even more:
<<say "Old Woman" "images/encounters/village/vil1.webp" "Some say it's the old gods punishing us... others say it's something worse. Something crawls in those waters.">>
They both fall silent as they notice you listening. One of them gives you a fearful glance before quickly looking away.
<br><br>
<div style="background:#1a1a1a;border:1px solid #444;border-radius:6px;padding:15px;text-align:center;margin:15px auto;max-width:500px">
<p style="color:gold; font-weight:bold; text-transform:uppercase; letter-spacing:1px;">New Quest: The Disappearing Villagers</p>
Investigate the swamp and discover what is causing the disappearances.
</div>
<br>
<center><<button "Go away">>
<<goto "VillageSquare">>
<</button>></center>
<</nobr>><<nobr>>
<<if not $ralia_Brothel_phase>>
<<set $ralia_Brothel_phase to 1>>
<</if>>
<div style="background:#1a0a0f;border:1px solid #7a1a3a;border-radius:8px;padding:20px;margin-bottom:20px;">
🌹 The Red Swan
<<if $ralia_Brothel_phase is 1>>
<div style="text-align:center;color:#ff69b4;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">
<img src="images/locations/brothelin.webp" style="width:80%;max-width:800px;border-radius:8px;border:2px solid #555;"><br>
</div>
<p>You step into the warm, perfumed glow of The Red Swan, the low murmur of laughter and soft music washing over you. Then your eyes lock onto something that makes you freeze mid-step.</p>
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/ralia/brothel.webm" type="video/webm">
</video></center>
<p>For a single heartbeat, you see <strong>her</strong> — the girl from the swamp. She’s walking with a customer, her hand lightly resting on his arm, smiling as she leads him toward a private room. The lamplight catches her brown hair just before the heavy velvet curtain falls shut behind them.</p>
<p>Your heart slams violently against your ribs.</p>
<p>By the time you blink, she’s already gone.</p>
<p>You stand there for a moment, stunned, then force yourself to move. Trying to sound casual, you approach one of the prostitutes lounging nearby.</p>
"There’s a girl with brown hair… from the village. Does she work here? Her name is Ralia."
<p>The woman lets out a soft, delighted giggle, covering her painted lips with long fingers. Her eyes sparkle with amusement.</p>
<<say "Prostitute" "images/encounters/redswan/black.webp" "Ohhh~ Interested in our sweet village flower, are we? Ralia’s quite popular lately." "#ff69b4">>
<p>You nod and decide to wait. You sit down in the dimly lit lounge as customers come and go around you.</p>
<p>Not long after a pale-skinned redhead with heavy makeup saunters over. She leans down, deliberately pushing her full breasts together right in front of your face.</p>
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/ralia/red.webm" type="video/webm">
</video></center>
<<say "Redhead" "images/NPC/ralia/red.webp" "Mmm, you look lonely, big strong warlord… Why wait when I can take care of you right now?" "#ff69b4">>
<p>She blows you a mocking kiss and winks.</p>
<center><<button "Refuse her and keep waiting">>
<<set $ralia_Brothel_phase to 2>>
<<goto "Ralia_Brothel">>
<</button>></center>
<<elseif $ralia_Brothel_phase is 2>>
<p>You shake your head. She pouts dramatically and walks away.</p>
<p>A few minutes later, a stunning woman with sharp Arabic features and dark, kohl-lined eyes approaches you. She moves with seductive confidence, stopping so close that her warm breath brushes your skin.</p>
<p>Her exotic perfume — sweet musk mixed with jasmine and spice — hits you like a drug. You feel slightly dizzy, almost inebriated by her scent as she leans in.</p>
<<say "Arabic Prostitute" "images/NPC/ralia/black.webp" "What are you doing all alone here, handsome…?" "#ff69b4">>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/black.webm" type="video/webm">
</video>
<p>Her hand slowly slides down and rests high on your thigh, fingers gently squeezing as she smiles with wicked intent.</p>
<<if $player.gender is "male">>
<p>She doesn’t stop there. Her fingers boldly glide over the growing bulge in your pants, stroking your hardening cock through the fabric with slow, teasing pressure.</p>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/male.webm" type="video/webm">
</video>
<<say "Arabic Prostitute" "images/NPC/ralia/black.webp" "Mmm… I can feel how hard you are already. I can make you cum right here in this room if you want, handsome. No one will even notice…" "#ff69b4">>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/cock.webm" type="video/webm">
</video>
<<else>>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/female.webm" type="video/webm">
</video>
<p>Her fingers continue their journey, delicately moving the leather covering your pussy to the side. She begins to slowly stroke and tease your slick lips, circling your clit with expert care as she feels you getting wetter by the second.</p>
<center> <video autoplay loop muted playsinline style="width:40%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/pussy.webm" type="video/webm">
</video></center>
<<say "Arabic Prostitute" "images/NPC/ralia/black.webp" "Mmm… you’re already so wet for me. Let me take care of you right here, beautiful…" "#ff69b4">>
<</if>>
<center><<button "Refuse her and keep waiting">>
<<set $ralia_Brothel_phase to 3>>
<<goto "Ralia_Brothel">>
<</button>></center>
<<elseif $ralia_Brothel_phase is 3>>
<p>You gently push her hand away and continue waiting, your eyes fixed on the curtain.</p>
<p>After what feels like an eternity of waiting, a side door near the back of the lounge finally opens.</p>
<p>Ralia steps out, still lightly flushed from her last client, her hair slightly tousled and her dress clinging to her body in all the right places. The moment her eyes find you sitting there, she freezes for a heartbeat — clearly surprised.</p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/surprise.webm" type="video/webm">
</video></center>
<p>Then her face lights up with a **broad, radiant smile** that makes your chest tighten.</p>
<p>She looks even more beautiful than you remembered. The warm lamplight catches the soft curve of her lips, the gentle sway of her hips as she walks straight toward you. Your heart pounds so hard you can feel it in your throat. All the noise of the brothel seems to fade into the background.</p>
<p>Without hesitation, Ralia sits down right in front of you, close enough that her knee brushes against yours. She gracefully picks up a half-full cup of wine from the low table and takes a small sip, her eyes never leaving yours.</p>
<div style="text-align:center;color:#ff69b4;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">
<img src="images/NPC/ralia/wine.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;"><br>
</div>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Warlord… I didn’t expect to see you here." "#ff88cc">>
<p>Her voice is warm, soft, and genuinely happy. She sets the cup down and leans in slightly.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "How are you…? I still can’t believe you saved me that day in the swamp. I never thanked you enough for what you did." "#ff88cc">>
<p>She smiles again, this time a little shy, a little playful.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Let me make it up to you properly. Come with me… This one’s on the house." "#ff88cc">>
<p>She gets up and takes your hand in hers, guiding you to the room she exited one moment before.</p>
<<if $player.gender is "male">>
<center><div style="text-align:center;color:#ff69b4;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">
<img src="images/NPC/ralia/malehand.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;"><br>
</div></center>
<<else>>
<center><div style="text-align:center;color:#ff69b4;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">
<img src="images/NPC/ralia/femhand.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;"><br>
</div></center>
<</if>>
<center><<button "Go with Ralia">>
<<goto "Ralia_Oral">>
<</button>></center>
<</if>>
</div>
<</nobr>><<nobr>>
<<if not $ralia_Oral_phase>>
<<set $ralia_Oral_phase to 1>>
<</if>>
<div style="background:#1a0a0f;border:1px solid #7a1a3a;border-radius:8px;padding:20px;margin-bottom:20px;">
<<if $ralia_Oral_phase is 1>>
<p>The moment the door closes behind you, the outside noise of the brothel fades away. The room is dimly lit by warm lantern light, with rich red drapes and a large, luxurious bed in the center.</p>
<center><div style="text-align:center;color:#ff69b4;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">
<img src="images/NPC/ralia/room.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;"><br>
</div></center>
<p>Before you can even take in your surroundings, Ralia turns to face you. The shy, innocent village girl you saved in the swamp is gone. In her place stands a woman who moves with confident, sensual grace.</p>
<p>With a single smooth motion, she slips her dress off her shoulders. The fabric slides down her body and pools at her feet, revealing her naked form. Her breasts, her soft curves, the smooth skin still slightly flushed from her previous client — she stands before you completely exposed, radiating experience and raw lust.</p>
<p>She smiles at your stunned expression, clearly enjoying the effect she has on you.</p>
<p>Ralia steps close, gently places her hands on your <<if $player.gender is "male">> chest <<else>> shoulders <</if>>, and guides you backward until you sink into a large, chair facing the bed.</p>
<center><div style="text-align:center;color:#ff69b4;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">
<img src="images/NPC/ralia/chair.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;"><br>
</div></center>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Wait here, my Dear… Just sit back and enjoy the show." "#ff88cc">>
<p>Her voice is low, sultry, and full of promise.</p>
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/ralia/undress.webm" type="video/webm">
</video></center>
<p>Without breaking eye contact, she hooks her thumbs into the thin strings of her underwear and slowly slides them down her legs, letting them drop to the floor. She steps out of them gracefully, now completely naked.</p>
<p>With elegant, deliberate movements, Ralia climbs onto the large bed right in front of you. She bends her body over, arching her back slightly as she looks over her shoulder at you with a hungry, seductive smile.</p>
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/ralia/arch.webm" type="video/webm">
</video></center>
<center><<button "Enojy the moment">>
<<set $ralia_Oral_phase to 2>>
<<goto "Ralia_Oral">><</button>></center>
<<elseif $ralia_Oral_phase is 2>>
<p>Ralia climbs gracefully onto the large bed, positioning herself on her knees with her back facing you. She arches her back slightly, giving you a perfect, unobstructed view of her round ass and the glistening pink folds of her pussy.</p>
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/ralia/ass.webm" type="video/webm">
</video></center>
<p>She reaches for a small glass bottle on the bedside table, pours a generous amount of scented oil into her palms, and begins to slowly rub it over her body. Her hands glide over her shoulders, down her back, and across the curves of her ass. The oil makes her skin shine beautifully in the warm candlelight, every inch of her now slick and radiant.</p>
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/ralia/oil.webm" type="video/webm">
</video></center>
<p>With a soft, teasing sigh, she lowers herself forward, lying flat on her belly while keeping her legs slightly spread. From your seat you now have an even more explicit, intimate view of her exposed pussy.</p>
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/ralia/finger.webm" type="video/webm">
</video></center>
<p>Her hand slides between her thighs. She starts caressing herself slowly, her fingers gently stroking her slick lips. A moment later she slips one finger inside herself with a low, breathy moan that sends a jolt straight through you.</p>
<p>Her hips move subtly against her own hand as she begins to pleasure herself right in front of you, her moans growing softer and needier with every stroke.</p>
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/ralia/moan.webm" type="video/webm">
</video></center>
<br>
<center><<button "She Cums">>
<<set $ralia_Oral_phase to 3>>
<<goto "Ralia_Oral">><</button>></center>
<<elseif $ralia_Oral_phase is 3>>
<p>Her breathing grows faster, her hips rocking more desperately against her own hand. Soft, breathy moans escape her lips as she slides a second finger inside herself, pumping them steadily while her thumb circles her swollen clit.</p>
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/ralia/cums.webm" type="video/webm">
</video></center>
<p>Suddenly her back arches sharply. Her thighs tremble and a loud, shuddering moan fills the room as she cums hard right in front of you. Her pussy visibly clenches around her fingers, her juices glistening in the candlelight as waves of pleasure ripple through her body.</p>
<p>After a long moment, Ralia slowly withdraws her fingers, still trembling. She turns around gracefully and sits on the edge of the bed facing you, her legs slightly parted. Giving you a full view of her swollen pussy. A satisfied, playful smile spreads across her flushed face as she looks at you with sparkling eyes.</p>
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/ralia/lips.webm" type="video/webm">
</video></center>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Mmm… Did you enjoy the show, my Dear?" "#ff88cc">>
<p>She bites her lower lip, clearly pleased by the effect she’s having on you.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "But… it’s not over yet." "#ff88cc">>
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/ralia/comes1.webm" type="video/webm">
</video></center>
<p>With a sultry smile, she slides off the bed and slowly walks toward you, completely naked and glistening with oil. Her hips sway seductively with every step as she closes the distance between you.</p>
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/ralia/comes2.webm" type="video/webm">
</video></center>
<br>
<center><<button "She comes closer">>
<<set $ralia_Oral_phase to 4>>
<<goto "Ralia_Oral">><</button>></center>
<<elseif $ralia_Oral_phase is 4>>
<<if $player.gender is "male">>
<p>Ralia drops to her knees between your spread legs with a hungry smile. Her fingers make quick work of your pants, freeing your hard cock. It springs out, already throbbing, and she lets out a soft, appreciative moan at the sight of it.</p>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/blow1.webm" type="video/webm">
</video>
<p>She leans in and begins teasing you mercilessly with her mouth — dragging her soft, warm tongue slowly along the underside of your shaft, circling the head, and placing wet, open-mouthed kisses along every inch. Her breath is hot against your skin as she looks up at you with lust-filled eyes.</p>
<p>Then she rises slightly, pressing your rock-hard cock between her glistening, oil-slicked breasts.</p>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/blow2.webm" type="video/webm">
</video>
<p>She squeezes her tits together around your shaft and starts sliding them up and down, rubbing your cock between her soft, slippery breasts while her tongue flicks teasingly over the tip.</p>
<p>She then takes control again, wrapping her hand around your cock and stroking it firmly while pressing the sensitive head against her wet tongue, swirling it in slow, torturous circles.</p>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/blow3.webm" type="video/webm">
</video>
<p>She gets playful, slapping your hard, slick cock against her tongue, her cheeks, and her open mouth with soft, wet smacks, grinning wickedly at your reactions.</p>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/blow4.webm" type="video/webm">
</video>
<p>Finally, she cups your balls in one hand, holding them firmly but gently as she takes you deeper into her mouth.</p>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/blow5.webm" type="video/webm">
</video>
<p>Ralia begins sucking you with a steady, perfect rhythm — her head bobbing smoothly while her hand strokes the part of your cock she can’t fit in her mouth. Her tongue works you relentlessly as wet, obscene sounds fill the room.</p>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/blow6.webm" type="video/webm">
</video>
<p>The pleasure builds rapidly until you can’t hold back any longer. With a deep groan you explode into her mouth, pumping thick ropes of cum across her tongue. Ralia moans around your cock, eagerly drinking every drop.</p>
<p>When you finally finish, she slowly pulls back. She opens her mouth wide, showing you the mess you made on her tongue, then lets your cum slowly drip down her chin in a thick, glistening strand while looking straight into your eyes with pure satisfaction.</p>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/blow7.webm" type="video/webm">
</video>
<p>Ralia slowly licks her lips, savoring every drop with a soft, satisfied hum. She looks up at you with a wicked, playful smile, her eyes sparkling with lust and affection.</p>
<<else>>
<p>With a sultry smile, she slides off the bed and slowly walks toward you, completely naked and glistening with oil. Her hips sway seductively with every step as she closes the distance between you.</p>
<p>Ralia drops gracefully to her knees between your spread legs. Her warm hands slide up your thighs, gently spreading them wider as she stares at your already soaked pussy with obvious hunger.</p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/les1.webm" type="video/webm">
</video></center>
<p>She runs two fingers slowly along your slick pussy lips, spreading them apart to feel just how wet you are. A soft, delighted hum escapes her as she feels your arousal coating her fingers.</p>
<p>Without warning, she leans in and gives you one long, slow, luxurious lick from the top of your clit all the way down to your entrance. The wet heat of her tongue makes your entire body tremble.</p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/les2.webm" type="video/webm">
</video></center>
<p>She settles lower between your thighs, looking up at you with a wicked smile. Her tongue focuses on the entrance of your pussy, licking and teasing the sensitive opening while never breaking eye contact. She clearly enjoys watching every twitch and moan you make.</p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/les3.webm" type="video/webm">
</video></center>
<p>Her tongue suddenly pushes inside you, thrusting deep and fucking you with slow, deliberate strokes. The wet, obscene sounds of her tongue working in and out of your pussy fill the room as your hips begin to move on their own.</p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/les4.webm" type="video/webm">
</video></center>
<p>Ralia moans against your pussy and begins sucking gently on your folds, her lips creating delicious suction as her tongue continues to explore you.</p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/les5.webm" type="video/webm">
</video></center>
<p>She finally moves higher, focusing entirely on your swollen clit. Her tongue flicks, circles, and sucks with perfect rhythm, driving you closer and closer to the edge with every movement.</p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/les6.webm" type="video/webm">
</video></center>
<p>The pleasure becomes overwhelming. Your thighs start shaking uncontrollably as a powerful orgasm crashes through you. Ralia keeps sucking and licking through your climax, drawing out every last wave of pleasure until you’re left trembling and gasping in the chair.</p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/les7.webm" type="video/webm">
</video></center>
<p>
<strong>Ralia licks her lips slowly, looking extremely pleased with herself.</strong>
</p>
<</if>>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Mmm… That was fun~" "#ff88cc">>
<p>She rises gracefully from between your legs and climbs into your lap, straddling you. Her naked, oil-slicked body presses warmly against yours as she leans in close.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Come meet me again soon, dear… I’d love to take care of you like this whenever you want." "#ff88cc">>
<p>Before you can answer, she cups your face with both hands and kisses you deeply. Her soft lips melt against yours, her tongue slipping into your mouth so you can taste yourself on her. The kiss is slow, passionate, and full of promise.</p>
<center><div style="text-align:center;color:#ff69b4;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">
<img src="images/NPC/ralia/kiss.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;"><br>
</div></center>
<p>
<strong>Ralia pulls back slightly, her forehead resting against yours, and whispers sweetly:</strong>
</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Until next time, my Warlord…" "#ff88cc">>
<<set $relNPCs["ralia"].love to setup.clamp($relNPCs["ralia"].love + 2, 0, 100)>>
<div style="color:#ff88cc; text-align:center; font-weight:bold; margin:15px 0;">
Ralia likes you more! (+2 Love)
</div>
<center><<button "Leave the room">>
<<set $quest_villager to 3>>
<<passTime 60>>
<<goto "Brothel">>
<</button>></center>
<</if>>
</div>
<</nobr>><<nobr>>
<div style="background:#1a0a0f;border:1px solid #7a1a3a;border-radius:8px;padding:15px;font-family:sans-serif;line-height:1.55">
<div style="text-align:center;color:#ff69b4;font-weight:bold;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px">
<img src="images/NPC/ralia/brothel_profile.webp" style="width:80%;max-width:800px;border-radius:8px;border:2px solid #555;"><br>
🌹 The Villager
</div>
<p>Ralia leads you by the hand into the private room and gently closes the door behind you. The loud sounds of the brothel fade away, leaving only the soft glow of candles and the intimate rhythm of your breathing.</p>
<p>She turns to face you, letting the thin silk robe slip from her shoulders. It pools at her feet, leaving her completely naked and glistening with oil. Her eyes are full of desire and playful confidence.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "So… did you enjoy my little show last time?" "#ff88cc">>
<p>She bites her lower lip, clearly remembering how you watched her cum on the bed.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Would you like me to give you another one?" "#ff88cc">>
<div style="margin-top: 40px; display: flex; flex-direction: column; gap: 16px;">
<center> <<button "Yes… give me another show like last time">>
<<goto "Ralia_Oral">>
<</button>></center>
<<if $gold >= 50>>
<center>
<div id="ralia-interaction" style="margin: 20px 0;">
<<button "I want more than just a show this time">>
<<if $player.gender is "male">>
<<set $gold -= 50>>
<<goto "Ralia_Fuck">>
<<else>>
<<replace "#ralia-interaction">>
<p>She smiles warmly, then gives you a playful wink.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Sorry darling… but I don’t do more with girls." "#ff88cc">>
<<say "Ralia" "images/NPC/ralia/profile.webp" "I hope you’re not too disappointed~ But I’d still love to give you a nice show if you want." "#ff88cc">>
<</replace>>
<</if>>
<</button>>
</div>
</center>
<<else>>
<center><span style="color:#fa5252">Not enough gold</span></center>
<</if>>
</div>
<</nobr>><<nobr>>
<<if not $Ralia_Fuck_phase>>
<<set $Ralia_Fuck_phase to "start">>
<</if>>
<div style="background:#1a0a0f; border:1px solid #7a1a3a; border-radius:8px; padding:20px;">
<<if $Ralia_Fuck_phase is "start">>
<p>You and Ralia stand facing each other, completely naked. The warm candlelight dances across her oiled skin as she gently pushes you back onto the large bed.</p>
<p>She climbs on top of you, straddling your hips. Her soft, warm body presses against yours as she leans down and kisses you deeply.</p>
<center>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/fuck1.webm" type="video/webm">
</video>
</center>
<p>Her tongue dances with yours, the kiss growing hotter and more desperate by the second.</p>
<center>
<<button "Continue">>
<<set $Ralia_Fuck_phase to "tease">>
<<goto "Ralia_Fuck">>
<</button>> </center>
<<elseif $Ralia_Fuck_phase is "tease">>
<p>Ralia leans back, sitting upright on your lap. You can’t stop yourself — your hands roam over her body, sliding down to her wet pussy. You rub your hard, throbbing cock against her slick lips, teasing her entrance as she moans softly.</p>
<center>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/fuck2.webm" type="video/webm">
</video>
</center>
<center>
<<button "Continue">>
<<set $Ralia_Fuck_phase to "balls">>
<<goto "Ralia_Fuck">>
<</button>> </center>
<<elseif $Ralia_Fuck_phase is "balls">>
<p>Ralia slides down your body with a mischievous smile. She takes your balls into her warm mouth, gently sucking and licking them while stroking your shaft with her hand.</p>
<center>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/fuck3.webm" type="video/webm">
</video>
</center>
<center>
<<button "Continue">>
<<set $Ralia_Fuck_phase to "blow">>
<<goto "Ralia_Fuck">>
<</button>> </center>
<<elseif $Ralia_Fuck_phase is "blow">>
<p>She moves higher and takes your cock into her mouth. She alternates between slow, deep strokes that take you almost to the back of her throat, and faster, wet sucking motions that drive you wild.</p>
<center>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/fuck4.webm" type="video/webm">
</video>
</center>
<center>
<<button "She rides you">>
<<set $Ralia_Fuck_phase to "fuck">>
<<goto "Ralia_Fuck">>
<</button>></center>
<<elseif $Ralia_Fuck_phase is "fuck">>
<p>Ralia climbs on top of you again, her slick pussy hovering just above your throbbing cock. She reaches down, wraps her fingers around your shaft, and slowly guides the head between her wet folds.</p>
<center>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/fuck5.webm" type="video/webm">
</video>
</center>
<p>With a soft moan she sinks down, taking your entire length inside her tight, warm pussy in one smooth motion.</p>
<p>She begins to ride you, rolling her hips in a slow, sensual rhythm. Her breasts bounce with every movement as she looks down at you with lust-filled eyes.</p>
<center>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/fuck6.webm" type="video/webm">
</video>
</center>
<p>You can’t hold back any longer. You grab her hips and start thrusting up into her hard and fast. Ralia’s moans grow louder and more desperate as you pound her from below.</p>
<center>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/fuck7.webm" type="video/webm">
</video>
</center>
<p>With a growl you suddenly flip her over onto her back. You push her legs wide open and thrust deep inside her again, fucking her with raw intensity.</p>
<center>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/fuck8.webm" type="video/webm">
</video>
</center>
<p>Ralia’s moans fill the room as you drive into her again and again, her pussy clenching tightly around your cock.</p>
<center>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/fuck9.webm" type="video/webm">
</video>
</center>
<div style="margin-top: 40px; text-align:center;">
<strong>How do you want to finish?</strong><br><br>
<<button "Cum in her mouth">>
<<set $Ralia_Fuck_phase to "cum_mouth">>
<<goto "Ralia_Fuck">>
<</button>>
<<button "Cum on her body">>
<<set $Ralia_Fuck_phase to "cum_body">>
<<goto "Ralia_Fuck">>
<</button>>
<<button "Creampie her">>
<<set $Ralia_Fuck_phase to "cum_creampie">>
<<goto "Ralia_Fuck">>
<</button>>
</div>
<<elseif $Ralia_Fuck_phase is "cum_mouth">>
<p>You feel your climax approaching fast. You pull out of her and Ralia immediately drops to her knees in front of you, opening her mouth wide and looking up at you with eager eyes.</p>
<p>You stroke yourself furiously as she sticks her tongue out. With a deep groan you explode, shooting thick ropes of cum straight into her waiting mouth.</p>
<center>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/blow6.webm" type="video/webm">
</video>
</center>
<p>Ralia moans softly as she takes every drop, then shows you her tongue covered in your cum before swallowing it with a satisfied smile.</p>
<center>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/blow7.webm" type="video/webm">
</video>
</center>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Mmm… you taste so good~" "#ff88cc">>
<center><<button "Continue">>
<<set $Ralia_Fuck_phase to "end">>
<<goto "Ralia_Fuck">>
<</button>></center>
<<elseif $Ralia_Fuck_phase is "cum_body">>
<p>You can’t hold back anymore. You pull out of her and Ralia quickly turns around, pushing her breasts together and looking up at you seductively.</p>
<p>With a loud groan you cum hard, thick streams of semen landing across her oiled breasts, neck, and stomach. She moans as she feels the warm cum dripping down her glistening skin.</p>
<center>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/cumbody.webm" type="video/webm">
</video>
</center>
<p>Ralia runs her fingers through your cum, spreading it over her breasts while smiling at you playfully.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Look at the mess you made… I like it~" "#ff88cc">>
<center><<button "Continue">>
<<set $Ralia_Fuck_phase to "end">>
<<goto "Ralia_Fuck">>
<</button>></center>
<<elseif $Ralia_Fuck_phase is "cum_creampie">>
<p>You thrust deep inside her one final time and hold her hips tightly. Ralia moans loudly as she feels you swell inside her.</p>
<p>With a powerful groan you cum hard, pumping thick ropes of hot cum deep into her pussy. Her walls clench around you as she orgasms at the same time, milking every drop from you.</p>
<center>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5); margin:15px 0;">
<source src="images/NPC/ralia/creampie.webm" type="video/webm">
</video>
</center>
<p>When you finally pull out, a thick stream of your cum leaks from her well-fucked pussy and runs down her thigh.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Ahh… you filled me so much…" "#ff88cc">>
<center><<button "Continue">>
<<set $Ralia_Fuck_phase to "end">>
<<goto "Ralia_Fuck">>
<</button>></center>
<<elseif $Ralia_Fuck_phase is "end">>
<p>Ralia lies beside you for a moment, catching her breath, her body still flushed and glistening. She turns to you with a soft, affectionate smile.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Thank you… that was wonderful." "#ff88cc">>
<p>She leans in and gives you a gentle, tender kiss on the cheek.</p>
<<say "Ralia" "images/NPC/ralia/profile.webp" "Come back and see me again soon, okay? I’ll be waiting for you…" "#ff88cc">>
<p>She gives you one last warm smile, then helps you get dressed.</p>
<<set $relNPCs["ralia"].love to setup.clamp($relNPCs["ralia"].love + 5, 0, 100)>>
<div style="color:#ff88cc; text-align:center; font-weight:bold; margin:15px 0;">
Ralia likes you more! (+5 Love)
</div>
<center><<button "Leave the room">>
<<passTime 60>>
<<unset $Ralia_Fuck_phase>>
<<goto "City">>
<</button>></center>
<</if>>
</div>
<</nobr>><<nobr>>
<div style="background: rgba(20, 10, 25, 0.95); padding: 30px; border: 1px solid #6c3483; border-radius: 8px; border-left: 5px solid #8e44ad;">
You push open the heavy iron door and step inside the dimly lit cage. The air is thick with the scent of ozone and dark magic. The once-powerful Lich Queen is on the cold floor, her neck chained to the stone wall with a long dark metal chain. <br> she looks at you nude, beautiful and completely helpless.
<br>
She slowly lifts her head as you approach. Her glowing violet eyes lock onto yours.
<<say "Necromancer" "images/encounters/lich_profile.webp" "What do you want now?" "#8e44ad">> she hisses, her voice dripping with venom and exhaustion.
<div style="text-align: center; margin: 25px 0;">
<<set _vidNum to random(1, 3)>>
<<set _vidSrc to "images/NPC/necromancer/cage" + _vidNum + ".webm">>
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px;">
<source @src="_vidSrc" type="video/webm">
</video>
</div>
<div style="text-align: center; margin-top: 30px; display: flex; gap: 20px; justify-content: center; flex-wrap: wrap;">
<<button "Use her body">>
<<goto "Necromancer_Sex">>
<</button>>
<<if $quest_strangering is 1>>
<<button "Ask her about the ring">>
<<goto "Necromancer_Ring">>
<</button>>
<</if>>
</div></div><</nobr>><<nobr>>
<<if not $Necromancer_Sex_phase>>
<<set $Necromancer_Sex_phase to "intro">>
<</if>>
<div style="background: rgba(20, 10, 25, 0.95); padding: 30px; border: 1px solid #6c3483; border-radius: 8px; border-left: 5px solid #8e44ad;">
<<if $Necromancer_Sex_phase is "intro">>
<div style="text-align: center; margin: 25px 0;">
<<set _vidNum to random(1, 3)>>
<<set _vidSrc to "images/NPC/necromancer/cage" + _vidNum + ".webm">>
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px;">
<source @src="_vidSrc" type="video/webm">
</video>
</div>
You stand over the chained once powerful necromancer. She is chained to the stone wall with a long dark metal chain. <br> she looks at you nude, beautiful and completely helpless.
<br>
<<elseif $Necromancer_Sex_phase is "lick">>
<div style="color: #d7bde2; margin: 12px 0;">
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/lick.webm" type="video/webm">
</video></center>
You grab her hair and pull her face between your thighs. Her tongue obediently slides along your wet folds, licking and sucking with desperate skill.
</div>
<<elseif $Necromancer_Sex_phase is "finger">>
<div style="color: #d7bde2; margin: 12px 0;">
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/finger.webm" type="video/webm">
</video></center>
You guide her hand between your legs. Two of her fingers push inside you, pumping steadily while she watches your face.
</div>
<<elseif $Necromancer_Sex_phase is "finger_give">>
<div style="color: #d7bde2; margin: 12px 0;">
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/finger_give.webm" type="video/webm">
</video></center>
You lift her ass and slide two fingers inside her wet pussy enjoying the view of her body squirming helpless below you.
</div>
<<elseif $Necromancer_Sex_phase is "ass">>
<div style="color: #d7bde2; margin: 12px 0;">
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/ass.webm" type="video/webm">
</video></center>
Turning around, you press your ass against her face. Her tongue immediately begins circling and probing your tight hole.
</div>
<<elseif $Necromancer_Sex_phase is "sit">>
<div style="color: #d7bde2; margin: 12px 0;">
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/sit.webm" type="video/webm">
</video></center>
You lower yourself onto her face, smothering her with your pussy and ass. She licks frantically beneath you.
</div>
<<elseif $Necromancer_Sex_phase is "ass_give">>
<div style="color: #d7bde2; margin: 12px 0;">
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/ass_give.webm" type="video/webm">
</video></center>
You kneel between her spread legs and tease her ass and pussy with your fingers, making her moan and squirm against her chains.
</div>
<<elseif $Necromancer_Sex_phase is "you_cum">>
<div style="color: #d7bde2; margin: 12px 0;">
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/you_cum.webm" type="video/webm">
</video></center>
Pleasure explodes through you. You grind hard against her as you cum, soaking her face and chest.
</div>
<<elseif $Necromancer_Sex_phase is "she_cum">>
<div style="color: #d7bde2; margin: 12px 0;">
<center> <video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/you_cum.webm" type="video/webm">
</video></center>
You finger and tease her mercilessly until the proud sorceress finally breaks — shuddering and crying out in unwilling orgasm.
</div>
<<elseif $Necromancer_Sex_phase is "blow">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/blow1.webm" type="video/webm">
</video>
</div>
<div style="color: #d7bde2;">You grab her hair and push your cock between her lips, she licks it shyly at first... But she soon she is blowing you voraciously </div>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/blow2.webm" type="video/webm">
</video>
<<elseif $Necromancer_Sex_phase is "fuck">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:40%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/fuck.webm" type="video/webm">
</video>
</div>
<div style="color: #d7bde2;">You grip her hips tightly and drive your thick cock deep into her slick pussy in one powerful thrust. She gasps sharply, her body jerking against the chains as you begin fucking her hard and deep.</div>
<<elseif $Necromancer_Sex_phase is "doggy">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:40%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/doggy.webm" type="video/webm">
</video>
</div>
<div style="color: #d7bde2;">You roughly spin her around and force her into a doggystyle position. Gripping her waist, you slam your cock into her from behind, pounding the once-mighty sorceress like a conquered whore.</div>
<<elseif $Necromancer_Sex_phase is "fuck_ass">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/anal1.webm" type="video/webm">
</video>
</div>
<div style="color: #d7bde2;">You spread her pale ass cheeks wide and push the head of your cock against her tight hole. With a low growl you sink into her ass, stretching her open as she moans helplessly. </div>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/anal2.webm" type="video/webm">
</video>
</div>
<<elseif $Necromancer_Sex_phase is "facial">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/facial.webm" type="video/webm">
</video>
</div>
<div style="color: #f1948a;">You stroke your cock over her face. You erupt with a groan, painting the haughty necromancer’s beautiful face with heavy streaks of your cum. </div>
<<elseif $Necromancer_Sex_phase is "creampie">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/creampie.webm" type="video/webm">
</video>
</div>
<div style="color: #f1948a;">Your thrusts become savage and deep. With a primal growl you bury yourself to the hilt and explode inside her, flooding the defeated’s womb with thick, hot ropes of cum. </div>
<<elseif $Necromancer_Sex_phase is "anal_creampie">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:40%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/anal_creampie.webm" type="video/webm">
</video>
</div>
<div style="color: #f1948a;">You pound her ass mercilessly until you can’t hold back. With a deep thrust you unload inside her, filling the proud sorceress’s tight ass with pulse after pulse of hot cum.</div>
<</if>>
<center><div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; margin: 25px auto; max-width: 800px;">
<<if $player.gender is "female">>
<<button "Have her lick your pussy">>
<<set $Necromancer_Sex_phase to "lick">>
<<goto "Necromancer_Sex">>
<</button>>
<<button "Make her finger you">>
<<set $Necromancer_Sex_phase to "finger">>
<<goto "Necromancer_Sex">>
<</button>>
<<button "Finger her">>
<<set $Necromancer_Sex_phase to "finger_give">>
<<goto "Necromancer_Sex">>
<</button>>
<<button "Make her lick your ass">>
<<set $Necromancer_Sex_phase to "ass">>
<<goto "Necromancer_Sex">>
<</button>>
<<button "Sit on her face">>
<<set $Necromancer_Sex_phase to "sit">>
<<goto "Necromancer_Sex">>
<</button>>
<<button "Play with her ass">>
<<set $Necromancer_Sex_phase to "ass_give">>
<<goto "Necromancer_Sex">>
<</button>>
<<if $Necromancer_Sex_phase is "lick" or $Necromancer_Sex_phase is "finger" or $Necromancer_Sex_phase is "sit" or $Necromancer_Sex_phase is "ass">> <<button "You cum">>
<<set $Necromancer_Sex_phase to "you_cum">>
<<goto "Necromancer_Sex">>
<</button>>
<</if>>
<<if $Necromancer_Sex_phase is "finger_give" or $Necromancer_Sex_phase is "ass_give">>
<<button "Make her cum">>
<<set $Necromancer_Sex_phase to "she_cum">>
<<goto "Necromancer_Sex">>
<</button>>
<</if>>
<<else>>
<<button "Have her blow you">>
<<set $Necromancer_Sex_phase to "blow">>
<<goto "Necromancer_Sex">>
<</button>>
<<button "Fuck her">>
<<set $Necromancer_Sex_phase to "fuck">>
<<goto "Necromancer_Sex">>
<</button>>
<<button "Fuck her doggystyle">>
<<set $Necromancer_Sex_phase to "doggy">>
<<goto "Necromancer_Sex">>
<</button>>
<<button "Fuck her ass">>
<<set $Necromancer_Sex_phase to "fuck_ass">>
<<goto "Necromancer_Sex">>
<</button>>
<<if $Necromancer_Sex_phase is "blow" or $Necromancer_Sex_phase is "fuck" or $Necromancer_Sex_phase is "fuck_ass" or $Necromancer_Sex_phase is "doggy">>
<<button "Make her cum">>
<<set $Necromancer_Sex_phase to "she_cum">>
<<goto "Necromancer_Sex">>
<</button>>
<<button "Cum on her face">>
<<set $Necromancer_Sex_phase to "facial">>
<<goto "Necromancer_Sex">>
<</button>>
<<button "Creampie">>
<<set $Necromancer_Sex_phase to "creampie">>
<<goto "Necromancer_Sex">>
<</button>>
<<button "Cum in her ass">>
<<set $Necromancer_Sex_phase to "anal_creampie">>
<<goto "Necromancer_Sex">>
<</button>>
<</if>>
<</if>>
</div>
<br>
<center><<button "Finish and return to the mine">>
<<set $Necromancer_Sex_phase to "intro">>
<<passTime 60>>
<<goto "Iron_Mine">>
<</button>></center>
<</nobr>><<nobr>>
<<set $combat.psCost to Math.max(5, 20 - Math.floor($player.agi * 0.3))>>
<div style="display:grid; grid-template-columns:1fr 1fr; gap:10px;">
<<if $combat.allies[0].energy gte $combat.psCost>>
<<button "⚡ Power Strike (" + $combat.psCost + " energy)">>
<<set $combat.selectedAction to "special">>
<<set $combatMenu to "main">>
<<goto "CombatPage">>
<</button>>
<<else>>
<button disabled style="opacity:0.5; cursor:not-allowed;">⚡ Power Strike (Need $combat.psCost NRG)</button>
<</if>>
<button disabled style="opacity:0.3;">🔒 Locked Ability</button>
<<button "🔙 BACK">>
<<set $combatMenu to "main">>
<<goto "CombatPage">>
<</button>>
</div>
<</nobr>><<nobr>>
<div style="display:grid; grid-template-columns:1fr 1fr; gap:10px;">
<<if $healthpotions gt 0>>
<<button "🧪 Health Potion">>
<<set $healthpotions -= 1>>
<<set $combat.allies[0].hp to setup.clamp($combat.allies[0].hp + 40, 0, $combat.allies[0].maxHp)>>
<<set $player.hp to $combat.allies[0].hp>>
<<run $combat.log.push("You used a Health Potion and restored 40 HP!")>>
<<set $combatMenu to "main">>
<<run setup.resolveCombatRound("item", 0)>>
<<goto "CombatPage">>
<</button>>
<<else>>
<button disabled style="opacity:0.5;">No Potions Left</button>
<</if>>
<button disabled style="opacity:0.3;">🧪 Empty Slot</button>
<<button "🔙 BACK">>
<<set $combatMenu to "main">>
<<goto "CombatPage">>
<</button>>
</div>
<</nobr>><<nobr>>
<div class="npc-ui-container" style="display: flex; gap: 20px; background: #111; padding: 20px; border: 1px solid #444; font-family: sans-serif;">
<div class="npc-portrait" style="flex: 1; text-align: center;">
<img @src="$activeNPC.img" style="width: 100%; max-width: 300px; height: 400px; object-fit: cover; border: 2px solid #555; border-radius: 8px;">
<h2 style="margin-top: 10px;">$activeNPC.name</h2>
<div style="margin-bottom: 10px;">
<span style="background: #444; padding: 2px 8px; border-radius: 4px; font-size: 0.9em;">
<<if $activeNPC.gender is "Female">>♀<<else>>♂<</if>> $activeNPC.origin
</span>
</div>
<span style="text-transform: uppercase; color: #aaa; font-size: 0.8em;">$activeNPCType</span>
</div>
<div class="npc-details" style="flex: 2;">
<div class="stats-box" style="background: #222; padding: 15px; border-radius: 5px;">
<b>Submission:</b> <<showmeter "lust" $activeNPC.sub 100>>
<b>Love:</b> <<showmeter "hp" $activeNPC.love 100>>
<div class="npc-description" style="background: #1a1a1a; padding: 15px; border-left: 3px solid #555; font-style: italic; margin: 15px 0; color: #ccc;">
"$activeNPC.desc"
</div>
<br>
<b>Current Job:</b> <span style="color: gold;">$activeNPC.job</span>
</div>
<hr style="border: 0; border-top: 1px solid #444; margin: 20px 0;">
<div style="background: #332200; padding: 15px; border: 1px solid gold; text-align: center; border-radius: 5px; margin-bottom: 20px;">
<p style="color: gold; margin: 0;"><i>You are inspecting this slave at the market. Purchase them to interact or assign jobs.</i></p>
</div>
<center style="display: flex; gap: 10px; justify-content: center;">
<<if $gold gte $activeNPC.price and $slaves.length lt $slaveLimit>>
<<button "Buy This Slave">>
<<set $gold -= $activeNPC.price>>
<<run $slaves.push($activeNPC)>>
<<run $marketStock.splice(_marketIndex, 1)>>
<<goto "SlaveMarket">>
<</button>>
<</if>>
<<button "Go Back">>
<<run jQuery("#inspect-screen").hide(); jQuery("#market-screen").show();>>
<</button>>
</center>
</div>
</div>
<</nobr>><<nobr>>
<<if not $challengePhase>><<set $challengePhase to "intro">><</if>>
<<if $challengePhase is "intro">>
<div style="background:#1a1208; border:1px solid #5a4a2d; border-radius:8px; padding:20px; font-family:sans-serif; line-height:1.4">
<div style="text-align:center; margin-bottom:15px">
<div style="width: 140px; height: 140px; overflow: hidden; border-radius: 50%; border: 4px solid #ff4444; box-shadow: 0 0 15px rgba(255, 68, 68, 0.4); margin: 0 auto;">
<img @src="$activeNPC.img" style="width: 100%; height: 100%; object-fit: cover; object-position: top;">
</div>
<h2 style="color:#ff4444; margin-top:10px; margin-bottom: 2px; text-transform:uppercase; letter-spacing:1px;">$activeNPC.name is defying your leadership!</h2>
</div>
<div style="background: #111; padding: 15px; border-left: 3px solid #ff4444; font-style: italic; margin-bottom: 20px; color: #ccc;">
As the camp gathers for duties, $activeNPC.name steps out in front of everyone, intentionally throwing down tools. "Why are we breaking our backs for you?" <<if $activeNPC.gender is "Female">>she<<else>>he<</if>> scoffs loudly, checking to see who agrees.
</div>
<div style="text-align: center; font-size: 0.85em; margin-bottom: 15px; color: #aaa;">
Current Loyalty: <span style="color: #ff6666;">$activeNPC.loyalty / 100</span>
</div>
<div style="display: flex; flex-direction: column; gap: 10px;">
<<button "💪 Challenge them to a public fight">>
<<set $challengePhase to "fight">>
<<goto "Event_TribalChallenge">>
<</button>>
<<button "🪑 Lead them behind the hut...">>
<<set $challengePhase to "service">>
<<goto "Event_TribalChallenge">>
<</button>>
<<button "❌ Exile them from the camp immediately">>
<<set $challengeOutcome to "exiled">>
<<run $tribe.deleteAt($activeNPCIndex)>>
<<for _i to 0; _i lt $tribe.length; _i++>>
<<set $tribe[_i].loyalty to setup.clamp($tribe[_i].loyalty + 5, 0, 100)>>
<<set $tribe[_i].morale to setup.clamp($tribe[_i].morale - 5, 0, 100)>>
<</for>>
<<set $challengePhase to "outcome">>
<<goto "Event_TribalChallenge">>
<</button>>
</div>
</div>
<<elseif $challengePhase is "fight">>
<div style="background:#1a1208; border:1px solid #5a4a2d; border-radius:8px; padding:20px; font-family:sans-serif; line-height:1.4">
<h2 style="color:#ff4444; text-align:center; text-transform:uppercase;">Public Fight</h2>
<p>The tribe forms a tight circle. $activeNPC.name cracks <<if $activeNPC.gender is "Female">>her<<else>>his<</if>> knuckles and steps forward with a cruel grin.</p>
<<if $player.gender is "male" and $activeNPC.gender is "Female">>
<div style="text-align:center">
<img src="images/encounters/camp/fightmf.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<<elseif $player.gender is "male" and $activeNPC.gender is "Male">>
<div style="text-align:center">
<img src="images/encounters/camp/fightmm.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<<elseif $player.gender is "female" and $activeNPC.gender is "Female">>
<div style="text-align:center">
<img src="images/encounters/camp/fightff.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<<elseif $player.gender is "female" and $activeNPC.gender is "Male">>
<div style="text-align:center">
<img src="images/encounters/camp/fightfm.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<</if>>
<p>You don't hesitate. You charge.</p>
<p>The fight is brutal and short. You dominate from the first exchange — heavy punches, knees, and raw power. $activeNPC.name tries to fight back but you overwhelm <<if $activeNPC.gender is "Female">>her<<else>>him<</if>>. A final devastating hook sends <<if $activeNPC.gender is "Female">>her<<else>>him<</if>> crashing to the dirt. The camp erupts in cheers and howls.</p>
<p style="text-align:center; color:#ff6666; font-weight:bold;">You stand victorious over the broken challenger.</p>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top: 20px;">
<<button "Spare them — show mercy and claim their loyalty">>
<<set $activeNPC.loyalty to setup.clamp($activeNPC.loyalty + 35, 0, 100)>>
<<set $activeNPC.morale to setup.clamp($activeNPC.morale - 5, 0, 100)>>
<<set $tribe[$activeNPCIndex] to $activeNPC>>
<<set $challengeOutcome to "spared">>
<<set $challengePhase to "outcome">>
<<goto "Event_TribalChallenge">>
<</button>>
<<button "Kill them — eliminate the threat permanently">>
<<set $challengeOutcome to "killed">>
<<run $tribe.deleteAt($activeNPCIndex)>>
<<for _i to 0; _i lt $tribe.length; _i++>>
<<set $tribe[_i].loyalty to setup.clamp($tribe[_i].loyalty + 15, 0, 100)>>
<<set $tribe[_i].morale to setup.clamp($tribe[_i].morale - 10, 0, 100)>>
<</for>>
<<set $challengePhase to "outcome">>
<<goto "Event_TribalChallenge">>
<</button>>
</div>
</div>
<<elseif $challengePhase is "service">>
<div style="background:#1a1208; border:1px solid #5a4a2d; border-radius:8px; padding:20px; font-family:sans-serif; line-height:1.4">
<<if not $serviceOutcome>>
<h2 style="color:#ff4444; text-align:center;">Behind the Hut</h2>
<p>You grab $activeNPC.name by the collar and lead <<if $activeNPC.gender is "Female">>her<<else>>him<</if>> behind the nearest supply hut, out of sight of the camp.</p>
<p>"You want to question me?" you growl, voice low and dangerous, forcing <<if $activeNPC.gender is "Female">>her<<else>>him<</if>> against the wooden logs. Tension spikes in the quiet air between you two.</p>
<p>To establish compliance without an audience, you must physically overpower <<if $activeNPC.gender is "Female">>her<<else>>him<</if>>.</p>
<div style="text-align:center; margin-top:20px;">
<<button "💪 Test your Strength against them">>
<<set _roll to ($player.str || 10) + random(1, 20)>>
<<if _roll gte 40>>
<<set $serviceOutcome to "win">>
<<set $activeNPC.loyalty to setup.clamp($activeNPC.loyalty + 10, 0, 100)>>
<<set $activeNPC.morale to setup.clamp($activeNPC.morale - 10, 0, 100)>>
<<set $challengeOutcome to "serviced_forced">>
<<else>>
<<set $serviceOutcome to "lose">>
<<set $activeNPC.loyalty to setup.clamp($activeNPC.loyalty - 10, 0, 100)>>
<<set $activeNPC.morale to setup.clamp($activeNPC.morale + 10, 0, 100)>>
<<set $challengeOutcome to "serviced_begged">>
<<for _i to 0; _i lt $tribe.length; _i++>>
<<set $tribe[_i].loyalty to setup.clamp($tribe[_i].loyalty - 10, 0, 100)>>
<</for>>
<</if>>
<<set $tribe[$activeNPCIndex] to $activeNPC>>
<<goto "Event_TribalChallenge">>
<</button>>
<<button "Beg them to stay">>
<<set $serviceOutcome to "lose">>
<<set $challengeOutcome to "serviced_begged">>
<<set $activeNPC.loyalty to setup.clamp($activeNPC.loyalty - 10, 0, 100)>>
<<set $activeNPC.morale to setup.clamp($activeNPC.morale + 10, 0, 100)>>
<<for _i to 0; _i lt $tribe.length; _i++>>
<<set $tribe[_i].loyalty to setup.clamp($tribe[_i].loyalty - 10, 0, 100)>>
<</for>>
<<set $tribe[$activeNPCIndex] to $activeNPC>>
<<goto "Event_TribalChallenge">>
<</button>>
</div>
<<elseif $serviceOutcome is "win">>
<h2 style="color:#ff4444; text-align:center;">Behind the Hut — Forced Submission</h2>
<<if $player.gender is "male" and $activeNPC.gender is "Female">>
<p>With a burst of physical dominance, you pin $activeNPC.name flat against the wall. Your strength cuts off any chance of escape, breaking her stubborn defiance completely.</p>
<p>You shove her down to her knees in the dirt. She glares up at you with a mix of fury and reluctant submission as you free your cock.</p>
<p>You grip her hair and push forward. Her lips part reluctantly at first… then you thrust deep into her warm, wet mouth.</p>
<div style="text-align: center;"><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/blowmf.webm" type="video/webm">
</video></div>
<p>The wet sounds of sloppy oral service fill the small space. You fuck her throat with short, dominant strokes, reminding the challenger exactly who rules this camp. Tears form at the corners of her eyes, but she doesn't pull away — she takes it.</p>
<p>After several intense minutes you groan and pull out, painting her face and tongue with thick ropes of cum. You make sure she swallows every drop before letting her up.</p>
<div style="text-align: center;"><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/cummf.webm" type="video/webm">
</video></div>
<<elseif $player.gender is "male" and $activeNPC.gender is "Male">>
<p>With a burst of physical dominance, you slam $activeNPC.name against the wall. He struggles for a second, but your raw strength pins him completely.</p>
<p>You shove him down to his knees in the dirt. He glares up at you with a mix of fury and reluctant submission as you free your cock.</p>
<p>You grip his hair and push forward. His lips part reluctantly at first… then you thrust deep into his warm, wet mouth.</p>
<div style="text-align: center;"><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/blowmm.webm" type="video/webm">
</video></div>
<p>The wet sounds of sloppy oral service fill the small space. You fuck his throat with short, dominant strokes, reminding the challenger exactly who rules this camp. Tears form at the corners of his eyes, but he doesn't pull away — he takes it.</p>
<div style="text-align: center;"><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/cummm.webm" type="video/webm">
</video></div>
<p>After several intense minutes you groan and pull out, painting his face and tongue with thick ropes of cum. You make sure he swallows every drop before letting him up.</p>
<<elseif $player.gender is "female" and $activeNPC.gender is "Female">>
<p>With a burst of physical dominance, you slam $activeNPC.name against the wall. She struggles for a second, but your raw strength pins her completely.</p>
<p>You shove her down to her knees in the dirt. She glares up at you with a mix of fury and reluctant submission.</p>
<p>You grab her hair and pull her face between your legs, pressing her mouth firmly against your wet pussy.</p>
<div style="text-align: center;"><video autoplay loop muted playsinline style="width:50%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/lickff1.webm" type="video/webm">
</video></div>
<p>"Lick," you command. At first she hesitates… then her tongue begins to work. You grind against her face, using her mouth exactly how you want. Her reluctant moans vibrate against you as you ride her tongue, holding her head in place with both hands.</p>
<div style="text-align: center;"><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/lickff2.webm" type="video/webm">
</video></div>
<p>You fuck her face with your pussy, rubbing your clit against her tongue until you cum hard, soaking her mouth and chin. You make her lick you clean before finally letting her up.</p>
<<elseif $player.gender is "female" and $activeNPC.gender is "Male">>
<p>With a burst of physical dominance, you slam $activeNPC.name against the wall. He struggles for a second, but your raw strength pins him completely.</p>
<p>You shove him down to his knees in the dirt. He glares up at you with a mix of fury and reluctant submission.</p>
<p>You grab his hair and pull his face between your legs, pressing his mouth firmly against your wet pussy.</p>
<div style="text-align: center;"><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/lickfm.webm" type="video/webm">
</video></div>
<p>"Lick," you command. At first he hesitates… then his tongue begins to work. You grind against his face, using his mouth exactly how you want. His reluctant moans vibrate against you as you ride his tongue, holding his head in place with both hands.</p>
<p>You fuck his face with your pussy, rubbing your clit against his tongue until you cum hard, soaking his mouth and chin. You make him lick you clean before finally letting him up.</p>
<</if>>
<p style="color:#ff6666; font-style:italic;">"Now get back to work… and remember who you serve."</p>
<div style="text-align:center; margin-top:20px;">
<<button "Return to camp">>
<<set $challengePhase to "outcome">>
<<goto "Event_TribalChallenge">>
<</button>>
</div>
<<elseif $serviceOutcome is "lose">>
<h2 style="color:#fa5252; text-align:center;">Behind the Hut — Humiliating Turn</h2>
<<if $player.gender is "male" and $activeNPC.gender is "Female">>
<p>You attempt to physically slam them against the logs, but $activeNPC.name stands completely firm. She easily matches your power, knocking your arms away and catching you off balance with a mocking smirk. "Is that all the power our leader has?" she chuckles.</p>
<p>Realizing you cannot overpower her and desperation creeping in, you know that letting her leave the hut empty-handed will cause her to desert or turn the tribe completely against you. Swallowing your pride completely, you drop your status, beg her to stay, and offer your own body to please her instead.</p>
<div style="text-align: center;"><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/lickfm.webm" type="video/webm">
</video></div>
<p>You drop down to your knees before her in the dirt. Her eyes widen in malicious surprise, curling into a cruel grin as she opens her legs. You press your face blindly against her soft folds, frantically licking and sucking her warm, wet clit, pleading into her skin to maintain her allegiance. She roughly hooks her fingers into your hair, holding your mouth tightly down against her center as she rides your tongue to a long, shivering orgasm.</p>
<<elseif $player.gender is "male" and $activeNPC.gender is "Male">>
<p>You attempt to physically slam them against the logs, but $activeNPC.name stands completely firm. He easily matches your power, knocking your arms away and catching you off balance with a mocking smirk. "Is that all the power our leader has?" he chuckles.</p>
<p>Realizing you cannot overpower him and desperation creeping in, you know that letting him leave the hut empty-handed will cause him to desert or turn the tribe completely against you. Swallowing your pride completely, you drop your status, beg him to stay, and offer your own body to please him instead.</p>
<div style="text-align: center;"><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/blowmm.webm" type="video/webm">
</video></div>
<p>You drop down to your knees before him in the dirt. He smirks with dark satisfaction, unbuttoning his trousers to release his heavy length. You open your mouth and wrap your lips around his shaft, taking him deep down your throat with frantic, submissive strokes. He groans out loud, anchoring his hands in your hair and ruthlessly pumping into your mouth until he releases a thick, heavy load of warm cum directly down your throat, forcing you to swallow your dignity.</p>
<<elseif $player.gender is "female" and $activeNPC.gender is "Female">>
<p>You attempt to physically slam them against the logs, but $activeNPC.name stands completely firm. She easily matches your power, knocking your arms away and catching you off balance with a mocking smirk. "Is that all the power our leader has?" she chuckles.</p>
<p>Realizing you cannot overpower her and desperation creeping in, you know that letting her leave the hut empty-handed will cause her to desert or turn the tribe completely against you. Swallowing your pride completely, you drop your status, beg her to stay, and offer your own body to please her instead.</p>
<div style="text-align: center;"><video autoplay loop muted playsinline style="width:50%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/lickff1.webm" type="video/webm">
</video></div>
<p>You drop down to your knees before her in the dirt. Her eyes widen in malicious surprise, curling into a cruel grin as she opens her legs. You press your face blindly against her soft folds, frantically licking and sucking her warm, wet clit, pleading into her skin to maintain her allegiance. She roughly hooks her fingers into your hair, holding your mouth tightly down against her center as she rides your tongue to a long, shivering orgasm.</p>
<div style="text-align: center;"><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/lickff2.webm" type="video/webm">
</video></div>
<<elseif $player.gender is "female" and $activeNPC.gender is "Male">>
<p>You attempt to physically slam them against the logs, but $activeNPC.name stands completely firm. He easily matches your power, knocking your arms away and catching you off balance with a mocking smirk. "Is that all the power our leader has?" he chuckles.</p>
<p>Realizing you cannot overpower him and desperation creeping in, you know that letting him leave the hut empty-handed will cause him to desert or turn the tribe completely against you. Swallowing your pride completely, you drop your status, beg him to stay, and offer your own body to please him instead.</p>
<div style="text-align: center;"><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/blowmf.webm" type="video/webm">
</video></div>
<p>You drop down to your knees before him in the dirt. He smirks with dark satisfaction, unbuttoning his trousers to release his heavy length. You open your mouth and wrap your lips around his shaft, taking him deep down your throat with frantic, submissive strokes. He groans out loud, anchoring his hands in your hair and ruthlessly pumping into your mouth until he releases a thick, heavy load of warm cum directly on your face, forcing you to swallow your dignity.</p>
<div style="text-align: center;"><video autoplay loop muted playsinline style="width:50%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/cummf.webm" type="video/webm">
</video></div>
<</if>>
<p style="color:#ff6666; font-style:italic;">You wipe your lips and slowly stand back up, knowing you successfully kept them around... but at a brutal cost to your personal authority.</p>
<div style="text-align:center; margin-top:20px;">
<<button "Return to camp">>
<<set $challengePhase to "outcome">>
<<goto "Event_TribalChallenge">>
<</button>>
</div>
<</if>>
</div>
<<elseif $challengePhase is "outcome">>
<div style="background:#1a1208; border:1px solid #5a4a2d; border-radius:8px; padding:20px; font-family:sans-serif; line-height:1.4">
<<if $challengeOutcome is "spared">>
<h2 style="color:#4caf50;">Mercy Shown</h2>
<p>You offer $activeNPC.name your hand and pull <<if $activeNPC.gender is "Female">>her<<else>>him<</if>> to <<if $activeNPC.gender is "Female">>her<<else>>his<</if>> feet in front of the cheering tribe. <<if $activeNPC.gender is "Female">>She<<else>>He<</if>> looks at you with new respect… and a hint of fear.</p>
<p>The camp sees your strength and your mercy. Loyalty rises.</p>
<div style="margin-top: 15px; padding: 10px; background: rgba(0,0,0,0.5); border-radius: 5px; text-align: center; border: 1px solid #333;">
<span style="color:#4caf50; font-weight:bold; margin-right: 15px;">+$activeNPC.name's Loyalty (35)</span>
<span style="color:#fa5252; font-weight:bold;">-$activeNPC.name's Morale (5)</span>
</div>
<<elseif $challengeOutcome is "killed">>
<h2 style="color:#ff4444;">Threat Eliminated</h2>
<p>You draw your blade and end $activeNPC.name's life with a single clean cut. The tribe falls silent… then roars in approval. Fear and respect mix in their eyes.</p>
<p>One less voice of dissent. The camp is quieter… for now.</p>
<div style="margin-top: 15px; padding: 10px; background: rgba(0,0,0,0.5); border-radius: 5px; text-align: center; border: 1px solid #333;">
<span style="color:#4caf50; font-weight:bold; margin-right: 15px;">+Tribe Loyalty (15)</span>
<span style="color:#fa5252; font-weight:bold;">-Tribe Morale (10)</span>
</div>
<<elseif $challengeOutcome is "serviced_forced">>
<h2 style="color:#ff4444;">Authority Reclaimed</h2>
<p>When you both return to camp, $activeNPC.name walks slightly behind you, eyes lowered. The tribe notices the immediate drop in demeanor. No more open defiance — at least not from <<if $activeNPC.gender is "Female">>her<<else>>him<</if>>.</p>
<div style="margin-top: 15px; padding: 10px; background: rgba(0,0,0,0.5); border-radius: 5px; text-align: center; border: 1px solid #333;">
<span style="color:#4caf50; font-weight:bold; margin-right: 15px;">+$activeNPC.name's Loyalty (10)</span>
<span style="color:#fa5252; font-weight:bold;">-$activeNPC.name's Morale (10)</span>
</div>
<<elseif $challengeOutcome is "serviced_begged">>
<h2 style="color:#fa5252;">Authority Crumbling</h2>
<p>When you both return to camp, $activeNPC.name walks tall, watching you with an amused glint. Whispers of your desperate begging behind the hut have already reached the fires. A cold wave of doubt ripples through the loyalty of the entire tribe.</p>
<div style="margin-top: 15px; padding: 10px; background: rgba(0,0,0,0.5); border-radius: 5px; text-align: center; border: 1px solid #333;">
<span style="color:#fa5252; font-weight:bold; margin-right: 15px;">-$activeNPC.name's Loyalty (10)</span>
<span style="color:#4caf50; font-weight:bold; margin-right: 15px;">+$activeNPC.name's Morale (10)</span>
<br><br>
<span style="color:#fa5252; font-weight:bold;">-Tribe Loyalty (10)</span>
</div>
<<elseif $challengeOutcome is "exiled">>
<h2 style="color:#ff4444;">Exiled</h2>
<p>$activeNPC.name is stripped of weapons and gear and driven from camp at spearpoint. The tribe watches in silence as <<if $activeNPC.gender is "Female">>she<<else>>he<</if>> disappears into the wilderness.</p>
<div style="margin-top: 15px; padding: 10px; background: rgba(0,0,0,0.5); border-radius: 5px; text-align: center; border: 1px solid #333;">
<span style="color:#4caf50; font-weight:bold; margin-right: 15px;">+Tribe Loyalty (5)</span>
<span style="color:#fa5252; font-weight:bold;">-Tribe Morale (5)</span>
</div>
<</if>>
<div style="text-align:center; margin-top:25px;">
<<button "Continue">>
<<unset $challengePhase>>
<<unset $challengeOutcome>>
<<unset $serviceOutcome>>
<<unset $challengeTime>>
<<unset $activeNPC>>
<<unset $activeNPCIndex>>
<<unset $activeNPCType>>
<<goto "CampHub">>
<</button>>
</div>
</div>
<</if>>
<</nobr>><<nobr>>
<<if not $ring_phase>>
<<set $ring_phase to "intro">>
<</if>>
<div style="background: rgba(20, 10, 25, 0.95); padding: 30px; border: 1px solid #6c3483; border-radius: 8px; border-left: 5px solid #8e44ad; font-family: sans-serif; line-height: 1.5;">
<h2 style="color: gold; text-align: center; text-transform: uppercase; letter-spacing: 1px; margin-top: 0;">The Strange Ring</h2>
<<if $ring_phase is "intro">>
<p>You step closer, the cold stone floor clicking beneath your boots. You hold out your hand, allowing the dark band of the Necromancer's ring to catch what little light filters into her cage.</p>
<p>"Tell me how to control this," you command, your voice echoing off the damp walls.</p>
<p>The Lich Queen's violet eyes widen slightly as she recognizes the black metal band. Then, a low, raspy chuckle escapes her lips, shaking her bare shoulders. The dark metal chain around her neck rattles violently against the stone wall.</p>
<<say "Necromancer" "images/encounters/lich_profile.webp" "You? Control my ring? A mortal playing with the tools of the undying... how deliciously pathetic." "#8e44ad">>
<p>She leans forward as far as her iron collar allows, laughing manically as she mocks you. </p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/mock.webm" type="video/webm">
</video></center>
<<say "Necromancer" "images/encounters/lich_profile.webp" "That band feeds on the essence of the fallen. It requires an unyielding soul to bind it. Let us see if your spirit is any stronger than your fragile flesh!" "#8e44ad">>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/magic.webm" type="video/webm">
</video></center>
<p> Before you can pull back, her eyes turn black and she lifts a hand while a black evil flame appears on her palm. The ring on your finger grows scalding hot, sending sharp, icy needles of dark magic rushing up your arm and straight toward your heart! </p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/objects/necro_flame.webm" type="video/webm">
</video></center>
<div style="text-align: center; margin-top: 30px; display: flex; gap: 20px; justify-content: center; flex-wrap: wrap;">
<<button "Resist the surge">>
<<set _roll to $player.con + random(1, 20)>>
<<if _roll gte 50>>
<<set $ring_phase to "success">>
<<goto "Necromancer_Ring">>
<<else>>
<<set $ring_phase to "failure">>
<<goto "Necromancer_Ring">>
<</if>>
<</button>>
<<button "Snatch your hand back and leave her">>
<<goto "Iron_Mine">>
<</button>>
</div>
<<elseif $ring_phase is "success">>
<p>You grit your teeth, forcing the icy agony back down into your own soul. You refuse to break. The black fire in her palm flickers and dies. As the heat vanishes from the ring, you look up and see her slumped against the cold stone—no longer the towering, terrifying force she once was, but a withered, exhausted shadow of her former glory.</p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/exausted.webm" type="video/webm">
</video></center>
<p>She breathes heavily, her violet eyes dimming. </p> <<say "Necromancer" "images/encounters/lich_profile.webp" "You... you have the darkness in you, but the ring is dormant. It thirsts for a tribute that this cage cannot provide." "#8e44ad">>
<p>She rasps, her voice barely a whisper.</p>
<<say "Necromancer" "images/encounters/lich_profile.webp" "If you wish to harvest its power, it demands a proper offering. Not just anything, but something sacred... something so depraved enough that the act will allow it to tear the veil between worlds and wake the ring." "#8e44ad">>
<p>She leans in, her voice dropping to a harsh, conspiratorial whisper. </p>
<<say "Necromancer" "images/encounters/lich_profile.webp" "The crypts beneath the church hold the essence you need. Desecrate them, and you shall have its power. Or do me a favour... fail... and become another corpse for me to toy with." "#8e44ad">>
<p>Having spent the last of her strength to test you, she slumps down onto the cold stone floor. Her head hangs low, and her gaze locks onto the barren wall of her cage, her eyes dimming as her magical energy fully drains away. </p>
<p>She remains there, motionless and eerily quiet, leaving you alone with your thoughts.</p>
<<set $quest_strangering to 2>>
<div style="text-align: center; margin-top: 25px;">
<<button "Leave the cage">>
<<unset $ring_phase>>
<<goto "Iron_Mine">>
<</button>>
</div>
<<elseif $ring_phase is "failure">>
<<if $player.gender is "female">>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/objects/fem_ring.webm" type="video/webm">
</video></center>
<<else>>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/objects/male_ring.webm" type="video/webm">
</video></center>
<</if>>
<p>You try to hold onto your sanity as the icy needles of dark magic pierce your heart, but you are not strong enough. With a cry of pain, you collapse to your knees, clutching your chest as your vitality is siphoned away.</p>
<<set $player.hp to setup.clamp($player.hp - 50, 0, $player.maxHp)>>
<div style="text-align: center; margin: 20px 0; padding: 10px; border: 1px solid #ff4444; background: rgba(255, 0, 0, 0.1); border-radius: 5px;">
<span style="color: #ff4444; font-weight: bold; font-size: 1.1em;">
You take 50% damage as your vitality is siphoned by the ring!
</span>
</div>
<p>The ring goes cold, and you gasp for air, your vision swimming. The Necromancer, despite her own exhaustion, lets out a harsh, wheezing laugh.</p>
<<say "Necromancer" "images/encounters/lich_profile.webp" "Weak... I expected as much. You nearly killed yourself, and yet you still stand. How unfortunate for you." "#8e44ad">>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/mock.webm" type="video/webm">
</video></center>
<p>She slumps further against the stone, her eyes dimming to a faint, flickering violet. She is clearly spent from the exertion of the test, leaving her too weak to strike you down—or perhaps she finds your suffering more amusing while you are alive.</p>
<center><video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/exausted.webm" type="video/webm">
</video></center>
<<say "Necromancer" "images/encounters/lich_profile.webp" "If you wish to harvest its power, it demands a proper offering. Not just anything, but something sacred... something so depraved enough that the act will allow it to tear the veil between worlds and wake the ring." "#8e44ad">>
<p>She leans in, her voice dropping to a harsh, conspiratorial whisper. </p>
<<say "Necromancer" "images/encounters/lich_profile.webp" "The crypts beneath the church hold the essence you need. Desecrate them, and you shall have its power. Or do me a favour... fail... and become another corpse for me to toy with." "#8e44ad">>
<p>She has no more words for you. Her head lolls forward, her gaze locking onto the cold stone wall of her cage as her energy fully drains away. She remains there, motionless and eerily quiet, her shallow breathing the only sign that she hasn't faded into death herself.</p>
<<set $quest_strangering to 2>>
<div style="text-align: center; margin-top: 25px;">
<<button "Leave the cage, hurt and shaken">>
<<unset $ring_phase>>
<<goto "Iron_Mine">>
<</button>>
</div>
<</if>>
</div>
<</nobr>><<nobr>>
<div style="text-align:center;">
<h2>📜 Quest Journal</h2>
</div>
<div style="display: flex; flex-direction: column; gap: 20px;">
<<if $main_quest > 0>>
<div style="display: flex; background: #1a1a1a; border: 1px solid #c9a227; border-radius: 8px; padding: 15px; align-items: center; box-shadow: 0 0 10px rgba(201, 162, 39, 0.2);">
<img @src="$player.portrait" style="width: 80px; height: 80px; border-radius: 50%; border: 2px solid gold; margin-right: 20px; object-fit: cover; object-position: center 10%; flex-shrink: 0;" onerror="this.style.display='none'">
<div style="flex-grow: 1;">
<h4 style="margin: 0; color: gold; text-transform: uppercase; letter-spacing: 1px;">Primary Objective</h4>
<p style="margin: 5px 0;">
<span style="color: #00ff00;">● Active:</span>
<<if $main_stage is 1>>
<<if $hasTrainingGrounds is false>>
Establish your authority and build your camp. You need a strong foundation before you can strike back.
<<else>>
Your camp is growing, and you should as well. Increase your strength. In the mornings, you can sometimes spot Elara at the Training Grounds if she isn't out hunting.
<</if>>
<<elseif $main_stage is 2>>
Elara suggests that you find a mentor to teach you how to fight like a true warrior. Rumors say that Corro, your father's former champion, now lives somewhere in the frozen North.
<<else>>
<span style="color:#aaa;font-style:italic;">Your journey is paused here. To be continued in a future update...</span>
<</if>>
</p>
</div>
</div>
<</if>>
<hr style="border: 0; border-top: 1px solid #333; margin: 10px 0;">
<<if $quest_hunter > 0>>
<div style="display: flex; background: #1a1a1a; border: 1px solid #444; border-radius: 8px; padding: 15px; align-items: center;">
<img src="images/NPC/elara/profile.webp" style="width: 80px; height: 80px; border-radius: 50%; border: 2px solid gold; margin-right: 20px; object-fit:cover; object-position:center 30%;" onerror="this.style.display='none'">
<div style="flex-grow: 1;">
<h4 style="margin: 0; color: gold;">The Huntress</h4>
<p style="margin: 5px 0;">
<<if $quest_hunter is 1>>
<span style="color: #00ff00;">● Active:</span> Go to the Hunter's Hut and speak with Elara.
<<elseif $quest_hunter is 2>>
<span style="color: #00ff00;">● Active:</span> Elara suggested that a strong tribe needs more hands. Explore the wilds to find and recruit new members.
<<else>>
<span style="color: #888;">✔ Completed:</span> You have completed the current hunter tasks. <br><span style="color:#aaa;font-style:italic;">To be continued...</span>
<</if>>
</p>
</div>
</div>
<</if>>
<<if $quest_shaman > 0>>
<div style="display: flex; background: #1a1a1a; border: 1px solid #444; border-radius: 8px; padding: 15px; align-items: center; margin-bottom: 10px;">
<img src="images/NPC/shaman/profile.webp" style="width: 80px; height: 80px; border-radius: 50%; border: 2px solid gold; margin-right: 20px; object-fit:cover; object-position:center 30%;" onerror="this.style.display='none'">
<div style="flex-grow: 1;">
<h4 style="margin: 0; color: gold;">The Shaman</h4>
<p style="margin: 5px 0;">
<<if $quest_shaman is 1>>
<span style="color: #00ff00;">● Active:</span> Your tribe needs a Shaman. Rumors speak of strange occurrences in the <b>Forest at night</b>. Seek them out.
<<elseif $quest_shaman is 2>>
<span style="color: #00ff00;">● Active:</span> Kaelith is acting strangely. An unnatural chill has rolled in. Investigate the <b>Camp at night</b>.
<<elseif $quest_shaman is 3>>
<span style="color: #00ff00;">● Active:</span> Travel to the <b>Deep North</b> with Kaelith to summon the Lust Demon (To be continued...).<br>
<span style="color: #aaa; font-size: 0.9em; font-style: italic;">
Requires: <strong>100 Food</strong>, <strong>50 Wood</strong>, <strong>10 Furs</strong> and <strong>at least two companions</strong> for the expedition to succeed.
</span>
<<else>>
<span style="color: #888;">✔ Completed:</span> The ritual in the North is complete. <br><span style="color:#aaa;font-style:italic;">To be continued...</span>
<</if>>
</p>
</div>
</div>
<</if>>
<<if $quest_smith > 0>>
<div style="display: flex; background: #1a1a1a; border: 1px solid #444; border-radius: 8px; padding: 15px; align-items: center;">
<img src="images/NPC/smith/profile.webp" style="width: 80px; height: 80px; border-radius: 50%; border: 2px solid gold; margin-right: 20px; object-fit:cover; object-position:center 30%;" onerror="this.style.display='none'">
<div style="flex-grow: 1;">
<h4 style="margin: 0; color: gold;">The Smith's Forge</h4>
<p style="margin: 5px 0;">
<<if $quest_smith is 1>>
<span style="color: #00ff00;">● Active:</span> The Forge sits cold. You must find a Blacksmith to run it. Try searching the rocky passes of the <b>Mountains</b>.
<<elseif $quest_smith is 2>>
<span style="color: #00ff00;">● Active:</span> Leva needs a steady supply of iron. She mentioned an old mine in the <b>Mountains</b>. Clear it and claim it as yours.
<<elseif $quest_smith is 3>>
<span style="color: #00ff00;">● Active:</span> The mine is cleared! Return to Leva in the <b>Camp</b> to organize the mining detail and fire up the forge.
<<elseif $quest_smith is 4>>
<span style="color: #00ff00;">● Active:</span> <b>Rebuild the Mine.</b> Meet Leva at the Karak Mine with <b>400 Wood</b> to reinforce the tunnels.
<<else>>
<span style="color: #888;">✔ Completed:</span> The Karak Mine is operational. Leva can now craft advanced gear at the Forge. <br><span style="color:#aaa;font-style:italic;">To be continued...</span>
<</if>>
</p>
</div>
</div>
<</if>>
<<if $quest_villager gt 0>>
<div style="display: flex; background: #1a1a1a; border: 1px solid #444; border-radius: 8px; padding: 15px; align-items: center;">
<<if $quest_villager is 1>>
<img src="images/locations/village_square.webp"
style="width: 80px; height: 80px; border-radius: 8px; border: 2px solid #666; margin-right: 20px; object-fit:cover;"
onerror="this.style.display='none'">
<<else>>
<img src="images/NPC/ralia/profile.webp"
style="width: 80px; height: 80px; border-radius: 50%; border: 2px solid gold; margin-right: 20px; object-fit:cover; object-position:center 30%;"
onerror="this.style.display='none'">
<</if>>
<div style="flex-grow: 1;">
<h4 style="margin: 0; color: gold;">The Villager</h4>
<p style="margin: 5px 0;">
<<if $quest_villager is 1>>
<span style="color: #00ff00;">● Active:</span> You heard rumors of some creature lurking in the swamps.<br>
<span style="color: #aaa; font-size: 0.9em; font-style: italic;">People have been disappearing while walking in the swamp...</span>
<<elseif $quest_villager is 2>>
<span style="color: #00ff00;">● Active:</span> You can’t stop thinking about that girl… what was her name… <strong>Ralia</strong>?<br>
<<else>>
<span style="color: #888;">✔ Completed:</span> You have completed the current villager tasks.<br>
<span style="color:#aaa;font-style:italic;">To be continued…</span>
<</if>>
</p>
</div>
</div>
<</if>>
<<if $quest_strangering > 0>>
<div style="display: flex; background: #1a1a1a; border: 1px solid #444; border-radius: 8px; padding: 15px; align-items: center;">
<img src="images/objects/necro_ring.webp" style="width: 80px; height: 80px; border-radius: 50%; border: 2px solid gold; margin-right: 20px; object-fit:cover; object-position:center 30%;" onerror="this.style.display='none'">
<div style="flex-grow: 1;">
<h4 style="margin: 0; color: gold;">The Strange Ring</h4>
<p style="margin: 5px 0;">
<<if $quest_strangering is 1>>
<span style="color: #00ff00;">● Active:</span> Who should you ask about the ring that can give you information about it?
<<elseif $quest_strangering is 2>>
<span style="color: #00ff00;">● Active:</span> The ring demands a sacrifice. Infiltrate the Crypts in the Cathedral and find something suitable to defile; only such a profane act will awaken the ring.
<<else>>
<span style="color: #888;">✔ Completed:</span> You awakened the power of the ring. <br>
<</if>>
</p>
</div>
</div>
<</if>>
</div>
<hr>
<center>
<<button "Go Back">>
<<goto `previous() || "CampHub"`>>
<</button>>
</center>
<</nobr>><<nobr>> <<if not $Crypts_Phase>><<set $Crypts_Phase to "intro">><</if>>
<<if $Crypts_Phase is "intro">>
<div style="text-align:center">
<img src="images/encounters/city/crypts.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
<h2 style="color:#aaa;">The Crypts</h2>
</div>
<div style="background:#0a0a0a; padding:15px; border:1px solid #333; border-radius:8px; margin-bottom:20px;">
<p style="color:#ccc;">You ease the heavy iron door shut behind you, cutting off the warm light of the Cathedral. The air down here is freezing, thick with the smell of ancient dust and damp earth.</p>
<p style="color:#ccc;">As you begin to descend the spiraling stone steps, a flickering orange light catches your eye. You press yourself flat against the cold wall just in time.</p>
<p style="color:#ccc;"> A solemn procession is making its way deeper into the catacombs. At its head walks a tall, imposing priest, his heavy, gold-embroidered vestments dragging across the uneven stone. He swings a massive silver thurible, exhaling thick clouds of sweet, suffocating incense that barely mask the underlying scent of decay.</p>
<p style="color:#ccc;">Behind him, a line of nuns follow in perfect, eerie synchronization. Their heads are bowed in silent, fanatical prayer, holding tall wax candles that cast long, wavering shadows against the crypt walls.</p>
<div style="text-align:center">
<video autoplay loop muted playsinline style="width:100%;border-radius:8px;border:2px solid #555">
<source src="images/encounters/city/procession.webm" type="video/webm">
</video>
</div>
<hr style="border:0; height:1px; background:#444; margin:15px 0;">
<div style="display: flex; align-items: center; gap: 20px; margin: 15px 0;">
<div style="flex-shrink: 0; width: 100px;">
<video autoplay loop muted playsinline style="width: 100%; aspect-ratio: 1/1; object-fit: cover; border: 1px solid #7a1a3a; border-radius: 6px; background: #000;">
<source src="images/objects/pulse.webm" type="video/webm">
</video>
</div>
<p style="color:#ff8866; margin:0; font-weight:bold;">The dormant ring on your finger grows icy, pulsing with a hungry, rhythmic throb. It feels almost alive against your skin, silently urging you to follow the procession deeper into the restricted catacombs. A heavy knot of hesitation forms in your chest. Should you really do this? Are you truly willing to give in to its dark, demanding will? If you choose to pursue them, you will need to slip into their blind spots and tail them without making a single sound.</p>
</div>
<div style="text-align:center; display:flex; flex-direction:column; gap:10px; max-width: 300px; margin: 0 auto;">
<<button "👣 Tail them closely (Agility)">>
<<set _roll to $player.agi + random(1, 20)>>
<<if _roll gte 50>>
<<set $Crypts_Phase to "stealth">>
<<else>>
<<set $Crypts_Phase to "caught">>
<</if>>
<<goto "Cathedral_Crypts">>
<</button>>
<<button "↩ Retreat to the Cathedral">>
<<goto "Cathedral">>
<</button>>
</div>
<<elseif $Crypts_Phase is "stealth">>
<div style="background:#0a0a0a; padding:15px; border:1px solid #333; border-radius:8px; margin-bottom:20px;">
<div style="text-align:center">
<img src="images/encounters/city/room.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
<h3 style="color:#00ffff; margin-top:0; text-align:center;">The Inner Reliquary</h3>
</div>
<p style="color:#ccc;">You keep to the deep shadows, stepping only when the rhythmic chanting of the nuns masks the sound of your boots. The suffocating smoke from the priest's censer burns your throat, but you swallow your coughs, slipping effortlessly from pillar to pillar.</p>
<p style="color:#ccc;">Eventually, the procession halts in a cavernous, circular chamber. At the center sits a glass and gold sarcophagus bathed in a soft, ethereal light—the resting place of an ancient saint. The priest kneels before it, raising his hands in deep, silent reverence.</p>
<div style="text-align:center">
<video autoplay loop muted playsinline style="width:100%;border-radius:8px;border:2px solid #555">
<source src="images/encounters/city/rite.webm" type="video/webm">
</video>
</div>
<p style="color:#ccc;">The silence stretches, heavy and expectant. Suddenly, the priest's head snaps back, his eyes rolling into his head as he begins to intone a low, rhythmic chant in an ancient language you don't understand:</p>
<div style="text-align:center">
<video autoplay loop muted playsinline style="width:100%;border-radius:8px;border:2px solid #555">
<source src="images/encounters/city/priest.webm" type="video/webm">
</video>
</div>
<<say "Priest" "images/encounters/city/crypt_priest.webp" "Pedicabo ego vos et irrumabo..." "#d4af37">>
<hr style="border:0; height:1px; background:#444; margin:15px 0;">
<p style="color:#ff8866; margin:0; font-weight:bold;">The dormant ring suddenly constricts around your finger, burning with a freezing, agonizing intensity. It feels almost alive, silently urging you to move closer. You are perfectly positioned in the dark, just feet behind the kneeling nuns. You have the element of surprise.</p>
<<say "Priest" "images/encounters/city/crypt_priest.webp" "...Voluptas pro Principe Voluptatis..." "#d4af37">>
</div>
<div style="text-align:center; display:flex; flex-direction:column; gap:10px; max-width: 300px; margin: 0 auto;">
<<button "Do your move">>
<<set $Crypts_Phase to "wait">>
<<goto "Cathedral_Crypts">>
<</button>>
</div>
<<elseif $Crypts_Phase is "wait">>
<div style="background:#0a0a0a; border:1px solid #8e44ad; border-radius:8px; padding:15px; margin-bottom:20px;">
<p style="color:#ccc;">You press yourself deeper into the cold stone alcove, barely daring to breathe as the ritual spirals completely out of control. The nuns’ solemn Latin prayers have utterly shattered. What began as holy chants have devolved into desperate, whimpering moans echoing off the crypt walls.</p>
<p style="color:#ccc;">One by one, they tear off their heavy black habits, letting the restrictive garments pool onto the cold marble floor. Naked bodies glow softly in the flickering candlelight—breasts flushing, skin glistening with sudden, intense arousal as they descend on the priest like starving animals.</p>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/city/undress.webm" type="video/webm">
</video>
</div>
<p style="color:#ccc;">The man still wears the tattered remains of his golden vestments, but the sisters violently rip them away. His thick cock springs free, already rock-hard. Two nuns immediately drop to their knees, fighting for the privilege of taking him, drool running down their chins as they worship his flesh.
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/city/two.webm" type="video/webm">
</video>
</div>
Another nun climbs directly onto the altar, straddling his face and grinding her dripping pussy against his tongue with shameless, fanatical hunger.</p>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/city/priest_lick.webm" type="video/webm">
</video>
</div>
<p style="color:#ccc;">All around the chamber, the rest of the sisters have lost themselves entirely to the madness. One is bent over a stone pew, crying out loudly as another nun fucks her hard with her fingers. More are locked in messy positions on the floor, faces buried between each other’s thighs, tongues lapping greedily at swollen clits. Wet, obscene sounds fill the sacred space—the slick rhythm of plunging fingers, the wet slap of skin against skin, and broken cries
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/city/nun_lick.webm" type="video/webm">
</video>
</div>
<i>“Oh God… fuck… deeper!”</i></p>
<p style="color:#ccc;">The priest groans heavily as the nun riding his face cums hard, her thighs shaking as she floods his mouth with her juices. Another sister pushes her aside, impaling herself on his cock in one smooth motion and riding him with frantic, bouncing strokes, her heavy breasts swinging wildly as she cries out in pure, blasphemous ecstasy.</p>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/city/nun_fuck.webm" type="video/webm">
</video>
</div>
<p style="color:#aaa; font-style:italic;">The air down here is now suffocatingly thick, heavy with the competing scents of sacred incense and raw, unbridled sex. Fluids glisten on the ancient marble floor, splattered directly around the gold-rimmed sarcophagus of the saint.</p>
<hr style="border:0; height:1px; background:#8e44ad; margin:15px 0;">
<p style="color:#ff4444; font-weight:bold; text-align:center; letter-spacing:1px;">YOUR RING BURNS.</p>
<p style="color:#ff8866;">The cold metal against your finger suddenly turns white-hot. It pulses with a terrifying, dark power, greedily gorging itself on the raw spiritual corruption flooding the chamber. Suddenly, a voice slams directly into your mind—deep, velvet, and commanding:</p>
<<say "Ring" "images/objects/necro_ring.webp" "Yes… Surrender to it. Let yourself drown in the lust... This is what I crave." "#8e44ad">>
<p style="color:#ff8866;">A violent, overwhelming wave of lust crashes through your veins. <<if $player.gender is "male">>Your cock strains painfully hard against your armor, rock-hard and throbbing in perfect sync with the ring’s frantic pulse. The magical compulsion is staggering — an almost physical need to step out of the shadows, rip off your gear, and throw yourself headfirst into that writhing pile of naked, sweating flesh.
<<elseif $player.gender is "female">>Your pussy throbs with raw, aching hunger, your clit pulsing hotly in perfect sync with the ring’s frantic pulse. A flood of slick arousal soaks your thighs as the magical compulsion overwhelms you — an almost physical need to step out of the shadows, rip off your gear, and throw yourself headfirst into that writhing pile of naked, sweating flesh.
<</if>></p>
<p style="color:#ff8866; font-style:italic;">The artifact's hunger grows wilder with every wet thrust and broken gasp of pleasure echoing from the altar. It wants you to join them. It wants you to completely desecrate yourself alongside them—and with every passing second, your grip on your own willpower is slipping away.</p>
</div>
<div style="text-align:center; display:flex; flex-direction:column; gap:10px; max-width: 400px; margin: 0 auto;">
<<button "🛡️ Attempt to Resist (Strenght)">>
<<set _roll to $player.str + random(1, 20)>>
<<if _roll gte 60>>
<<set $Crypts_Phase to "resist_success">>
<<else>>
<<set $Crypts_Phase to "resist_fail">>
<</if>>
<<goto "Cathedral_Crypts">>
<</button>>
</div>
<<elseif $Crypts_Phase is "resist_success">>
<div style="background:#0a0a0a; border:1px solid #7bc47f; border-radius:8px; padding:15px; margin-bottom:20px;">
<h3 style="color:#7bc47f; margin-top:0; text-align:center; text-transform:uppercase;">You resisted the will of the ring</h3>
<p>Your muscles lock and tears of pure strain mix with your sweat as you force your eyes away from the writhing altar. Digging your nails into your palms until they bleed, you lean on your raw physical power to ground your mind against the parasitic magical assault.</p>
<p style="color:#7bc47f; font-weight:bold;">You broke the ring's hypnotic hold. Your mind is your own.</p>
<p style="color:#ccc;">The ring on your finger throbbed with a frustrated, icy venom, but it could not crush your spirit. You now stand at a crossroads. You can give in to the dark desire anyway, unleash your boiling rage on these corrupted zealots, or violently reject this corrupting artifact right here and walk away.</p>
</div>
<div style="text-align:center; display:flex; flex-direction:column; gap:10px; max-width: 350px; margin: 0 auto;">
<<button "🩸 Give in to the pleasure anyway (Join them)">>
<<goto "Crypts_Orgy">>
<</button>>
<<button "💍 Rip the Ring off and throw it away (Abandon Quest)">>
<<set $Crypts_Phase to "abandoned">>
<<set $quest_strangering to -1>>
<<goto "Cathedral">>
<</button>>
</div>
<<elseif $Crypts_Phase is "resist_fail">>
<div style="background:#2a0a0a; border:1px solid #ff4444; border-radius:8px; padding:15px; margin-bottom:20px;">
<h3 style="color:#ff4444; margin-top:0; text-align:center; text-transform:uppercase;">⚠️ You failed to resist the ring</h3>
<p style="color:#ccc;">You try to fight it, but your physical strength means nothing against the venom flooding your nervous system. The power of the ring makes your head spin violently, blinding your vision with a thick, crimson haze.</p>
<p style="color:#ff4444; font-weight:bold;">Your higher reasoning breaks under the weight of the dark magic.</p>
<p style="color:#ff8866;">The world narrows down to two overwhelming, primal instincts. Rational escape is no longer an option. Your body is screaming to either paint these ancient catacombs in the warm blood of a furious massacre, or strip away your sanity and drown in the depraved sea of sweating flesh before you.</p>
</div>
<div style="text-align:center; display:flex; flex-direction:column; gap:10px; max-width: 350px; margin: 0 auto;">
<<button "🩸 Give in to the pleasure (Join them)">>
<<goto "Crypts_Orgy">>
<</button>>
<<button "⚔️ Give in to the bloodlust (Slaughter them)">>
<<set $Crypts_Phase to "slaughter">>
<<goto "Cathedral_Crypts">>
<</button>>
</div>
<<elseif $Crypts_Phase is "slaughter">>
<div style="background:#2a0a0a; border:1px solid #ff4444; border-radius:8px; padding:15px; margin-bottom:20px;">
<p style="color:#ccc;">The crimson haze behind your eyes completely boils over. Your mind, overwhelmed by the ring's corrupting pulse and your own surging aggression, snaps into a state of pure, uncompromising bloodlust. You don't want to join their profane ritual—you want to paint the walls with them.</p>
<p style="color:#ccc;">With a guttural roar, you draw your weapon and lunges out of the shadow of the stone alcove. The heavy clatter of your armor shatters the wet, breathless atmosphere of the inner reliquary instantly.</p>
<p style="color:#ff8866; font-style:italic;">The scene erupts into pure panic. Nuns shriek in terror, scrambling backward over the cold marble and slipping on the fluids pooling near the altar. The priest, caught utterly exposed and defiled, stumbles back against the saint's sarcophagus, his face twisting from post-coital daze into desperate, fanatical fury.</p>
<<say "Priest" "images/encounters/city/crypt_priest.webp" "Blasphemer! Murderer! Sisters, take up your steel! Cleanse this filth in the name of the light!" "#d4af37">> The priest bellows, frantically grabbing his heavy silver hammer to use as a weapon.
<p style="color:#ccc;">Four of the closest nuns, heedless of their nakedness, violently tear hidden ceremonial daggers and maces from the discarded folds of their black habits. Their eyes burn with a sudden, lethal zeal. There is no turning back now—it's a fight to the death.</p>
</div>
<div style="text-align:center; display:flex; flex-direction:column; gap:10px; max-width: 300px; margin: 0 auto;">
<<button "⚔️ Slaughter them all!">>
<<set $Crypts_Phase to "massacre">>
<<set $returnTo to "Cathedral_Crypts">>
<<run setup.initCombat([
clone(setup.enemyPresets.NudePriest),
clone(setup.enemyPresets.NudeNun),
clone(setup.enemyPresets.NudeNun),
clone(setup.enemyPresets.NudeNun),
clone(setup.enemyPresets.NudeNun)
])>>
<<goto "CombatPage">>
<</button>>
</div>
<<elseif $Crypts_Phase is "caught">>
<div style="background:#1a0a0a; padding:15px; border:1px solid #ff4444; border-radius:8px; margin-bottom:20px;">
<h3 style="color:#ff4444; margin-top:0; text-align:center;">⚠️ You have been spotted!</h3>
<p style="color:#ccc;">Your boot betrays you, scraping loudly against a loose fragment of stone. The sound echoes sharply through the damp catacombs.</p>
<p style="color:#ccc;">The rhythmic chanting instantly cuts out. The air goes completely still. Before you can dive back behind a pillar, the tall, imposing priest turns around. His piercing eyes lock onto yours through the haze of burning incense.</p>
<div style="text-align:center">
<video autoplay loop muted playsinline style="width:100%;border-radius:8px;border:2px solid #555">
<source src="images/encounters/city/spotted.webm" type="video/webm">
</video>
</div>
<<say "Priest" "images/encounters/city/crypt_priest.webp" "Blasphemer! Who dares defile the sacred rest of the righteous? Guard the entrance, sisters! Let none leave this place alive!" "#d4af37">>
<p style="color:#ccc;">The nuns turn around, their expressions twisting from peaceful piety to fanatic rage as they pull concealed daggers from their robes. The heavy iron door behind you slams shut. You have lost the upper hand.</p>
<div style="text-align:center">
<img src="images/encounters/city/dagger.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
</div>
<div style="text-align:center; display:flex; flex-direction:column; gap:10px; max-width: 300px; margin: 0 auto;">
<<button "⚔️ Fight your way!">>
<<set $Crypts_Phase to "combat">>
<<set $returnTo to "Cathedral_Crypts">>
<<run setup.initCombat([
clone(setup.enemyPresets.Priest),
clone(setup.enemyPresets.BattleNun),
clone(setup.enemyPresets.BattleNun),
clone(setup.enemyPresets.BattleNun),
clone(setup.enemyPresets.BattleNun)
])>>
<<goto "CombatPage">>
<</button>>
<<button "↩ Run away!">>
<<goto "Cathedral">>
<</button>>
</div>
<<elseif $Crypts_Phase is "combat">>
<div style="background:#2a1a0a; border:1px solid #ffaa00; border-radius:8px; padding:15px; margin-bottom:20px;">
<p style="color:#ccc;">The heavy thud of the Priest's body hits the marble floor, and the final battle nun falls silent. You stand amidst the fresh carnage, catching your breath. But your victory is instantly cut short.</p>
<p style="color:#ccc;">You look toward the shadows and realize too late: during the chaotic opening moments of the brawl, one of the nuns managed to slip past you and escape up the stairs. She has raised the alarm.</p>
<div style="text-align:center">
<img src="images/encounters/city/run.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<p style="color:#ff8866; font-style:italic;">Heavy, rhythmic iron boots come thundering down the spiraling stone steps. Before you can clean the blood from your weapon, the heavy iron door is kicked wide open. Heavy armored guards burst into the chamber, spears leveled and shields raised high.</p>
<div style="text-align:center">
<img src="images/encounters/city/guards.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<<say "Guard" "images/enemies/guard.webp" "Assassin! Drop your weapons, heretic filth, or be put down where you stand!">>
<p style="color:#ccc;">The guards lock eyes with the dead clergy, their expressions hardening into lethal fury. They aren't looking to arrest you anymore—they are out for blood. You have no time to rest; you must fight them off to survive.</p>
</div>
<div style="text-align:center; display:flex; flex-direction:column; gap:10px; max-width: 300px; margin: 0 auto;">
<<button "⚔️ Fight the Guards!">>
<<set $Crypts_Phase to "guards_defeated">>
<<set $returnTo to "Cathedral_Crypts">>
<<run setup.initCombat([
clone(setup.enemyPresets.Guard),
clone(setup.enemyPresets.Guard),
clone(setup.enemyPresets.Guard),
clone(setup.enemyPresets.Guard),
clone(setup.enemyPresets.Guard)
])>>
<<goto "CombatPage">>
<</button>>
</div>
<<elseif $Crypts_Phase is "guards_defeated">>
<div style="background:#1a0505; border:1px solid #ff4444; border-radius:8px; padding:15px; margin-bottom:20px;">
<h3 style="color:#ffaa00; margin-top:0; text-align:center; text-transform:uppercase; letter-spacing:1px;">The Price of Blood</h3>
<p style="color:#ccc;">The last temple guard collapses against the stone stairs, his heavy plate armor clattering loudly in the damp air. You wipe the sweat and blood from your brow, standing alone in a subterranean slaughterhouse. The silence that follows is heavy, broken only by your own ragged breathing.</p>
<div style="display: flex; align-items: center; gap: 20px; margin: 15px 0;">
<div style="flex-shrink: 0; width: 100px;">
<video autoplay loop muted playsinline style="width: 100%; aspect-ratio: 1/1; object-fit: cover; border: 1px solid #7a1a3a; border-radius: 6px; background: #000;">
<source src="images/objects/pulse_red.webm" type="video/webm">
</video>
</div>
<p style="color:#ff8866; margin:0; font-weight:bold;">Against your skin, the ring begins to change. The agonizing, icy bite that has been tormenting your finger completely melts away. It is replaced by a deep, purring warmth that bleeds straight into your veins. Having gorged itself on the sheer chaos, panic, and slaughter of both the clergy and their protectors, the ring is utterly happy and full.</p>
</div>
<p style="color:#ccc;">Even though its psychic compulsion relaxes, a hypnotic, magnetic pull remains. The artifact's sated energy acts like a compass in your blood, driving you forward, further down into the depths of the restricted catacombs.</p>
<div style="text-align:center">
<img src="images/encounters/city/corridor.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<p style="color:#ccc;">You follow the frantic pull through a maze of dark, dripping stone tunnels until you finally step out into a cavernous, circular vault. The air here is dead, freezing, and suffocatingly heavy. There is no grand altar or majestic monument at the center; instead, the entire room is packed from floor to ceiling with a dense, claustrophobic labyrinth of ancient stone tombs, weathered sarcophagi, and stacked burial alcoves.</p>
<div style="text-align:center">
<img src="images/encounters/city/room.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<div style="display: flex; align-items: center; gap: 20px; margin: 15px 0;">
<div style="flex-shrink: 0; width: 100px;">
<video autoplay loop muted playsinline style="width: 100%; aspect-ratio: 1/1; object-fit: cover; border: 1px solid #7a1a3a; border-radius: 6px; background: #000;">
<source src="images/objects/pulse_red.webm" type="video/webm">
</video>
</div>
<p style="color:#ff8866; margin:0; font-weight:bold;">The ring thrums so violently against your flesh that your entire hand vibrates, drawing in the cold, stagnant spiritual residue of the thousands of bodies entombed around you. You can feel it in your bones—the artifact has gorged itself to the absolute limit. It is right on the cusp of breaking its shackles, humming with a desperate, awakened power that demands your immediate, final action.</p>
</div>
</div>
<div style="text-align:center; display:flex; flex-direction:column; gap:10px; max-width: 300px; margin: 0 auto;">
<<button "⚰️ Approach the Tomb">>
<<goto "Crypts_End">>
<</button>>
</div>
<<elseif $Crypts_Phase is "massacre">>
<div style="background:#1a0505; border:1px solid #ff4444; border-radius:8px; padding:15px; margin-bottom:20px;">
<p style="color:#ccc;">You gasp for air, your lungs burning as you suddenly blink. The heavy, suffocating red fog lifts from your mind all at once, and it feels exactly like waking up from a horrific, feverish dream. Your hands are shaking.</p>
<p style="color:#ccc;">As your consciousness snaps back to reality, you look down. The inner reliquary is dead silent, save for the wet, rhythmic dripping of fluids. The ancient marble floor is painted completely in fresh, hot crimson. The bodies of the priest and his nuns lie scattered around the chamber, hacked apart in a display of unchecked, primal ferocity.</p>
<p style="color:#8e44ad; font-weight:bold;">Against your skin, the ring feels radically different.</p>
<div style="display: flex; align-items: center; gap: 20px; margin: 15px 0;">
<div style="flex-shrink: 0; width: 100px;">
<video autoplay loop muted playsinline style="width: 100%; aspect-ratio: 1/1; object-fit: cover; border: 1px solid #7a1a3a; border-radius: 6px; background: #000;">
<source src="images/objects/pulse_red.webm" type="video/webm">
</video>
</div>
<p style="color:#8e44ad; margin:0; font-weight:bold;"> The agonizing, icy bite is completely gone. Instead, it radiates a deep, purring warmth that bleeds directly into your veins. It feels heavy, utterly sated, and full—overflowing with the raw, twisted spiritual energy generated by the sudden slaughter of holy figures in the middle of their own depravity.</p></div>
<p style="color:#ccc;">Though the ring's psychic grip has loosened, a strange, magnetic pull remains. Your eyes are drawn like a moth to a flame toward the center of the room. The gold-and-glass sarcophagus of the ancient saint stands pristine amidst the carnage, practically vibrating with an energy that demands your final touch.</p>
</div>
<div style="text-align:center; display:flex; flex-direction:column; gap:10px; max-width: 300px; margin: 0 auto;">
<<button "⚰️ Approach the Tomb">>
<<goto "Crypts_End">>
<</button>>
</div>
<</if>>
<</nobr>><<nobr>><div style="background:#0a0a0a; border:1px solid #d4af37; border-radius:8px; padding:15px; margin-bottom:20px;">
<div style="text-align:center">
<img src="images/encounters/city/room.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<p style="color:#ccc;">You stand at the heart of the cavernous vault, surrounded on all sides by the claustrophobic, towering labyrinth of ancient stone graves. The air is absolutely dead, but the ring on your finger is screaming with raw power.</p>
<div style="display: flex; align-items: center; gap: 20px; margin: 15px 0;">
<div style="flex-shrink: 0; width: 100px;">
<video autoplay loop muted playsinline style="width: 100%; aspect-ratio: 1/1; object-fit: cover; border: 1px solid #7a1a3a; border-radius: 6px; background: #000;">
<source src="images/objects/pulse_red.webm" type="video/webm">
</video>
</div>
<p style="color:#8e44ad; margin:0; font-weight:bold;">Without warning, your arm raises entirely on its own. The ring locks your muscles in place, forcing your open palm outward toward the dark rows of the dead. You gasp as a sudden, violent vacuum opens in your chest. Raw spiritual energy is pulled forcefully from your body, coursing down your arm, funneling into your finger, and exploding outward through the dark metal of the ring.</p>
</div>
<p style="color:#ccc;">A thick, violent wave of violet miasma erupts from the artifact, pooling across the cold marble floor and crawling up the stone faces of the surrounding tombs like hungry vines. The entire crypt violently trembles.</p>
<p style="color:#ccc;">With a deafening chorus of cracking stone, grinding slabs, and shattering concrete, an ancient sarcophagus burst open. A sickly, pulsing purple glow of pure necromancy floods the room. Slowly, accompanied by the horrific sound of grinding joints and snapping phantom tendons, a skeleton rises from its shattered resting place. Its empty eye socket ignite with dark, subservient fire as the undead creature step forward and bow their skull in submission toward you.</p>
<div style="text-align:center">
<video autoplay loop muted playsinline style="width:100%;border-radius:8px;border:2px solid #555">
<source src="images/encounters/city/raise.webm" type="video/webm">
</video>
</div>
<p style="color:#ccc;">The heavy, oppressive presence in your mind finally recedes, leaving behind a cold, absolute sense of mastery. The ring is no longer a parasite—it is a weapon, and it belongs to you.</p>
</div>
<div style="background:#112211; border:1px solid #7bc47f; border-radius:8px; padding:15px; margin-bottom:20px; text-align:center;">
<h3 style="color:#7bc47f; margin-top:0; text-transform:uppercase; letter-spacing:1px;"> Quest Complete</h3>
<p style="color:#7bc47f; font-weight:bold; margin-top: 0;">You have awakened the ring's power. From now on, while the ring is equipped in your jewelry slot, you will automatically summon two Skeleton Guards to fight by your side at the start of every combat encounter.</p>
</div>
<div style="text-align:center; display:flex; flex-direction:column; gap:10px; max-width: 300px; margin: 0 auto;">
<<button "🚪 Leave the Crypts">>
<<set $quest_strangering to 3>>
<<set $ring_power_unlocked to true>>
<<set $Crypts_Phase to "cleared">>
<<goto "Cathedral">>
<</button>>
</div><</nobr>><<nobr>>
<<if not $Crypts_Orgy_Phase>> <<set $Crypts_Orgy_Phase to "intro">><</if>>
<div style="background: rgba(20, 10, 25, 0.95); padding: 30px; border: 1px solid #6c3483; border-radius: 8px; border-left: 5px solid #8e44ad;">
<<if $Crypts_Orgy_Phase is "intro">>
<div style="text-align: center; margin: 25px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:800px; border-radius:5px; border:2px solid #8e44ad;">
<source src="images/encounters/city/orgy.webm" type="video/webm">
</video>
</div>
<p style="color:#d7bde2; text-align:center; font-size:1.1em;">
You step out of the shadows. The entire orgy freezes for a heartbeat — naked nuns staring at you with wide, shocked eyes, bodies still glistening and entangled.
</p>
<p style="color:#ff8866; text-align:center; font-style:italic;">
The priest’s face breaks into a wicked, lust-drunk grin.
<<say "Priest" "images/encounters/city/crypt_priest.webp" "A new soul in sin! Come! Join us! The Principe Voluptatis will forgive all who surrender to the flesh!" "#d4af37">>
</p>
<p style="color:#ccc; text-align:center;">The nuns’ confusion quickly melts into hungry smiles as they beckon you closer, hands still stroking and fingering each other.</p>
<<elseif $Crypts_Orgy_Phase is "priest_oral">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/city/priest_blow.webm" type="video/webm">
</video>
</div>
<p style="color:#d7bde2;">The priest pulls you in eagerly. You drop to your knees and take his thick, slick cock into your mouth while two nuns kiss your neck and stroke your body.</p>
<<elseif $Crypts_Orgy_Phase is "nun_lick">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/city/nun_lick.webm" type="video/webm">
</video>
</div>
<p style="color:#d7bde2;">You grab a moaning nun by the hair and push her face between your thighs. Her tongue immediately dives into your wet pussy, licking desperately while the others watch.</p>
<<elseif $Crypts_Orgy_Phase is "fuck_nun">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/city/priest_fuck.webm" type="video/webm">
</video>
</div>
<p style="color:#d7bde2;">
<<if $player.gender is "male">>
You bend a nun over the altar and slam your cock deep into her dripping cunt. She cries out in ecstasy as another nun joins you. You alternate between pounding her tight pussy and feeding your shaft into her friend's eager mouth.
<<else>>
You lay back on the altar as the priest straddles you, driving his thick length deep into your aching core. A nun leans down, kissing you passionately while the priest fucks you hard. Her mouth soon joins the rhythm, sucking and licking wherever she can as you moan in ecstasy.
<</if>>
</p>
<<elseif $Crypts_Orgy_Phase is "doggy">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/city/nun_fuck.webm" type="video/webm">
</video>
</div>
<p style="color:#d7bde2;">You take another nun from behind in full view of the group, pounding her hard while she moans and another sister kisses her.</p>
<<elseif $Crypts_Orgy_Phase is "anal">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/city/anal.webm" type="video/webm">
</video>
</div>
<p style="color:#d7bde2;">You climb on top of the priest and guide his thick cock in your rear end.</p>
<<elseif $Crypts_Orgy_Phase is "anal_nun">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/city/anal.webm" type="video/webm">
</video>
</div>
<p style="color:#d7bde2;">You bend a moaning nun over the altar, spread her ass, and push your cock deep inside her tight hole. She gasps and pushes back against you while the others watch in lustful approval.</p>
<<elseif $Crypts_Orgy_Phase is "you_cum">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/necromancer/you_cum.webm" type="video/webm">
</video>
</div>
<p style="color:#d7bde2;">Pleasure explodes through you. You shudder violently as your climax takes over, painting flesh and fluids across the altar while the others moan in approval.</p>
<<elseif $Crypts_Orgy_Phase is "creampie">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:40%; max-width:700px; transform: rotate(90deg); border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/city/creampie.webm" type="video/webm">
</video>
</div>
<p style="color:#f1948a;">
<<if $player.gender is "male">>
You bury yourself to the hilt inside a nun and unload thick ropes of cum deep into her womb as she shakes and cums hard around your cock.
<<else>>
The priest slams his thick cock deep inside you and unloads powerful ropes of hot cum straight into your womb. You cry out in ecstasy, shaking and clenching around him as he fills you completely.
<</if>>
</p>
<<elseif $Crypts_Orgy_Phase is "facial">>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/city/facial.webm" type="video/webm">
</video>
</div>
<p style="color:#d7bde2;">
<<if $player.gender is "male">>
You pull out at the last second and stand over the nun. She drops to her knees, looking up at you with lust-drunk eyes and opens her mouth. With a deep groan you explode, painting thick, hot ropes of cum across her face, covering her cheeks, lips, and tongue.
<<else>>
You push a nun down onto her knees in front of you. Grabbing her hair, you grind your soaking pussy against her eager tongue until your orgasm crashes over you. You cry out and squirt hard all over her pretty face, soaking her cheeks and chin while she moans beneath you.
<</if>>
</p>
<<elseif $Crypts_Orgy_Phase is "End">>
<div style="background:#0a0a0a; border:1px solid #8e44ad; border-radius:8px; padding:15px; margin-bottom:20px;">
<h3 style="color:#8e44ad; margin-top:0; text-align:center; text-transform:uppercase; letter-spacing:1px;">The Sated Artifact</h3>
<p style="color:#ccc;">The feverish intensity in the chamber slowly winds down to a heavy, exhausted hush. Your chest heaves as you pull away from the writhing mass of sweat-glistening skin and discarded habits. The thick, intoxicating haze of forced lust completely lifts from your consciousness, leaving your mind clear, yet profoundly altered.</p>
<div style="text-align:center">
<img src="images/encounters/city/exhausted.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<p style="color:#ccc;">Around you, the priest and the breathless nuns lie collapsed across the marble floor and against the stone pews, utterly spent and lost in a daze of post-coital bliss, completely indifferent to your presence.</p>
<p style="color:#8e44ad; font-weight:bold;">Against your bare skin, the ring radiates a profoundly different energy.</p>
<p style="color:#8e44ad; font-style:italic;">The agonizing, freezing bite is entirely gone. In its place, the dark metal pulses with a deep, purring warmth that bleeds directly into your veins. Having gorged itself on the pure, unfiltered spiritual corruption of a holy clergy defiling their own sanctuary, the ring feels heavy, perfectly happy, and completely full.</p>
<p style="color:#ccc;">As you pull your armor back on, a strange, magnetic pull remains active within the ring. Your eyes are drawn irresistibly toward the center of the chamber. Bathed in its soft, ethereal light, the pristine glass-and-gold sarcophagus of the ancient saint practically vibrates with a power that demands your final attention.</p>
</div>
<</if>>
<<if $Crypts_Orgy_Phase neq "End">>
<center>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; margin: 25px auto; max-width: 800px;">
<<if $player.gender is "female">>
<<button "Make a nun lick your pussy">>
<<set $Crypts_Orgy_Phase to "nun_lick">>
<<goto "Crypts_Orgy">>
<</button>>
<<button "Join the priest">>
<<set $Crypts_Orgy_Phase to "priest_oral">>
<<goto "Crypts_Orgy">>
<</button>>
<<button "Get fucked by the priest">>
<<set $Crypts_Orgy_Phase to "fuck_nun">>
<<goto "Crypts_Orgy">>
<</button>>
<<button "Let the priest fuck your ass">>
<<set $Crypts_Orgy_Phase to "anal">>
<<goto "Crypts_Orgy">>
<</button>>
<<else>>
<<button "Have the nuns suck your cock">>
<<set $Crypts_Orgy_Phase to "priest_oral">>
<<goto "Crypts_Orgy">>
<</button>>
<<button "Fuck a nun">>
<<set $Crypts_Orgy_Phase to "fuck_nun">>
<<goto "Crypts_Orgy">>
<</button>>
<<button "Take a nun doggystyle">>
<<set $Crypts_Orgy_Phase to "doggy">>
<<goto "Crypts_Orgy">>
<</button>>
<<button "Fuck a nun in the ass">>
<<set $Crypts_Orgy_Phase to "anal_nun">>
<<goto "Crypts_Orgy">>
<</button>>
<</if>>
<<if $Crypts_Orgy_Phase neq "intro" and $player.gender is "female">>
<<button "Cum hard">>
<<set $Crypts_Orgy_Phase to "you_cum">>
<<goto "Crypts_Orgy">>
<</button>>
<<button "Let the priest cum on your face">>
<<set $Crypts_Orgy_Phase to "facial">>
<<goto "Crypts_Orgy">>
<</button>>
<<button "Let the priest cum inside you">>
<<set $Crypts_Orgy_Phase to "creampie">>
<<goto "Crypts_Orgy">>
<</button>>
<</if>>
<<if $Crypts_Orgy_Phase neq "intro" and $player.gender is "male">>
<<button "Creampie a nun">>
<<set $Crypts_Orgy_Phase to "creampie">>
<<goto "Crypts_Orgy">>
<</button>>
<<button "Cum on a nun's face">>
<<set $Crypts_Orgy_Phase to "facial">>
<<goto "Crypts_Orgy">>
<</button>>
<</if>>
</div>
</center>
<br>
<center>
<<button "Pull away from the orgy">>
<<set $Crypts_Orgy_Phase to "End">>
<<goto "Crypts_Orgy">>
<</button>>
</center>
<<else>>
<center>
<<button "⚰️ Approach the Tomb">>
<<set $Crypts_Orgy_Phase to "intro">>
<<goto "Crypts_End">>
<</button>>
</center>
<</if>>
</div>
<</nobr>><<nobr>>
<div style="text-align:center;">
<h2>🎒 Pack</h2>
<p style="color:#888; font-size:0.9em;">What you carry into the field.</p>
</div>
<!-- ══ HEALTH POTIONS (quick-use consumable) ══ -->
<div style="background:#1a1a1a; padding:15px; border-radius:8px; border:1px solid #444; margin-bottom:20px;">
<h3 style="margin-top:0; border-bottom:1px solid #333; padding-bottom:8px;">🧪 Consumables</h3>
<div style="display:flex; align-items:center; gap:15px;">
<div style="font-size:2em;">🧪</div>
<div style="flex-grow:1;">
<b>Health Potions</b>
<span style="color:#aaa; font-size:0.9em;"> — restores 30 HP</span><br>
<small style="color:#555;">In pack: </small><b style="color:#51cf66;">$healthpotions</b>
</div>
<<if $healthpotions gt 0 and $player.hp lt $player.maxHp>>
<<button "Drink">>
<<set $healthpotions -= 1>>
<<set $player.hp to setup.clamp($player.hp + 30, 0, $player.maxHp)>>
<<goto "Pack">>
<</button>>
<<elseif $healthpotions lte 0>>
<button disabled style="opacity:0.4;">None left</button>
<<else>>
<button disabled style="opacity:0.4;">Full HP</button>
<</if>>
</div>
</div>
<!-- ══ CARRIED ITEMS ══ -->
<div style="background:#1a1a1a; padding:15px; border-radius:8px; border:1px solid #444;">
<h3 style="margin-top:0; border-bottom:1px solid #333; padding-bottom:8px;">Carried Items</h3>
<<if $inventory.length gt 0>>
<div style="display:flex; flex-wrap:wrap; gap:10px;">
<<for _i = 0; _i < $inventory.length; _i++>>
<<capture _i>>
<<set _itemDef to setup.items[$inventory[_i]]>>
<div style="background:#252525; border:1px solid #444; border-radius:6px; padding:10px; min-width:180px; flex:1;">
<div style="display:flex; gap:10px; align-items:center; margin-bottom:8px;">
<<if _itemDef and _itemDef.img>>
<<set _imgSource to (typeof _itemDef.img === "object" ? ($player.bodyType === "male" ? _itemDef.img.male : _itemDef.img.female) : _itemDef.img)>>
<div style="width:42px; height:42px; flex-shrink:0; border-radius:4px; border:1px solid #555; overflow:hidden; background:#111;">
<img @src="_imgSource" style="width:100%; height:100%; object-fit:cover;">
</div>
<</if>>
<div style="flex-grow:1;">
<<if _itemDef and _itemDef.type is "weapon">>
<div style="border-left:3px solid #fa5252; padding-left:6px;">
<b style="color:#fa5252;">$inventory[_i]</b>
<small style="color:#aaa; display:block;">+<<= _itemDef.damage>> Atk</small>
</div>
<<elseif _itemDef and _itemDef.type is "armor">>
<div style="border-left:3px solid #4dabf7; padding-left:6px;">
<b style="color:#4dabf7;">$inventory[_i]</b>
<small style="color:#aaa; display:block;">+<<= _itemDef.def>> Def</small>
</div>
<<elseif _itemDef and _itemDef.type is "boots">>
<div style="border-left:3px solid #51cf66; padding-left:6px;">
<b style="color:#51cf66;">$inventory[_i]</b>
<<if _itemDef.def gt 0>>
<small style="color:#aaa; display:block;">+<<= _itemDef.def>> Def</small>
<</if>>
</div>
<<elseif _itemDef and _itemDef.type is "jewelry">>
<div style="border-left:3px solid #fcc419; padding-left:6px;">
<b style="color:#fcc419;">$inventory[_i]</b>
<<if _itemDef.locked_effect and not $ring_power_unlocked>>
<small style="color:#aaa; display:block;"><<= _itemDef.locked_effect>></small>
<<elseif _itemDef.effect>>
<small style="color:#aaa; display:block;"><<= _itemDef.effect>></small>
<</if>>
</div>
<<else>>
<div style="padding-left:6px;"><b>$inventory[_i]</b></div>
<</if>>
</div>
</div> <<if _itemDef and _itemDef.desc>>
<p style="color:#666; font-size:0.8em; margin:4px 0 8px 0; font-style:italic;"><<= _itemDef.desc>></p>
<</if>>
<<button "Equip">>
<<if not setup.equipItem(_i)>>
<<run UI.alert("Couldn't equip that item.")>>
<<else>>
<<goto "Pack">>
<</if>>
<</button>>
</div>
<</capture>>
<</for>>
</div>
<<else>>
<p style="color:#555; font-style:italic; margin:0;">Your pack is empty.</p>
<</if>>
</div>
<br><hr>
<center>
<<button "Go Back">><<goto `previous() || "CampHub"`>><</button>>
</center>
<</nobr>><<nobr>>
<div style="text-align:center;">
<h2>🏕️ Camp</h2>
<p style="color:#888; font-size:0.9em;">Your domain at a glance.</p>
</div>
<div style="display:flex; flex-wrap:wrap; gap:20px; justify-content:center;">
<!-- ══ LEFT: THE HOARD ══ -->
<div style="flex:1; min-width:240px; background:#1a1a1a; padding:15px; border-radius:8px; border:1px solid #444;">
<h3 style="margin-top:0; border-bottom:1px solid gold; color:gold; padding-bottom:8px;">📦 The Hoard</h3>
<table style="width:100%; border:none; font-size:1.05em; line-height:2.1;">
<tr><td>💰 Gold</td> <td style="text-align:right; font-weight:bold;">$gold</td></tr>
<tr><td>🥩 Food</td> <td style="text-align:right; font-weight:bold;">$food</td></tr>
<tr><td>🌲 Wood</td> <td style="text-align:right; font-weight:bold;">$wood</td></tr>
<tr><td>🪨 Stone</td> <td style="text-align:right; font-weight:bold;">$stone</td></tr>
<tr><td>⛏️ Iron</td> <td style="text-align:right; font-weight:bold;">$iron</td></tr>
<tr><td>🦊 Pelts</td> <td style="text-align:right; font-weight:bold;">$pelts</td></tr>
<tr><td>🌿 Herbs</td> <td style="text-align:right; font-weight:bold;">$herbs</td></tr>
<tr><td>🧪 Potions</td> <td style="text-align:right; font-weight:bold;">$healthpotions</td></tr>
</table>
</div>
<!-- ══ RIGHT: PEOPLE & PRODUCTION ══ -->
<div style="flex:1; min-width:240px; display:flex; flex-direction:column; gap:20px;">
<!-- PEOPLE -->
<div style="background:#1a1a1a; padding:15px; border-radius:8px; border:1px solid #444;">
<h3 style="margin-top:0; border-bottom:1px solid #333; padding-bottom:8px;">👥 People</h3>
<!-- TRIBE -->
<<if $hasBarracks>>
<div style="margin-bottom:12px;">
<div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:6px;">
<b style="color:cyan;">⚔️ Warriors</b>
<span style="color:#aaa; font-size:0.9em;">$tribe.length / $tribeLimit</span>
</div>
<<if $tribe.length gt 0>>
<<set _jobs to {}>>
<<for _ti = 0; _ti < $tribe.length; _ti++>>
<<set _jn to $tribe[_ti].job || "Idle">>
<<if _jobs[_jn] is undefined>><<set _jobs[_jn] to 0>><</if>>
<<set _jobs[_jn] += 1>>
<</for>>
<div style="font-size:0.85em; color:#aaa; display:flex; flex-wrap:wrap; gap:6px;">
<<for _jn, _jc range _jobs>>
<span style="background:#252525; padding:2px 8px; border-radius:12px; border:1px solid #444;">_jc × _jn</span>
<</for>>
</div>
<<else>>
<span style="color:#555; font-size:0.85em; font-style:italic;">No warriors yet.</span>
<</if>>
<div style="margin-top:6px;"><a data-passage="TheBarracks" style="font-size:0.85em; color:#d4af77;">→ Manage barracks</a></div>
</div>
<</if>>
<!-- SLAVES -->
<<if $hasSlavePens>>
<div>
<div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:6px;">
<b style="color:#e91e63;">⛓️ Slaves</b>
<span style="color:#aaa; font-size:0.9em;">$slaves.length / $slaveLimit</span>
</div>
<<if $slaves.length gt 0>>
<<set _sjobs to {}>>
<<for _si = 0; _si < $slaves.length; _si++>>
<<set _sjn to $slaves[_si].job || "Idle">>
<<if _sjobs[_sjn] is undefined>><<set _sjobs[_sjn] to 0>><</if>>
<<set _sjobs[_sjn] += 1>>
<</for>>
<div style="font-size:0.85em; color:#aaa; display:flex; flex-wrap:wrap; gap:6px;">
<<for _sjn, _sjc range _sjobs>>
<span style="background:#252525; padding:2px 8px; border-radius:12px; border:1px solid #444;">_sjc × _sjn</span>
<</for>>
</div>
<<else>>
<span style="color:#555; font-size:0.85em; font-style:italic;">No slaves yet.</span>
<</if>>
<div style="margin-top:6px;"><a data-passage="SlavePens" style="font-size:0.85em; color:#d4af77;">→ Manage pens</a></div>
</div>
<</if>>
<<if not $hasBarracks and not $hasSlavePens>>
<p style="color:#555; font-style:italic; font-size:0.9em; margin:0;">Build a Barracks or Slave Pens to house people.</p>
<</if>>
</div>
<!-- DAILY PRODUCTION -->
<div style="background:#1a1a1a; padding:15px; border-radius:8px; border:1px solid #444;">
<h3 style="margin-top:0; border-bottom:1px solid #333; padding-bottom:8px;">📈 Daily Production</h3>
<<set _farmers to setup.countJob("Farmer")>>
<<set _hunters to setup.countJob("Hunter")>>
<<set _wooders to setup.countJob("Wood Gatherer")>>
<<set _miners to setup.countJob("Miner")>>
<<set _foodPerDay to (_farmers * 2) + (_hunters * 2)>>
<<set _peltsPerDay to _hunters * 2>>
<<set _woodPerDay to _wooders * 2>>
<<set _ironPerDay to _miners * 2>>
<<set _mouths to 1 + $slaves.length + $tribe.length>>
<<set _netFood to _foodPerDay - _mouths>>
<table style="width:100%; border:none; font-size:0.95em; line-height:2;">
<tr>
<td>🥩 Food</td>
<td style="text-align:right;">
<<if _farmers gt 0 or _hunters gt 0>>
<span style="color:#51cf66;">+_foodPerDay</span>
<small style="color:#555;"> (_farmers farmers, _hunters hunters)</small>
<<else>>
<span style="color:#555;">+0</span>
<</if>>
</td>
</tr>
<tr>
<td>🍽️ Mouths</td>
<td style="text-align:right;">
<span style="color:#fa5252;">−_mouths</span>
<small style="color:#555;"> (you + $slaves.length slaves + $tribe.length warriors)</small>
</td>
</tr>
<tr style="border-top:1px solid #333;">
<td><b>Net Food</b></td>
<td style="text-align:right;">
<<if _netFood gte 0>>
<b style="color:#51cf66;">+_netFood / day</b>
<<else>>
<b style="color:#fa5252;">_netFood / day</b>
<</if>>
</td>
</tr>
<<if _woodPerDay gt 0>>
<tr>
<td>🌲 Wood</td>
<td style="text-align:right;"><span style="color:#51cf66;">+_woodPerDay</span> <small style="color:#555;">(_wooders gatherers)</small></td>
</tr>
<</if>>
<<if _ironPerDay gt 0>>
<tr>
<td>⛏️ Iron</td>
<td style="text-align:right;"><span style="color:#51cf66;">+_ironPerDay</span> <small style="color:#555;">(_miners miners)</small></td>
</tr>
<</if>>
<<if _peltsPerDay gt 0>>
<tr>
<td>🦊 Pelts</td>
<td style="text-align:right;"><span style="color:#51cf66;">+_peltsPerDay</span> <small style="color:#555;">(_hunters hunters)</small></td>
</tr>
<</if>>
</table>
<<if _netFood lt 0>>
<div style="background:#2a0a0a; border:1px solid #fa5252; border-radius:4px; padding:8px; margin-top:10px; font-size:0.9em; color:#fa5252;">
⚠️ You are consuming more food than you produce. Assign Farmers or Hunters before resting.
</div>
<</if>>
</div>
</div>
</div>
<br><hr>
<center>
<<button "Go Back">><<goto `previous() || "CampHub"`>><</button>>
</center>
<</nobr>><<nobr>>
<<if not $escape_phase>>
<<set $escape_phase to "intro">>
<</if>>
<div style="background:#1a1208; border:1px solid #5a4a2d; border-radius:8px; padding:20px; font-family:sans-serif; line-height:1.4">
<<if $escape_phase is "intro">>
<h2 style="color:#ff4444; text-align:center; text-transform:uppercase;">⚠️ A Slave is Trying to Escape!</h2>
<div style="text-align:center">
<img src="images/encounters/camp/run.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<p>You wake up to the low murmur of voices around the camp. Word is spreading fast — one of your slaves tried to slip away in the night. The men are already whispering about <b><<= $activeNPC.name >></b> vanishing near the perimeter.</p>
<<set $activeNPC to $slaves[$activeNPCIndex]>>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top:20px;">
<<button "Search for the runaway">>
<<set $escape_phase to "search">>
<<goto "Event_SlaveEscape">>
<</button>>
<<button "Ignore the rumors">>
<<run $slaves.splice($activeNPCIndex, 1)>>
<<unset $escape_phase>>
<<unset $activeNPC>>
<<unset $activeNPCIndex>>
<<unset $activeNPCType>>
<<goto "CampHub">>
<</button>>
</div>
<<elseif $escape_phase is "search">>
<h2 style="color:#ff4444; text-align:center;">The Hunt</h2>
<p>You track footprints and broken branches through the brush. The night is still dark, but your instincts are sharp.</p>
<<set $searchRoll to $player.int + random(20)>>
<<if $searchRoll gt 15>>
<p>After a tense hunt you spot <b><<= $activeNPC.name >></b> crouched near the treeline, pack in hand, desperately looking for a way in the woods.</p>
<div style="text-align:center; margin-top:20px;">
<<button "Capture them">>
<<set $escape_phase to "found">>
<<goto "Event_SlaveEscape">>
<</button>>
</div>
<<else>>
<p>The search yields nothing. <b><<= $activeNPC.name >></b> has vanished into the wild.</p>
<div style="text-align:center; margin-top:20px;">
<<button "Return to camp (Lost Slave)">>
<<run $slaves.splice($activeNPCIndex, 1)>>
<<unset $escape_phase>>
<<unset $searchRoll>>
<<unset $activeNPC>>
<<unset $activeNPCIndex>>
<<unset $activeNPCType>>
<<goto "CampHub">>
<</button>>
</div>
<</if>>
<<elseif $escape_phase is "found">>
<h2 style="color:#ff4444; text-align:center;">Caught</h2>
<div style="text-align:center">
<img src="images/encounters/camp/grab.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<p>You grab <b><<= $activeNPC.name >></b> by the arm and yank them back into the camp. Their eyes are wide with terror.</p>
<div style="display: flex; flex-direction: column; gap: 10px; margin-top:20px;">
<<button "Force them to pleasure you">>
<<set $escape_phase to "sex">>
<<goto "Event_SlaveEscape">>
<</button>>
<<button "Punish them harshly">>
<<set $escape_phase to "punish">>
<<goto "Event_SlaveEscape">>
<</button>>
</div>
<<elseif $escape_phase is "sex">>
<h2 style="color:#ff4444; text-align:center;">Property Reclaimed</h2>
<<if $player.gender is "male" and $activeNPC.gender is "Female">>
<p>You bend the female slave over a fallen log and fuck her hard from behind, claiming her body as punishment.</p>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/bend.webm" type="video/webm">
</video>
</div>
<<elseif $player.gender is "female" and $activeNPC.gender is "Female">>
<p>You shove the female slave to her knees and press her face between your thighs, forcing her to lick you until you cum.</p>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/facesitf.webm" type="video/webm">
</video>
</div>
<<elseif $player.gender is "female" and $activeNPC.gender is "Male">>
<p>You sit on the male slave’s face and grind against his tongue, making him worship you until you shudder with pleasure.</p>
<div style="text-align: center; margin: 12px 0;">
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/encounters/camp/facesitm.webm" type="video/webm">
</video>
</div>
<</if>>
<<set $slaves[$activeNPCIndex].sub to setup.clamp($slaves[$activeNPCIndex].sub + 10, 0, 100)>>
<<set $slaves[$activeNPCIndex].love to setup.clamp($slaves[$activeNPCIndex].love + 5, 0, 100)>>
<<set $escapeOutcome to "sex">>
<div style="text-align:center; margin-top:20px;">
<<button "Head back to the Camp">>
<<set $escape_phase to "outcome">>
<<goto "Event_SlaveEscape">>
<</button>>
<<button "Punish them harshly">>
<<set $escape_phase to "punish">>
<<goto "Event_SlaveEscape">>
<</button>>
</div>
<<elseif $escape_phase is "punish">>
<h2 style="color:#ff4444; text-align:center;">Public Punishment</h2>
<p>You deliver a brutal punishment in front of the watching camp, making an example of <b><<= $activeNPC.name >></b>.</p>
<<if $activeNPC.gender is "Female">>
<div style="text-align:center">
<img src="images/encounters/camp/punishf.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<<elseif $activeNPC.gender is "Male">>
<div style="text-align:center">
<img src="images/encounters/camp/punishm.webp" style="width:100%;max-width:800px;border-radius:8px;border:2px solid #555;margin-bottom:15px" onerror="this.style.display='none'">
</div>
<</if>>
<<set $slaves[$activeNPCIndex].sub to setup.clamp($slaves[$activeNPCIndex].sub + 15, 0, 100)>>
<<set $slaves[$activeNPCIndex].love to setup.clamp($slaves[$activeNPCIndex].love - 5, 0, 100)>>
<<for _i to 0; _i lt $tribe.length; _i++>>
<<set $tribe[_i].sub to setup.clamp($tribe[_i].sub + 5, 0, 100)>>
<</for>>
<<set $escapeOutcome to "punish">>
<div style="text-align:center; margin-top:20px;">
<<button "Continue">>
<<set $escape_phase to "outcome">>
<<goto "Event_SlaveEscape">>
<</button>>
</div>
<<elseif $escape_phase is "outcome">>
<h2 style="color:#ff4444; text-align:center;">Back in Chains</h2>
<p><b><<= $activeNPC.name >></b> is dragged back to the slave pens, thoroughly reminded of who owns them. The rest of the camp watches in silence.</p>
<<if $escapeOutcome is "sex">>
<div style="margin-top: 15px; padding: 10px; background: rgba(0,0,0,0.5); border-radius: 5px; text-align: center; border: 1px solid #333;">
<span style="color:#4caf50; font-weight:bold; margin-right: 15px;">+$activeNPC.name's Submission (10)</span>
<span style="color:#4caf50; font-weight:bold;">+$activeNPC.name's Love (5)</span>
</div>
<<elseif $escapeOutcome is "punish">>
<div style="margin-top: 15px; padding: 10px; background: rgba(0,0,0,0.5); border-radius: 5px; text-align: center; border: 1px solid #333;">
<span style="color:#4caf50; font-weight:bold; margin-right: 15px;">+$activeNPC.name's Submission (15)</span>
<span style="color:#fa5252; font-weight:bold; margin-right: 15px;">-$activeNPC.name's Love (5)</span>
<br><br>
<span style="color:#4caf50; font-weight:bold;">+Tribe Submission (5)</span>
</div>
<</if>>
<div style="text-align:center; margin-top:25px;">
<<button "Return to Camp">>
<<unset $escape_phase>>
<<unset $escapeOutcome>>
<<unset $searchRoll>>
<<unset $activeNPC>>
<<unset $activeNPCIndex>>
<<unset $activeNPCType>>
<<goto "CampHub">>
<</button>>
</div>
<</if>>
</div>
<</nobr>><<nobr>>
<div style="background: #1a1208; color: #e2d6c5; border: 1px solid #5c4d2d; border-radius: 8px; padding: 20px; font-family: sans-serif; line-height: 1.5;">
<div style="text-align: center; margin-bottom: 15px;">
<img src="images/NPC/elara/grounds.webp" style="width: 100%; max-width: 800px; border-radius: 8px; border: 2px solid #5c4d2d; box-shadow: 0 4px 10px rgba(0,0,0,0.6);" onerror="this.style.display='none'">
</div>
You arrive at the training grounds at the break of dawn, expecting nothing but the quiet warmth of the rising sun. Instead, the rhythmic sound of movement catches your attention.
<br><br>
<div style="text-align: center; margin-bottom: 15px;">
<video autoplay loop muted playsinline style="width: 100%; max-width: 750px; border-radius: 8px; border: 2px solid #5c4d2d; box-shadow: 0 4px 10px rgba(0,0,0,0.6);">
<source src="images/NPC/elara/stretch.webm" type="video/webm">
</video>
</div>
Near the edge of the grounds, you spot Elara. Completely focused on her routine, she hasn't noticed your arrival yet. She moves with slow, lethal grace—each stretch deliberate, her muscles shifting seamlessly beneath light training leathers. A thin sheen of sweat glints on her skin under the golden morning light.
<br><br>
You quiet your steps, standing at the margin of the dirt just to watch her.
<br><br>
<<linkappend "Approach her...">>
<br>
As if finally sensing your eyes on her, Elara fluidly completes a turn and catches you staring. A slow, knowing smirk pulls at the corner of her lips.
<br><br>
<div style="text-align: center; margin-bottom: 15px;">
<video autoplay loop muted playsinline style="width: 100%; max-width: 750px; border-radius: 8px; border: 2px solid #5c4d2d; box-shadow: 0 4px 10px rgba(0,0,0,0.6);">
<source src="images/NPC/elara/breath.webm" type="video/webm">
</video>
</div>
<<say "Elara" "images/NPC/elara/profile.webp" "Enjoying the view, Warlord?" "#006400">> she teases, brushing a stray, damp lock of hair from her forehead.
<br><br>
<<say "Elara" "images/NPC/elara/profile.webp" "Or did you actually come down to the dirt to be useful today?" "#006400">>
<br><br>
She closes the distance between you, tilting her head with a sharp, challenging glint in her eyes.
<br><br>
<<say "Elara" "images/NPC/elara/profile.webp" "Want to spar?" "#006400">>
<br><br>
<<linkappend "Grab a training sword">>
<br>
You meet her grin with your own, stepping out onto the grounds and hefting a weighted wooden training sword. Elara doesn't hesitate—she deftly sweeps up her own wooden practice sword, spinning it effortlessly in one hand before settling into a low, fluid stance.
<br> <div style="text-align: center; margin-bottom: 15px;">
<video autoplay loop muted playsinline style="width: 100%; max-width: 750px; border-radius: 8px; border: 2px solid #5c4d2d; box-shadow: 0 4px 10px rgba(0,0,0,0.6);">
<source src="images/NPC/elara/circle.webm" type="video/webm">
</video>
</div><br>
You circle each other, boots kicking up fine plumes of dust. She is fast—deceptively so. Every time you think you spy a gap in her guard, she shifts, staying a half-step ahead of your rhythm. You lunge forward, trading a rapid flurry of blows. The heavy, resonant *crack* of wood striking wood echoes across the yard, vibrating right up your forearms.
<br><br>
Suddenly, she dips low, slipping past your guard. Before you can adjust, she strikes you squarely in the chest with the flat of her blade, following it immediately with a swift, forceful shove.
<br><div style="text-align: center; margin-bottom: 15px;">
<video autoplay loop muted playsinline style="width: 100%; max-width: 750px; border-radius: 8px; border: 2px solid #5c4d2d; box-shadow: 0 4px 10px rgba(0,0,0,0.6);">
<source src="images/NPC/elara/hit.webm" type="video/webm">
</video>
</div><br>
You lose your footing and hit the dirt hard, the impact knocking the air violently from your lungs in a breathless gasp.
<br><br>
<<linkappend "Catch your breath">>
<br>
Before the dust even settles, Elara is standing over you. The smooth tip of her wooden sword rests lightly against the center of your chest, pinning you down. She is breathing heavily, her chest rising and falling, eyes bright with the adrenaline of the bout. Framed against the open morning sky, she looks entirely imposing—and fiercely beautiful.
<br> <div style="text-align: center; margin-bottom: 15px;">
<img src="images/NPC/elara/crossed.webp" style="width: 100%; max-width: 800px; border-radius: 8px; border: 2px solid #5c4d2d; box-shadow: 0 4px 10px rgba(0,0,0,0.6);" onerror="this.style.display='none'">
</div><br>
For a long heartbeat, she just stares down at you, letting the dominance of the position linger. Then, her sharp expression melts into a soft laugh. She retracts the sword and offers you a calloused hand.
<br> <div style="text-align: center; margin-bottom: 15px;">
<img src="images/NPC/elara/reach.webp" style="width: 100%; max-width: 800px; border-radius: 8px; border: 2px solid #5c4d2d; box-shadow: 0 4px 10px rgba(0,0,0,0.6);" onerror="this.style.display='none'">
</div><br>
<<say "Elara" "images/NPC/elara/profile.webp" "You're getting steadier on your feet," "#006400">> she says, hauling you back up with a sudden burst of surprising strength. <<say "Elara" "images/NPC/elara/profile.webp" "But you still leave your flanks completely open when you commit. Honestly, seeing that, it's no surprise Kurgan beat you so badly." "#006400">>
<br><br>
She claps you firmly on the shoulder, her hand lingering against your armor just an instant longer than necessary.
<br><br>
<<say "Elara" "images/NPC/elara/profile.webp" "Don't worry. We’ll make a proper fighter out of you." "#006400">>
<br>
<<say "Elara" "images/NPC/elara/profile.webp" "Warlord..." "#006400">> She pauses, looking thoughtful for a moment before continuing. <<say "Elara" "images/NPC/elara/profile.webp" "Beating Kurgan is no simple feat. You need a true master to hone your edge. Have you ever thought of Corro? You remember him—he served faithfully under your father. After your father died, he left the tribe to live in the frozen tundra of the far North." "#006400">>
<br><br>
<<say "Elara" "images/NPC/elara/profile.webp" "He is the most lethal warrior I've ever seen. If you can track him down and convince him to teach you how to fight, you'll improve faster than you ever thought possible." "#006400">>
<br><br>
Then, she turns and walks away, leaving you alone on the dusty field with your thoughts.
<br><br>
<div style="text-align: center; margin-top: 20px;">
<<button "Leave the Training Grounds">>
<<set $main_stage to 2>>
<<goto "CampHub">>
<</button>>
</div>
<</linkappend>>
<</linkappend>>
<</linkappend>>
</div>
<</nobr>><<nobr>>
<div style="background: #1a1208; color: #e2d6c5; border: 1px solid #5c4d2d; border-radius: 8px; padding: 20px; font-family: sans-serif; line-height: 1.5;">
<h3 style="color: #c9a227; margin-top: 0;">A Fire in the Frost</h3>
You march through the howling winds of the frozen North, the biting cold seeping through your furs. Just as the chill begins to numb your limbs, you spot a thin, grey column of smoke rising over a jagged snowbank.
<br><br>
Pushing through the heavy drifts, you uncover a sturdy, low-slung wooden hut builtin the middle of the trees. It is heavily weathered but built to withstand the harshest winters. <br><div style="text-align: center; margin-bottom: 15px;">
<img src="images/NPC/corro/hut.webp" style="width: 100%; max-width: 800px; border-radius: 8px; border: 2px solid #5c4d2d; box-shadow: 0 4px 10px rgba(0,0,0,0.6);" onerror="this.style.display='none'">
</div><br>
You push the heavy fur flap aside and step out of the howling wind.
<br><br>
<<linkappend "Enter the hut">>
The air inside is thick with the smell of woodsmoke and roasting meat. Sitting with is feet on a wooden table is a massive, broad-shouldered man covered in thick furs and old, jagged scars. He doesn't flinch as you enter. He just slowly turns a piece of meat on a spit, his sharp, pale eyes locking onto yours.
<br><br><div style="text-align: center; margin-bottom: 15px;">
<img src="images/NPC/corro/inside.webp" style="width: 100%; max-width: 800px; border-radius: 8px; border: 2px solid #5c4d2d; box-shadow: 0 4px 10px rgba(0,0,0,0.6);" onerror="this.style.display='none'">
</div>
<<say "Corro" "images/NPC/corro/profile.webp" "Hail, young Pup" "#555">> the man rumbles. His voice is deep, like grinding stone and smells like alcohol. <<say "Corro" "images/NPC/corro/profile.webp" "I wondered if you'd ever find your way out here." "#555">>
Before you can explain why you're here, he kicks a heavy wooden stool toward you and tosses you a battered horn cup. He uncorks an earthen jug and pours out a heavy, dark liquid.
<br><br>
<<say "Corro" "images/NPC/corro/profile.webp" "Sit. Drink. Get the ice out of your bones," "#555">> Corro says, taking a heavy swallow from his own jug. <<say "Corro" "images/NPC/corro/profile.webp" "I know why you're here. Kurgan is a beast. To kill a beast, you need to know how to butcher." "#555">>
<br>
He leans forward, the firelight catching the brutal scars crossing his face.
<br><br>
<<say "Corro" "images/NPC/corro/profile.webp" "I will teach you. The strikes your father used to break enemy lines... For a price... Bring me gold, and I will forge you into a weapon." "#555">>
<br><br>
<div style="text-align: center; margin-top: 20px;">
<<button "Finish Your Mead & Leave">>
<<set $foundCorro to true>>
<<set $main_stage to 3>>
<<goto "North">>
<</button>>
</div>
<</linkappend>>
</div>
<</nobr>><<nobr>>
<div style="background: #1a1208; color: #e2d6c5; border: 1px solid #5c4d2d; border-radius: 8px; padding: 20px; font-family: sans-serif; line-height: 1.5;">
<div style="text-align: center; margin-bottom: 15px;">
<img src="images/NPC/corro/inside.webp" style="width: 100%; max-width: 800px; border-radius: 8px; border: 2px solid #5c4d2d; box-shadow: 0 4px 10px rgba(0,0,0,0.6);" onerror="this.style.display='none'">
</div>
<h3 style="color: #c9a227; margin-top: 0; text-transform: uppercase; letter-spacing: 1px;">🛖 Corro's Sanctuary</h3>
The air inside the hut is warm and carries the heavy sting of strong liquor. Corro sits by the crackling hearth, sharpening a massive, notched battleaxe with a whetstone. The rhythmic *shhhk, shhhk* of steel on stone fills the quiet room.
<br><br>
<<if $gold lt 100>>
<<say "Corro" "images/NPC/corro/profile.webp" "You look lean, Pup. And your coin purse looks lighter than a snowflake. Come back when you have enough gold to make my time worth it." "#555">>
<<else>>
<<say "Corro" "images/NPC/corro/profile.webp" "Ready to bleed? Blood makes the ground fertile, but gold keeps my belly full. Tell me what you want to learn." "#555">>
<</if>>
<br><br>
<div style="background: #261c10; border: 1px solid #42361e; border-radius: 6px; padding: 15px; margin-bottom: 20px;">
<h4 style="margin: 0 0 10px 0; color: gold; text-transform: uppercase; font-size: 0.9em;">Available Training</h4>
<div style="display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #42361e; padding: 10px 0;">
<div>
<strong>⚔️ Push Your Limits (Sparring)</strong>
<br><span style="font-size: 0.85em; color: #aaa;">Hone your physical conditioning and baseline strength.</span>
<br><small style="color: #fa5252;">Requires: 150 Gold, 30 Energy</small>
</div>
<<button "Train with him">>
<<if $gold gte 150 and $player.energy gte 30>>
<<set $gold -= 150>>
<<set $player.energy -= 30>>
<<set $player.con += 1>>
<<set $player.str += 1>>
<<set $player.agi += 1>>
<<goto "Corro_Train">>
<<else>>
<<run UI.alert("You lack the gold or the physical energy to survive his training right now.")>>
<</if>>
<</button>>
</div>
<div style="display: flex; justify-content: space-between; align-items: flex-start; border-bottom: 1px solid #42361e; padding: 15px 0; gap: 25px;">
<div style="flex: 1;">
<strong>📜 Learn a New Ability</strong>
<br>
<span style="font-size: 0.85em; color: #aaa;">Master the brutal vanguard techniques used by your father's personal guard.</span>
<br>
<small style="color: #fa5252;">Requires: 500 Gold, 50 Energy <<if $player.gender is "female">>(or you can try to bargain for a better price...)<</if>></small>
</div>
<<if $player.gender is "female">>
<div style="display: flex; flex-direction: column; gap: 10px; align-items: flex-end; min-width: 220px;">
<<button "Pay full price">>
<<if $gold gte 500 and $player.energy gte 50>>
<<set $gold -= 500>>
<<set $player.energy -= 50>>
<<goto "Corro_Ability">>
<<else>>
<<run UI.alert("Mastering an ancient combat form requires deep pockets and absolute focus.")>>
<</if>>
<</button>>
<<button "Bargain a lower price">>
<<goto "Corro_Bargain">>
<</button>>
</div>
<<else>>
<<button "Learn Ability">>
<<if $gold gte 500 and $player.energy gte 50>>
<<set $gold -= 500>>
<<set $player.energy -= 50>>
<<goto "Corro_Ability">>
<<else>>
<<run UI.alert("Mastering an ancient combat form requires deep pockets and absolute focus.")>>
<</if>>
<</button>>
<</if>>
</div>
<div style="text-align: center;">
<<button "Exit to the Tundra">>
<<goto "North">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<div style="background: #1a1208; color: #e2d6c5; border: 1px solid #5c4d2d; border-radius: 8px; padding: 20px; font-family: sans-serif; line-height: 1.5;">
<h3 style="color: #fa5252; margin-top: 0;">Brutal Conditioning</h3>
<div style="text-align: center; margin-bottom: 15px;">
<img src="images/NPC/corro/axe.webp" style="width: 100%; max-width: 800px; border-radius: 8px; border: 2px solid #5c4d2d; box-shadow: 0 4px 10px rgba(0,0,0,0.6);" onerror="this.style.display='none'">
</div>
Corro waits you outside of his hut, leaning over his heavy iron axe. He hands you a blunt iron bar and pushes your limits. He does not go easy on you. For hours, he forces you to block his crushing strikes until your wrists feel like breaking and your lungs burn from the frozen air.
<br><br>
When it's over, you collapse into the snow, gasping for breath. He throws down a rag and kicks some dirt over your tracks.
<br><br>
<<say "Corro" "images/NPC/corro/profile.webp" "You survived. Good. Your posture is slightly less pathetic than it was this morning." "#555">>
<br><br>
<div style="background: rgba(0,255,0,0.1); border: 1px solid #00ff00; border-radius: 4px; padding: 10px; color: #00ff00; font-weight: bold; text-align: center;">
💪 Training Successful! Your become more powerful (+1 Strength, +1 Agility, +1 Constitution).
</div>
<br><br>
<div style="text-align: center;">
<<button "Go back inside ">>
<<goto "Corro">>
<</button>>
</div>
</div>
<</nobr>><<nobr>>
<div style="background: #1a1208; color: #e2d6c5; border: 1px solid #5c4d2d; border-radius: 8px; padding: 20px; font-family: sans-serif; line-height: 1.5;">
<div style="text-align: center; margin-bottom: 15px;">
<img src="images/NPC/corro/sharp.webp" style="width: 100%; max-width: 800px; border-radius: 8px; border: 2px solid #5c4d2d; box-shadow: 0 4px 10px rgba(0,0,0,0.6);" onerror="this.style.display='none'">
</div>
<<if not $corroView>><<set $corroView to "main">><</if>>
<<if $corroView eq "main">>
<p>Corro wipes down a heavy iron mace with an oiled rag, eyeing you critically. "You want to survive out there? You need more than just wild swings. Show me your coin, and I'll show you how to kill."</p>
<div style="display:flex; flex-direction:column; gap:10px; margin-top:16px;">
<<if $player.hasCleaveSkill>>
<button disabled style="opacity:0.5;">🔥 Shattering Cleave — Already Learned</button>
<<elseif $gold gte 500>>
<<button "🔥 Learn Shattering Cleave (500g)">>
<<set $corroView to "cleave">>
<<goto "Corro_Ability">>
<</button>>
<<else>>
<button disabled style="opacity:0.5;">🔥 Shattering Cleave (500g) — Need more gold</button>
<</if>>
<<if $player.hasBerserkSkill>>
<button disabled style="opacity:0.5;">🩸 Bloodlust Berserk — Already Learned</button>
<<elseif $gold gte 800>>
<<button "🩸 Learn Bloodlust Berserk (800g)">>
<<set $corroView to "berserk">>
<<goto "Corro_Ability">>
<</button>>
<<else>>
<button disabled style="opacity:0.5;">🩸 Bloodlust Berserk (800g) — Need more gold</button>
<</if>>
<<if $player.hasWhirlwindSkill>>
<button disabled style="opacity:0.5;">🌪️ Iron Whirlwind — Already Learned</button>
<<elseif $gold gte 1200>>
<<button "🌪️ Learn Iron Whirlwind (1200g)">>
<<set $corroView to "whirlwind">>
<<goto "Corro_Ability">>
<</button>>
<<else>>
<button disabled style="opacity:0.5;">🌪️ Iron Whirlwind (1200g) — Need more gold</button>
<</if>>
<<button "Leave">>
<<set $corroView to "main">>
<<goto "CampHub">>
<</button>>
</div>
<<elseif $corroView eq "cleave">>
<h3 style="color: #c9a227; margin-top: 0;">The Vanguard Technique</h3>
<p>Instead of standard drilling, Corro makes you study the way he shifts his weight. He demonstrates a ruthless tactic: a heavy, downward shield-breaker blow meant to instantly shatter an enemy's posture and defensive momentum.</p>
<p>You copy his technique over and over until the blistered skin on your palms bursts open, staining the wooden handle of your practice weapon red. Finally, with a sharp, heavy execution swipe, you split a frozen log completely down the middle.</p>
<p>Corro stops watching, taking a swig from his flask with a grunt of satisfaction.</p>
<<say "Corro" "images/NPC/corro/profile.webp" "That is the Cleave. Your father used it to split helmets on the battlefield. Don't waste it on rabble." "#555">>
<<set $gold -= 500>>
<<set $player.energy -= 50>>
<<set $player.hasCleaveSkill to true>>
<div style="background: rgba(201,162,39,0.2); border: 1px solid gold; border-radius: 4px; padding: 10px; color: gold; font-weight: bold; text-align: center; margin-top: 16px;">
🔥 Ability Learned: You have unlocked "Shattering Cleave"!
</div>
<div style="text-align:center; margin-top:16px;">
<<button "Return to Corro">>
<<set $corroView to "main">>
<<goto "Corro">>
<</button>>
</div>
<<elseif $corroView eq "berserk">>
<h3 style="color: #990000; margin-top: 0;">The Bloodlust Berserk</h3>
<p>Corro hands you a vile-smelling brew. "Drink. Then fight me."</p>
<p>The moment the liquid hits your throat, a searing heat spreads through your veins. Your vision tints red, and every defensive instinct evaporates, replaced by an overwhelming urge to destroy. Corro strikes you, but you barely feel the impact as you launch into a furious, unyielding assault.</p>
<<say "Corro" "images/NPC/corro/profile.webp" "Good. When the pain is gone, only strength remains. But be careful—you leave yourself wide open." "#555">>
<<set $gold -= 800>>
<<set $player.energy -= 30>>
<<set $player.hasBerserkSkill to true>>
<div style="background: rgba(153,0,0,0.2); border: 1px solid #990000; border-radius: 4px; padding: 10px; color: #ff4d4d; font-weight: bold; text-align: center; margin-top: 16px;">
🩸 Ability Learned: You have unlocked "Berserk"! (Increases ATK, Lowers DEF for 6 turns)
</div>
<div style="text-align:center; margin-top:16px;">
<<button "Return to Corro">>
<<set $corroView to "main">>
<<goto "Corro">>
<</button>>
</div>
<<elseif $corroView eq "whirlwind">>
<h3 style="color: #aaaaaa; margin-top: 0;">The Iron Whirlwind</h3>
<p>Corro stands you in the center of a circle of wooden training dummies. "When surrounded, a single target focus is a death sentence. You must become a hazard to everything within arms reach."</p>
<p>He demonstrates a spinning technique that utilizes the weapon's own momentum to pull you into a lethal, sweeping arc. It takes hours to master the footwork without dizzying yourself, but eventually, you strike all the dummies in one fluid motion.</p>
<<set $gold -= 1200>>
<<set $player.energy -= 60>>
<<set $player.hasWhirlwindSkill to true>>
<div style="background: rgba(170,170,170,0.2); border: 1px solid #aaaaaa; border-radius: 4px; padding: 10px; color: #dddddd; font-weight: bold; text-align: center; margin-top: 16px;">
🌪️ Ability Learned: You have unlocked "Whirlwind"! (Hits all enemies at once)
</div>
<div style="text-align:center; margin-top:16px;">
<<button "Return to Corro">>
<<set $corroView to "main">>
<<goto "Corro">>
<</button>>
</div>
<</if>>
</div>
<</nobr>><<nobr>>
<div style="background: #1a1208; color: #e2d6c5; border: 1px solid #5c4d2d; border-radius: 8px; padding: 25px; font-family: sans-serif; max-width: 700px; margin: 0 auto;">
<<if not $bargain_phase>>
<<set $bargain_phase to "intro">>
<</if>>
<<if $bargain_phase is "intro">>
<h3 style="color: #c9a227; text-align: center;">💰 Bargaining with Corro</h3>
<div style="text-align: center; margin-bottom: 15px;">
<img src="images/NPC/corro/chest.webp" style="width: 100%; max-width: 800px; border-radius: 8px; border: 2px solid #5c4d2d; box-shadow: 0 4px 10px rgba(0,0,0,0.6);" onerror="this.style.display='none'">
</div>
<p style="font-size: 1.1em; text-align: center; margin: 20px 0;">
You step closer and slowly run your hand down Corro’s broad, scarred chest, looking up at him with a sultry smile.
</p>
<p style="font-style: italic; text-align: center; color: #aaa;">
“Is there anything I can do to make you lower the price…?”
</p>
<br>
<div style="text-align: center;">
<<button "Give him a blowjob (250 Gold)">>
<<if $player.energy gte 50>>
<<set $gold -= 250>>
<<set $player.energy -= 50>>
<<set $player.lust += 15>>
<<set $bargain_phase to "blow">>
<<goto "Corro_Bargain">>
<<else>>
<<run UI.alert("You don't have enough energy right now.")>>
<</if>>
<</button>>
<br><br>
<<button "Let him fuck you (100 Gold)">>
<<if $player.energy gte 50>>
<<set $gold -= 100>>
<<set $player.energy -= 50>>
<<set $player.lust += 30>>
<<set $bargain_phase to "sex">>
<<goto "Corro_Bargain">>
<<else>>
<<run UI.alert("You don't have enough energy right now.")>>
<</if>>
<</button>>
<br><br>
<<button "Never mind, pay full price">>
<<goto "Corro_Ability">>
<</button>>
</div>
<<elseif $bargain_phase is "blow">>
<p style="font-size: 1.1em; text-align: center; margin: 20px 0;">
You drop to your knees in front of him...
</p>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/corro/blow.webm" type="video/webm">
</video>
<br><br>
<p style="font-size: 1.05em; line-height: 1.6;">
His cock is thick and heavy. You struggle to take him fully into your mouth, your lips stretched tight around his girth.
</p>
<<say "Corro" "images/NPC/corro/profile.webp" "Fuck… that’s it. Good girl. You’re earning every coin." "#c9a227">>
<br>
<center>
<<button "He cums on your face">>
<<set $bargain_phase to "cum">>
<<goto "Corro_Bargain">>
<</button>>
</center>
<<elseif $bargain_phase is "sex">>
<p style="font-size: 1.1em; text-align: center; margin: 20px 0;">
He bends you over against a tree just outside his hut...
</p>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/corro/fuck.webm" type="video/webm">
</video>
<br>
<p style="font-size: 1.05em; line-height: 1.6;">
His thick cock pushes into you with a deep, stretching thrust that borders on painful.
</p>
<<say "Corro" "images/NPC/corro/profile.webp" "Tight little thing… worth every damn coin." "#c9a227">>
<br>
<center>
<<button "He cums on your face">>
<<set $bargain_phase to "cum">>
<<set $player.lust += 20>>
<<goto "Corro_Bargain">>
<</button>>
</center>
<<elseif $bargain_phase is "cum">>
<p style="font-size: 1.1em; text-align: center; margin: 20px 0;">
Corro’s breathing turns ragged...
</p>
<video autoplay loop muted playsinline style="width:100%; max-width:700px; border-radius:8px; border:2px solid #555; box-shadow: 0 0 15px rgba(0,0,0,0.5);">
<source src="images/NPC/corro/cum.webm" type="video/webm">
</video>
<br><br>
<p style="font-size: 1.05em; line-height: 1.6;">
With a deep, guttural growl, he pulls out and strokes his thick cock right in front of your face.
His heavy balls tighten before thick, hot ropes of cum suddenly erupt across your cheeks, lips, and forehead.
</p>
<<say "Corro" "images/NPC/corro/profile.webp" "Fuck… take it all, girl." "#c9a227">>
<br>
<p style="font-style: italic; color: #aaa; text-align: center;">
Warm cum drips slowly down your face as he watches you with a satisfied, predatory grin.
</p>
<br>
<center>
<<button "Lick your lips and stand up">>
<<unset $bargain_phase>>
<<goto "Corro_Ability">>
<</button>>
</center>
<</if>>
</div>
<</nobr>>