<<nobr>><div class="start-menu-shell">
<div class="start-menu-panel">
<div class="start-menu-hero">
<img src="img/menu/Header.png" alt="Medieval Life">
<div>
<div class="start-menu-title">Medieval Life</div>
<div class="start-menu-subtitle">A new life begins.</div>
</div>
</div>
<div class="start-menu-copy">
Embark in an adventure in this adult open world life simulator game and shape who you become. Work, rest, meet people, and let your choices carry you toward friendship, romance, trouble, or something far more dangerous.
</div>
<div class="start-menu-actions" >
This game contains explicit adult content and is intended for individuals aged 18 and older. By proceeding, you confirm you are of legal age in your jurisdiction.
[[Start Game|Character Creator]]
</div>
<div class="start-menu-copy">
Support the game, follow development, or join the community here.
</div>
<div class="start-menu-community">
<a href="https://patreon.com/Bromedy69" target="_blank" rel="noopener"><img src="img/menu/PatreonSupport.jpg" alt="Patreon"></a>
<a href="https://discord.gg/PDqefSqRtT" target="_blank" rel="noopener"><img src="img/menu/DiscordLogo.png" alt="Discord"></a>
</div>
</div>
</div><</nobr>>The forest had been endless, its tangled roots and thick branches clutching at your feet and clothes as you pushed forward, weary and aching. You lost count of the hours spent stumbling through the undergrowth, every step heavier than the last. But now, at last, you emerge into a clearing bathed in the soft golden light of dusk.
<center><video src="videos/ForestWalking.mp4" width="640" height="480" autoplay loop></video></center>
Ahead, nestled between the rolling hills and the distant sea, lay the small village of Ambercross. The scent of woodsmoke and cooking bread fill the air, a far cry from the damp, musty forest you have just escaped. You fled your old life in hope to find answers.
You tighten your grip on the worn leather satchel slung across your back, the only possession you have left. Inside, a few coins clinked together, hardly enough to survive on. You are poor, ragged, and alone, but alive.
The journey through the forest took a toll on your energy. <b id="Energy">(-20 Energy)</b>
<<set $c.energy -= 20>>
[[Go to the village |Ambercross Entrance]]
<<print setup.locationImageHtml("img/location/AC_Villagecenter.png", "Ambercross village center", "img/location/AC_Villagecenternight.png")>>
You stand in the village center. A massive ancient oak stands proudly in the middle, its gnarled branches spreading wide, casting dappled shade over the villagers who gather here. Around the oak, a stone well serves as both a meeting point and the village's primary water source.
Market stalls fill the square during the day, offering a range of local goods—fresh produce from nearby farms, hand-woven fabrics, and simple crafts.
<nobr>
<div class="location-action-list">
[[Beg for gold|Beggold]]
<<if setup.marketIsOpen()>>
[[Peruse the market|Ambercross Market]]
<</if>>
[[Sleep on the street|SleepStreet]]
</div>
</nobr><nobr>
<<dueActivityLinks "Ambercross Center">>
<<travel "north" "Head into Ambercross town hall" "Ambercross Town Hall" 5>>
<<travel "north" "Head to the pier" "Ambercross Piers" 5>>
<<travel "east" "Head towards the various houses" "Ambercross Houses" 5>>
<<travel "east" "Head into Iron Ember Forge" "Iron Ember Forge" 5>>
<<travel "west" "Head into the tavern" "Ambercross Tavern" 5>>
<<travel "west" "Head into the chapel" "Chapel" 5>>
<<travel "south" "Go towards the village entrance" "Ambercross Entrance" 5>>
</nobr><<set $gameStarted = true>><<print setup.locationImageHtml("img/location/AC_Entrance.png", "Ambercross village entrance", "img/location/AC_Entrancenight.png")>>
The Ambercross village entrance, a simple but welcoming passageway that marks the boundary between the village and the wilds beyond. Wooden archways adorned with creeping ivy stretch above the path, casting cool shade on those passing through.
Just inside the entrance, a small watch post stands to the side—a simple stone structure with a thatched roof where two of the village guards keep watch.
<<travel "north" "Go towards the village center" "Ambercross Center" 5>>
<<travel "east" "Head towards the farmer's house" "Ambercross Farmer's house" 5>>
<<travel "south" "Go down the road" "Ambercross Pillars" 5>><<print setup.locationImageHtml("img/location/AC_Tavern.png", "Ambercross tavern")>>
You're standing in the tavern. It is filled with the earthy scent of ale, roasted meats, and the crackling of the large stone hearth that dominates one wall. Rough-hewn wooden tables are scattered around the main room, where patrons gather in groups to enjoy hearty meals, tankards of frothy ale, and the occasional tune played by a traveling bard.
Behind the bar, a cheerful tavern keeper serves up a selection of ales brewed locally from the finest grains, alongside spiced wines and stronger spirits brought in from distant lands. Shelves of glass bottles line the back wall, each one filled with colorful liquids and mysterious concoctions.
<div class="location-action-list">
[[Speak to the innkeeper|Tavern innkeeper]]
</div>
<<dueActivityLinks "Ambercross Tavern">>
<<travel "up" "Go upstairs" "Ambercross Tavern Upstairs" 3>>
<<travel "east" "Go back to the village center" "Ambercross Center" 5>><<print setup.locationImageHtml("img/location/AC_Forge.png", "Iron Ember Forge")>>
Tucked just a few steps away from the village square, the Iron Ember Forge hums with the constant rhythm of hammer on anvil. The blacksmith’s shop is a stout, stone building with a low, slanted roof covered in moss. Its walls are blackened with soot from years of hard work, and the warm glow of the forge fire flickers from within, casting long shadows on the cobblestones outside.
The air inside is thick with the smell of heated metal and coal, and the temperature is always warmer here, even on the coldest of days. Behind the forge, a small yard serves as a testing area for newly made weapons, and it's not uncommon to see sparks flying as blades are tested for sharpness. A cooling trough sits beside the anvil, where glowing-hot metal hisses as it plunges into the water.
<<travel "west" "Go back to the village center" "Ambercross Center" 5>><<print setup.locationImageHtml("img/location/AC_FmHouse.png", "Farmer's homestead", "img/location/AC_FmHousenight.png")>>
Nestled at the edge of Ambercross's fertile fields stands the homestead of the village's main farmer, a modest yet well-kept home surrounded by expanses of farmland. The house itself is made of sturdy stone and timber, its thatched roof weathered by years of wind and rain but still strong. A barn stands not far from the main building, filled with sacks of grain, farming tools, and a few animals.
<<nobr>>
<div class="farm-work-actions">
<<if $FarmworkAccept === 0>>
<<if $FarmTrialStarted and !($FarmTrialWater and $FarmTrialFence and $FarmTrialFeed)>>
<div>[[Continue farm trial|FarmWorkTrial]]</div>
<<elseif $FarmTrialStarted and $FarmTrialWater and $FarmTrialFence and $FarmTrialFeed>>
<div>[[Report to the farmer|FarmTrialComplete]]</div>
<<else>>
<div>[[Ask for work|Amberfarmaskwork]]</div>
<</if>>
<</if>>
<<if $FarmworkAccept === 1>>
<<if $time.hour lt 6 or $time.hour gte 18>>
<div class="farm-work-locked">Farm work is available from 6 AM to 6 PM.</div>
<<else>>
<div>[[Light farm work|Farm easy work]] <span class="farm-work-meta">1 hour, 2 gold,</span> <b id="Energy">-5 Energy</b></div>
<<if $Farmworkskill gte 25>>
<div>[[Steady farm work|Farm medium work]] <span class="farm-work-meta">1.5 hours, 5 gold,</span> <b id="Energy">-10 Energy</b></div>
<<else>>
<div class="farm-work-locked">Steady farm work unlocks at 25 Farmwork.</div>
<</if>>
<<if $Farmworkskill gte 65>>
<div>[[Hard farm work|Farm hard work]] <span class="farm-work-meta">2 hours, 9 gold,</span> <b id="Energy">-15 Energy</b></div>
<<else>>
<div class="farm-work-locked">Hard farm work unlocks at 65 Farmwork.</div>
<</if>>
<</if>>
<</if>>
</div>
<</nobr>>
<<dueActivityLinks "Ambercross Farmer's house">>
<<travel "west" "Go back to the village entrance" "Ambercross Entrance" 5>>
<<if $FarmworkAccept === 1>>
<<travel "south" "Go to the barn" "Ambercross Barn" 5>>
<</if>><<print setup.locationImageHtml("img/location/AC_Piers.png", "Ambercross piers", "img/location/AC_Piersnight.png")>>
Simple wooden shacks line the pier’s edge, serving as storage for fishing gear, salted fish, and the occasional rare catch from deeper waters.
During the day, fishermen unload their hauls here, filling baskets with fish, crustaceans, and other treasures of the sea. Traders from distant lands occasionally stop by, bringing exotic wares in exchange for local goods. Despite the quiet and serene atmosphere, the piers are a vital artery for Ambercross, connecting the island to the rest of the world beyond its shores.
<<travel "south" "Go towards the village center" "Ambercross Center" 5>><<print setup.locationImageHtml("img/location/AC_Varioushouse.png", "Ambercross houses", "img/location/AC_Varioushousenight.png")>>
The houses are modest but well-kept, built from stone and timber with thatched roofs and ivy creeping up the sides. Some feature wooden shutters painted in bright hues, while others have old stone fences covered in moss. The sound of livestock can occasionally be heard from small pens behind the homes, where chickens, goats, and pigs are kept.
<<nobr>><<set _homes = setup.npcUnlockedHomes()>>
<<if _homes.length>>
<div class="npc-action-list">
<<for _homeNpc range _homes>><<capture _homeNpc>><<set _homeLabel = "Enter " + setup.npcDisplayName(_homeNpc) + "'s house">><<link _homeLabel "NPCHome">><<set $activeHomeNpcId = _homeNpc.id>><</link>><</capture>><</for>>
</div>
<</if>><</nobr>>
<<dueActivityLinks "Ambercross Houses">>
<<if $tannery === 1>>
<<travel "east" "Head into the tannery" "Ambercross Tannery" 5>>
<</if>>
<<travel "west" "Go towards the village center" "Ambercross Center" 5>>
<<nobr>><<if $FarmworkAccept !== 1>>
The barn door is not locked, but it is watched closely enough that stepping inside without permission would be a poor idea. The farmer has not accepted you for work yet, and the hayloft is not yours to use.
[[Return to the farmhouse|Ambercross Farmer's house]]
<<else>><<print setup.locationImageHtml("img/location/AC_Barn.png", "Ambercross barn")>>
You enter the barn.
Bales of hay are stacked high against the walls, while large sacks of grain and feed are piled neatly in one corner. Rusted but well-used farming tools hang from the beams, their handles smooth from years of use. A loft above serves as extra storage, where more hay and supplies are kept, and it’s not uncommon to see barn cats lounging in the rafters, keeping watch over the mice that try to scavenge the grain.
The barn also houses a few animals, including a pair of oxen, essential for plowing the fields, and a few goats and chickens.
<div class="bed-actions">[[Sleep|SleepBarn]] <<link "Change outfit" "ChangeOutfit">><<set $wardrobeReturn = "Ambercross Barn">><</link>> <<link "Wash up" "WashUp">><<set $wardrobeReturn = "Ambercross Barn">><</link>></div>
<<link "Go back to the farmer's house">><<run setup.advanceTime(5)>><<goto "Ambercross Farmer's house">><</link>><</if>><</nobr>><img src="img/menu/Cover.png" width="128" height="128">
Version: 0.1<<if $origin>>
<div class="sidebar-status">
<div class="sidebar-status-date">Day <<print $time.day>> - <<print $daysOfWeek[$dayIndex]>></div>
<div class="sidebar-status-time"><<print setup.timeText()>> (<<print setup.timeOfDay()>>)</div>
<div class="sidebar-status-values">
<span id="Goldgain" class="sidebar-status-gold">Gold: <<print $c.gold>></span>
<span id="Energy" class="sidebar-status-energy">Energy: <<print $c.energy>> / <<print $c.maxenergy>></span>
</div>
</div>
<</if>>
<<script>>jQuery("#story-banner").toggle(!State.variables.playerCharacterConfirmed && !State.variables.gameStarted);<</script>>
<<if $playerCharacterConfirmed or visited("Arrival") gt 0>>
<div class="sidebar-character-portrait">
<img @src="$c.portrait" alt="">
</div>
<<set _cumStatus = setup.playerCumStatusText()>>
<<if _cumStatus>>
<div class="sidebar-cum-status"><<= _cumStatus >></div>
<</if>>
<</if>><<nobr>><<set _approach = setup.npcMaybeCreateApproach()>>
<<if _approach>>
<div id="npc-approach-wrap" class="npc-approach-card">
<div class="npc-approach-title"><<= _approach.title >></div>
<div class="npc-approach-text"><<= _approach.text >></div>
<div class="npc-action-list">
<<if _approach.kind is "partner_rumor">>
<<link "Speak with them" "NPCPartnerConfrontation">><<run setup.npcAcceptApproach(_approach)>><</link>>
<<elseif _approach.kind is "intimate">>
<<link "Go with them">><<run setup.npcAcceptProposition(_approach)>><<set $pendingNpcApproach = null>><<goto "NPCEncounter">><</link>>
<<elseif _approach.kind is "loan" and _approach.compensationOptionId>>
<<link "Accept demand">><<set $lastLoanResult = setup.npcAcceptLoanDemand(_approach)>><<if $lastLoanResult and $lastLoanResult.success and !$activeEncounter>><<goto "NPCLoanResult">><<else>><<goto "NPCEncounter">><</if>><</link>>
<<link "Talk about the debt" "NPCLoanMenu">><<run setup.npcAcceptApproach(_approach)>><</link>>
<<else>>
<<link "Speak with them" "NPCInteract">><<run setup.npcAcceptApproach(_approach)>><</link>>
<</if>>
<<link "Not now">><<run setup.npcDeclineApproach()>><<replace "#npc-approach-wrap">><</replace>><</link>>
</div>
</div>
<<else>>
<<set _privateMoment = setup.npcMaybeCreatePrivateMomentWitness()>>
<<if _privateMoment>>
<div id="npc-private-moment-wrap" class="npc-approach-card">
<div class="npc-approach-title"><<= _privateMoment.title >></div>
<div class="npc-approach-text"><<= _privateMoment.text >></div>
<div class="npc-action-list">
<<link "Look closer">><<set $lastPrivateMomentResult = setup.npcObservePrivateMoment(_privateMoment)>><<replace "#npc-private-moment-wrap">><p><<= $lastPrivateMomentResult.text >></p><</replace>><</link>>
<<link "Move on">><<run setup.npcIgnorePrivateMoment(_privateMoment)>><<replace "#npc-private-moment-wrap">><</replace>><</link>>
</div>
</div>
<</if>>
<</if>><</nobr>><<if $gameStarted>>
[[Inventory]]
<<link "Journal" "Journal">><<set $journalTab = "character">><</link>>
[[Map]]
<<run setup.ensureNpcSystem()>><<set _nearbyCount = setup.npcsAt(setup.npcSidebarLocation()).length>><<set _nearbyLabel = "Nearby (" + _nearbyCount + ")">><<link _nearbyLabel "Nearby">><</link>>
[[Plans|NPCActivityPlans]]
[[Rest|Rest]]
<</if>>
[[Changelog]]
<<if $gameStarted and setup.cheatsEnabled>>
[[Cheats|CheatMenu]]
<</if>><h1>Choose your backstory</h1>
''The Orphan''
Abandoned at a young age and raised by the kind but overburdened village elder, you grew up with a fierce sense of independence and survival. The world has never given you anything, so you learned to take what you needed. Your past remains a mystery, with only vague memories of your parents’ disappearance.
<i id="Failure">-Start without any bonus</i>
''[[Select Orphan |Attributes][$origin to 1]]''
''The Farmer's Daughter''
Born and raised on your family’s modest farm, you learned the values of hard work, perseverance, and loyalty. The land has shaped you into someone strong and capable, unafraid to get your hands dirty. Your parents’ untimely disappearance during a mysterious raid on the village has sparked a need for justice, driving you to leave the quiet life behind and uncover the truth behind the attack.
<i id="Strgain">-Start with 2 Strength</i>
<i id="Fitnessgain">-Start with 5 Fitness</i>
<i>-Start with 10 Farmwork Skill</i>
''[[Select Farmer |Attributes][$origin to 2]]''
''The Soldier’s Daughter''
As the daughter of a renowned soldier, you were raised with discipline and trained in the ways of combat from a young age. However, when he failed to return from a campaign against a growing threat to the kingdom, you were left with more questions than answers. Determined to follow in his footsteps, you seek not only to prove your worth, but also to uncover what truly happened to your father.
<i id="Strgain">-Start with 5 Strength</i>
<i id="Fitnessgain">-Start with 2 Fitness</i>
<i id="Energy">-Start with 60 Maximum Energy</i>
''[[Select Soldier |Attributes][$origin to 3]]''
''The Noble’s Bastard''
The illegitimate daughter of a nobleman, you grew up on the fringes of high society, neither fully accepted nor entirely rejected. Your mother, a servant, tried to protect you from the world of politics and deceit, but she couldn’t shield you forever. Now, as tensions rise between noble factions, you're left into a world of power struggles, forced to flee in order to keep your lineage unknown.
<i id="Intgain">-Start with 5 Intelligence</i>
<i id="Charismagain">-Start with 3 Charisma</i>
''[[Select Noble |Attributes][$origin to 4]]''
''The Merchant's Daughter''
Growing up in a traveling merchant family, you saw the world through the eyes of a wanderer, learning the art of negotiation, trade, and survival on the road. Though your life was one of constant motion, it was also one of danger, with bandits and rival traders always lurking. After your family was betrayed by a trusted ally, leading to their disappearance, you were left to rebuild from nothing. Now, you seek to carve out a new path for yourself.
<i id="Charismagain">-Start with 5 Charisma</i>
<i id="Lustgain">-Start with 7 Carnality</i>
<i id="Goldgain">-Start with 30 Gold</i>
''[[Select Merchant |Attributes][$origin to 5]]''<<set $dayIndex to 0>> <!-- 0 = Sunday -->
<<set $daysOfWeek to ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]>>
<<set $totalDays to 0>>
<<set $time = { hour: 8, minute: 0, day: 1 }>>
<<set $foodcap to 0>>
<<set $drinkcap to 0>>
<<set $c = {
name: "Isabella",
energy: 50,
maxenergy: 50,
strength: 1,
fitness: 1,
intelligence: 1,
charisma: 1,
carnality: 1,
depravity: 1,
gold: 5,
virgin: true,
oralVirgin: true,
vaginalVirgin: true,
analVirgin: true,
virginities: { oral: true, vaginal: true, anal: true },
}>>
<<run setup.selectPlayerCharacter("redhead_wanderer")>>
<<set $playerCharacterConfirmed to false>>
<<set $energyregen = $c.maxenergy - $c.energy>>
<<set $sleepRisk = "">>
<<set $sleepEventMessage = "">>
<<set $Farmworkskill to 1>>
<<set $FarmworkAccept to 0>>
<<set $FarmTrialStarted to false>>
<<set $FarmTrialWater to false>>
<<set $FarmTrialFence to false>>
<<set $FarmTrialFeed to false>>
<<set $tannery to 0>>
<<set $marrinIntroSeen to false>>
<<set $Workonfarm to 0>>
<<set $Gametime to 1>>
<<set $tavernroom to 0>>
<<set $tavernRoomExpiresAt to 0>>
<<set $coren = {
id : "special_coren",
name : "Coren Vale",
firstName : "Coren",
lastName : "Vale",
age : 46,
ageBracket : "middleaged",
gender : "male",
special : true,
interactable : false,
hiddenUntilQuest : true,
role : "Royal court envoy",
occupation : "courtier",
home : "Royal Court",
background : "An influential member of the royal court who may know more about your family than he admits.",
money : 2500,
gold : 2500,
appearance : {
height : "tall",
build : "average",
hairColor : "black",
hairLength : "short",
hairStyle : "short",
hair : "black",
skinTone : "tan",
complexion : "tan"
},
physicalDescription : "tall height and average build, with tan skin and black short hair",
traits : ["generous", "deceitful"],
discovered : {
met : false,
name : false,
age : false,
job : false,
home : false,
appearance : false,
traits : [],
relationship : false,
attraction : false,
arousal : false,
gold : false,
schedule : false
},
affection : 0,
lust : 0,
arousal : 0,
virgin : false,
portrait : "img/npcs/Special/Coren_full.jpg",
portraits : {
clothed : "img/npcs/Special/Coren_full.jpg",
upper : "img/npcs/Special/Coren_upper.jpg",
nude : "img/npcs/Special/Coren_nude.jpg"
},
}>>
<<set $knownNpcs = []>>
/* inventory items */
<<set $invBread = 0>>
<<set $invWater = 0>>
<<set $invDriedMeat = 0>>
<<set $invAleMug = 0>>
<<set $invHotStew = 0>>
<<run setup.initAmbercrossNpcs(40)>><<print setup.locationImageHtml("img/location/AC_Pillars.png", "Ancient Ambercross pillars", "img/location/AC_Pillarsnight.png")>>
You stand across two large, weathered stone pillars, each carved with ancient symbols that have long been forgotten by the villagers, yet still watched over with a quiet reverence.
Beyond the gates, a dirt road winds its way into the village north, flanked by rolling hills and fertile fields, dotted with quaint cottages and barns while the forest entrance lies further south. A wooden cart rests near the gates, seemingly abandonned by a passing trader.
<<travel "north" "Head to the village entrance" "Ambercross Entrance" 5>>
<<travel "southwest" "Head to the forest entrance" "Forest Entrance" 5>><<nobr>><div class="character-creator-panel">
<div class="character-selector">
<div class="character-selector-title">Choose your character</div>
<table class="character-choice-table" style="width:100%; border-collapse:collapse; margin-top:0.5rem;">
<tr>
<td style="width:15rem; padding:0 1rem 0 0; vertical-align:middle;"><div class="player-choice-portrait"><img src="img/Character/Redhead/Dirty linen dress.png" alt=""></div></td>
<td style="padding-left:1rem; border-left:1px solid rgba(212, 174, 93, 0.42); vertical-align:middle;">
<div class="player-choice-name">Red-haired Wanderer</div>
<div class="player-choice-description">An 18-year-old short, slim young woman with long redhead hair, pale skin, small breasts, and a small ass.</div>
<span class="player-choice-status">Selected</span>
</td>
</tr>
</table>
</div>
<div class="character-name-form">
<span class="character-name-label">Enter your female character name</span>
<div class="character-name-row">
<<textbox "$c.name" $c.name>>
<<button "Confirm">>
<<set $c.name to $c.name.trim()>>
<<if $c.name is "">>
<<replace "#name-error">>Please enter a name.<</replace>>
<<else>>
<<run setup.selectPlayerCharacter("redhead_wanderer")>>
<<set $playerCharacterConfirmed to true>>
<<goto "Arrival">>
<</if>>
<</button>>
<span id="name-error" class="character-name-error"></span>
</div>
</div>
</div><</nobr>>
<<if $origin === 1>>
<</if>>
<<if $origin === 2>>
<<set $c.strength to 2>>
<<set $c.fitness to 5>>
<<set $Farmworkskill to 10>>
<</if>>
<<if $origin === 3>>
<<set $c.strength to 5>>
<<set $c.fitness to 2>>
<<set $c.energy to 60>>
<<set $c.maxenergy to 60>>
<</if>>
<<if $origin === 4>>
<<set $c.intelligence to 5>>
<<set $c.charisma to 3>>
<</if>>
<<if $origin === 5>>
<<set $c.charisma to 5>>
<<set $c.carnality to 7>><<set $c.depravity to $c.carnality>>
<<set $c.gold to 30>>
<</if>><<print setup.locationImageHtml("img/location/AC_Forestclearing.png", "Forest clearing", "img/location/AC_Forestclearingnight.png")>>
The forest clearing opens beneath the trees, offering a quiet place away from the village. A few logs and rough benches surround an old firepit, while gaps in the trees provide a distant view of Ambercross below. Villagers sometimes come here to rest, talk, or simply enjoy the peace of the forest.
<<dueActivityLinks "Forest Clearing">>
<<travel "east" "Enter the forest path" "Forest Path" 5>><<include [[roll FmW]]>><<include [[roll FhW]]>><<nobr>><<if $origin === 2>>You approached the fence, eyeing the rows of tilled soil and the weathered man tightening a harness on an ox.
<span class="dialogue-line dialogue-player">“You need help?”</span> you asked.
The farmer looked up, squinting beneath his straw hat. <span class="dialogue-line dialogue-male">“You know how to lift, dig, or keep a fence straight?”</span>
<span class="dialogue-line dialogue-player">“I know how to work.”</span>
He studied you—ragged clothes, calloused hands, steady eyes. Then he gave a nod.
<span class="dialogue-line dialogue-male">“Tools are in the shed. Pay’s small. Breakfast’s included. Don’t quit before sundown.”</span>
He turned back to his ox.
Looks like you got yourself a job.
[[Go back to the front|Ambercross Farmer's house]]
<<set $FarmworkAccept to 1>><<else>>You approach the fence while the farmer is checking the harness on an ox. His eyes travel over your clothes, your hands, and the unsure way you stand near the tilled rows.
<span class="dialogue-line dialogue-player">“I am looking for work.”</span>
He gives a short grunt. <span class="dialogue-line dialogue-male">“Looking is easy. Farm work is not.”</span>
You hold your ground, even as a few workers glance over from the barn.
<span class="dialogue-line dialogue-male">“I do not take strangers just because they need coin,”</span> he says. <span class="dialogue-line dialogue-male">“But if you want to prove you can follow instructions, I have chores nobody wants. Finish them before you ask again.”</span>
<div class="npc-activity-note">Complete the farmer's trial to unlock regular farm work.</div>
<div class="farm-trial-actions">
<div>[[Start the trial|FarmWorkTrial]]</div>
<div>[[Leave|Ambercross Farmer's house]]</div>
</div>
<<set $FarmTrialStarted to true>><</if>><</nobr>><<nobr>><div class="npc-activity-panel">
<div class="npc-interact-name">The farmer's trial</div>
<p>The farmer points you toward the rougher edge of the homestead. None of the jobs are complicated, but each one will show whether you can work without being watched every second.</p>
<div class="journal-detail-section">
<div class="journal-detail-title">Chores</div>
<div class="journal-detail-row"><span>Water the far rows</span><span><<if $FarmTrialWater>>Done<<else>>Needed<</if>></span></div>
<div class="journal-detail-row"><span>Patch the loose fence</span><span><<if $FarmTrialFence>>Done<<else>>Needed<</if>></span></div>
<div class="journal-detail-row"><span>Feed the animals</span><span><<if $FarmTrialFeed>>Done<<else>>Needed<</if>></span></div>
</div>
<div class="farm-trial-actions">
<<if !$FarmTrialWater>><div><<if $c.energy gte 3>>[[Water the far rows|FarmTrialWater]] <b id="Energy">(-3 Energy)</b><<else>><b id="Failure">Not enough energy to water the rows.</b><</if>></div><</if>>
<<if !$FarmTrialFence>><div><<if $c.energy gte 3>>[[Patch the loose fence|FarmTrialFence]] <b id="Energy">(-3 Energy)</b><<else>><b id="Failure">Not enough energy to patch the fence.</b><</if>></div><</if>>
<<if !$FarmTrialFeed>><div><<if $c.energy gte 3>>[[Feed the animals|FarmTrialFeed]] <b id="Energy">(-3 Energy)</b><<else>><b id="Failure">Not enough energy to feed the animals.</b><</if>></div><</if>>
<<if $FarmTrialWater and $FarmTrialFence and $FarmTrialFeed>><div>[[Report to the farmer|FarmTrialComplete]]</div><</if>>
<div>[[Return|Ambercross Farmer's house]]</div>
</div>
</div><</nobr>><<nobr>><<set $c.energy -= 3>><<run setup.advanceTime(25)>><<set $FarmTrialWater to true>><<set $c.fitness += 0.2>>
You haul water from the pump to the far vegetable rows, two heavy buckets at a time. By the third trip, your shoulders burn and mud has worked its way up your ankles.
One of the farmhands watches long enough to see whether you slow down. You do not.
<span class="dialogue-line dialogue-player">“Rows are watered.”</span>
<p><b id="Fitnessgain">You gain +0.2 Fitness experience.</b></p>
<div class="farm-trial-result-link">[[Continue the trial|FarmWorkTrial]]</div><</nobr>><<nobr>><<set $c.energy -= 3>><<run setup.advanceTime(25)>><<set $FarmTrialFence to true>><<set $c.strength += 0.2>>
You find the loose fence near the animal pen, where one rail hangs crooked and the post wobbles in its hole. The hammer is old, the nails bent, and nothing sits straight the first time.
You swear under your breath, brace the wood with your knee, and make it hold anyway.
<span class="dialogue-line dialogue-player">“Good enough to keep animals in.”</span>
<p><b id="Strgain">You gain +0.2 Strength experience.</b></p>
<div class="farm-trial-result-link">[[Continue the trial|FarmWorkTrial]]</div><</nobr>><<nobr>><<set $c.energy -= 3>><<run setup.advanceTime(25)>><<set $FarmTrialFeed to true>><<set $Farmworkskill += 1>>
You carry feed to the animals while trying not to look uncertain. The chickens swarm your boots, the goats shove at the bucket, and the pigs make it very clear they consider patience a useless virtue.
It is messy, noisy work, but by the end every trough is filled.
<span class="dialogue-line dialogue-player">“Nobody bit me. I am counting that as skill.”</span>
<p><b>You gain +1 Farmwork skill.</b></p>
<div class="farm-trial-result-link">[[Continue the trial|FarmWorkTrial]]</div><</nobr>><<nobr>><<if $FarmTrialWater and $FarmTrialFence and $FarmTrialFeed>>You return to the farmer with mud on your hem, sore arms, and enough irritation to keep your spine straight.
He looks past you toward the watered rows, the patched fence, and the animals nosing through fresh feed.
<span class="dialogue-line dialogue-male">“Hmph. You did not make a disaster of it.”</span>
<span class="dialogue-line dialogue-player">“That means I get the work?”</span>
He studies you for another long moment, then nods toward the shed.
<span class="dialogue-line dialogue-male">“Light work to start. Tools are there. Pay is small. Do not make me regret it.”</span>
Looks like you got yourself a job.
<b>Regular farm work is now available.</b>
<<set $FarmworkAccept to 1>>
<<set $Farmworkskill += 1>>
[[Go back to the front|Ambercross Farmer's house]]
<<else>>The farmer has no patience for unfinished promises.
[[Continue the trial|FarmWorkTrial]]
<</if>><</nobr>><<include [[roll FeW]]>><<nobr>><<set _farmWork = setup.farmWorkStart("easy")>>
<div class="npc-activity-panel">
<div class="npc-interact-name"><<= _farmWork.success ? _farmWork.tierLabel : "Farm work" >></div>
<<if !_farmWork.success>>
<p><<= _farmWork.text >></p>
<div class="farm-trial-result-link">[[Return|Ambercross Farmer's house]]</div>
<<else>>
<<include _farmWork.passage>>
<<if !_farmWork.choicePending>>
<<print setup.farmWorkRewardHtml(_farmWork)>>
<div class="farm-trial-result-link">[[Finish work|Ambercross Farmer's house]]</div>
<</if>>
<</if>>
</div><</nobr>>You haul the feed bucket into the pen. Chickens swarm your boots, pecking and squawking. The pigs grunt, already pushing at the trough.
It’s easy work—just messy. You bend, pour, scatter. Your arms get a light burn from the weight, your shirt clings with sweat.
A young farmhand passes by, slowing just enough to get a look at your ass as you lean over.
<nobr>
[[Ignore him and keep working|FeW1a]]
<<if $c.carnality gte 5>>
[[Show him a bit more skin|FeW1b]]
<</if>>
</nobr>You kneel beside the goat, bucket in place, hands working the teats with slow, practiced squeezes. The rhythm is almost meditative—until you hear boots behind you.
<span class="dialogue-line dialogue-male">“You’re good with your hands,”</span> a voice says. Low. Amused.
You glance over your shoulder. One of the farmhands, leaning against the fence, arms crossed, eyes on your chest as it shifts with each pull.
<nobr>
[[Laugh it off and keep working|FeW2a]]
<<if $c.carnality gte 10>>
[[Enquire about showing him|FeW2b]]
<</if>>
</nobr>You head to the edge of the property where chopped logs are scattered near the treeline. It’s easy work—pick up, stack, repeat. Your arms warm up quick, and so does your skin under the midday sun.
By the time you're hauling the third load, your shirt sticks to your back and your chest is rising fast.
A man sharpening tools near the barn stops to watch. <span class="dialogue-line dialogue-male">“You keep hauling wood like that, I’ll be needing a cold bucket.”</span>
<nobr>
[[Ignore his comment and continue working|FeW3a]]
<<if $c.charisma gte 5>>
[[Inquire for help|FeW3b]]
<</if>>
</nobr>
You roll up your sleeves and grab the brush. The water trough stinks—stale slop, algae, bits of old feed. It’s a filthy job, but someone’s got to do it.
You lean in, scrubbing hard, sweat beading on your neck. Your shirt slips low, sticking to your skin.
Behind you, you hear a soft whistle.
You glance back. A fieldhand’s leaning on the fence, chewing a straw, clearly enjoying the view.
<span class="dialogue-line dialogue-male">“You missed a spot,”</span> he says, nodding toward the far end of the trough—right where you’ll need to bend over to reach.
You flash a dry smile. <span class="dialogue-line dialogue-player">“You volunteering to polish it for me?”</span>
He laughs but stays put.
You stretch a little slower than you need to.You grab a broom and start sweeping out the barn—dust, straw, and whatever the animals left behind. The air’s warm, thick with hay and musk, and every stroke kicks up more grime.
You work slowly, hips swaying with the rhythm. It’s quiet—until you hear boots on the wood behind you.
<span class="dialogue-line dialogue-male">“You always put that much effort into a sweep?”</span> The voice is playful. Male. Close.
You glance over your shoulder, not stopping. <span class="dialogue-line dialogue-player">“Only when I know I’m being watched.”</span>
He leans on the doorframe, arms folded, eyes lingering. <span class="dialogue-line dialogue-male">“Might need the barn swept again tomorrow.”</span>
You smirk, dragging the broom just a little slower across the floor.<<nobr>><<set _farmWork = setup.farmWorkStart("medium")>>
<div class="npc-activity-panel">
<div class="npc-interact-name"><<= _farmWork.success ? _farmWork.tierLabel : "Farm work" >></div>
<<if !_farmWork.success>>
<p><<= _farmWork.text >></p>
<div class="farm-trial-result-link">[[Return|Ambercross Farmer's house]]</div>
<<else>>
<<include _farmWork.passage>>
<<if !_farmWork.choicePending>>
<<print setup.farmWorkRewardHtml(_farmWork)>>
<div class="farm-trial-result-link">[[Finish work|Ambercross Farmer's house]]</div>
<</if>>
<</if>>
</div><</nobr>>You haul a hammer and a bundle of nails out to the broken section of fence near the eastern field. The posts are splintered, the rails half-rotted. You don’t ask what got through last night.
The sun beats down as you work—pulling out cracked boards, setting new ones, hammering them into place. The wood bites your palms. Sweat drips from your brow. No one comes to help.
By the time the last nail goes in, your arms are sore and your shirt clings damp to your back.You square up beside the stack, grab the first hay bale, and lift. It’s heavier than it looks—dense, scratchy, awkward. You grunt and drag it toward the barn.
By the fourth one, your arms burn and your back aches.
A man walks by, tall and shirtless, carrying his own bale with a smirk. <span class="dialogue-line dialogue-male">“Careful,”</span> he says, glancing at your form. <span class="dialogue-line dialogue-male">“One bad lift and you’ll be flat on your ass.”</span>
You straighten, sweaty and irritated. <span class="dialogue-line dialogue-player">“Then maybe you should walk behind me.”</span>
He laughs and keeps walking—but slows down.
You keep hauling. A little slower. A little lower.You step into the stable, greeted by the thick stench of manure and sweat. A pitchfork waits by the door, along with a wheelbarrow half-rotted from years of use.
You get to work—shoveling, dragging, dumping. It’s heavy, filthy, thankless. The kind of job no one volunteers for.
Halfway through, one of the ranch hands leans over the stall wall, chewing on a piece of straw. <span class="dialogue-line dialogue-male">“Didn’t think someone like you had the stomach for shit work.”</span>
You glance up, panting. <span class="dialogue-line dialogue-player">“I’m good at handling messes. Especially the ones that talk.”</span>
He chuckles but doesn’t say much after that.
By the time you’re done, your shirt’s plastered to your body and your boots are caked in filth. It’s disgusting—and oddly satisfying.You fill the buckets and drag them to the pen. The oxen stand there, massive and stubborn, coated in dried mud and filth. You strip off your overshirt—it’s already soaked from sweat—and climb into the pen with a stiff-bristled brush.
Water splashes as you scrub the beast’s side, arms straining, chest rising with the effort. Your soaked undershirt clings to your skin—transparent now—and you know it.
You hear a whistle behind you.
One of the younger hands leans against the fence, shamelessly watching. <span class="dialogue-line dialogue-male">“Need help rinsing off?”</span>
You glance over your shoulder. <span class="dialogue-line dialogue-player">“Only if you’re ready to get wet too.”</span>
His smile says he’s thinking about it.
You go back to work—slow, thorough scrubbing. Not just for the ox’s sake.The farmer tells you to oil the tools out back—plow blades, rusted hinges, an old lever press that groans when touched. You find the oil and a rag, crouch low, and get to work.
You’re bent over the press, rubbing oil along the shaft, working it deep into the grooves. It squeaks with every stroke.
Behind you, someone clears his throat. You glance back—just one of the hands, arms folded, eyes glued to the way your hips move.
<span class="dialogue-line dialogue-male">“You always polish that hard?”</span> he asks.
You smile without turning. <span class="dialogue-line dialogue-player">“Only when someone’s watching.”</span>
You keep stroking the lever, slow and steady, hips swaying just a little more than necessary. The squeak grows louder.
He doesn’t leave. You don’t ask him to.<<nobr>><<set _farmWork = setup.farmWorkStart("hard")>>
<div class="npc-activity-panel">
<div class="npc-interact-name"><<= _farmWork.success ? _farmWork.tierLabel : "Farm work" >></div>
<<if !_farmWork.success>>
<p><<= _farmWork.text >></p>
<div class="farm-trial-result-link">[[Return|Ambercross Farmer's house]]</div>
<<else>>
<<include _farmWork.passage>>
<<if !_farmWork.choicePending>>
<<print setup.farmWorkRewardHtml(_farmWork)>>
<div class="farm-trial-result-link">[[Finish work|Ambercross Farmer's house]]</div>
<</if>>
<</if>>
</div><</nobr>>The sun’s high when they hand you the shovel. <span class="dialogue-line dialogue-male">“Dig straight, deep, and all the way to the fence line,”</span> the farmer says. <span class="dialogue-line dialogue-male">“Don’t stop ‘til you hit the stone marker.”</span>
You start digging. The dirt is dry and packed, every strike of the shovel jarring your arms. Your shirt’s off within minutes—sweat dripping down your spine, streaking through dust and grime.
By the time you're halfway through, your thighs burn and your breath comes in gasps. A pair of the older hands pass by, one slowing, watching the way you work the shovel into the soil—back arching, muscles flexing, skin slick with sweat.
<span class="dialogue-line dialogue-male">“You sure you’re not digging your own grave?”</span> one mutters with a grin.
You smirk, not stopping. <span class="dialogue-line dialogue-player">“If I am, I’ll look damn good going into it.”</span>
You keep digging—gritty, soaked, and breathless. You’re filthy, aching… and more than a little aware of who’s still watching.You’re handed the reins to the old plow rig—two oxen, stubborn as sin, and a field that hasn’t been turned in months. The farmer just gives you a nod. <span class="dialogue-line dialogue-male">“Think you can handle it?”</span>
You grip the handles and dig in. The plow bucks and jerks with every root you hit, the rig shaking through your arms and shoulders. Your boots slip in the dirt, your legs burn, and sweat runs down your inner thighs.
It’s brutal, rhythmic, primal. You push, grunt, drag.
At some point, you notice the stablemaster leaning on the fence, watching. His expression is unreadable—part impressed, part amused, part something else entirely.
You don’t stop. You roll your hips into the work, breath ragged, body straining with every thrust of the blade into the soil.
<span class="dialogue-line dialogue-male">“You’re not bad with a harness,”</span> he calls out.
You shoot him a look. <span class="dialogue-line dialogue-player">“I know how to take control.”</span>
That earns a slow grin.The drainage ditch overflowed in the last storm—mud, rocks, broken branches all packed in tight. You’re handed a shovel and told, simply, <span class="dialogue-line dialogue-male">“Clear it before nightfall.”</span>
You jump down into the trench, ankle-deep in cold muck. Every scoop is a fight—sticky, wet, and slow. The mud clings to your legs, your arms are shaking halfway through.
You strip down to your underthings, soaked through anyway, not caring who sees. The sun’s beating down, your skin slick, smeared with sweat and filth.
A shadow falls over the edge of the ditch.
<span class="dialogue-line dialogue-male">“Didn’t think you’d last this long,”</span> one of the men says, leaning on his rake, eyes dragging down your mud-streaked body. <span class="dialogue-line dialogue-male">“You look like hell.”</span>
You wipe your mouth with the back of your hand. <span class="dialogue-line dialogue-player">“Keep staring, you’ll end up in the ditch with me.”</span>
He chuckles but doesn’t move. Maybe he’s waiting to see if you mean it.
You keep digging, hips low, shoulders burning. Dirty work. Just the way you like it.You’re assigned to clear the southern field—rocks and boulders half-buried in the soil, some too large for one person. They give you a pry bar, a cart, and a smirk. <span class="dialogue-line dialogue-male">“Hope you’re strong,”</span> one of the men says.
You work hard, muscles burning, sweat rolling down your chest as you strain to lift and shove each stone onto the cart. Dirt smears your thighs, your back, your face.
A large shadow looms behind you. One of the older fieldhands, broad-shouldered, hands on his belt, watching.
<span class="dialogue-line dialogue-male">“You’re tougher than you look,”</span> he says, eyes lingering. <span class="dialogue-line dialogue-male">“Could lend you a hand… or just keep enjoying the view.”</span>
You pause, panting, chest rising under your half-open shirt. His tone’s casual, but the heat in his gaze isn’t.
<nobr>
[[Let him help|FhW4a]]
[[Play along, but keep him working|FhW4b]]
[[Shut him down|FhW4c]]
</nobr>You arch a brow, straightening slowly. <span class="dialogue-line dialogue-player">“Fine. Show me what you’re good for.”</span>
He steps in close to lift the next stone with you. His shoulder presses to yours, his hand brushes your hip, and neither of you pretends it is only about the work.
The cart fills faster with him beside you, though he spends nearly as much time watching you strain as he does hauling stones.
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
<<print setup.farmWorkBonusHtml({ charisma: 0.08, carnality: 0.12 }, "Reaction bonus")>>
[[Finish work|Ambercross Farmer's house]]<span class="dialogue-line dialogue-player">“If you’re gonna stand there, might as well lift something.”</span>
He laughs, rolls up his sleeves, and gets to work beside you. You keep him moving with sharp looks and sharper comments, letting him steal glances only after the rocks are in the cart.
By the end, he is sweating too, and you have turned his attention into useful labor.
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
<<print setup.farmWorkBonusHtml({ charisma: 0.1, farmwork: 0.2 }, "Reaction bonus")>>
[[Finish work|Ambercross Farmer's house]]<span class="dialogue-line dialogue-player">“You gonna talk, or actually help?”</span>
His grin fades. He grabs a stone without another word, and the two of you work in tense silence after that. It is not friendly, but it is efficient.
You finish the field sore, dirty, and satisfied that he learned where the line was.
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
<<print setup.farmWorkBonusHtml({ fitness: 0.1, strength: 0.08 }, "Reaction bonus")>>
[[Finish work|Ambercross Farmer's house]]The pit behind the barn is full again. No one volunteers, so they hand you the shovel.
You spend hours knee-deep in filth, the heat unbearable, the stench worse. Every scoop feels heavier than the last. Flies swarm your face. Your arms go numb. No one comes to check on you.
No one offers help. No one watches.
By the end, your body aches, your stomach’s turned, and your clothes are beyond saving.
You don’t say a word. Just dump the last load, wipe your mouth, and walk away.You ignore the young farmer and continue working, he takes his leave.
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
[[Finish work|Ambercross Farmer's house]] You grab a wooden pail and head to the small vegetable patch behind the farmhouse. The soil’s dry, the morning sun just beginning to warm the ground.
You move row by row—carrots, beans, and herbs—pouring carefully around each plant. It's quiet work, just the sound of water hitting earth and the soft buzz of insects in the grass.
By the time you’re done, the bucket’s empty and your arms have a dull ache from hauling it back and forth.You’re given a few sacks of mixed seeds and a wooden table in the shade behind the barn. Your job: sort them by type—wheat, barley, beans—without mixing a single one.
It’s slow, repetitive work, but it takes focus. You study shapes, textures, colors. A few are damaged or moldy, and you set those aside.
By the time you’re finished, your back’s stiff and your fingers are sore—but everything’s clean, neat, and ready for planting.
Not hard labor, but it took more brain than brawn.You're asked to watch the small roadside stall for the morning—just a few baskets of vegetables, a crate of eggs, and a rusty coin box.
Villagers pass by here and there. You greet them, make change, chat a bit about the crops or the weather. Nothing deep, but enough to make them smile.
One older man compliments your honesty. A young boy tries to haggle—badly. You throw in an extra carrot for the effort.
By midday, the baskets are lighter, and the coin box is full.
Simple work—but you made it pleasant.<<print setup.npcIntimateMediaHtml("undress", null, "img/Media/Undress/UndressingF1.gif")>>
Wanting to tease the young man, you pull your dress a little higher as you work, revealing your panties as you smile back at him.
Surprised, he smiles back at you and goes on his way. You watch him leave and finish your task.
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
<<print setup.farmWorkBonusHtml({ carnality: 0.08, charisma: 0.05 }, "Reaction bonus")>>
[[Finish work|Ambercross Farmer's house]] You laugh under your breath and keep your hands steady on the chore.
<span class="dialogue-line dialogue-player">“Careful. Compliment me too much and I’ll make you fetch the next bucket.”</span>
Your confidence makes him smile, but he takes the hint and lets you finish your work.
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
[[Finish work|Ambercross Farmer's house]] You arch a brow. <span class="dialogue-line dialogue-player">“You want something milked too?”</span>
He chuckles, wondering if you're being serious.
<span class="dialogue-line dialogue-male">"Why not?"</span> he answers.
<nobr>
<<if $c.carnality gte 20>>
[[Give him a hand|FeW2ba]]
<</if>>
[[Chicken out|FeW2bb]]
</nobr><<nobr>><<set _favorStart = setup.farmWorkStartScriptedFavor("handjob")>><<if _favorStart and _favorStart.success is false>>
<div class="npc-activity-panel farm-work-event-panel">
<p>The teasing hangs there for a moment, but the farmhand loses his nerve before either of you can slip away.</p>
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
<<print setup.farmWorkBonusHtml({ charisma: 0.08 }, "Reaction bonus")>>
<div class="farm-trial-result-link">[[Finish work|Ambercross Farmer's house]]</div>
</div>
<<else>><<goto "NPCEncounter">><</if>><</nobr>>Having teased him enough and not wanting to really give this man a handjob, you excuse yourself.
The man watches you leave, disappointed.
You finish your work and feel a little more confident.
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
<<print setup.farmWorkBonusHtml({ charisma: 0.05 }, "Reaction bonus")>>
[[Finish work|Ambercross Farmer's house]] You ignore his lewd allusions and continue hauling.
<span class="dialogue-line dialogue-male">"Stuck up bitch"</span> he says, then walks away visibly irritated.
You continue working like nothing happened not wanting to cause more trouble.
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
[[Finish work|Ambercross Farmer's house]] You smirk. <span class="dialogue-line dialogue-player">“You can watch, or you can help.”</span>
He wipes his hands on his trousers, slow. <span class="dialogue-line dialogue-male">“Depends. You paying in coin… or company?”</span>
You don’t answer—just bend down for the next log, nice and slow.
Let him wonder.
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
<<print setup.farmWorkBonusHtml({ charisma: 0.08, carnality: 0.08 }, "Reaction bonus")>>
[[Finish work|Ambercross Farmer's house]]You lower yourself onto the edge of the old stone well in the village square, pulling your cloak tighter to hide the worst of your torn clothes. The square bustles—merchants shouting prices, carts rattling by, villagers chatting under the oak’s shade.
You glance around once, then lower your eyes and hold out your hand.
<span class="dialogue-line dialogue-player">“Spare a coin?”</span> you say quietly, to no one in particular. <span class="dialogue-line dialogue-player">“Just enough for a meal.”</span>
Some walk by without a glance. Others glance, then quickly look away. The air feels heavier when you're down here—on the ground, beneath their notice.
But someone always notices.
<<if $c.energy gte 5>>\
[[Wait|BeggoldWait]] <b id="Energy">(-5 Energy)</b>
<<else>>\
<b id="Failure">Not enough energy!</b>
<</if>>\
[[Stop begging|Ambercross Center]] <<include [[rollbeg]]>><<nobr>><<if $tannery === 1 and !$marrinIntroSeen>><<set $marrinIntroSeen = true>><<run setup.playerUnlockOutfit("laced_ivory_linen")>>
<div class="marrin-intro-panel">
<h2>Marrin's Workroom</h2>
<div class="marrin-intro-layout">
<div class="marrin-intro-portrait"><img src="img/npcs/Special/Marrin_full.jpg" alt="Marrin"></div>
<div class="marrin-intro-text">
<p>A middle-aged woman looks up from a half-cut strip of leather as you step into the workroom. Her eyes move over you once, practical and sharp, then soften with recognition she does not bother to hide.</p>
<p><span class="dialogue-line dialogue-female">"You must be the girl Coren sent,"</span> she says, wiping her hands on her apron. <span class="dialogue-line dialogue-female">"He did not give his name, did he? That sounds like him. Coren Vale. Court blood, court manners, and secrets enough to choke on."</span></p>
<p>She lifts a folded dress from a shelf and presses it into your arms. <span class="dialogue-line dialogue-female">"He paid for this. Said you would need something clean before Ambercross decided what sort of woman you were."</span></p>
<div class="gift-note">You receive the Laced Ivory Linen Dress.</div>
<p><span class="dialogue-line dialogue-female">"I sell proper clothes during the day,"</span> Marrin adds. <span class="dialogue-line dialogue-female">"Linen, leather, bodices when coin allows. And Coren said he will want to meet you here later. Not today. Later."</span></p>
<div class="npc-activity-choice-list">
<<link "Preview gift" "MarrinGiftPreview">><</link>>
<<link "Continue" "Ambercross Tannery">><</link>>
</div>
</div>
</div>
</div><<else>><<print setup.locationImageHtml("img/location/AC_Tannery.png", "Ambercross tannery")>>
The small workshop is tucked among Ambercross’s homes, filled with leather hides, rolls of linen, tools, and half-finished clothing. Villagers come here to have simple garments, belts, boots, and other leather or linen equipment made or repaired.
<<if setup.marketIsOpen()>>[[Browse Marrin's outfits|MarrinShop]]
<<else>><span class="farm-work-meta">Marrin sells clothing during the day.</span>
<</if>>
<<dueActivityLinks "Ambercross Tannery">>
<<travel "west" "Exit towards the houses" "Ambercross Houses" 5>><</if>><</nobr>><<nobr>><<set _outfit = setup.playerOutfitById("laced_ivory_linen")>>
<div class="market-preview-shell">
<h2><<= _outfit.label >></h2>
<div class="market-preview-portrait"><img @src="_outfit.portrait" alt=""></div>
<p><<= _outfit.note >></p>
<p><b>Bonus:</b> <<= setup.playerOutfitBonusesText(_outfit) >><br>
<b>Style:</b> <<= setup.playerOutfitTagsText(_outfit) >></p>
<div class="npc-return-link">[[Back|Ambercross Tannery]]</div>
</div><</nobr>><<nobr>><<run setup.ensurePlayerAppearance()>>
<div class="market-shop-panel">
<h2>Marrin's Outfit Shop</h2>
<<if !setup.marketIsOpen()>>
<p>The workroom is closed for sales. The cutting tables are covered and the finished clothing is packed away until morning.</p>
<div class="npc-return-link">[[Return|Ambercross Tannery]]</div>
<<else>>
<div class="market-shop-dialogue"><span class="dialogue-line dialogue-female">"Linen for respectability, leather for road dust, lace for when you want them looking twice,"</span> Marrin says, smoothing a sleeve flat. <span class="dialogue-line dialogue-female">"Tell me what you can afford, and I will tell you what it says about you."</span></div>
<<if $marrinShopMessage>><p><em><<= $marrinShopMessage >></em></p><<set $marrinShopMessage = "">><</if>>
<div>
<<for _item range setup.marrinOutfitStock()>>
<<capture _item>>
<div class="market-shop-row">
<div>
<div class="market-shop-name"><<= _item.label >></div>
<div class="wardrobe-note"><<= setup.playerOutfitBonusesText(_item) >> | <<= setup.playerOutfitTagsText(_item) >></div>
</div>
<div class="market-shop-cost"><<= _item.cost >> gold</div>
<div class="cheat-actions"><<link "Preview" "MarrinOutfitPreview">><<set $marrinPreviewOutfit = _item.id>><</link>><<if setup.playerHasOutfit(_item.id)>><span class="market-shop-owned">Owned</span><<else>><<link "Buy" "MarrinShop">><<set _result = setup.playerBuyMarrinOutfit(_item.id)>><<set $marrinShopMessage = _result.text>><</link>><</if>></div>
</div>
<</capture>>
<</for>>
</div>
<div class="npc-return-link">[[Return|Ambercross Tannery]]</div>
<</if>>
</div><</nobr>><<nobr>><<run setup.ensurePlayerAppearance()>>
<<set _outfit = setup.playerOutfitById($marrinPreviewOutfit)>>
<<set _stock = setup.marrinOutfitForSale(_outfit.id)>>
<div class="market-shop-panel">
<h2><<= _outfit.label >></h2>
<div class="market-preview-card">
<div class="market-preview-portrait"><img @src="_outfit.portrait" alt=""></div>
<div>
<p><<= _outfit.note >></p>
<p><b>Cost:</b> <<= _stock ? _stock.cost : 0 >> gold<br>
<b>Bonus:</b> <<= setup.playerOutfitBonusesText(_outfit) >><br>
<b>Style:</b> <<= setup.playerOutfitTagsText(_outfit) >></p>
<div class="npc-action-list">
<<if setup.playerHasOutfit(_outfit.id)>><span class="player-choice-status">Owned</span><<else>><<link "Buy" "MarrinShop">><<set _result = setup.playerBuyMarrinOutfit(_outfit.id)>><<set $marrinShopMessage = _result.text>><</link>><</if>>
<<link "Back" "MarrinShop">><</link>>
</div>
</div>
</div>
</div><</nobr>> <<set $c.energy -= 5>>
<<run setup.advanceTime(60)>>\
<<set $y=random(1,5)>>\
<<set $RE=random(1,5)>>\
<<if $y === 5>>\
<<if $RE === 1>>\
<<include [[Beg1]] >>\
<<elseif $RE === 2>>\
<<include [[Beg2]] >>\
<<elseif $RE === 3>>\
<<include [[Beg3]] >>\
<<elseif $RE === 4 >>\
<<include [[Beg4]] >>\
<<elseif $RE === 5>>\
<<if $tannery === 0>>\
<<include [[Beg5]] >>\
<<else>>\
<<include [[Beg6]] >>\
<</if>>\
<</if>>\
<<else>>\
<<include [[Beg6]]>>\
<</if>>\
You sit near the well, hand open, voice soft.
<span class="dialogue-line dialogue-player">“Please… just a coin. I haven’t eaten today.”</span>
A few villagers pass. Some glance your way and keep walking. Most don’t look at all.
Then someone stops.
<center><img src="img/event/RH_beg3.png" width="384" height="512"></center>
You start to speak, but he shakes his head.
<span class="dialogue-line dialogue-male">“Don’t thank me. Just survive.”</span>
He walks off without asking your name.
You stare at the coins for a long moment before closing your fingers around them.
<b id="Goldgain">You gain 2 gold</b> <<set $c.gold += 2>>
<<if $c.energy gte 5>>\
[[Continue begging|BeggoldWait]] <b id="Energy">(-5 Energy)</b>
<<else>>\
<b id="Failure">Not enough energy!</b>
<</if>>\
[[Stop|Ambercross Center]] You rest against the well, trying not to look too desperate—but your hand is still out, palm up.
A woman approaches from the market stalls. She doesn’t speak, just sets down her basket and kneels beside you. Her fingers press three small coins into your palm.
<center><img src="img/event/RH_beg2.png" width="384" height="512"></center>
<span class="dialogue-line dialogue-female">“Not much,”</span> she says softly. <span class="dialogue-line dialogue-female">“But I’ve been there. It’s enough for bread.”</span>
You nod, unsure how to respond. She doesn’t wait for thanks. She just stands, picks up her basket, and walks away into the crowd.
The coins are warm from her hand.
<b id="Goldgain">You gain 3 gold</b> <<set $c.gold += 3>>
<<if $c.energy gte 5>>\
[[Continue begging|BeggoldWait]] <b id="Energy">(-5 Energy)</b>
<<else>>\
<b id="Failure">Not enough energy!</b>
<</if>>\
[[Stop|Ambercross Center]] You sit with your hand out, barely watching the feet that pass. Just another hour of rejection.
Then you hear it—clink.
<center><img src="img/event/RH_beg3.png" width="384" height="512"></center>
A small leather pouch hits the cobblestones near you and rolls to a stop against your boot.
You glance up. A merchant in fine clothes is halfway across the square, too busy shouting at his apprentice to notice. The pouch must’ve fallen from his belt.
No one else sees.
You pick it up slowly. It’s heavier than you expected—thick with coins.
You could call out.
You don’t.
Instead, you slip the pouch beneath your cloak and walk away before anyone thinks to look.
<b id="Goldgain">You gain 4 gold</b> <<set $c.gold += 4>>
<<if $c.energy gte 5>>\
[[Continue begging|BeggoldWait]] <b id="Energy">(-5 Energy)</b>
<<else>>\
<b id="Failure">Not enough energy!</b>
<</if>>\
[[Stop|Ambercross Center]] You stay near the edge of the square, keeping your hand out even after your arm begins to ache.
<span class="dialogue-line dialogue-player">“Please,”</span> you murmur as another pair of boots passes. <span class="dialogue-line dialogue-player">“Anything helps.”</span>
For a while, no one answers. Then a young apprentice hurries by with a bundle of cloth under one arm. He slows just enough to look at you, guilt crossing his face before he digs into his pocket.
One small coin drops into your palm.
<span class="dialogue-line dialogue-male">“It isn’t much,”</span> he says, already backing away. <span class="dialogue-line dialogue-male">“But don’t let the market folk see me. My master counts everything.”</span>
He disappears into the crowd before you can thank him properly.
<b id="Goldgain">You gain 1 gold</b> <<set $c.gold += 1>>
<<if $c.energy gte 5>>\
[[Continue begging|BeggoldWait]] <b id="Energy">(-5 Energy)</b>
<<else>>\
<b id="Failure">Not enough energy!</b>
<</if>>\
[[Stop|Ambercross Center]] While you sit in silence, hand out, eyes low, a shadow pauses in front of you.
<center><img src="img/event/RH_beg5.png" width="384" height="512"></center>
<span class="dialogue-line dialogue-male">“You from the forest path?”</span> he asks. <span class="dialogue-line dialogue-male">“Saw someone pass that way yesterday. Figured they wouldn’t make it far.”</span>
You nod once. <span class="dialogue-line dialogue-player">“I made it.”</span>
He reaches into his satchel and pulls out a small coin pouch.
<span class="dialogue-line dialogue-male">“This’ll feed you a few days,”</span> he says. <span class="dialogue-line dialogue-male">“But if you’re not afraid of work, the tannery always needs help. You've probably missed it but it's around the set of houses east of here. Ask for Marrin.”</span>
You take the coins, feeling the warm weight of it in your palm.
<span class="dialogue-line dialogue-player">“Thank you,”</span> you say.
He nods, turns, and is gone before you can ask his name.
<b id="Goldgain">You gain 10 gold</b> <<set $c.gold += 10>>
<<if $c.energy gte 5>>\
[[Continue begging|BeggoldWait]] <b id="Energy">(-5 Energy)</b>
<<else>>\
<b id="Failure">Not enough energy!</b>
<</if>>\
[[Stop|Ambercross Center]]
<<set $tannery to 1>>You sit still, hand out, voice low.
<span class="dialogue-line dialogue-player">“Just a coin… anything.”</span>
Most don’t even look at you. A few do, but only with that tight-lipped expression—the kind people wear when they want to feel bad, but not enough to stop.
Time pass yet your hand is still empty.
Your pride aches worse.
Nothing for now.
<<if $c.energy gte 5>>\
[[Continue begging|BeggoldWait]] <b id="Energy">(-5 Energy)</b>
<<else>>\
<b id="Failure">Not enough energy!</b>
<</if>>\
[[Stop|Ambercross Center]] <<print setup.locationImageHtml("img/location/AC_Tavernupstairs.png", "Tavern upstairs hallway")>>
You stand in the upstairs hallway. A few cozy rooms are available for travelers seeking a place to stay the night. Though the rooms are simple, they are clean and comfortable, offering a warm bed and a quiet retreat from the lively tavern below.
<nobr>
<<if setup.tavernRoomIsRented()>>
<div class="location-action-list">
[[Enter room|Tavernroom]]
</div>
<</if>>
<<travel "down" "Return downstairs" "Ambercross Tavern" 3>>
</nobr><<if $FarmworkAccept !== 1>>The farmer has not given you permission to sleep in the barn yet.
[[Return to the farmhouse|Ambercross Farmer's house]]
<<else>><<set $sleepQuality = 40>>
<<set $sleepPlace = "the barn hayloft">>
<<set $sleepReturn = "Ambercross Barn">>
<<set $sleepPassage = "SleepBarn">>
<<set $sleepRisk = "">>
<<include "SleepOptions_body">><</if>><<set $sleepQuality = 20>>
<<set $sleepPlace = "a cold corner of Ambercross square">>
<<set $sleepReturn = "Ambercross Center">>
<<set $sleepPassage = "SleepStreet">>
<<set $sleepRisk = "Sleeping in the open is uncomfortable and risky. Trouble may find you before morning.">>
<<include "SleepOptions_body">>For 0,1
-Ways to regain energy (sleep, food)
-Ways to spend gold (shop,etc)
-Quest (1 or 2 max)
-Farming, begging, tannery, tavern operationnal
-Random events on locations
-sex framework
Advertise virginity
<div id="inventory">
<<set $msg = "">>
<<include "Inventory_body">>
</div>
<<link "Return to Game" $return>>
<<set $msg = "">><</link>><<nobr>><div class="changelog-shell">
<div class="changelog-title">Changelog</div>
<details class="changelog-entry" open>
<summary><span>Version 0.1</span></summary>
<div class="changelog-body">
<ul>
<li>Ambercross is explorable, with many locations.</li>
<li>Character creation with different origins and starting bonuses. Only one character available for now.</li>
<li>Added the journal, including character details, traits, relationships, known people, sexual history, clothing, and work skills.</li>
<li>40 initial generated NPCs with names, appearances, schedules, attraction, arousal, rumors, gossip, and relationship tracking.</li>
<li>Map menu in the sidebar to fast travel between locations if you have already visited the locations using travel links.</li>
<li>Inventory menu in order to use consummables and keep track of other static items. Only food/drinks available to buy and use for now.</li>
<li>Plans menu to keep track of your scheduled activities with NPCs and loans.</li>
<li>Cheats menu that will be available to subscribers in future versions.</li>
<li>Nearby menu that informs you how many interactable NPCs are on the location and allows you to begin an interaction with them.</li>
<li>Attraction system for NPCs with three major components. It is based on the physical characteristics of your chosen character, personality traits you slowly acquire while responding to questions in the same way consistently and current outfit tags. Each NPC has different preferences and having higher attraction lets you build relationship faster. </li>
<li>NPCs can approach you in some situations instead of waiting for you to start everything.</li>
<li>Added NPC loans, late payments, negotiation, and alternate compensation options.</li>
<li>Repeatable begging events in the village square. Just a few for now.</li>
<li>Risky street sleeping for when you do not have a proper bed.</li>
<li>Tavern shop, room rental, innkeeper talk and occasional gossip event, and a market clothing stall.</li>
<li>Added outfits, outfit bonuses, wardrobe changing, outfit previews, and outfit-based attraction.</li>
<li>Added washing up and body status text after sexual encounters.</li>
<li>Added the farmer's trial before most origins can work and sleep in the barn.</li>
<li>Farm work events, skill gains, wages, and occasional NPC interruptions while working.</li>
<li>Added the first version of the sexual encounter system, with arousal, NPC initiative, and media support.</li>
<li>Carnality system that measures your envy for sexual acts. The higher it is, the more open you are to sexual encounters with npcs who are not in a relationship with you.</li>
</ul>
</div>
</details>
<div class="npc-return-link"><<link "Return to Game" $return>><</link>></div>
</div><</nobr>><<nobr>><div class="npc-activity-panel farm-work-event-panel">
<p>The irrigation trench along the vegetable beds has collapsed into a muddy knot of stones, roots, and standing water. The farmer points with the handle of his hoe. <span class="dialogue-line dialogue-male">"Clear it before the beans drown."</span></p>
<p>You dig your boots into the muck and start dragging the channel open by hand. Water rushes around your wrists, cold at first, then warm with churned soil as you pry loose the stones blocking the flow.</p>
<p>When the trench finally runs clear, one of the farmhands gives a low whistle. The farmer only nods, but he does not hide that he noticed.</p>
</div><</nobr>><<nobr>><div class="npc-activity-panel farm-work-event-panel">
<p>You are sent into the grain shed with a slate, a piece of chalk, and a warning that the last count came up short. The sacks are stacked shoulder-high, marked in three different hands, and half the labels are smudged.</p>
<p>You work through the rows slowly, checking weights, marks, and damp corners where grain might spoil. By the second wall, the pattern starts to show: two barley sacks were logged as wheat, and one has split at the bottom.</p>
<p><span class="dialogue-line dialogue-male">"Good eyes,"</span> the farmer says when you bring him the slate. <span class="dialogue-line dialogue-male">"Saves me coin when people can count before they complain."</span></p>
</div><</nobr>><<nobr>><div class="npc-activity-panel farm-work-event-panel">
<p>The market cart needs loading before noon. You carry baskets of greens, tied bundles of herbs, and crates of eggs while a farmhand leans against the wheel like he is supervising something important.</p>
<p><span class="dialogue-line dialogue-male">"Careful with those,"</span> he says as you lift a crate against your hip. <span class="dialogue-line dialogue-male">"Would be a shame if you needed someone to check you over after."</span></p>
<p>You give him a look sharp enough to make him grin and keep working. By the time the cart is tied down, he is carrying twice as much as before and trying not to stare every time you pass.</p>
</div><</nobr>><<nobr>><div class="npc-activity-panel farm-work-event-panel">
<p>A cracked millstone sits half-sunk beside the shed, too heavy for the younger hands and too useful to abandon. The farmer sets a pry bar in your hands. <span class="dialogue-line dialogue-male">"Shift it onto the sled."</span></p>
<p>You brace, push, and feel the strain bite deep through your shoulders. The stone moves by inches, scraping over dirt while everyone around you remembers something else they should be doing.</p>
<p>When it finally thuds onto the sled, your arms tremble and your breath comes hard. The farmer spits aside, impressed despite himself. <span class="dialogue-line dialogue-male">"That will do."</span></p>
</div><</nobr>><<nobr>><div class="npc-activity-panel farm-work-event-panel">
<p>The far lane has gone soft after rain, and the ox team refuses to pull the loaded cart through it. You take the reins while mud sucks greedily at your boots.</p>
<p>The first pull nearly throws you sideways. You plant your feet, curse under your breath, and snap the reins hard enough to make the team lurch. Wheels groan. Harness leather creaks. The cart inches forward.</p>
<p>By the time you reach solid ground, your legs ache and your dress is splashed dark to the thigh. A farmhand laughs once, then stops when he sees your face and quietly starts unloading.</p>
</div><</nobr>><<nobr>><div class="npc-activity-panel farm-work-event-panel">
<p>A storm-bent beam in the barn roof has started to sag. The farmer sends you up the ladder with a brace board, nails, and a look that says falling would be inconvenient for everyone.</p>
<p>You balance on the loft edge, judge the angle, and wedge the brace where the old timber still has strength. Each hammer blow rings through the rafters and shakes dust loose into your hair.</p>
<p>When the beam settles firm, the whole barn seems to breathe easier. You climb down sweaty, sore, and satisfied, with the farmer watching the repair instead of finding something to criticize.</p>
</div><</nobr>>You step inside the small room. The air smells of old wood and ale. A narrow bed, a washbasin, and a single candle on the table — not much, but quiet enough.
<<print setup.locationImageHtml("img/location/AC_Tavernroombed.png", "Rented tavern room")>>
<div class="bed-actions">
<div>[[Sleep in bed|Sleeptavernbed]]</div>
<div><<link "Change outfit" "ChangeOutfit">><<set $wardrobeReturn = "Tavernroom">><</link>></div>
<div><<link "Wash up" "WashUp">><<set $wardrobeReturn = "Tavernroom">><</link>></div>
<div>[[Leave the room|Ambercross Tavern Upstairs]]</div>
</div>You're standing at the counter. The innkeeper wipes a mug clean and looks up with a practiced smile.
<span class="dialogue-line dialogue-male">“Evenin’. Looking for a bed, a drink or just passing the time?”</span>
<<if $c.energy gte 1>>\
[[Chat with him|InnkeeperTalk]] <b id="Energy">(-1 Energy)</b>
<<else>>\
<b id="Failure">Not enough energy!</b>
<</if>>\
<<if !setup.tavernRoomIsRented()>>\
[[Rent a room|TavernRoomRent]] <b id="Goldgain">(-5 Gold)</b>
<<else>>\
<b>You have a room rented for one night</b>
<</if>>\
[[Shop|TavernShop]]
<<link "Leave">><<run setup.advanceTime(3)>><<goto "Ambercross Tavern">><</link>> <<set $sleepQuality = 80>>
<<set $sleepPlace = "the tavern bed">>
<<set $sleepReturn = "Ambercross Tavern Upstairs">>
<<set $sleepPassage = "Sleeptavernbed">>
<<set $sleepRisk = "">>
<<include "SleepOptions_body">><<nobr>><<set $c.energy -= 1>><<run setup.advanceTime(8)>><<set $y = random(1,5)>><<set $RE = random(1,5)>><<if $y === 5>><<if $RE === 1>><<include "Inn1">><<elseif $RE === 2>><<include "Inn2">><<elseif $RE === 3>><<include "Inn3">><<else>><<include "Inn4">><</if>><<else>><<include "Inn4">><</if>><</nobr>>
You strike up some small talk. He tells a few stories about Ambercross, mostly gossip.
You learn a bit about the regulars and some interesting details passing merchants have said about their trades.
<b id="Intgain">Your intelligence increased by 0.15.</b>
[[End talk|Tavern innkeeper]]
<<set $c.intelligence += 0.15>>You lean on the counter and trade small talk. The innkeeper has a natural charm — easy laugh, sharp eyes. He listens when you speak and answers with practiced warmth.
Before long, a few of the regulars glance over, smiling at your easy rapport.
When you finally step away, you realize you’ve been smiling too.
<b id="Charismagain">Your charisma increased by 0.15.</b>
[[End talk|Tavern innkeeper]]
<<set $c.charisma += 0.15>><<nobr>><<set _rumor = setup.npcInnkeeperRumor()>>
You keep the conversation light until the innkeeper glances toward the rest of the room.
<<= _rumor.text >>
[[End talk|Tavern innkeeper]]
<</nobr>>You strike up some small talk. He tells you some jokes, talks about the weather and some other things you probably already forgot. Nothing important but you had a good time.
[[End talk|Tavern innkeeper]]<div id="shop">
<<include "TavernShop_Body">>
</div>
<<nobr>><<if $msg and $msg != "">><p><em><<print $msg>></em></p><<endif>>
<div class="market-shop-dialogue">The innkeeper gestures to the shelves behind him. <span class="dialogue-line dialogue-male">"Food, drink, something for the road. Nothing fancy, but it keeps folk on their feet."</span></div>
<div class="market-shop-panel">
<<for _item range setup.tavernShopItems>>
<<capture _item>>
<div class="market-shop-row">
<div>
<div class="market-shop-name"><<= _item.label >></div>
<div class="wardrobe-note"><<= _item.note >></div>
</div>
<div class="market-shop-cost"><<= _item.cost >> gold</div>
<div class="cheat-actions"><<link "Buy">><<set $msg = setup.buyTavernItem(_item.id)>><<replace "#shop">><<include "TavernShop_Body">><</replace>><<replace "#Goldgain">>Gold: <<print $c.gold>><</replace>><</link>></div>
</div>
<</capture>>
<</for>>
<div class="npc-return-link"><<link "Back" "Tavern innkeeper">><<set $msg = "">><</link>></div>
</div><</nobr>>
<<nobr>><<if $msg and $msg != "">><em><<print $msg>></em><br><<endif>>
<hr>You take a look at your inventory.
<div class="inventory-item-list">
<<if $invBread > 0>>
<div class="inventory-item-line">• Bread ×<<print $invBread>> <span class="inventory-item-energy">(+3 Energy)</span><<link "Use">>
<<if $c.energy < $c.maxenergy and $foodcap < 3>>
<<set _before = $c.energy>>
<<set $c.energy = Math.min($c.maxenergy, $c.energy + 3)>>
<<set $energyregen = $c.energy - _before>>
<<set $invBread -= 1>>
<<set $foodcap += 1>>
<<set $msg = "Ate Bread (+" + $energyregen + " energy).">>
<<elseif $foodcap >= 3>>
<<set $msg = "You feel you can't take another bite for today.">>
<<else>>
<<set $msg = "You're already full of energy.">>
<</if>>
<<replace "#inventory">><<include "Inventory_body">><</replace>>
<<replace "#Energy">>Energy: <<print $c.energy>> / <<print $c.maxenergy>><</replace>>
<</link>></div>
<</if>>
<<if $invWater > 0>>
<div class="inventory-item-line">• Water Skin ×<<print $invWater>> <span class="inventory-item-energy">(+1 Energy)</span><<link "Use">>
<<if $c.energy < $c.maxenergy and $drinkcap < 3>>
<<set _before = $c.energy>>
<<set $c.energy = Math.min($c.maxenergy, $c.energy + 1)>>
<<set $energyregen = $c.energy - _before>>
<<set $invWater -= 1>>
<<set $drinkcap += 1>>
<<set $msg = "Drank Water Skin (+" + $energyregen + " energy).">>
<<elseif $drinkcap >= 3>>
<<set $msg = "You feel you can't drink anything else for today.">>
<<else>>
<<set $msg = "You're already full of energy.">>
<</if>>
<<replace "#inventory">><<include "Inventory_body">><</replace>>
<<replace "#Energy">>Energy: <<print $c.energy>> / <<print $c.maxenergy>><</replace>>
<</link>></div>
<</if>>
<<if $invDriedMeat > 0>>
<div class="inventory-item-line">• Dried Meat ×<<print $invDriedMeat>> <span class="inventory-item-energy">(+5 Energy)</span><<link "Use">>
<<if $c.energy < $c.maxenergy and $foodcap < 3>>
<<set _before = $c.energy>>
<<set $c.energy = Math.min($c.maxenergy, $c.energy + 5)>>
<<set $energyregen = $c.energy - _before>>
<<set $invDriedMeat -= 1>>
<<set $foodcap += 1>>
<<set $msg = "Ate Dried Meat (+" + $energyregen + " energy).">>
<<elseif $foodcap >= 3>>
<<set $msg = "You feel you can't take another bite for today.">>
<<else>>
<<set $msg = "You're already full of energy.">>
<</if>>
<<replace "#inventory">><<include "Inventory_body">><</replace>>
<<replace "#Energy">>Energy: <<print $c.energy>> / <<print $c.maxenergy>><</replace>>
<</link>></div>
<</if>>
<<if $invAleMug > 0>>
<div class="inventory-item-line">• Ale Mug ×<<print $invAleMug>> <span class="inventory-item-energy">(+2 Energy)</span><<link "Use">>
<<if $c.energy < $c.maxenergy and $drinkcap < 3>>
<<set _before = $c.energy>>
<<set $c.energy = Math.min($c.maxenergy, $c.energy + 2)>>
<<set $energyregen = $c.energy - _before>>
<<set $invAleMug -= 1>>
<<set $drinkcap += 1>>
<<set $msg = "Drank Ale Mug (+" + $energyregen + " energy).">>
<<elseif $drinkcap >= 3>>
<<set $msg = "You feel you can't drink anything else for today.">>
<<else>>
<<set $msg = "You're already full of energy.">>
<</if>>
<<replace "#inventory">><<include "Inventory_body">><</replace>>
<<replace "#Energy">>Energy: <<print $c.energy>> / <<print $c.maxenergy>><</replace>>
<</link>></div>
<</if>>
<<if $invHotStew > 0>>
<div class="inventory-item-line">• Hot Stew ×<<print $invHotStew>> <span class="inventory-item-energy">(+7 Energy)</span><<link "Use">>
<<if $c.energy < $c.maxenergy and $foodcap < 3>>
<<set _before = $c.energy>>
<<set $c.energy = Math.min($c.maxenergy, $c.energy + 7)>>
<<set $energyregen = $c.energy - _before>>
<<set $invHotStew -= 1>>
<<set $foodcap += 1>>
<<set $msg = "Ate Hot Stew (+" + $energyregen + " energy).">>
<<elseif $foodcap >= 3>>
<<set $msg = "You feel you can't take another bite for today.">>
<<else>>
<<set $msg = "You're already full of energy.">>
<</if>>
<<replace "#inventory">><<include "Inventory_body">><</replace>>
<<replace "#Energy">>Energy: <<print $c.energy>> / <<print $c.maxenergy>><</replace>>
<</link>></div>
<</if>>
</div><</nobr>><<nobr>><<set _rent = setup.rentTavernRoom()>>
<div class="npc-activity-panel">
<p><<= _rent.text >></p>
<div class="npc-return-link">[[Return|Tavern innkeeper]]</div>
</div><</nobr>><<nobr>><<if !$journalTab>><<set $journalTab = "character">><</if>>
<div class="journal-shell">
<div class="journal-header">
<div class="journal-title">Journal</div>
<div class="journal-subtitle">Personal records and known people</div>
</div>
<div class="journal-tabs">
<<if $journalTab is "character">><span class="journal-tab-active">Character</span><<else>><<link "Character" "Journal">><<set $journalTab = "character">><</link>><</if>>
<<if $journalTab is "traits">><span class="journal-tab-active">Character Traits</span><<else>><<link "Character Traits" "Journal">><<set $journalTab = "traits">><</link>><</if>>
<<if $journalTab is "sexual">><span class="journal-tab-active">Sexual History</span><<else>><<link "Sexual History" "Journal">><<set $journalTab = "sexual">><</link>><</if>>
<<if $journalTab is "relationships">><span class="journal-tab-active">Relationships</span><<else>><<link "Relationships" "Journal">><<set $journalTab = "relationships">><</link>><</if>>
<<if $journalTab is "people">><span class="journal-tab-active">People</span><<else>><<link "People" "Journal">><<set $journalTab = "people">><</link>><</if>>
</div>
<div id="journal-panel">
<<if $journalTab is "people">><<include "JournalNPC_body">><<elseif $journalTab is "relationships">><<include "JournalRelationships_body">><<elseif $journalTab is "sexual">><<include "JournalSexualHistory_body">><<elseif $journalTab is "traits">><<include "JournalTraits_body">><<else>><<include "JournalCharacter_body">><</if>>
</div>
<div class="npc-return-link"><<link "Return to Game" $return>><</link>></div>
</div><</nobr>><<nobr>><<run setup.ensurePlayerAppearance()>>
<<if !$c>>
<div class="journal-person-empty">No character has been created yet.</div>
<<else>>
<<set _outfit = setup.playerCurrentOutfit()>>
<div class="journal-character-card">
<div class="journal-character-portrait"><div class="npc-portrait-slot"><<if $c.portrait>><img @src="$c.portrait" alt=""><<else>>Portrait<</if>></div></div>
<div class="journal-character-info">
<div class="journal-character-name"><<print $c.name>></div>
<div class="journal-character-description"><<print $c.physicalDescription>></div>
<div class="journal-character-sections">
<div class="journal-character-section">
<div class="journal-character-section-title">Identity</div>
<div class="journal-stat-grid">
<div class="journal-stat"><span>Age</span><span><<print $c.age>></span></div>
<div class="journal-stat"><span>Origin</span><span><<switch $origin>><<case 1>>Orphan<<case 2>>Farmer's Daughter<<case 3>>Soldier's Daughter<<case 4>>Noble's Bastard<<case 5>>Merchant's Daughter<<default>>Unknown<</switch>></span></div>
</div>
</div>
<div class="journal-character-section">
<div class="journal-character-section-title">Attributes</div>
<div class="journal-stat-grid">
<div class="journal-stat"><span>Strength</span><span><<print setup.playerStatDisplay("strength")>></span></div>
<div class="journal-stat"><span>Fitness</span><span><<print setup.playerStatDisplay("fitness")>></span></div>
<div class="journal-stat"><span>Intelligence</span><span><<print setup.playerStatDisplay("intelligence")>></span></div>
<div class="journal-stat"><span>Charisma</span><span><<print setup.playerStatDisplay("charisma")>></span></div>
</div>
</div>
<<print setup.playerCarnalityHtml()>>
<div class="journal-character-section">
<div class="journal-character-section-title">Current Clothing</div>
<div class="journal-clothing-note"><strong><<print _outfit.label>></strong> - <<print _outfit.note>></div>
<div class="journal-clothing-tags">Bonus: <<print setup.playerOutfitBonusesText(_outfit)>> | Style: <<print setup.playerOutfitTagsText(_outfit)>></div>
</div>
<div class="journal-character-section">
<div class="journal-character-section-title">Work Skills</div>
<div class="journal-stat-grid">
<div class="journal-stat"><span>Farmwork</span><span><<print $Farmworkskill>></span></div>
</div>
</div>
</div>
</div>
</div>
<</if>><</nobr>><<nobr>><<run setup.ensurePlayerAppearance()>>
<<if !$c>>
<div class="journal-person-empty">No character has been created yet.</div>
<<else>>
<<set _traits = $c.personalityTraits || []>>
<<set _progress = $c.personalityProgress || {}>>
<div class="journal-trait-section">
<div class="journal-trait-title">Established Traits</div>
<<if _traits.length is 0>>
<div class="journal-person-empty">Your personality has not settled into any clear traits yet.</div>
<<else>>
<div class="journal-trait-list">
<<for _trait range _traits>><span class="journal-trait-chip"><<= setup.npcTraitLabel(_trait) >></span><</for>>
</div>
<</if>>
</div>
<div class="journal-trait-section">
<div class="journal-trait-title">Developing Tendencies</div>
<div class="journal-trait-list">
<<set _shown = 0>>
<<for _trait, _value range _progress>>
<<if _value > 0 and !_traits.includes(_trait)>>
<<set _shown += 1>>
<span class="journal-trait-chip"><<= setup.npcTraitLabel(_trait) >></span>
<</if>>
<</for>>
<<if _shown is 0>><div class="journal-person-empty">Answer NPC questions to begin shaping these tendencies.</div><</if>>
</div>
</div>
<</if>><</nobr>><<nobr>><<run setup.ensureNpcSystem()>>
<<if !$knownNpcs or $knownNpcs.length is 0>>
You have not spoken with anyone enough to make a useful entry yet.
<<else>>
<div class="journal-people-count">Ambercross residents known: <strong><<= $knownNpcs.length >></strong></div>
<div class="journal-people-layout">
<div class="journal-people-roster">
<<for _npc range $knownNpcs>>
<<capture _npc>>
<div class="nearby-card journal-people-card">
<div class="nearby-card-main">
<div class="npc-portrait-slot small"><<print setup.npcPortraitImgHtml(_npc, "clothed")>></div>
<div>
<div class="nearby-card-title"><<= setup.npcSidebarLabel(_npc) >></div>
<div class="npc-card-status"><<= setup.npcRelationshipStatusLabel(_npc) >></div>
<div class="nearby-card-actions"><<link "View" "JournalNPCDetails">><<set $journalNpcId = _npc.id>><<set $journalTab = "people">><</link>></div>
</div>
</div>
</div>
<</capture>>
<</for>>
</div>
</div>
<</if>><</nobr>><<nobr>><<run setup.ensurePlayerSexualHistory()>>
<div class="journal-detail-grid journal-history-grid">
<<print setup.playerVirginityHistoryHtml()>>
<<print setup.playerSexualHistoryHtml()>>
<<print setup.playerRecentSexualHistoryHtml()>>
</div><</nobr>><<nobr>><<run setup.ensureNpcSystem()>>
<<print setup.playerRelationshipHistoryHtml()>><</nobr>><div class="sleep-panel">
<<if $sleepMessage and $sleepMessage != "">><div class="sleep-result"><<print $sleepMessage>></div><<set $sleepMessage = "">><</if>>
<div class="sleep-current">
<div>You settle down in <<print $sleepPlace>>.</div>
<div>Sleep quality: <strong><<print $sleepQuality>>%</strong></div>
<<if $sleepRisk and $sleepRisk != "">><div class="sleep-risk"><<print $sleepRisk>></div><</if>>
</div>
<div class="sleep-divider">
<div class="sleep-actions">
<<link "Sleep 1 hour">><<run setup.sleepForHours(1, $sleepQuality)>><<goto $sleepPassage>><</link>>
<<link "Sleep 2 hours">><<run setup.sleepForHours(2, $sleepQuality)>><<goto $sleepPassage>><</link>>
<<link "Sleep 4 hours">><<run setup.sleepForHours(4, $sleepQuality)>><<goto $sleepPassage>><</link>>
<<link "Sleep 6 hours">><<run setup.sleepForHours(6, $sleepQuality)>><<goto $sleepPassage>><</link>>
<<link "Sleep 8 hours">><<run setup.sleepForHours(8, $sleepQuality)>><<goto $sleepPassage>><</link>>
<<link "Sleep until 6 AM">><<run setup.sleepUntilMorning($sleepQuality)>><<goto $sleepPassage>><</link>>
<<link "Stop sleeping" $sleepReturn>><</link>>
</div>
</div>
</div><<run setup.rest()>>
You sit down for a short rest, letting your breathing slow and your thoughts settle.
20 minutes pass.
You restored $energyregen energy.
<<link "Return to Game" $return>><</link>><<nobr>><<run setup.ensureNpcSystem()>>
<<set _nearbyLocation = setup.npcSidebarLocation()>>
<<set _nearbyNpcs = setup.npcsAt(_nearbyLocation)>>
<div class="nearby-heading">
<div class="nearby-heading-title">Nearby People</div>
<div class="nearby-heading-place"><<= _nearbyLocation >><br><<= _nearbyNpcs.length >> present</div>
</div>
<<if _nearbyNpcs.length is 0>>
<div class="nearby-empty">No one is close enough to approach right now.</div>
<<else>>
<div class="nearby-roster">
<<for _npc range _nearbyNpcs>>
<<capture _npc>>
<div class="nearby-card">
<div class="nearby-card-main">
<div class="npc-portrait-slot small"><<print setup.npcPortraitImgHtml(_npc, "clothed")>></div>
<div>
<div class="nearby-card-title"><<= setup.npcSidebarLabel(_npc) >></div>
<div class="npc-card-status"><<= setup.npcRelationshipStatusLabel(_npc) >></div>
<div class="nearby-card-actions"><<link "Interact" "NPCInteract">><<run setup.npcClearApproachInteractionBonus()>><<set $activeNpcId = _npc.id>><</link>></div>
</div>
</div>
</div>
<</capture>>
<</for>>
</div>
<</if>>
<div class="npc-return-link"><<link "Return to Game" $return>><</link>></div><</nobr>><<nobr>><<set _npc = setup.npcBeginInteraction($activeNpcId)>>
<<if !_npc>>
No one is close enough to speak with.
<div class="npc-return-link"><<link "Return" $return>><<run setup.npcClearApproachInteractionBonus()>><</link>></div>
<<else>>
<div class="npc-interact-panel">
<<include "NPCInteractIntro_body">>
<<if !_npc.discovered.name or !_npc.discovered.age or !_npc.discovered.job>>
<div class="npc-action-list">
<<link "Basic Questions">><<set $activeNpcQuestionGroup = "basic">><<goto "NPCQuestionMenu">><</link>>
</div>
<</if>>
<div class="npc-action-list">
<<if setup.npcHasAvailableQuestions(_npc, "social")>><<link "Social Questions">><<set $activeNpcQuestionGroup = "social">><<goto "NPCQuestionMenu">><</link>><</if>>
<<if setup.npcHasAvailableQuestions(_npc, "personal")>><<link "Personal Questions">><<set $activeNpcQuestionGroup = "personal">><<goto "NPCQuestionMenu">><</link>><</if>>
</div>
<div class="npc-action-list">
<<link "Chat" "NPCChat">><</link>>
<<link "Flirt" "NPCFlirt">><</link>>
<<link "Invite" "NPCActivityMenu">><</link>>
<<link "Money" "NPCLoanMenu">><</link>>
<<link "Relationship" "NPCRelationshipMenu">><</link>>
<<set _encounterOptions = setup.npcPlayerEncounterOptions($activeNpcId)>>
<<for _encounterOption range _encounterOptions>><<capture _encounterOption>><<link _encounterOption.label>><<run setup.npcStartPlayerSexOffer($activeNpcId, _encounterOption.id)>><<goto "NPCEncounter">><</link>><</capture>><</for>>
</div>
<div class="npc-return-link"><<link "Return" $return>><<run setup.npcClearApproachInteractionBonus()>><</link>></div>
</div>
<</if>><</nobr>><div class="npc-interact-header">
<div class="npc-profile-portrait"><div class="npc-portrait-slot"><<print setup.npcPortraitImgHtml(_npc, "clothed")>></div></div>
<div class="npc-profile-info">
<div class="npc-interact-name"><<= _npc.discovered.name ? _npc.name : "An unfamiliar " + _npc.gender >></div>
<<print setup.npcRelationshipStatusBadgeHtml(_npc)>>
<div class="npc-interact-subtext">
<<= setup.npcAppearanceText(_npc) >><br>
<<if _npc.discovered.age>>Age: <<= _npc.age >><<else>>Approximate age: <<= setup.npcApproxAge(_npc) >><</if>>
<<if _npc.discovered.job>><br>Job: <<= _npc.job >><</if>>
</div>
<<if _npc.discovered.traits and _npc.discovered.traits.length>>
<div class="npc-known-traits">
<<for _trait range _npc.discovered.traits>>
<span class="npc-known-trait"><<= setup.npcTraitLabel(_trait) >></span>
<</for>>
</div>
<</if>>
<<print setup.npcRelationshipMetersHtml(_npc)>>
<<print setup.npcRelationshipMoodHtml(_npc)>>
<<print setup.npcPartnerWarningHtml(_npc)>>
</div>
</div><<set _npc = setup.getNpcById($activeNpcId)>>
<<if !_npc>>
They are no longer nearby.
<<link "Return" $return>><</link>>
<<else>>
<<include "NPCAskName_body">>
<<link "Continue" "NPCInteract">><</link>>
<</if>>You ask for their name.
"<<= _npc.name >>," they answer.<<set _npc = setup.getNpcById($activeNpcId)>>
<<if !_npc>>
They are no longer nearby.
<<link "Return" $return>><</link>>
<<else>>
<<include "NPCAskAge_body">>
<<link "Continue" "NPCInteract">><</link>>
<</if>>You ask how old they are.
"<<= _npc.age >>," they say.<<set _npc = setup.getNpcById($activeNpcId)>>
<<if !_npc>>
They are no longer nearby.
<<link "Return" $return>><</link>>
<<else>>
<<include "NPCAskWork_body">>
<<link "Continue" "NPCInteract">><</link>>
<</if>>You ask what they do around Ambercross.
"I work as a <<= _npc.job.toLowerCase() >>," they say.''Map of Ambercross''
<div class="village-map-wrap">
<div class="village-map">
<div class="map-label">Ambercross</div>
<div class="map-feature water">bay and piers</div>
<div class="map-feature fields">fields</div>
<div class="map-feature woods">woods</div>
<div class="map-road north"></div>
<div class="map-road east"></div>
<div class="map-road south"></div>
<div class="map-road west"></div>
<div class="map-road farm"></div>
<div class="map-road forest"></div>
<<mapNode "Piers" "Ambercross Piers" "50%" "14%">>
<<mapNode "Houses" "Ambercross Houses" "78%" "30%">>
<<mapNode "Tannery" "Ambercross Tannery" "88%" "24%">>
<<mapNode "Forge" "Iron Ember Forge" "65%" "48%">>
<<mapNode "Chapel" "Chapel" "35%" "42%">>
<<mapNode "Town Hall" "Ambercross Town Hall" "54%" "38%">>
<<mapNode "Center" "Ambercross Center" "49%" "50%">>
<<mapNode "Tavern" "Ambercross Tavern" "36%" "57%">>
<<mapNode "Entrance" "Ambercross Entrance" "49%" "72%">>
<<mapNode "Farmhouse" "Ambercross Farmer's house" "72%" "76%">>
<<if $FarmworkAccept === 1>>
<<mapNode "Barn" "Ambercross Barn" "70%" "90%">>
<</if>>
<<mapNode "Forest Gate" "Forest Entrance" "25%" "88%">>
<<mapNode "Forest Path" "Forest Path" "17%" "76%">>
<<mapNode "Clearing" "Forest Clearing" "11%" "63%">>
</div>
<div class="map-note">Fast travel takes 5 minutes. Places appear here once you have reached them on foot.</div>
</div>
<<link "Return to Game" $return>><</link>><<nobr>><<set _npc = setup.getNpcById($activeNpcId)>>
<<if !_npc>>
They are no longer nearby.
<<link "Return" $return>><</link>>
<<else>>
<div class="npc-question-menu-panel">
<div class="npc-question-list">
<<set _questionIds = setup.npcQuestionGroups[$activeNpcQuestionGroup] || []>>
<<for _questionId range _questionIds>>
<<set _question = setup.npcQuestionDefinitions[_questionId]>>
<<set _alreadyKnown = setup.npcQuestionAnswered(_npc, _questionId)>>
<<set _available = !_question.available || _question.available(_npc)>>
<<if !_alreadyKnown and _available>>
<div class="npc-question-choice">
<<set _questionText = _question.askText || _question.label>>
<<capture _questionId _questionText>><<link _questionText>><<set $activeNpcQuestion = _questionId>><<goto "NPCQuestion">><</link>><</capture>>
</div>
<</if>>
<</for>>
</div>
<div class="npc-return-link"><<link "Back" "NPCInteract">><</link>></div>
</div>
<</if>><</nobr>><<set _npc = setup.getNpcById($activeNpcId)>>
<<if !_npc>>
They are no longer nearby.
<<link "Return" $return>><</link>>
<<else>>
<<set _result = setup.npcAskQuestion(_npc.id, $activeNpcQuestion)>>
<<include "NPCQuestion_body">>
<<link "Continue" "NPCInteract">><</link>>
<</if>><<nobr>><div class="npc-response-panel npc-question-result">
<div class="npc-actions-label"><<= _result.question ? _result.question.label : "Question" >></div>
<p><<= _result.text >></p>
<<if _result.success>>
<<if _result.revealedTrait>>
<p>You learn that they seem <<= setup.npcTraitLabel(_result.revealedTrait).toLowerCase() >>.</p>
<</if>>
<<if _result.socialDiscovery>>
<p>You make a note of the connection in your journal.</p>
<</if>>
<<else>>
<p>The question leaves them a little more guarded.</p>
<</if>>
</div><</nobr>><<nobr>><<set _npc = setup.getNpcById($activeNpcId)>>
<<if !_npc>>
They are no longer nearby.
<<link "Return" $return>><</link>>
<<else>>
<<run setup.advanceTime(5)>>
<<set _result = setup.npcApplyInteraction(_npc.id, "chat")>>
<<include "NPCChat_body">>
<<if !(_result and (_result.playerQuestion or _result.loyaltyPrompt or _result.relationshipPressurePrompt or _result.relationshipPrompt or _result.activityOffer or _result.proposition))>>
<<if _result and _result.endsConversation>>
<<link "Continue" $return>><</link>>
<<else>>
<<link "Continue" "NPCInteract">><</link>>
<</if>>
<</if>>
<</if>><</nobr>><<nobr>><div class="npc-response-panel"><p>You spend a few minutes talking with <<= _npc.discovered.name ? _npc.name : "them" >>.</p>
<p>The conversation is simple for now, but it gives you both a chance to take each other in.</p>
<<if _result and _result.relationshipStateText>><p><<= _result.relationshipStateText >></p><</if>>
<<if _result and _result.aftermathText>><p><<= _result.aftermathText >></p><</if>>
<<if _result and _result.staleText>><p><<= _result.staleText >></p><</if>>
<<if _result and _result.revealedTrait>>You notice they seem <<= setup.npcTraitLabel(_result.revealedTrait).toLowerCase() >>.<</if>>
<<if _result and _result.socialDiscovery>><p><<= _result.socialDiscovery.text >></p><</if>>
<<if _result and _result.socialEventDiscovery>><p><<= _result.socialEventDiscovery.text >></p><</if>>
<<if _result and _result.partnerRisk and setup.npcPlayerKnowsNpcPartner(_npc)>>
<p>This could become complicated if word reaches <<= setup.npcDisplayName(setup.npcNpcPartner(_npc)) >>.</p>
<</if>>
<<if _result and _result.loyaltyPrompt>>
<<set $lastLoyaltyPrompt = _result.loyaltyPrompt>>
<div class="npc-actions-label">They ask you</div>
<p><<= _result.loyaltyPrompt.text >></p>
<div class="npc-action-list">
<<link "Reassure them">><<set $lastLoyaltyPromptResult = setup.npcResolveLoyaltyPrompt($lastLoyaltyPrompt, "reassure")>><<goto "NPCLoyaltyPromptResult">><</link>>
<<link "Deny it">><<set $lastLoyaltyPromptResult = setup.npcResolveLoyaltyPrompt($lastLoyaltyPrompt, "deny")>><<goto "NPCLoyaltyPromptResult">><</link>>
<<link "Admit it">><<set $lastLoyaltyPromptResult = setup.npcResolveLoyaltyPrompt($lastLoyaltyPrompt, "admit")>><<goto "NPCLoyaltyPromptResult">><</link>>
</div>
<</if>>
<<if _result and _result.relationshipPressurePrompt>>
<<set $lastRelationshipPressurePrompt = _result.relationshipPressurePrompt>>
<div class="npc-actions-label">They hesitate</div>
<p><<= _result.relationshipPressurePrompt.text >></p>
<div class="npc-action-list">
<<if _result.relationshipPressurePrompt.kind is "keep_secret">><<link "Keep it quiet">><<set $lastRelationshipPressureResult = setup.npcResolveRelationshipPressurePrompt($lastRelationshipPressurePrompt, "secret")>><<goto "NPCRelationshipPressureResult">><</link>><</if>>
<<link "Ask them to choose">><<set $lastRelationshipPressureResult = setup.npcResolveRelationshipPressurePrompt($lastRelationshipPressurePrompt, "choose")>><<goto "NPCRelationshipPressureResult">><</link>>
<<link "Give them space">><<set $lastRelationshipPressureResult = setup.npcResolveRelationshipPressurePrompt($lastRelationshipPressurePrompt, "step_back")>><<goto "NPCRelationshipPressureResult">><</link>>
<<link "Push past it">><<set $lastRelationshipPressureResult = setup.npcResolveRelationshipPressurePrompt($lastRelationshipPressurePrompt, "pressure")>><<goto "NPCRelationshipPressureResult">><</link>>
</div>
<</if>>
<<if _result and _result.relationshipPrompt>>
<<set $lastRelationshipPrompt = _result.relationshipPrompt>>
<div class="npc-actions-label">They ask you</div>
<p><<= _result.relationshipPrompt.text >></p>
<div class="npc-action-list">
<<link "Yes">><<set $lastRelationshipPromptResult = setup.npcAnswerRelationshipPrompt($lastRelationshipPrompt, "yes")>><<goto "NPCRelationshipPromptResult">><</link>>
<<link "Not yet">><<set $lastRelationshipPromptResult = setup.npcAnswerRelationshipPrompt($lastRelationshipPrompt, "not_yet")>><<goto "NPCRelationshipPromptResult">><</link>>
<<link "No">><<set $lastRelationshipPromptResult = setup.npcAnswerRelationshipPrompt($lastRelationshipPrompt, "no")>><<goto "NPCRelationshipPromptResult">><</link>>
</div>
<</if>>
<<if _result and _result.playerQuestion>>
<<set $activePlayerQuestion = _result.playerQuestion.id>>
<div class="npc-actions-label">They ask you</div>
<p><<= _result.playerQuestion.prompt >></p>
<div class="npc-action-list">
<<for _answer range _result.playerQuestion.answers>>
<<capture _answer>><<link _answer.label>><<run setup.playerPersonalityAnswer($activePlayerQuestion, _answer.id, $activeNpcId)>><<goto "NPCPlayerAnswer">><</link>><</capture>>
<</for>>
</div>
<</if>>
<<if _result and _result.activityOffer>>
<<set $lastActivityOffer = _result.activityOffer>>
<div class="npc-actions-label">They suggest a plan</div>
<p><<= _result.activityOffer.text >></p>
<div class="npc-action-list">
<<link "Accept">><<set $lastActivityInvite = setup.npcAcceptActivityOffer($lastActivityOffer)>><<goto "NPCActivityInviteResult">><</link>>
<<link "Decline" "NPCInteract">><<run setup.npcDeclineActivityOffer($lastActivityOffer)>><</link>>
</div>
<</if>>
<<if _result and _result.proposition>>
<<set $lastNpcProposition = _result.proposition>>
<p><<= _result.proposition.text >></p>
<div class="npc-action-list">
<<link "Accept">><<run setup.npcAcceptProposition($lastNpcProposition)>><<goto "NPCEncounter">><</link>>
<<link "Decline" "NPCInteract">><<run setup.npcDeclineProposition($lastNpcProposition)>><</link>>
</div>
<</if>></div><</nobr>><<nobr>><<set _npc = setup.getNpcById($activeNpcId)>>
<<if !_npc>>
They are no longer nearby.
<<link "Return" $return>><</link>>
<<else>>
<<run setup.advanceTime(5)>>
<<set _result = setup.npcApplyInteraction(_npc.id, "flirt")>>
<<include "NPCFlirt_body">>
<<if !(_result and (_result.playerQuestion or _result.loyaltyPrompt or _result.relationshipPressurePrompt or _result.relationshipPrompt or _result.activityOffer or _result.proposition))>>
<<if _result and _result.endsConversation>>
<<link "Continue" $return>><</link>>
<<else>>
<<link "Continue" "NPCInteract">><</link>>
<</if>>
<</if>>
<</if>><</nobr>><<nobr>><div class="npc-response-panel"><p>You test the mood with a warmer smile and a more playful tone.</p>
<p><<= _npc.discovered.name ? _npc.name : "They" >> notices, though it is too early to know what they will make of it.</p>
<<if _result and _result.relationshipStateText>><p><<= _result.relationshipStateText >></p><</if>>
<<if _result and _result.aftermathText>><p><<= _result.aftermathText >></p><</if>>
<<if _result and _result.staleText>><p><<= _result.staleText >></p><</if>>
<<if _result and _result.revealedTrait>>You catch a hint that they are <<= setup.npcTraitLabel(_result.revealedTrait).toLowerCase() >>.<</if>>
<<if _result and _result.socialDiscovery>><p><<= _result.socialDiscovery.text >></p><</if>>
<<if _result and _result.socialEventDiscovery>><p><<= _result.socialEventDiscovery.text >></p><</if>>
<<if _result and _result.loyaltyPrompt>>
<<set $lastLoyaltyPrompt = _result.loyaltyPrompt>>
<div class="npc-actions-label">They ask you</div>
<p><<= _result.loyaltyPrompt.text >></p>
<div class="npc-action-list">
<<link "Reassure them">><<set $lastLoyaltyPromptResult = setup.npcResolveLoyaltyPrompt($lastLoyaltyPrompt, "reassure")>><<goto "NPCLoyaltyPromptResult">><</link>>
<<link "Deny it">><<set $lastLoyaltyPromptResult = setup.npcResolveLoyaltyPrompt($lastLoyaltyPrompt, "deny")>><<goto "NPCLoyaltyPromptResult">><</link>>
<<link "Admit it">><<set $lastLoyaltyPromptResult = setup.npcResolveLoyaltyPrompt($lastLoyaltyPrompt, "admit")>><<goto "NPCLoyaltyPromptResult">><</link>>
</div>
<</if>>
<<if _result and _result.relationshipPressurePrompt>>
<<set $lastRelationshipPressurePrompt = _result.relationshipPressurePrompt>>
<div class="npc-actions-label">They hesitate</div>
<p><<= _result.relationshipPressurePrompt.text >></p>
<div class="npc-action-list">
<<if _result.relationshipPressurePrompt.kind is "keep_secret">><<link "Keep it quiet">><<set $lastRelationshipPressureResult = setup.npcResolveRelationshipPressurePrompt($lastRelationshipPressurePrompt, "secret")>><<goto "NPCRelationshipPressureResult">><</link>><</if>>
<<link "Ask them to choose">><<set $lastRelationshipPressureResult = setup.npcResolveRelationshipPressurePrompt($lastRelationshipPressurePrompt, "choose")>><<goto "NPCRelationshipPressureResult">><</link>>
<<link "Give them space">><<set $lastRelationshipPressureResult = setup.npcResolveRelationshipPressurePrompt($lastRelationshipPressurePrompt, "step_back")>><<goto "NPCRelationshipPressureResult">><</link>>
<<link "Push past it">><<set $lastRelationshipPressureResult = setup.npcResolveRelationshipPressurePrompt($lastRelationshipPressurePrompt, "pressure")>><<goto "NPCRelationshipPressureResult">><</link>>
</div>
<</if>>
<<if _result and _result.relationshipPrompt>>
<<set $lastRelationshipPrompt = _result.relationshipPrompt>>
<div class="npc-actions-label">They ask you</div>
<p><<= _result.relationshipPrompt.text >></p>
<div class="npc-action-list">
<<link "Yes">><<set $lastRelationshipPromptResult = setup.npcAnswerRelationshipPrompt($lastRelationshipPrompt, "yes")>><<goto "NPCRelationshipPromptResult">><</link>>
<<link "Not yet">><<set $lastRelationshipPromptResult = setup.npcAnswerRelationshipPrompt($lastRelationshipPrompt, "not_yet")>><<goto "NPCRelationshipPromptResult">><</link>>
<<link "No">><<set $lastRelationshipPromptResult = setup.npcAnswerRelationshipPrompt($lastRelationshipPrompt, "no")>><<goto "NPCRelationshipPromptResult">><</link>>
</div>
<</if>>
<<if _result and _result.playerQuestion>>
<<set $activePlayerQuestion = _result.playerQuestion.id>>
<div class="npc-actions-label">They ask you</div>
<p><<= _result.playerQuestion.prompt >></p>
<div class="npc-action-list">
<<for _answer range _result.playerQuestion.answers>>
<<capture _answer>><<link _answer.label>><<run setup.playerPersonalityAnswer($activePlayerQuestion, _answer.id, $activeNpcId)>><<goto "NPCPlayerAnswer">><</link>><</capture>>
<</for>>
</div>
<</if>>
<<if _result and _result.activityOffer>>
<<set $lastActivityOffer = _result.activityOffer>>
<div class="npc-actions-label">They suggest a plan</div>
<p><<= _result.activityOffer.text >></p>
<div class="npc-action-list">
<<link "Accept">><<set $lastActivityInvite = setup.npcAcceptActivityOffer($lastActivityOffer)>><<goto "NPCActivityInviteResult">><</link>>
<<link "Decline" "NPCInteract">><<run setup.npcDeclineActivityOffer($lastActivityOffer)>><</link>>
</div>
<</if>>
<<if _result and _result.proposition>>
<<set $lastNpcProposition = _result.proposition>>
<p><<= _result.proposition.text >></p>
<div class="npc-action-list">
<<link "Accept">><<run setup.npcAcceptProposition($lastNpcProposition)>><<goto "NPCEncounter">><</link>>
<<link "Decline" "NPCInteract">><<run setup.npcDeclineProposition($lastNpcProposition)>><</link>>
</div>
<</if>></div><</nobr>><<nobr>><div class="npc-response-panel"><<if !$lastPersonalityAnswer>>
The moment passes.
<<link "Continue" "NPCInteract">><</link>>
<<else>>
<p><<= $lastPersonalityAnswer.text >></p>
<<if $lastPersonalityAnswer.gainedTrait>>
<p>That answer feels increasingly natural to you. You have gained the <<= setup.npcTraitLabel($lastPersonalityAnswer.gainedTrait) >> trait.</p>
<</if>>
<<link "Continue" "NPCInteract">><</link>>
<</if>></div><</nobr>><<run setup.ensureNpcSystem()>>'NPC Portrait Guide'<br><br><<print setup.npcReleasePortraitGuideHtml()>><br><<link "Return to Game" $return>><</link>><<set _npc = setup.getNpcById($journalNpcId)>>
<<nobr>><<if !_npc>>
<div class="journal-person-empty">Select someone to view their journal entry.</div>
<<else>>
<<set _activeLoan = setup.npcActiveLoanFor(_npc.id)>>
<div class="journal-person-detail">
<div class="npc-interact-header">
<div class="npc-profile-portrait"><div class="npc-portrait-slot"><<print setup.npcPortraitImgHtml(_npc, "clothed")>></div></div>
<div class="npc-profile-info">
<div class="npc-interact-name"><<= _npc.discovered.name ? _npc.name : "Unknown resident" >></div>
<div class="npc-interact-subtext">
<<if _npc.discovered.appearance>><<= setup.npcAppearanceText(_npc) >><<else>>Appearance unknown<</if>><br>
<<if _npc.discovered.age>>Age: <<= _npc.age >><<elseif _npc.discovered.approxAge>>Approximate age: <<= setup.npcApproxAge(_npc) >><<else>>Age unknown<</if>>
<<if _npc.discovered.job>><br>Job: <<= _npc.job >><</if>>
</div>
<<print setup.npcJournalMetersHtml(_npc)>>
</div>
</div>
<div class="journal-detail-grid">
<div class="journal-detail-section">
<div class="journal-detail-title">Identity</div>
<div class="journal-detail-row"><span>Status</span><span><<= setup.npcRelationshipStatusLabel(_npc) >></span></div>
<div class="journal-detail-row"><span>Name</span><span><<= _npc.discovered.name ? _npc.name : "Unknown" >></span></div>
<div class="journal-detail-row"><span>Age</span><span><<if _npc.discovered.age>><<= _npc.age >><<elseif _npc.discovered.approxAge>><<= setup.npcApproxAge(_npc) >><<else>>Unknown<</if>></span></div>
<<if _npc.discovered.job>><div class="journal-detail-row"><span>Work</span><span><<= _npc.job >></span></div><</if>>
<<if _npc.discovered.home>><div class="journal-detail-row"><span>Home</span><span><<= _npc.home >></span></div><</if>>
<<if setup.npcGoldKnown(_npc)>><div class="journal-detail-row"><span>Gold</span><span><<= _npc.gold >></span></div><</if>>
<div class="journal-detail-row"><span>Commitment</span><span><<= setup.npcRelationshipCommitmentLabel(_npc) >></span></div>
<div class="journal-detail-row"><span>Last spoken</span><span>Day <<= _npc.lastInteractionDay || "?" >></span></div>
</div>
<div class="journal-detail-section">
<div class="journal-detail-title">Traits</div>
<<if _npc.discovered.traits and _npc.discovered.traits.length>><div class="npc-known-traits"><<for _trait range _npc.discovered.traits>><span class="npc-known-trait"><<= setup.npcTraitLabel(_trait) >></span><</for>></div><<else>><div class="journal-person-empty">Unknown</div><</if>>
</div>
<div class="journal-detail-section">
<div class="journal-detail-title">Known Connections</div>
<<print setup.npcKnownSocialLinksHtml(_npc)>>
</div>
<div class="journal-detail-section">
<div class="journal-detail-title">Recent Gossip</div>
<<print setup.npcKnownSocialEventsHtml(_npc)>>
</div>
<<if _npc.relationshipMemory and _npc.relationshipMemory.length>>
<div class="journal-detail-section journal-detail-section-wide">
<div class="journal-detail-title">Relationship Notes</div>
<<print setup.npcRelationshipMemoryHtml(_npc)>>
</div>
<</if>>
<<print setup.npcLoyaltyWarningsHtml(_npc)>>
<<if _activeLoan>>
<div class="journal-detail-section journal-detail-section-wide">
<div class="journal-detail-title">Loan</div>
<div class="journal-detail-row"><span>Borrowed</span><span><<= _activeLoan.amount >> gold</span></div>
<div class="journal-detail-row"><span>Due</span><span><<= _activeLoan.totalDue >> gold by day <<= _activeLoan.dueDay >></span></div>
<<if setup.npcCurrentDay() > _activeLoan.dueDay>><div class="journal-detail-row"><span>Late</span><span><<= setup.npcCurrentDay() - _activeLoan.dueDay >> day(s)</span></div><</if>>
</div>
<</if>>
<<if _npc.discovered.schedule>>
<div class="journal-detail-section journal-detail-section-wide">
<div class="journal-detail-title">Schedule</div>
<div class="journal-detail-row"><span>Morning</span><span><<= _npc.schedule.morning >></span></div>
<div class="journal-detail-row"><span>Afternoon</span><span><<= _npc.schedule.afternoon >></span></div>
<div class="journal-detail-row"><span>Evening</span><span><<= _npc.schedule.evening >></span></div>
<div class="journal-detail-row"><span>Night</span><span><<if _npc.schedule.night is "Home">><<= _npc.home >><<else>><<= _npc.schedule.night >><</if>></span></div>
</div>
<</if>>
<<if _npc.notes>><div class="journal-detail-section journal-detail-section-wide">
<div class="journal-detail-title">Notes</div>
<div class="journal-detail-note"><<= _npc.notes >></div>
</div><</if>>
</div>
</div>
<</if>><</nobr>><<set $journalTab = "people">>
<<nobr>><div class="journal-shell">
<div class="journal-header">
<div class="journal-title">Journal</div>
<div class="journal-subtitle">People of Ambercross</div>
</div>
<div class="journal-tabs">
<<link "Character" "Journal">><<set $journalTab = "character">><</link>>
<<link "Character Traits" "Journal">><<set $journalTab = "traits">><</link>>
<span class="journal-tab-active">People</span>
</div>
<<include "JournalNPCDetails_body">>
<div class="journal-detail-actions">
<<link "Back to People" "Journal">><<set $journalTab = "people">><</link>>
<<link "Return to Game" $return>><</link>>
</div>
</div><</nobr>><<nobr>><<set _data = setup.npcActiveEncounter()>>
<<if !_data or !_data.active>>
The moment has passed.
<div class="npc-return-link"><<link "Return" "NPCInteract">><</link>></div>
<<else>>
<div class="npc-encounter-panel">
<div class="npc-encounter-main">
<<set _mediaPath = setup.npcEncounterCurrentMediaPath()>><<set _playerPortraitPath = setup.playerSexPortraitPath()>><<set _portraitPath = setup.npcEncounterPortraitPath()>>
<div class="npc-encounter-visuals">
<div class="npc-encounter-player-portrait"><<if _playerPortraitPath>><img @src="_playerPortraitPath" alt=""><<else>>You<</if>></div>
<div class="npc-encounter-media"><<if _mediaPath>><img @src="_mediaPath" alt=""><<else>><<= _data.encounter ? _data.encounter.label : "Encounter" >><br>media slot<</if>></div>
<div class="npc-encounter-portrait"><<if _portraitPath>><img @src="_portraitPath" alt=""><<else>>Portrait<</if>></div>
</div>
<div class="npc-encounter-bars">
<<print setup.npcEncounterBarHtml("Character arousal", _data.active ? _data.active.playerArousal : 0)>>
<<print setup.npcEncounterBarHtml("NPC arousal", _data.active ? _data.active.npcSceneArousal : 0)>>
</div>
<div class="npc-encounter-text">
<p><<= setup.npcEncounterCurrentText() >></p>
<<if _data.active.blocked and _data.active.reasons and _data.active.reasons.length>>
<div class="npc-encounter-effects"><<for _reason range _data.active.reasons>><div><<= _reason >></div><</for>></div>
<</if>>
</div>
<<if _data.active.blocked>>
<<set _encounterReturn = _data.active.returnPassage || "NPCInteract">>
<div class="npc-encounter-choice-list"><div class="npc-encounter-choice-buttons"><<link "Return" _encounterReturn>><<run setup.npcClearEncounter()>><</link>></div></div>
<<elseif _data.active.ended>>
<<print setup.npcEncounterAftermathHtml()>>
<<set _encounterReturn = _data.active.returnPassage || "NPCInteract">>
<div class="npc-encounter-choice-list"><div class="npc-encounter-choice-buttons"><<link "Continue" _encounterReturn>><<run setup.npcClearEncounter()>><</link>></div></div>
<<else>>
<<npcEncounterChoices>>
<</if>>
</div>
</div>
<</if>><</nobr>><<nobr>><<set _npc = setup.getNpcById($activeNpcId)>>
<<if !_npc>>
They are no longer nearby.
<div class="npc-return-link"><<link "Return" $return>><</link>></div>
<<else>>
<div class="npc-activity-menu">
<div class="npc-interact-name">Invite <<= _npc.discovered.name ? _npc.firstName : "them" >></div>
<<set _activities = setup.npcActivityList(_npc)>>
<<if !_activities.length>>
<div class="journal-person-empty">No invitation feels right for the relationship between you right now.</div>
<<else>>
<div class="npc-activity-list">
<<for _activity range _activities>>
<div class="npc-activity-card">
<<capture _activity>><<link _activity.label>><<set $lastActivityInvite = setup.npcInviteActivity($activeNpcId, _activity.id)>><<goto "NPCActivityInviteResult">><</link>><</capture>>
<div class="npc-activity-note"><<= _activity.inviteText >><br>Meet at <<= setup.npcActivityLocationLabel(_activity) >>. Takes about <<= _activity.duration >> minutes.</div>
</div>
<</for>>
</div>
<</if>>
<div class="npc-return-link"><<link "Back" "NPCInteract">><</link>></div>
</div>
<</if>><</nobr>><<nobr>><<if !$lastActivityInvite>>
The invitation goes nowhere.
<div class="npc-return-link"><<link "Back" "NPCInteract">><</link>></div>
<<else>>
<div class="npc-activity-panel">
<div class="npc-interact-name"><<= $lastActivityInvite.activity ? $lastActivityInvite.activity.label : "Invitation" >></div>
<p><<= $lastActivityInvite.text >></p>
<<if $lastActivityInvite.needsScheduling>>
<div class="npc-activity-note">Available times:</div>
<div class="npc-activity-choice-list">
<<if !$lastActivityInvite.windows or !$lastActivityInvite.windows.length>>
No good time is available right now.
<<else>>
<<set _i = 0>><<for _window range $lastActivityInvite.windows>>
<<capture _i _window>><<link setup.npcActivityWindowText(_window)>><<set $lastActivityInvite = setup.npcFinalizeActivityInvite($lastActivityInvite, _i)>><<goto "NPCActivityInviteResult">><</link>><</capture>>
<<set _i = _i + 1>>
<</for>>
<</if>>
</div>
<</if>>
<<if $lastActivityInvite.needsConflictChoice>>
<div class="npc-activity-note">Clashes with: <<= setup.npcActivitySummary($lastActivityInvite.conflict) >></div>
<div class="npc-activity-choice-list">
<<link "Replace old plan">><<set $lastActivityInvite = setup.npcFinalizeActivityInvite($lastActivityInvite, $lastActivityInvite.windowIndex, $lastActivityInvite.conflict.id)>><<goto "NPCActivityInviteResult">><</link>>
<<link "Choose another time">><<set $lastActivityInvite.needsConflictChoice = false>><<set $lastActivityInvite.needsScheduling = true>><<goto "NPCActivityInviteResult">><</link>>
</div>
<</if>>
<<if $lastActivityInvite.accepted and $lastActivityInvite.scheduled>>
<div class="npc-activity-note">Window: day <<= $lastActivityInvite.scheduled.day >>, <<= setup.formatClock($lastActivityInvite.scheduled.minute - 30) >> to <<= setup.formatClock($lastActivityInvite.scheduled.endMinute + 30) >> at <<= setup.npcActivityLocationLabel($lastActivityInvite.scheduled.location) >>.</div>
<div class="npc-activity-choice-list">
<<if $lastActivityInvite.now>><<link "Start now">><<run setup.npcBeginActivity($lastActivityInvite.scheduled.id)>><<goto "NPCActivity">><</link>><</if>>
<<link "View plans" "NPCActivityPlans">><</link>>
</div>
<</if>>
<<if $lastActivityInvite.needsConflictChoice or ($lastActivityInvite.needsScheduling and $lastActivityInvite.windows and $lastActivityInvite.windows.length)>>
<<else>>
<div class="npc-return-link"><<link "Continue" "NPCInteract">><</link>></div>
<</if>>
</div>
<</if>><</nobr>><<nobr>><<set _data = setup.npcActiveActivityData()>>
<<if !_data or !_data.activity or !_data.npc>>
The plan has passed.
<div class="npc-return-link"><<link "Return" $return>><<run setup.npcClearActivity()>><</link>></div>
<<else>>
<div class="npc-activity-panel">
<div class="npc-interact-name"><<= _data.activity.label >> with <<= _data.npc.discovered.name ? _data.npc.firstName : "someone" >></div>
<<if _data.active.mediaPath>><<print setup.npcIntimateMediaHtml("", _data.npc, _data.active.mediaPath)>><</if>>
<p><<= setup.npcActivityReturnText() >></p>
<<print setup.npcActivityAftermathHtml()>>
<div class="npc-activity-choice-list">
<<if _data.active.prompt>>
<<if _data.active.prompt.kind is "sexual">>
<<link "Accept">><<run setup.npcAcceptActivitySexualPrompt()>><<goto "NPCEncounter">><</link>>
<<link "Decline" "NPCActivity">><<run setup.npcResolveActivityPrompt("decline")>><</link>>
<<else>>
<<link "Accept" "NPCActivity">><<run setup.npcResolveActivityPrompt("accept")>><</link>>
<<link "Decline" "NPCActivity">><<run setup.npcResolveActivityPrompt("decline")>><</link>>
<</if>>
<<elseif _data.active.complete>>
<<link "Continue" $return>><<run setup.npcClearActivity()>><</link>>
<<else>>
<<set _choices = setup.npcActivityChoicesForStep(_data)>>
<<for _choice range _choices>>
<<capture _choice>><<link _choice.label "NPCActivity">><<run setup.npcApplyActivityChoice(_choice.id)>><</link>><</capture>>
<</for>>
<<link "Cancel" $return>><<run setup.npcClearActivity()>><</link>>
<</if>>
</div>
</div>
<</if>><</nobr>><<nobr>><<run setup.npcReviewOverdueLoans()>><<set _plans = setup.npcPendingActivities()>><<set _loans = setup.npcActiveLoans()>>
<div class="npc-activity-menu">
<div class="npc-interact-name">Plans</div>
<<if $lastPlanLoanResult>><div class="npc-activity-card"><<= $lastPlanLoanResult.text >></div><<set $lastPlanLoanResult = null>><</if>>
<div class="npc-activity-section-title">Activities</div>
<<if !_plans.length>>
<div class="journal-person-empty">You have no plans scheduled.</div>
<<else>>
<div class="npc-activity-list">
<<for _plan range _plans>>
<div class="npc-activity-card">
<div><<= setup.npcActivitySummary(_plan) >></div>
<div class="npc-activity-note">Window: <<= setup.formatClock(_plan.minute - 30) >> to <<= setup.formatClock(_plan.endMinute + 30) >>.</div>
<div class="npc-activity-choice-list">
<<capture _plan>><<if setup.npcActivityCanStart(_plan)>><<link "Start">><<run setup.npcBeginActivity(_plan.id)>><<goto "NPCActivity">><</link>><</if>><</capture>>
<<capture _plan>><<link "Cancel" "NPCActivityPlans">><<run setup.npcCancelActivity(_plan.id)>><</link>><</capture>>
</div>
</div>
<</for>>
</div>
<</if>>
<div class="npc-activity-section-title">Debts</div>
<<if !_loans.length>>
<div class="journal-person-empty">You owe no one money right now.</div>
<<else>>
<div class="npc-activity-list">
<<for _loan range _loans>>
<div class="npc-activity-card npc-debt-card">
<div><<= setup.npcLoanSummary(_loan) >></div>
<div class="npc-activity-note">Borrowed <<= _loan.amount >>, interest <<= _loan.interest >>. <<if setup.npcLoanIsOverdue(_loan)>>Trust is slipping each day this remains unpaid.<<else>>Repay by day <<= _loan.dueDay >> to build trust.<</if>><<if _loan.pressureNote>> <<= _loan.pressureNote >><</if>></div>
<div class="npc-activity-choice-list">
<<capture _loan>><<link "Repay" "NPCActivityPlans">><<set $lastPlanLoanResult = setup.npcRepayLoan(_loan.id)>><</link>><</capture>>
<<capture _loan>><<link "Cannot repay" "NPCActivityPlans">><<set $lastPlanLoanResult = setup.npcDefaultLoan(_loan.id)>><</link>><</capture>>
<<if setup.npcLoanIsOverdue(_loan)>>
<<set _loanNpc = setup.getNpcById(_loan.npcId)>>
<<set _compOptions = setup.npcLoanCompensationOptions(_loanNpc, _loan)>>
<<if _compOptions.length>>
<<for _compOption range _compOptions>><<capture _loan _compOption>><<set _compLabel = setup.npcLoanCompensationLabel(_loan, _compOption)>><<link _compLabel>><<set $activeNpcId = _loan.npcId>><<set $lastLoanResult = setup.npcOfferLoanCompensation(_loan.id, _compOption.id)>><<if $lastLoanResult.pendingEncounter>><<goto "NPCEncounter">><<else>><<set $lastPlanLoanResult = $lastLoanResult>><<goto "NPCActivityPlans">><</if>><</link>><</capture>><</for>>
<</if>>
<</if>>
</div>
</div>
<</for>>
</div>
<</if>>
<div class="npc-return-link"><<link "Return to Game" $return>><</link>></div>
</div><</nobr>><<nobr>><<if !setup.cheatsEnabled>>
This menu is disabled.
<<link "Return to Game" $return>><</link>>
<<else>>
<div class="journal-shell cheat-shell">
<div class="journal-header">
<div class="journal-title">Cheats</div>
<div class="journal-subtitle">Testing tools</div>
</div>
<div id="cheat-panel"><<include "CheatMenu_body">></div>
<div class="npc-return-link"><<link "Return to Game" $return>><</link>></div>
</div>
<</if>><</nobr>><<nobr>><<if !setup.cheatsEnabled>>
<div class="cheat-panel">Cheats are disabled.</div>
<<else>>
<<run setup.cheatRequireCharacter()>>
<<run setup.ensureTime()>>
<div class="cheat-panel">
<div class="cheat-section">
<div class="cheat-heading">Resources</div>
<div class="cheat-row"><div>Gold</div><div><span class="cheat-value"><<= $c.gold >></span> <span class="cheat-actions"><<link "+10">><<run setup.cheatAddGold(10)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><<link "+50">><<run setup.cheatAddGold(50)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><<link "-10">><<run setup.cheatAddGold(-10)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>></span></div></div>
<div class="cheat-row"><div>Energy</div><div><span class="cheat-value"><<= $c.energy >> / <<= $c.maxenergy >></span> <span class="cheat-actions"><<link "Replenish">><<run setup.cheatReplenishEnergy()>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>></span></div></div>
<div class="cheat-row"><div>Outfits</div><div><span class="cheat-value"><<= ($c.outfits || []).length >> unlocked</span> <span class="cheat-actions"><<link "Unlock all">><<run setup.cheatUnlockAllOutfits()>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>></span></div></div>
</div>
<div class="cheat-section">
<div class="cheat-heading">Time</div>
<div class="cheat-row"><div>Current</div><div><span class="cheat-value">Day <<= $time.day >>, <<= setup.timeText() >> (<<= setup.timeOfDay() >>)</span></div></div>
<div class="cheat-row"><div>Advance</div><div><span class="cheat-actions"><<link "+1h">><<run setup.cheatAdvanceTime(60)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><<link "+6h">><<run setup.cheatAdvanceTime(360)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><<link "+12h">><<run setup.cheatAdvanceTime(720)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><<link "+1 day">><<run setup.cheatAdvanceTime(1440)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><<link "+3 days">><<run setup.cheatAdvanceTime(4320)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><<link "+7 days">><<run setup.cheatAdvanceTime(10080)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>></span></div></div>
</div>
<div class="cheat-section">
<div class="cheat-heading">Skills</div>
<<for _skill range setup.cheatSkillList>>
<<capture _skill>><div class="cheat-row"><div><<= setup.cheatLabel(_skill) >></div><div><span class="cheat-value"><<= setup.cheatSkillValue(_skill) >></span> <span class="cheat-actions"><<link "+1">><<run setup.cheatChangeSkill(_skill, 1)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><<link "+5">><<run setup.cheatChangeSkill(_skill, 5)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><<link "-1">><<run setup.cheatChangeSkill(_skill, -1)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>></span></div></div><</capture>>
<</for>>
</div>
<div class="cheat-section">
<div class="cheat-heading">Known NPC Relationships</div>
<div class="cheat-note">Directly changes relationship values for testing. Only NPCs whose names you know are listed.</div>
<<set _knownCheatNpcs = setup.cheatKnownNamedNpcs()>>
<<if !_knownCheatNpcs.length>>
<div class="cheat-trait-muted">No named NPCs yet.</div>
<<else>>
<<set _npc = setup.cheatSelectedNpc()>>
<<set _npcOptions = setup.cheatNpcOptions()>>
<div class="cheat-row cheat-select-row"><div>NPC</div><div><<listbox "$cheatNpcId" autoselect>><<optionsfrom _npcOptions>><</listbox>> <span class="cheat-actions"><<link "Select">><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>></span></div></div>
<<if _npc>>
<div class="cheat-npc-card">
<div class="cheat-heading"><<= setup.npcDisplayName(_npc) >> <span class="cheat-note">(<<= setup.npcRelationshipStatusLabel(_npc) >>)</span></div>
<<for _stat range setup.cheatNpcRelationshipStats>>
<<capture _npc _stat>><div class="cheat-row"><div><<= _stat.label >></div><div><span class="cheat-value"><<= setup.cheatNpcStatValue(_npc, _stat.id) >></span> <span class="cheat-actions"><<link "+1">><<run setup.cheatChangeNpcRelationship(_npc.id, _stat.id, 1)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><<link "+5">><<run setup.cheatChangeNpcRelationship(_npc.id, _stat.id, 5)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><<link "-1">><<run setup.cheatChangeNpcRelationship(_npc.id, _stat.id, -1)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><<link "-5">><<run setup.cheatChangeNpcRelationship(_npc.id, _stat.id, -5)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>></span></div></div><</capture>>
<</for>>
</div>
<</if>>
<</if>>
</div>
<div class="cheat-section">
<div class="cheat-heading">Character Traits</div>
<div class="cheat-note">Adding a trait also marks its personality progress as complete. Opposed traits cannot be active together.</div>
<div class="cheat-heading">Active</div>
<div class="cheat-trait-grid">
<<if !$c.personalityTraits.length>>
<span class="cheat-trait-muted">None</span>
<<else>>
<<for _trait range $c.personalityTraits>>
<<capture _trait>><<set _buttonLabel = "- " + setup.cheatLabel(_trait)>><<link _buttonLabel>><<run setup.cheatRemoveTrait(_trait)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><</capture>>
<</for>>
<</if>>
</div>
<div class="cheat-heading">Available</div>
<div class="cheat-trait-grid">
<<for _trait range setup.cheatTraits()>>
<<capture _trait>><<set _blockedBy = setup.cheatTraitBlockedBy(_trait)>><<if !$c.personalityTraits.includes(_trait) and !_blockedBy.length>><<set _buttonLabel = "+ " + setup.cheatLabel(_trait)>><<link _buttonLabel>><<run setup.cheatAddTrait(_trait)>><<replace "#cheat-panel">><<include "CheatMenu_body">><</replace>><</link>><</if>><</capture>>
<</for>>
</div>
<div class="cheat-heading">Blocked by Opposites</div>
<div class="cheat-trait-grid">
<<set _blockedAny = false>>
<<for _trait range setup.cheatTraits()>>
<<capture _trait>><<set _blockedBy = setup.cheatTraitBlockedBy(_trait)>><<if !$c.personalityTraits.includes(_trait) and _blockedBy.length>><<set _blockedAny = true>><span class="cheat-trait-muted"><<= setup.cheatLabel(_trait) >> (<<= setup.cheatTraitBlockedText(_trait) >>)</span><</if>><</capture>>
<</for>>
<<if !_blockedAny>><span class="cheat-trait-muted">None</span><</if>>
</div>
</div>
</div>
<</if>><</nobr>><<nobr>><<set _npc = setup.getNpcById($activeNpcId)>>
<<if !_npc>>
They are no longer nearby.
<div class="npc-return-link"><<link "Return" $return>><</link>></div>
<<else>>
<<run setup.npcEnsureRelationship(_npc)>>
<div class="npc-activity-menu npc-relationship-menu">
<div class="npc-interact-name">Relationship</div>
<div class="npc-activity-note">Current status: <<= setup.npcRelationshipStatusLabel(_npc) >>. <<= setup.npcRelationshipCommitmentNote(_npc) >></div>
<<if $lastRelationshipResult>><div class="npc-activity-card"><<= $lastRelationshipResult.text >></div><<set $lastRelationshipResult = null>><</if>>
<<set _actions = setup.npcRelationshipActions(_npc)>>
<<if !_actions.length>>
<div class="journal-person-empty">You are still getting to know each other. For now, the bond between you has not settled into anything that needs naming.</div>
<<else>>
<div class="npc-activity-list">
<<for _action range _actions>>
<div class="npc-activity-card">
<div><strong><<= _action.label >></strong></div>
<div class="npc-activity-note"><<= _action.note >></div>
<div class="npc-activity-choice-list">
<<capture _action>><<link _action.label "NPCRelationshipMenu">><<set $lastRelationshipResult = setup.npcSetRelationshipIntent($activeNpcId, _action.id)>><</link>><</capture>>
</div>
</div>
<</for>>
</div>
<</if>>
<div class="npc-return-link"><<link "Back" "NPCInteract">><</link>></div>
</div>
<</if>><</nobr>><<nobr>><<set _npc = setup.getNpcById($activeNpcId)>>
<<if !_npc>>
They are no longer nearby.
<div class="npc-return-link"><<link "Return" $return>><</link>></div>
<<else>>
<<run setup.npcEnsureRelationship(_npc)>>
<<set _loan = setup.npcActiveLoanFor(_npc.id)>>
<div class="npc-loan-panel">
<h2>Money</h2>
<p><<= setup.npcDisplayName(_npc) >></p>
<<if _loan>>
<div class="npc-loan-list">
<div class="npc-loan-card">
<div>
You owe <<= setup.npcDisplayName(_npc) >> <<= _loan.totalDue >> gold.
<div class="npc-loan-note">Borrowed <<= _loan.amount >>, interest <<= _loan.interest >>. Due day <<= _loan.dueDay >>.<<if setup.npcCurrentDay() > _loan.dueDay>> Late by <<= setup.npcCurrentDay() - _loan.dueDay >> day(s).<</if>><<if _loan.pressureNote>> <<= _loan.pressureNote >><</if>></div>
</div>
<div>
<<capture _loan>><<link "Repay">><<set $lastLoanResult = setup.npcRepayLoan(_loan.id)>><<goto "NPCLoanResult">><</link>><</capture>>
<<capture _loan>><<link "Cannot repay">><<set $lastLoanResult = setup.npcDefaultLoan(_loan.id)>><<goto "NPCLoanResult">><</link>><</capture>>
<<if setup.npcLoanIsOverdue(_loan)>>
<<set _compOptions = setup.npcLoanCompensationOptions(_npc, _loan)>>
<<if _compOptions.length>>
<div class="npc-loan-note">You can try to negotiate another kind of payment. They may refuse or ask for more.</div>
<<for _compOption range _compOptions>><<capture _loan _compOption>><<set _compLabel = setup.npcLoanCompensationLabel(_loan, _compOption)>><<link _compLabel>><<set $lastLoanResult = setup.npcOfferLoanCompensation(_loan.id, _compOption.id)>><<if $lastLoanResult.pendingEncounter>><<goto "NPCEncounter">><<else>><<goto "NPCLoanResult">><</if>><</link>><</capture>><</for>>
<</if>>
<</if>>
</div>
</div>
</div>
<<else>>
<<set _options = setup.npcLoanAmountOptions(_npc)>>
<<if !_options.length>>
<p><<= setup.npcDisplayName(_npc) >> does not have enough coin to loan right now.</p>
<<else>>
<div class="npc-loan-list">
<<for _amount range _options>>
<<capture _amount>><<set _terms = setup.npcLoanTerms(_npc, _amount)>><<set _check = setup.npcLoanChance(_npc, _amount)>><<set _available = setup.npcLoanAvailability(_npc, _amount)>><<set _buttonLabel = "Ask for " + _amount + " gold">>
<div class="npc-loan-card">
<div>
<strong><<= _amount >> gold</strong>
<div class="npc-loan-note">Repay <<= _terms.totalDue >> by day <<= _terms.dueDay >>. Interest: <<= _terms.interest >>. Chance: <<= _check.chance >>%.<<if !_available.ok>> <span class="npc-loan-unavailable"><<= _available.text >></span><</if>></div>
</div>
<div><<if _available.ok>><<link _buttonLabel>><<set $lastLoanResult = setup.npcRequestLoan($activeNpcId, _amount)>><<goto "NPCLoanResult">><</link>><<else>><span class="npc-loan-disabled">Unavailable</span><</if>></div>
</div>
<</capture>>
<</for>>
</div>
<</if>>
<</if>>
<div class="npc-return-link"><<link "Back" "NPCInteract">><</link>></div>
</div>
<</if>><</nobr>><<nobr>><div class="npc-loan-panel">
<<if !$lastLoanResult>>
<p>The matter passes without agreement.</p>
<<else>>
<<if $lastLoanResult.optionId>><<set _tameImage = ($lastLoanResult.optionId === "undress" && setup.playerNakedPortraitPath) ? setup.playerNakedPortraitPath() : (setup.playerSexPortraitPath ? setup.playerSexPortraitPath() : $c.portrait)>><<if _tameImage>><div class="npc-loan-tame-preview"><img @src="_tameImage" alt=""></div><</if>><</if>>
<p><<= $lastLoanResult.text >></p>
<</if>>
<div class="npc-action-list">
<<link "Money" "NPCLoanMenu">><</link>>
<<link "Return" "NPCInteract">><</link>>
</div>
</div><</nobr>><<nobr>><div class="npc-activity-menu npc-relationship-menu">
<<if !$lastLoyaltyPromptResult>>
<p>The moment passes.</p>
<<else>>
<p><<= $lastLoyaltyPromptResult.text >></p>
<</if>>
<div class="npc-return-link"><<link "Continue" "NPCInteract">><</link>></div>
</div><</nobr>><<nobr>><div class="npc-activity-menu npc-relationship-menu">
<<if !$lastRelationshipPromptResult>>
<p>The moment passes.</p>
<<else>>
<p><<= $lastRelationshipPromptResult.text >></p>
<</if>>
<div class="npc-return-link"><<link "Continue" "NPCInteract">><</link>></div>
</div><</nobr>><<nobr>><<set _rumor = setup.npcPartnerRumorById($activePartnerRumorId)>>
<<set _npc = _rumor ? setup.getNpcById(_rumor.npcId) : null>>
<<set _partner = _rumor ? setup.getNpcById(_rumor.partnerId) : null>>
<div class="npc-activity-menu npc-relationship-menu">
<<if !_rumor or !_npc or !_partner>>
<p>The moment passes.</p>
<div class="npc-return-link"><<link "Continue" $return>><</link>></div>
<<elseif _rumor.resolved>>
<p>There is nothing more to settle right now.</p>
<div class="npc-return-link"><<link "Continue" $return>><</link>></div>
<<else>>
<div class="npc-interact-name"><<= setup.npcDisplayName(_partner) >></div>
<p><<= setup.npcDisplayName(_partner) >> has heard about <<= setup.npcPartnerRumorLabel(_rumor) >> with <<= setup.npcDisplayName(_npc) >>.</p>
<p>They wait for your answer, watching closely for whether you sound guilty, careless, or simply tired of explaining yourself.</p>
<div class="npc-action-list">
<<link "Apologize">><<set $lastPartnerRumorResult = setup.npcResolvePartnerRumorConfrontation($activePartnerRumorId, "apologize")>><<goto "NPCPartnerConfrontationResult">><</link>>
<<link "Deny it">><<set $lastPartnerRumorResult = setup.npcResolvePartnerRumorConfrontation($activePartnerRumorId, "deny")>><<goto "NPCPartnerConfrontationResult">><</link>>
<<link "Push back">><<set $lastPartnerRumorResult = setup.npcResolvePartnerRumorConfrontation($activePartnerRumorId, "pushback")>><<goto "NPCPartnerConfrontationResult">><</link>>
</div>
<</if>>
</div><</nobr>><<nobr>><div class="npc-activity-menu npc-relationship-menu">
<<if !$lastPartnerRumorResult>>
<p>The moment passes.</p>
<<else>>
<p><<= $lastPartnerRumorResult.text >></p>
<</if>>
<div class="npc-return-link"><<link "Continue" $return>><<set $activePartnerRumorId = null>><<set $lastPartnerRumorResult = null>><</link>></div>
</div><</nobr>><<nobr>><div class="npc-activity-menu npc-relationship-menu">
<<if !$lastRelationshipPressureResult>>
<p>The moment passes.</p>
<<else>>
<p><<= $lastRelationshipPressureResult.text >></p>
<</if>>
<div class="npc-return-link"><<link "Continue" "NPCInteract">><<set $lastRelationshipPressurePrompt = null>><<set $lastRelationshipPressureResult = null>><</link>></div>
</div><</nobr>><<print setup.locationImageHtml("img/location/AC_Forestentrance.png", "Forest entrance")>>
A narrow dirt path slips between old trees, tangled roots, moss-covered rocks, and thick undergrowth, with the canopy quickly closing overhead. The trail is still easy enough to follow near the village, but the deeper forest beyond feels darker and less traveled, making it clear that anyone continuing on is leaving the safety of Ambercross behind.
<<travel "west" "Enter the forest path" "Forest Path" 5>>
<<travel "east" "Head towards the pillars" "Ambercross Pillars" 5>><<print setup.locationImageHtml("img/location/AC_Forestpath.png", "Forest path")>>
The forest path winds deeper between tall trees, thick brush, and moss-covered rocks. The trail is narrow but well-worn, with roots and loose stones breaking up the ground. A smaller path branches off along the way, leading toward a quiet clearing used by villagers looking for a peaceful place to rest.
<<travel "northwest" "Exit into the small clearing" "Forest Clearing" 5>>
<<travel "east" "Head to the forest entrance" "Forest Entrance" 5>><<print setup.locationImageHtml("img/location/AC_Chapel.png", "Ambercross chapel")>>
You enter the chapel, a quiet stone building with simple wooden pews, colored glass windows, and a small altar at the far end. Candles keep the room warm and softly lit, making it a peaceful place where villagers come to pray, reflect, or seek guidance.
<<travel "south" "Exit towards the village center" "Ambercross Center" 5>><<print setup.locationImageHtml("img/location/AC_Townhall.png", "Ambercross town hall")>>
A sturdy timber-and-stone building where most of the village’s official business is handled. A large central table is used for meetings and discussions, while shelves of records, maps, and notices line the walls. At the far end, the village officials conduct business from a raised desk. The hall is usually quiet outside of meetings, but villagers often come here to ask questions, report problems, or check local notices.
<<travel "south" "Exit towards the village center" "Ambercross Center" 5>><<nobr>><<set _npc = setup.getNpcById($activeHomeNpcId)>>
<<if !_npc or !setup.npcCanSleepAtHome(_npc)>>
You do not have access to that home right now.
<div class="npc-return-link"><<link "Return" "Ambercross Houses">><</link>></div>
<<else>>
<div class="npc-activity-menu npc-relationship-menu">
<div class="npc-interact-name"><<= setup.npcDisplayName(_npc) >>'s house</div>
<p>The small home is quiet, private, and familiar enough now that you no longer feel like a guest standing at the threshold.</p>
<div class="npc-action-list">
<div class="bed-actions"><<link "Sleep in bed" "NPCPartnerHomeSleep">><<set $activeHomeNpcId = _npc.id>><</link>> <<link "Change outfit" "ChangeOutfit">><<set $activeHomeNpcId = _npc.id>><<set $wardrobeReturn = "NPCHome">><</link>> <<link "Wash up" "WashUp">><<set $activeHomeNpcId = _npc.id>><<set $wardrobeReturn = "NPCHome">><</link>></div>
<<if setup.npcCurrentLocation(_npc) is "Ambercross Houses" or setup.npcCurrentLocation(_npc) is _npc.home>>
<<link "Speak with them" "NPCInteract">><<run setup.npcClearApproachInteractionBonus()>><<set $activeNpcId = _npc.id>><<set $return = "NPCHome">><</link>>
<</if>>
<<link "Leave" "Ambercross Houses">><</link>>
</div>
</div>
<</if>><</nobr>><<nobr>><<set _npc = setup.getNpcById($activeHomeNpcId)>>
<<if !_npc or !setup.npcCanSleepAtHome(_npc)>>
You do not have access to that bed right now.
<div class="npc-return-link"><<link "Return" "Ambercross Houses">><</link>></div>
<<else>>
<<set $sleepQuality = 60>>
<<set $sleepPlace = setup.npcDisplayName(_npc) + "'s bed">>
<<set $sleepReturn = "NPCHome">>
<<set $sleepPassage = "NPCPartnerHomeSleep">>
<<set $activeHomeNpcId = _npc.id>>
<<set $sleepRisk = "">>
<<include "SleepOptions_body">>
<</if>><</nobr>><<nobr>><<run setup.ensurePlayerAppearance()>>
<<if !$wardrobeReturn>><<set $wardrobeReturn = $return || "Tavernroom">><</if>>
<<set _current = setup.playerCurrentOutfit()>>
<div class="wardrobe-panel">
<h2>Change outfit</h2>
<div class="wardrobe-current">Current outfit: <b><<= _current.label >></b></div>
<div class="wardrobe-grid">
<<for _outfit range setup.playerUnlockedOutfits()>>
<<capture _outfit>>
<div class="wardrobe-card <<if _outfit.id is $c.currentOutfit>>active<</if>>">
<div class="wardrobe-portrait"><img @src="_outfit.portrait" alt=""></div>
<div>
<div class="wardrobe-name"><<= _outfit.label >></div>
<div class="wardrobe-note"><<= _outfit.note >></div>
<div class="wardrobe-tags"><<= setup.playerOutfitBonusesText(_outfit) >> | <<= setup.playerOutfitTagsText(_outfit) >></div>
<div class="wardrobe-actions">
<<if _outfit.id is $c.currentOutfit>><span class="player-choice-status">Wearing</span><<else>><<link "Wear" "ChangeOutfit">><<run setup.playerSetOutfit(_outfit.id)>><<run setup.npcRefreshAllAttraction()>><</link>><</if>>
</div>
</div>
</div>
<</capture>>
<</for>>
</div>
<div class="npc-return-link"><<link "Return" $wardrobeReturn>><</link>></div>
</div><</nobr>><<nobr>><<run setup.ensurePlayerAppearance()>>
<div class="market-shop-panel">
<h2>Market Stalls</h2>
<<if !setup.marketIsOpen()>>
<p>The stalls are closed for now. Only empty tables and tied-down canvas remain around the square.</p>
<div class="npc-return-link"><<link "Return" "Ambercross Center">><</link>></div>
<<else>>
<div class="market-shop-dialogue">
The cloth merchant gives you a quick look over, then lifts a folded sleeve from a neat stack of linen. "Nothing royal here," she says, "but clean cloth can change how folk look at you."
</div>
<<if $marketMessage>><p><em><<= $marketMessage >></em></p><<set $marketMessage = "">><</if>>
<div>
<<for _item range setup.marketOutfitStock()>>
<<capture _item>>
<div class="market-shop-row">
<div>
<div class="market-shop-name"><<= _item.label >></div>
<div class="wardrobe-note"><<= setup.playerOutfitBonusesText(_item) >> | <<= setup.playerOutfitTagsText(_item) >></div>
</div>
<div class="market-shop-cost"><<= _item.cost >> gold</div>
<div class="cheat-actions"><<link "Preview" "MarketOutfitPreview">><<set $marketPreviewOutfit = _item.id>><</link>><<if setup.playerHasOutfit(_item.id)>><span class="market-shop-owned">Owned</span><<else>><<link "Buy" "Ambercross Market">><<set _result = setup.playerBuyMarketOutfit(_item.id)>><<set $marketMessage = _result.text>><</link>><</if>></div>
</div>
<</capture>>
<</for>>
</div>
<div class="npc-return-link"><<link "Return" "Ambercross Center">><</link>></div>
<</if>>
</div><</nobr>><<nobr>><<run setup.ensurePlayerAppearance()>>
<<set _outfit = setup.playerOutfitById($marketPreviewOutfit)>>
<<set _stock = setup.marketOutfitForSale(_outfit.id)>>
<div class="market-shop-panel">
<h2><<= _outfit.label >></h2>
<div class="market-preview-card">
<div class="market-preview-portrait"><img @src="_outfit.portrait" alt=""></div>
<div>
<p><<= _outfit.note >></p>
<p><b>Cost:</b> <<= _stock ? _stock.cost : 0 >> gold<br>
<b>Bonus:</b> <<= setup.playerOutfitBonusesText(_outfit) >><br>
<b>Style:</b> <<= setup.playerOutfitTagsText(_outfit) >></p>
<div class="npc-action-list">
<<if setup.playerHasOutfit(_outfit.id)>><span class="player-choice-status">Owned</span><<else>><<link "Buy" "Ambercross Market">><<set _result = setup.playerBuyMarketOutfit(_outfit.id)>><<set $marketMessage = _result.text>><</link>><</if>>
<<link "Back" "Ambercross Market">><</link>>
</div>
</div>
</div>
</div><</nobr>><<nobr>><<if !$wardrobeReturn>><<set $wardrobeReturn = $return || "Tavernroom">><</if>>
<<set _washText = setup.playerWashUp()>>
<div class="npc-response-panel">
<p><<= _washText >></p>
<div class="npc-return-link"><<link "Return" $wardrobeReturn>><</link>></div>
</div><</nobr>><<nobr>><div class="npc-activity-panel farm-work-event-panel">
<div class="npc-interact-name">A calf in the ditch</div>
<p>The work is barely underway when a shout cuts across the yard. One of the smaller calves has slipped through a weak fence and gone down hard in the muddy ditch beyond the vegetable rows.</p>
<p>For a moment everyone talks at once. The farmer points, jaw tight. <span class="dialogue-line dialogue-male">"Do not just stand there. Get a rope under her before she breaks a leg."</span></p>
<p>You go in knee-deep, mud sucking at your boots while the frightened calf kicks and bawls. It is ugly, awkward work. You keep your voice low, hold the rope steady, and pull only when she stops fighting you. By the time she scrambles free, your arms shake from the strain and half the yard is watching.</p>
<p>The farmer says nothing at first. Then he gives one grudging nod. <span class="dialogue-line dialogue-male">"Good. You kept your head."</span></p>
</div><</nobr>><<nobr>><div class="npc-activity-panel farm-work-event-panel">
<div class="npc-interact-name">A harder look</div>
<p>The afternoon turns sharp and bright. You finish one task, then another, sweat drying salt-stiff at your collar while the farmhands trade glances to see if you will complain.</p>
<p>You do not. You take the next tool before anyone can ask twice.</p>
<p>Near the barn door, the farmer watches you with his thumbs hooked in his belt. <span class="dialogue-line dialogue-male">"You are not fast yet,"</span> he says. <span class="dialogue-line dialogue-male">"But you listen, and you finish. That matters more than swagger."</span></p>
<p>The praise is rough, but it lands warm. The next chore feels a little less like begging for a place and a little more like earning one.</p>
</div><</nobr>><<nobr>><<set _favor = $pendingFarmWorkFavor>><<set _npc = _favor ? setup.getNpcById(_favor.npcId) : null>>
<div class="npc-activity-panel farm-work-event-panel">
<div class="npc-interact-name">An intimate interruption</div>
<<if !_favor or !_npc>>
<p>The interruption passes before it can become anything.</p>
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
<div class="farm-trial-result-link">[[Finish work|Ambercross Farmer's house]]</div>
<<else>>
<p>You are wiping sweat from your neck when <<= setup.npcDisplayName(_npc) >> drifts close enough that the rest of the yard seems to fall behind him. He pretends to inspect the work, but his eyes stay on you too long.</p>
<p><span class="dialogue-line dialogue-male">"You work hard,"</span> he says, voice low enough not to carry. <span class="dialogue-line dialogue-male">"Hard enough to make a man wonder what else you can do with that much focus."</span></p>
<p>His gaze cuts toward the barn shadows, then back to you. <span class="dialogue-line dialogue-male">"Give me <<= _favor.label >>. Just something intimate. Then we both get back before anyone asks questions."</span></p>
<div class="npc-activity-choice-list">
<div><<link "Accept">><<set $lastFarmWorkFavorResult = null>><<set _accepted = setup.farmWorkAcceptFavor()>><<if $lastFarmWorkFavorResult and $lastFarmWorkFavorResult.success>><<goto "FarmWorkTameFavorResult">><<else>><<goto "NPCEncounter">><</if>><</link>></div>
<div><<link "Tease him and keep working" "FarmWorkNpcFavorTease">><</link>></div>
<div><<link "Refuse plainly" "FarmWorkNpcFavorRefuse">><</link>></div>
</div>
<</if>>
</div><</nobr>><<nobr>><div class="npc-activity-panel farm-work-event-panel">
<<if !$lastFarmWorkFavorResult>>
<p>The moment passes.</p>
<<else>>
<div><<= $lastFarmWorkFavorResult.text >></div>
<</if>>
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
<div class="farm-trial-result-link">[[Finish work|Ambercross Farmer's house]]</div>
</div><</nobr>><<nobr>><<set _favor = $pendingFarmWorkFavor>><<set _npc = _favor ? setup.getNpcById(_favor.npcId) : null>>
<div class="npc-activity-panel farm-work-event-panel">
<p><<if _npc>>You let <<= setup.npcDisplayName(_npc) >> wait on your answer while you bend back to the work. <span class="dialogue-line dialogue-player">"Maybe if you ask sweeter another day,"</span> you say, smiling just enough to make it worse.<<else>>You let the offer hang unanswered and return to work.<</if>></p>
<p>The refusal is not cold enough to kill the heat, only sharp enough to make him remember it.</p>
<<if _npc>><<run setup.npcArousalChange(_npc, 4, "farm_favor_tease", { source: "farmwork", location: "Ambercross Farmer's house" })>><<run setup.npcApplyDailyRelationshipGain(_npc, "affection", 0.25)>><</if>><<set $pendingFarmWorkFavor = null>>
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
<<print setup.farmWorkBonusHtml({ charisma: 0.06, carnality: 0.04 }, "Reaction bonus")>>
<div class="farm-trial-result-link">[[Finish work|Ambercross Farmer's house]]</div>
</div><</nobr>><<nobr>><<set _favor = $pendingFarmWorkFavor>><<set _npc = _favor ? setup.getNpcById(_favor.npcId) : null>>
<div class="npc-activity-panel farm-work-event-panel">
<p>You meet the offer directly and shake your head. <span class="dialogue-line dialogue-player">"No. I am here to work."</span></p>
<p><<if _npc>><<= setup.npcDisplayName(_npc) >> takes the answer with a tight breath and a look that lingers too long before he steps away.<<else>>The farm settles back around you, rough and ordinary again.<</if>></p>
<<run setup.farmWorkDeclineFavor()>>
<<print setup.farmWorkRewardHtml($lastFarmWorkResult)>>
<div class="farm-trial-result-link">[[Finish work|Ambercross Farmer's house]]</div>
</div><</nobr>><<nobr>><div class="npc-activity-panel farm-work-event-panel">
<p>The farmer sends you along the west fence with a bundle of twine and a warning that the goats keep finding new places to escape. The rails look fine at first glance, but the knots tell another story.</p>
<p>You move post by post, testing each tie, counting missing stakes, and marking the weak spots with bits of straw. By the end, you have found three gaps nobody noticed from the yard.</p>
<p>A farmhand comes to check your work and scratches the back of his neck. <span class="dialogue-line dialogue-male">"Would have chased goats half the afternoon if you missed those."</span></p>
</div><</nobr>><<nobr>><div class="npc-activity-panel farm-work-event-panel">
<p>A skittish goat gets loose near the drying racks, hopping between baskets like the whole farm exists to amuse her. The farmer points after it. <span class="dialogue-line dialogue-male">"Catch her before she ruins the herbs."</span></p>
<p>You slow your steps, soften your voice, and ease closer with a handful of oats. The goat watches you suspiciously, then noses your palm and lets you loop the rope around her neck.</p>
<p>The farmhands expected shouting and chasing. Instead, you lead her back calm as you please, earning a few surprised looks and one grudging smile.</p>
</div><</nobr>><<nobr>><div class="npc-activity-panel farm-work-event-panel">
<p>The herb racks need turning before the afternoon heat spoils the leaves. It sounds easy until you are carrying trays back and forth between shade and sun, careful not to crush anything under your fingers.</p>
<p>The scent clings to you: mint, bitter green stems, and the sharp sweetness of drying flowers. You work steadily, learning which leaves need air and which need shelter.</p>
<p>By the time the racks are set right, your hands smell like the field and your legs have earned the short walk back to the yard.</p>
</div><</nobr>>