JavaScript is required. Please enable it to continue.
Your browser lacks required capabilities. Please upgrade it or switch to another to continue.
Loading…
/* Hold all the regular Inits while we test them separately to see which one is breaking */ /* Flag for test purposes */ <<set $isTesting to false>> <<set $isNpcTesting to false>> <<set $isHarlotTesting to false>> /* Initialise player */ <<include [[PlayerInit]]>> /* Other pieces */ <<include [[Init New Game Stats]]>>
/* Initialise player stats */ <<set $player to { baseStr: 0, baseAgi: 0, baseDex: 0, baseInt: 0, baseWill: 0, baseConst: 0, currStr: 0, currAgi: 0, currDex: 0, currInt: 0, currWill: 0, currConst: 0, maxSemenCount: 10, semenCount: 10, money: 0, mulliganTokens: 0, charms: [], hasVision: false, roomScores: [], factionAffinities: [0,0,0,0,0,0,0,0], maxFactionAffinities: [], potionResistance: 3, potionEffects: [], ailments: [], knownAilments: [] }>> /* semen change stats */ <<set $semenChange to 0>> <<set $isOutOfSemen to false>>
/* Reset stats after every game over. (In theory - might need more thorough testing for some variables) */ /* Initialise NPCs */ <<include [[NpcInit]]>> <<include [[HouseInit]]>> <<include [[HarlotsInit]]>>
/* Initialise all the NPCs */ <<set $npcMadam to { name: "The Madam", portrait: "P_Madam" }>> <<set $npcMoney to { name: "The Portly Gentleman", portrait: "P_Money" }>> <<set $npcGossip to { name: "The Elegant Woman", portrait: "P_Gossip" }>> <<set $npcNurse to { name: "Nurse Honey", portrait: "P_Nurse" }>> <<set $npcPotion to { name: "The Doctoress", portrait: "P_Potion" }>> <<set $npcCharm to { name: "The Buxom Lolibaba", portrait: "P_Charm" }>> <<set $npcBarman to { name: "The Handsome Barman", portrait: "P_Barman" }>> <<set $allNpcs to [ $npcMadam, $npcBarman, $npcGossip, $npcPotion, $npcCharm, $npcNurse, $npcMoney ]>>
/* algorithm to give more rounded stats */ /* total number of pts to distribute */ <<set _pts to 12>> <<set $str to 1>> <<set $agi to 1>> <<set $dex to 1>> <<set $con to 1>> <<set $int to 1>> <<set $wil to 1>> <<for _p to 0; _p lt _pts; _p++>> /* generate random number between 1 and 6 */ <<set _rng to random(1,6)>> <<switch _rng>> <<case 1>> <<set $str += 1>> <<case 2>> <<set $agi += 1>> <<case 3>> <<set $dex += 1>> <<case 4>> <<set $con += 1>> <<case 5>> <<set $int += 1>> <<case 6>> <<set $wil += 1>> <</switch>> <</for>> /* Clean-up for stats going above 5 */ <<if $str gt 5>> <<set $str to 5>> <</if>> <<if $agi gt 5>> <<set $agi to 5>> <</if>> <<if $dex gt 5>> <<set $dex to 5>> <</if>> <<if $int gt 5>> <<set $int to 5>> <</if>> <<if $con gt 5>> <<set $con to 5>> <</if>> <<if $wil gt 5>> <<set $wil to 5>> <</if>>
/* Create a new player */ /* Note: Assumes variables are set beforehand */ <<set $player to { baseStr: $str, baseAgi: $agi, baseDex: $dex, baseInt: $int, baseWill: $wil, baseConst: $con, currStr: $str, currAgi: $agi, currDex: $dex, currInt: $int, currWill: $wil, currConst: $con, baseIsSubmissive: $isSub, baseIsSlutty: $isSlut, baseIsSerious: $isSerious, baseIsCautious: $isCautious, baseIsBlunt: $isBlunt, baseIsGloomy: $isGloomy, currIsSubmissive: $isSub, currIsSlutty: $isSlut, currIsSerious: $isSerious, currIsCautious: $isCautious, currIsBlunt: $isBlunt, currIsGloomy: $isGloomy, maxSemenCount: 10, semenCount: 10, money: 0, mulliganTokens: 0, charms: [], hasVision: false, roomScores: [], factionAffinities: [0,0,0,0,0,0,0,0], maxFactionAffinities: [], potionResistance: 3, potionEffects: [], ailments: [], knownAilments: [] }>>
<<include [[Create Player Disposition Stats: Random]]>> <<include [[Accelerated Start: Set Dispositions]]>>
<<include [[Set Dispositions]]>>
<<set $player.baseIsSubmissive to $isSub>> <<set $player.currIsSubmissive to $isSub>> <<set $player.baseIsSlutty to $isSlut>> <<set $player.currIsSlutty to $isSlut>> <<set $player.baseIsSerious to $isSerious>> <<set $player.currIsSerious to $isSerious>> <<set $player.baseIsCautious to $isCautious>> <<set $player.currIsCautious to $isCautious>> <<set $player.baseIsBlunt to $isBlunt>> <<set $player.currIsBlunt to $isBlunt>> <<set $player.baseIsGloomy to $isGloomy>> <<set $player.currIsGloomy to $isGloomy>> <<include [[Unset Disposition Stats]]>>
/* for after we've assigned them to player */ <<unset $isSub>> <<unset $isSlut>> <<unset $isSerious>> <<unset $isCautious>> <<unset $isBlunt>> <<unset $isGloomy>>
[["Talk to " + $npcBarman.name + "."->NPC Barman]] [["Talk to " + $npcMadam.name + "."->NPC Madam]] [["Talk to " + $npcGossip.name + "."->NPC Gossip]] [["Talk to " + $npcPotion.name + "."->NPC Potion]] [["Talk to " + $npcCharm.name + "."->NPC Charm]] [["Talk to " + $npcNurse.name + "."->NPC Nurse]] [["Talk to " + $npcMoney.name + "."->NPC Money]] [[Go to the stage.->Stage]]
<<set $player.location to 1>> <<set $npcsForArt to [1]>> <<include [[Set Background Image]]>> <div class="text-display"> <div class="body-text"> With his blond curls, blue eyes and strong jawline, $npcBarman.name is extremely good-looking. He also looks far sadder than anyone gifted with those movie-idol looks has a right to be. What you initially took to be derisive pity at the lesser men 'paying for it' now reveals itself to be flickers of genuine concern.<br> <br> "You seem different to the others," he says.<br> <br> In what way, you query.<br> <br> "You don't look like you're here of your own volition," he says.<br> <br> You tell him how you ended up here. He nods sympathetically.<br> <br> "That would explain it," he says. "It means you might have a chance."<br> <br> //Chance?//<br> <br> "Most of the others are here of their own choice. They're blinded by their excitement at the pleasures available to them. I can't get through to them to warn them what this place really is."<br> <br> Which is?<br> <br> "A trap."<br> <br> </div> <div class="options-text"> <<include [[Next Passage Options]]>> </div> </div>
<<set $player.location to 0>> <<set $npcsForArt to [0]>> <<include [[Set Background Image]]>> <div class="text-display"> <div class="body-text"> $npcMadam.name is standing by her usual spot next to the presentation stage. You wait for her to finish chatting with one of the club girls and approach her.<br> <br> She notices you and greets you with a friendly smile.<br> <br> "Hello, my dear. What can I do for you?"<br> <br> </div> <div class="options-text"> <<include [[Next Passage Options]]>> </div> </div>
<<set $player.location to 2>> <<set $npcsForArt to [2]>> <<include [[Set Background Image]]>> <div class="text-display"> <div class="body-text"> You approach $npcGossip.name. She puffs on her long cigarette holder. She doesn't even look at you as she places an empty cocktail glass on the wooden counter.<br> <br> "Ah perfect timing, darling," she says, talking to you while not looking at you. "I could do with another drink."<br> <br> </div> <div class="options-text"> <<include [[Next Passage Options]]>> </div> </div>
<<set $player.location to 3>> <<set $npcsForArt to [3]>> <<include [[Set Background Image]]>> <div class="text-display"> <div class="body-text"> You go over to the table where $npcBarman.name said you'd find $npcPotion.name. It's tucked away by the wall around the other side of the bar. There is an unassuming door to the left of the table that looks like it leads to restrooms or maybe an office. Sitting at the table is a woman with a shock of white hair. Currently her head is down and she seems engrossed with inserting a cucumber into a puffy sleeve made out of translucent blue jelly. The transparent blue tube bulges up and sucks on the cucumber in a way you find queerly erotic.<br> <br> You assume this is $npcPotion.name. She is so engrossed in what she's doing you have to tap the surface of the table to get her attention.<br> <br> The woman looks up and reveals a surprisingly youthful face beneath her white hair. Her skin is pale and smooth. At first you think she's wearing spectacles, but on closer inspection realise she's sporting an odd pair of goggles. Her ice-blue eyes are magnified by the lenses. She looks at you blearily at first and then her pretty face cracks in a broad smile.<br> <br> "Ah, a customer. Step right this way."<br> <br> She gets up from the table, revealing an unexpectedly attractive figure. She's tall and leggy. And while she's wearing a lab coat, it looks like it was tailored by a top fashion designer with the aim of sending it down the catwalk.<br> <br> The same cannot be said for her hair. That sticks up in an uncontrolled frizz as if she's stuck her finger in a power socket.<br> <br> </div> <div class="options-text"> <<include [[Next Passage Options]]>> </div> </div>
<<set $player.location to 4>> <<set $npcsForArt to [4]>> <<include [[Set Background Image]]>> <div class="text-display"> <div class="body-text"> You follow $npcBarman.name's directions to a quiet area separated from the main bar room by a short corridor. It's little more than a hallway expanded out to include a table and some decadent armchairs. The corners are decorated with luxuriant potted plants and the walls are adorned with large antique mirrors.<br> <br> At first you think it's a child sitting at the table, a child in a Halloween costume complete with an oversized black witch's hat with a floppy peak. She sits on a high stool to enable her to reach the tabletop.<br> <br> Then you notice her bosom. It's large and very curvy. Her black satin dress has a neckline cut low enough to expose the deep canyon of her cleavage. Her big tits rest on the top of the table while she lays out cards.<br> <br> The witch notices you and looks up.<br> <br> "Hello, dearie," she says. "Your arrival was foretold. Come sit at my table."<br> <br> You do a doubletake at her face. It looks smooth, innocent and childlike, but she has the voice of an old lady and her eyes are older still. They look like beady black marbles as she smiles at you.<br> <br> This must be $npcCharm.name $npcBarman.name told you about.<br> <br> </div> <div class="options-text"> <<include [[Next Passage Options]]>> </div> </div>
<<set $player.location to 5>> <<set $npcsForArt to [5]>> <<include [[Set Background Image]]>> <div class="text-display"> <div class="body-text"> Following <<print $npcBarman.name + "'s">> directions, you enter a small corridor leading off from the bar. The hallway continues past the toilets to a dead end with a door on the left. The door has a glass window with a big red cross on it. You walk through into a small medical office with a nurse... of sorts.<br> <br> She's wearing a nurse's uniform, but one made out of glossy white latex that clings very tightly to her curves... her rather noticeable and eye-popping curves. The nurse has a stunningly voluptuous figure. She wears an old-fashioned nurse's cap with a big red cross on it, also made out of the same glossy white latex. Her long silky blonde hair spills out beneath it. She looks human enough, until you get to her eyes. They are pure white and without pupil or iris.<br> <br> "Hello," she says. "I'm <<print $npcNurse.name + ".">> I'm the medical practitioner of this establishment. Is there anything that ails you?"<br> <br> You pause, slightly unsure of what you can ask for.<br> <br> <<print $npcNurse.name + "'s">> rubber outfit is clearly a sexy, fetishized version of a nurse's uniform. Outside of the House you'd never mistake her for a real medical person, but in the House... who knows. Maybe she is the actual nurse and would get offended if you mixed her up with <<print $npcMadam.name + "'s">> 'working' girls.<br> <br> $npcNurse.name looks you over.<br> <br> </div> <div class="options-text"> <<include [[Next Passage Options]]>> </div> </div>
<<set $player.location to 6>> <<set $npcsForArt to [6]>> <<include [[Set Background Image]]>> <div class="text-display"> <div class="body-text"> $npcMoney.name wears a bowler hat and pinstripe suit. He has quite an impressive walrus moustache. He also looks slightly anachronistic, like a Victorian banker, or rather, someone playing the role of a Victorian banker in a stageplay. Seeing you approach, he shoos away the other people at his table and makes room.<br> <br> "Hello," he says. "I couldn't help but notice you've just come back from the... ahem... ladies' quarters. I don't suppose you could furnish me with the full... harrumph... details of your encounter. I'm prepared to pay for this information."<br> <br> He splays out some <<print $currencyName + "s">>, holding them to the table beneath pudgy fingers.<br> <br> You weigh him up, trying to work out why he'd want to pay for these details.<br> <br> What will you say to him?<br> <br> </div> <div class="options-text"> <<include [[Next Passage Options]]>> </div> </div>
<<set $player.location to 9>> <<set $npcsForArt to [0]>> <<include [[Set Background Image]]>> <div class="text-display"> <div class="body-text"> You have the choice of three gorgeous girls.<br> <br> </div> <div class="options-text"> <<include [[Next Passage Options]]>> [[Pick a girl and go to her bedroom.->Bedroom]] </div> </div>
<<set $player.location to 10>> <<set $npcsForArt to [100]>> <<include [[Set Background Image]]>> <<include [[Sapoonis: Scenario]]>>
<<set $player.location to 8>> <<include [[Set Background Image]]>> <<set $npcsForArt to []>> <<set $currentRound += 1>> <div class="text-display"> <div class="body-text"> The bar is located in the centre and the area around it is studded with circular tables. Other seating consists of sumptuously padded leather bench booths against the walls. Exotic waitresses flit from table to table. Their skimpy uniforms continue the devilish theme with horns and devil tails instead of Playboy bunny ears and puffs.<br> <br> It's a busy night. The room is full of men chatting to pretty women wearing little more than lingerie. The men are of all sorts. Some old, some young. Some rich with fancy suits, others casual in T-shirts and jeans. Some handsome, some not.<br> <br> In contrast, the women are all universally stunning. They are varied in the same way a Miss World contest is varied. They seem to come from all nationalities, while also being perfect-10 representatives of their various nationalities.<br> <br> $npcMadam.name ushers you over to a large secondary stage in the left corner.<br> <br> </div> <div class="options-text"> <<include [[Next Passage Options]]>> </div> </div>
© M. E. Hydra
CSS Testing
The House of Hellish Harlots
/* We include the passage displaying all the player stats here */ <<include [[Display Player Stats On Sidebar]]>>
''Your Stats:''<br> <<include [[Display Semen Count]]>> <<if $player.currIsSubmissive>> <<set _isSubText to "Submissive">> <<else>> <<set _isSubText to "Dominant">> <</if>> <<if $player.currIsSlutty>> <<set _isSlutText to "Slutty">> <<else>> <<set _isSlutText to "Romantic">> <</if>> <<if $player.currIsSerious>> <<set _isSeriousText to "Serious">> <<else>> <<set _isSeriousText to "Humorous">> <</if>> <<if $player.currIsCautious>> <<set _isCautiousText to "Cautious">> <<else>> <<set _isCautiousText to "Impulsive">> <</if>> <<if $player.currIsBlunt>> <<set _isBluntText to "Blunt">> <<else>> <<set _isBluntText to "Tactful">> <</if>> <<if $player.currIsGloomy>> <<set _isGloomyText to "Gloomy">> <<else>> <<set _isGloomyText to "Cheerful">> <</if>> <table style="width:100%"> <tr> <td style="text-align:left">Strength:</td> <td style="text-align:right">$player.currStr</td> </tr> <tr> <td style="text-align:left">Agility:</td> <td style="text-align:right">$player.currAgi</td> </tr> <tr> <td style="text-align:left">Dexterity:</td> <td style="text-align:right">$player.currDex</td> </tr> <tr> <td style="text-align:left">Intelligence:</td> <td style="text-align:right">$player.currInt</td> </tr> <tr> <td style="text-align:left">Willpower:</td> <td style="text-align:right">$player.currWill</td> </tr> <tr> <td style="text-align:left">Constitution:</td> <td style="text-align:right">$player.currConst</td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td style="text-align:left">_isSubText</td> </tr> <tr> <td style="text-align:left">_isSlutText</td> </tr> <tr> <td style="text-align:left">_isSeriousText</td> </tr> <tr> <td style="text-align:left">_isCautiousText</td> </tr> <tr> <td style="text-align:left">_isBluntText</td> </tr> <tr> <td style="text-align:left">_isGloomyText</td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td style="text-align:left">Semen:</td> <td style="text-align:right">_semenText</td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td style="text-align:left"><<print $currencyName + "s:">></td> <td style="text-align:right">$player.money</td> </tr> <tr> <td style="text-align:left"><<print $mulliganToken.name + "s:">></td> <td style="text-align:right">$player.mulliganTokens</td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td style="text-align:left">CHARMS</td> </tr> <<for _c to 0; _c lt $player.charms.length; _c++>> <<set _cid to $player.charms[_c]>> <tr> <td style="text-align:left">$allCharms[_cid].name</td> </tr> <</for>> </table>
<<if $isTesting or $player.charms.includes(1)>> <<set _semenText to $player.semenCount>> <<else>> <<if $player.semenCount gt 8>> <<set _semenText to "Floods">> <<elseif $player.semenCount gt 5>> <<set _semenText to "Gushes">> <<elseif $player.semenCount gt 2>> <<set _semenText to "Spurts">> <<else>> <<set _semenText to "Dribbles">> <</if>> <</if>>
/* Do the behind-scenes stuff on startup here */ <<set $isOnline to true>> <<set $npcsForArt to []>> <<set $currentRound to 0>> <<set $isGameOver to false>> <<include [[Init New Game Stats]]>> <<include [[Create Player Physical Stats: Distributed]]>> <<include [[Create Player]]>> <<include [[Unset Physical Stats]]>> <<include [[Accelerated Start: Random Dispositions]]>> <<set $player.money to 8>> <<set $player.mulliganTokens to 1>> <<set $player.location to 1>> <<include [[House]]>> /* <<include [[Sapoonis: Scenario]]>> */
<<set $player.location to 7>> <<include [[Set Background Image]]>> <<set $npcsForArt to [0,1,2]>> <div class="text-display"> <div class="body-text"> After a short wait, the door is opened by an attractive, if unusual, woman.<br> <br> "Hello, young gentlemen. This is the House of Hellish Harlots. We offer devilishly decadent pleasures for the discerning and adventurous. I am $npcMadam.name. What desires would you like to indulge on this lovely evening?"<br> <br> $npcMadam.name looks... distinctive. She's very tall and made to look taller still with an elaborate coiffure that wouldn't have looked out of place during the days of the French aristocracy. Her dress is also more costume than modern fashion, being a voluminous velvet ballgown. Her purple-black bodice can barely contain her bountiful chest, giving her the 'heaving bosoms' much loved by racier period dramas.<br> <br> Andy in particular can't take his eyes off her creamy-white curves.<br> <br> It doesn't seem to bother $npcMadam.name. Her face is sensual and vulpine. Predatory, almost. You find it hard to place her age. Her eyes speak of a lot of experience in immoral matters, yet she still looks in the prime of her womanhood.<br> <br> "A bit of this and a bit of that," Brian says. "Know what I mean." He gives her a saucy wink.<br> <br> "I know exactly what you mean," $npcMadam.name says. She flutters an antique fan coyly in front of her mouth. Her eyes are less coy. "Come inside."<br> <br> She beckons you through the wooden door. Sounds of revelry can be heard coming from inside. You've barely entered before Brian and the others are whisked away by stunningly attractive young women wearing little more than lingerie.<br> <br> Definitely high class.<br> <br> You're left standing in the small entrance hallway with $npcMadam.name.<br> <br> "You seem hesitant, dear," she says.<br> <br> </div> <div class="options-text"> [[Enter the Bar.->Bar Interior]] </div> </div>
<<set $isSub to false>> <<set $isSlut to false>> <<set $isSerious to false>> <<set $isCautious to false>> <<set $isBlunt to false>> <<set $isGloomy to false>> /* submissive - dominant */ <<set _rng to random(1)>> <<if _rng eq 0>> <<set $isSub to true>> <</if>> /* slutty - romantic */ <<set _rng to random(1)>> <<if _rng eq 0>> <<set $isSlut to true>> <</if>> /* serious - humorous */ <<set _rng to random(1)>> <<if _rng eq 0>> <<set $isSerious to true>> <</if>> /* cautious - impulsive */ <<set _rng to random(1)>> <<if _rng eq 0>> <<set $isCautious to true>> <</if>> /* blunt - tactful */ <<set _rng to random(1)>> <<if _rng eq 0>> <<set $isBlunt to true>> <</if>> /* gloomy - cheerful */ <<set _rng to random(1)>> <<if _rng eq 0>> <<set $isGloomy to true>> <</if>>
/* for after we've assigned stats to player */ <<unset $str>> <<unset $agi>> <<unset $dex>> <<unset $con>> <<unset $int>> <<unset $wil>>
<<set $currencyName to "Coin">> <<set $mulliganToken to { name: "Mulligan Token" }>> <<if $isOnline>> <<set $imgLoc to "https:\/\/houseofhellishharlots.com\/images\/">> <<else>> <<set $imgLoc to "images\/">> <</if>> <<set $allLocations to [ { /* madam */ backgroundSrc: "BG_Madam.jpg", npc: 0 }, { /* barman */ backgroundSrc: "BG_Barman.jpg", npc: 1 }, { /* gossip */ backgroundSrc: "BG_Gossip.jpg", npc: 2 }, { /* potion */ backgroundSrc: "BG_Potion.jpg", npc: 3 }, { /* charm */ backgroundSrc: "BG_Charm.jpg", npc: 4 }, { /* nurse */ backgroundSrc: "BG_Nurse.jpg", npc: 5 }, { /* money */ backgroundSrc: "BG_Money.jpg", npc: 6 }, { /* house */ backgroundSrc: "BG_House.jpg", npc: 0 }, { /* bar interior */ backgroundSrc: "BG_BarInterior.jpg", npc: -1 }, { /* stage */ backgroundSrc: "BG_Stage.jpg", npc: 0 }, { /* bedroom */ backgroundSrc: "BG_Bedroom.jpg", npc: 100 } ]>>
/* Sapoonismenee Nerei */ <<set $hi to 0>> <<set $allHarlots[$hi] to { number: $hi, name: "Sapoonismenee Nerei", shortDescription: "a busty woman with olive skin and wet black hair tied up in a complicated tangle of curls. She's wearing a white silk robe decorated with prints of cresting waves.", faction: 3, minRound: 1, maxRound: 12, isRepeatable: false, hasBeenVisited: false, gifts: [12, 4], affection: 0, introductionLink: "Sapoonis: Introduction", ifNotChosenLink: "Default Harlot: If Not Chosen", ifMulligannedLink: "Default Harlot: If Mulliganned", socialisingLink: "Sapoonis: Socialising", npcGossipLink: "Sapoonis: NPC Gossip", gossipGossip: [], popNpcGossipLink: "Sapoonis: Populate Gossip Gossip", harlotGossip: [], popHarlotGossipLink: "Sapoonis: Populate Harlot Gossip", scenarioLink: "Sapoonis: Scenario", sellExpLink: "Default Harlot: Sell Exp", sellExpIntroLink: "Default Harlot: Sell Exp Intro", sellExpBodyLink: "Sapoonis: Sell Exp Body", sellExpFeedbackLink: "Sapoonis: Sell Exp Feedback" }>>
/* Sapoonismenee Nerei */ <<set $isFactionIncrease to false>> /* create score array */ <<set $player.roomScores[$currentRound - 1] to { round: $currentRound, harlotNumber: $hi, scoreArray: [ [1,false,false], /* oil or soap gift */ [1,false,false], /* leave early */ [1,false,false], /* good breast massage */ [1,false,false], /* regular sex */ [3,false,false] /* bonus sex */ ] }>> <div class="text-display"> <div class="body-text"> Sapoonis's room looks more like a bathroom than a bedroom. The floor, walls and ceiling are covered in pristine white tiles. A large bath takes up most of one corner. Lying next to it on the floor is a silver inflatable air mattress. The walls are adorned with various paintings depicting ocean scenes of crashing waves. Shelves are filled with various exotic bottles.<br> <br> Sapoonis has already undressed and slipped into the bath. Her patterned robe hangs from the corner of a folding silk screen, also covered in prints of cresting waves. Sapoonis has used a liberal amount of bubble bath and only her head is visible above a thick white froth.<br> <br> "Ah, that feels so much better," she sighs.<br> <br> She lifts a hand and beckons you over.<br> <br> "Don't be shy. Come in."<br> <br> You walk over to her, carrying your gift.<br> <br> "What do you have there for me?"<br> <br> </div> <div class="options-text"> [[Present gift.->Sapoonis: Gift]] </div> </div>
<div class="text-display"> <div class="body-text"> You present her with the Gift.<br> <br> <<include [[Sapoonis: Gift: Exotic Soap]]>> Sapoonis sits up until her big round boobs emerge from the soapy froth. You can't see much of them as they're covered in a thick layer of creamy lather.<br> <br> "The gifts are nice, but there's something better you can do for me. My boobs are feeling a little tender. It's that robe. It always chafes against my sensitive skin. Darling, can you give them a nice massage for me."<br> <br> She jiggles her chest, sending waves sloshing against the side of the bed.<br> <br> "And you'd get to touch my lovely breasts, which I think you'll like."<br> <br> You think you would too. Even covered with a lather of soap suds as they are, you can see she has a lovely pair.<br> <br> What will you do?<br> <br> </div> <div class="options-text"> [[Massage her breasts?->Sapoonis: Breast Massage]] [[Refuse?->Sapoonis: Breast Massage: Refuse]] </div> </div>
<div class="text-display"> <div class="body-text"> You roll up your sleeves and press your hands into the soapy froth covering Sapoonis's breasts. Underneath, they feel amazing – warm, big, and extremely malleable. You give them an experimental squeeze and feel your fingers press into pillowy soft flesh. You cup them, feeling her nipples rub against your palms, and gently knead and press her tits together. Soap bubbles pop and crackle between your fingers as you massage her boobs.<br> <br> <<if $player.currDex lt 3>> <<include [[Sapoonis: Breast Massage: Bad]]>> <<elseif $player.currDex gt 4>> <<include [[Sapoonis: Breast Massage: Good]]>> <<else>> <<include [[Sapoonis: Breast Massage: Okay]]>> <</if>> </div> <div class="options-text"> _optionsText </div> </div>
<div class="text-display"> <div class="body-text"> Sapoonis's expression hardens. The blue of her eyes switches from sun-drenched seas to frozen grey oceans.<br> <br> "What, you refuse?"<br> <br> She stands up and jiggles her big tits. Water and clots of foam spill from her naked body.<br> <br> "Are these not good enough for you?"<br> <br> Her cold rage grows.<br> <br> "Well, if they're not good enough for you to touch, you won't get to feel their softness rubbing all over your naked flesh. Get out."<br> <br> You stand there, temporarily frozen by her sudden rage.<br> <br> "Get out!" she screams, splashing you with water from the bath for good measure.<br> <br> You decide it better to retreat and back away to the exit.<br> <br> </div> <div class="options-text"> [[You leave.->Bar Interior]] </div> </div>
"No, no," Sapoonis complains. "Not like that."<br> <br> You pause and try to work out what you were doing wrong.<br> <br> "Don't stop," Sapoonis says. Her blue eyes are icy like arctic seas. "Just get it right."<br> <br> You get back to kneading and squeezing her boobs. More gently this time.<br> <br> It's still not good enough.<br> <br> "Oh stop it, you unskilled oaf!" Sapoonis yells at you. "You're useless. You're a clumsy ox with hooves for hands."<br> <br> Cold rage radiates from her.<br> <br> <<include [[Sapoonis: Horror End]]>>
Sapoonis closes her eyes and murmurs in pleasure.<br> <br> "Oh yes, more like that, please."<br> <br> You continue to fondle and squeeze her luscious breasts. Is it your imagination, or is there more foam covering them than before? It's almost like it's bubbling up from her pores. It also feels wonderful to the touch. Your skin tingles pleasantly as the soap bubbles pop and crackle between your fingers.<br> <br> "Have you had practice at this?" Sapoonis asks you.<br> <br> She smiles.<br> <br> "Or maybe you're just good with your hands."<br> <br> She luxuriates in the bath. You luxuriate in the sensations of letting your fingers explore her soapy boobs.<br> <br> "Mmm, as much I could enjoy this all day, I'm supposed to be the one pampering you," Sapoonis says.<br> <br> She shoos your hands away and stands up. Water and foam cascades from her naked body.<br> <br> "Take your clothes off and lie down on that," she gestures down at the airbed. "It's my turn to give you a good pampering."<br> <br> <<set $allHarlots[$hi].affection += 3>> <<set _optionsText to "[[Better do as she says.->Sapoonis: Soapy Massage]]">>
"That's nice," Sapoonis says. "Not the most skilled of touches, but pleasant enough. With a little more practice I'm sure you'd be most adequate."<br> <br> She lets you fondle and squeeze her luscious breasts for a little while longer, before motioning you to stop. She stands up and water and foam cascades from her naked body.<br> <br> "Now, I'll show you how it's done. Take your clothes off and lie down on that," she gestures down at the airbed. "It's my turn to massage you."<br> <br> <<set _optionsText to "[[Better do as she says.->Sapoonis: Soapy Massage]]">>
And then her rage dissipates just as quickly as it blustered up. She looks at you and smiles.<br> <br> "I'm sorry. It's been a trying day. I can see you're trying your best."<br> <br> She stands up and water and foam cascades from her naked body.<br> <br> "You're just a little tense. That's okay. Take your clothes off and lie down on that," she gestures down at the airbed. "I'll sort that tension out right away."<br> <br> <<set _optionsText to "[[Better do as she says.->Sapoonis: Soapy Massage]]">>
You try to pull your hand away and suddenly realise you can't. They're stuck to her bosom as if glued. More foam wells up between your fingers and covers your hands. You don't know where it's coming from. It's as if Sapoonis is exuding it from the pores of her skin.<br> <br> You feel a tingling sensation in your fingers that grows into burning pain and spreads out to encompass your whole hand. The foam starts to gain a pinkish tinge.<br> <br> "Hands as clumsy as yours do not deserve to touch female flesh," Sapoonis says coldly.<br> <br> The pain becomes excruciating. It feels like thousands of ants gnawing away at your flesh. You drop to your knees. You try desperately to pull your hands out of the agonising foam.<br> <br> Then, just when you think you can bear it no longer, something gives and you pull your hands away.<br> <br> Not your hands. They're //gone//, dissolved to mush by the caustic foam covering Sapoonis's tits. You collapse and curl up on the floor. Sapoonis watches dispassionately as blood from your severed stumps spreads across the pristine white tiles in a red pool. You bleed out beneath her arctic gaze.<br> <br> ''HORROR END''<br> <br> <<set $isGameOver to true>> <<set _optionsText to "[[Continue.->Intro: Begin New Game]]">>
<div class="text-display"> <div class="body-text"> You take your clothes off and hang them over the top of the screen. Sapoonis takes a wooden bowl and pours soapy water onto the airbed.<br> <br> "Lie on your front," she says.<br> <br> You lie facedown on the inflatable mattress. The soapy water has made the surface slippery, but the water is warm enough for it to not feel unpleasant.<br> <br> You feel a weight settle on buttocks and lower back as Sapoonis sits astride you. She pours even more soapy water over your back. The temperature is just right.<br> <br> Sapoonis bends over and starts to wash your back, using her lovely big round breasts as sponges. You feel them slide all over you. She slithers up and down your body. You feel the nubs of her nipples, first against your buttocks and then tracing lazy circles around your shoulder blades.<br> <br> "This is a dirty house," Sapoonis says. "Let's get you clean."<br> <br> She turns over and starts rubbing the luscious swell of her ass up and down your body. She turns back over and starts using her boobs again. All the time lubricated with a creamy froth of soap suds.<br> <br> "Get you relaxed," she whispers.<br> <br> She slides up and rests her big boobs on either side of your head. They feel like big soft pillows. Foamy water squelches out from beneath your chest as her weight pushes your upper half down into the airbed.<br> <br> "Get you turned on."<br> <br> Her hand slithers down between your legs and fondles your cock and balls.<br> <br> "Turn over," she whispers in your ear.<br> <br> </div> <div class="options-text"> [[Seems like a good idea.->Sapoonis: Sex 1]] </div> </div>
<div class="text-display"> <div class="body-text"> You twist on the slick mattress and turn over onto your back. Sapoonis straddles you. You wonder how much soap she's used. Both you and her are covered in thick clumps of bubbly congeries.<br> <br> "Now for your front," Sapoonis says.<br> <br> She bends over and rubs her soapy tits all over your naked chest. She kisses you lightly on the lips as her nipples dance circles around yours.<br> <br> Then she sits back up. She flattens your erection against your abdomen and slides the groove of her sex along it like a rail.<br> <br> "Time to wash the dirtiest part of your body," Sapoonis says. "I have a very special technique for that."<br> <br> She lifts her hips up, wraps a hand around your lathered-up cock and guides it to the opening of her pussy.<br> <br> She sighs as she sits down.<br> <br> </div> <div class="options-text"> [[Continue.->Sapoonis: Sex 2]] </div> </div>
<div class="text-display"> <div class="body-text"> As much as you want to come, it's been a long night. You're not sure you have anything left.<br> <br> "Oh, are you struggling?" Sapoonis asks. "Don't tell me you've let those other dirty girls suck too much out of you. We'll have to do something about that."<br> <br> </div> <div class="options-text"> [[Time for something special...->Sapoonis: Bad End 1]] </div> </div>
<div class="text-display"> <div class="body-text"> She's right. You couldn't hold out long. You grunt and your hips buck as the orgasm crashes through you like a wave. Her pussy convulses around you, massaging more of that delectable foam into your sensitive flesh. Your cock throbs hard and you ejaculate hard inside her.<br> <br> Then you crash back on the squeaky airbed. Sapoonis flops down on top of you.<br> <br> <<if $allHarlots[$hi].affection gt 2>> "Mmm, you were good, so I'll reward you with something a little special," Sapoonis says.<br> <br> <<set _optionsText to "[[Something special?->Sapoonis: Sex: Bonus]]">> <<else>> <<set _optionsText to "[[That felt good.->Sapoonis: Good End]]">> <</if>> </div> <div class="options-text"> _optionsText </div> </div>
<div class="text-display"> <div class="body-text"> Sapoonis lies on top of you and entwines her arms around you.<br> <br> "Let's make you a little more comfortable."<br> <br> And then there is foam welling up all around you. This time there is no mistaking where it is coming from. It bubbles up from her nipples, the pores of her skin, and – most noticeably – her vagina. Your cock is smothered in tingling bubbles, then your balls, then your whole waist. She keeps pumping out more until you're surrounded in a cocoon of glistening bubbles.<br> <br> Sapoonis smiles down at you, her blue eyes bright. "That should relax you."<br> <br> You are relaxed. A little //too// relaxed. Your limbs are reluctant to respond to any signal from your head. Aside from that, the foam feels strangely pleasant, and also arousing.<br> <br> "And now a little something to help you come."<br> <br> </div> <div class="options-text"> [[Continue.->Sapoonis: Bad End 2]] </div> </div>
<div class="text-display"> <div class="body-text"> She hugs you tight and more of that pleasant tingling foam wells up all around you. It covers you both in thick drifts of wobbling spume. Her vagina puffs little pillows of bubbles around your cock and the sensation is incredible. You stay erect inside her and your cock strains, eager to feel more kisses of her special foam.<br> <br> "I have your cum," Sapoonis whispers. It allows me to tailor my foam specifically for you. It will feel even more pleasant. The next one will be even stronger. You won't be able to hold on, so don't try to fight it. Let it carry you away on a wave of bliss."<br> <br> Her vagina puffs more rings of creamy foam around your sensitised member. It's thicker and the sensation of her walls rubbing it into you is even more erotic. Your cock throbs and twitches. You feel the need to come welling up inside you.<br> <br> </div> <div class="options-text"> [[Continue.->Sapoonis: Sex: 2nd Semen Check]] </div> </div>
"I'm so glad you chose me," Sapoonis says. "I'll make this really special for you."<br> <br> <div class="text-display"> <div class="body-text"> [[Time for something special...->Sapoonis: Bad End 1]] </div> </div> </div>
<div class="text-display"> <div class="body-text"> Finally, you lie back, satisfyingly spent. Sapoonis lies on top of you. You lay entwined for a short while. The water and soap suds you're lying in start to cool.<br> <br> Sapoonis slides off you and stands up.<br> <br> "Mmm, wasn't that nice," she says. "I told you I give a heavenly soapy massage."<br> <br> She fetches you a fluffy towel. You dry yourself off and start to put your clothes back on.<br> <br> "The slime girls claim to be the best at this, but I wouldn't trust those brainless amoebas."<br> <br> Sapoonis is already sliding back into her bubble bath as you walk to the exit. You suspect the water is more her natural habitat.<br> <br> <<set $isFactionIncrease to true>> <<set $player.roomScores[$currentRound - 1].scoreArray[3][1] to true>> </div> <div class="options-text"> [[You leave.->Bar Interior]] </div> </div>
"It won't be necessary, but I like the way you're thinking."<br> <br> Sapoonis's blue eyes glimmer as she gives you a knowing smile.<br> <br>
<div class="text-display"> <div class="body-text"> <<set $semenChange to -1>> <<include [[Unchecked Semen Change]]>> Her pussy exhales more tingling foam, but this time keeps it inside and lets the internal motions of her sex massage it into you. That pleasant sensation seeps down into your balls, and they start to feel bloated and full. On the edge.<br> <br> She wriggles her hips against you. "It's coming. I can feel it."<br> <br> So can you. You feel it rise up within you like a great wave and then crash up into her in a great shuddering climax.<br> <br> "Oh, so nice," Sapoonis sighs as she rides your bucking form.<br> <br> Fuck, you needed that, you think, as you empty a massive load into her bubbly pussy.<br> <br> And it's not over.<br> <br> </div> <div class="options-text"> [[Continue.->Sapoonis: Bad End 3]] </div> </div>
<div class="text-display"> <div class="body-text"> <<set $semenChange to -3>> <<set _multiSpurt to true>> <<include [[Unchecked Semen Change]]>> Sapoonis smiles down at you. "Mmm, I don't often get a chance to do this."<br> <br> Her vagina pulses. More foam wells up out of her in glistening waves. The bubbles seem tighter packed. The foam thicker, creamier, somehow more //lascivious//. Before you even have a chance to recover from the last orgasm, you feel a pleasant clench in your loins and your throbbing manhood is erupting again.<br> <br> "It's a special trait of mine."<br> <br> More foam. You're buried in great drifts of wobbling spume. It squelches and flies off in clumps as Sapoonis bounces up and down on you. And then another powerful orgasm is shuddering through you.<br> <br> This can't be natural, to repeat again so soon.<br> <br> She wriggles and twists. Her vagina squeezes and rubs.<br> <br> And again.<br> <br> "The more you come inside me, the more pleasant I can make my foam feel to you."<br> <br> </div> <div class="options-text"> [[Continue.->Sapoonis: Bad End 4]] </div> </div>
<div class="text-display"> <div class="body-text"> <<set $semenChange to $player.semenCount * -1>> <<set _multiSpurt to true>> <<include [[Unchecked Semen Change]]>> Her foam wells up around you in a dense, shimmering cocoon. You are enveloped all over in crackling, effervescing bliss. You come again and feel the first twinges of overuse in your loins.<br> <br> "And the more pleasant my foam feels, the more you come."<br> <br> To demonstrate, she gives your cock a little squeeze with her pussy. You go off like a stick of dynamite, mixing more of your issue with her heavenly foam. You don't have any control now. It's just a continuous gush.<br> <br> "It's an inescapable cycle," Sapoonis says. "Not that any of those caught in it have ever complained. And neither will you."<br> <br> Foam spills out as she presses her body against yours. She rubs her lovely tits against your chest.<br> <br> "So lie back and give yourself to bliss," she whispers.<br> <br> Her foam swells up and covers you entirely. Within it you come, and come, and come, until you have no fluids left to come with. Sapoonis has drained them all from your body, and with them – your life.<br> <br> ''BAD END''<br> <br> <<set $isGameOver to true>> </div> <div class="options-text"> [[Continue.->Intro: Begin New Game]] </div> </div>
<div class="text-display"> <div class="body-text"> Her vagina is warm, tight and //frothy//. It wells up and spills out of her sex in bubbly waves. You hear wet squelches as your bodies come together.<br> <br> She must have got soap up there. A lot of it. The bubbles crackle against your sensitive glans as you slide back and forth inside her. It's a strange but not unpleasant sensation.<br> <br> Sapoonis bends over and covers you with her warm, soapy body. She kisses you lightly on the lips. She continues to work her hips against you with lithe bounces. Wet squelching noises – the air mattress, your bodies – fill the room.<br> <br> "You won't hold out long, but try your best," Sapoonis says to you.<br> <br> The inner walls of her vagina shudder. And then warm tingling foam is welling up all around you. Where is it coming from? Her body?<br> <br> Mostly her vagina, it seems.<br> <br> Your erection is enveloped in a tingling cocoon of foam, and her fleshy walls squeeze and massage it into your cock. It tingles, and then translates to a pleasant, relaxing feeling that travels all the way down to your loins. You're gripped by the strong urge to come.<br> <br> </div> <div class="options-text"> [[Continue.->Sapoonis: 1st Semen Check]] </div> </div>
<<set $semenChange to -1>> <<set $isOutOfSemen to false>> <<include [[Checked Semen Change]]>> <<if $isOutOfSemen>> <<include [[Sapoonis: No Semen]]>> <<else>> <<include [[Continue.->Sapoonis: Sex: 1st Ejaculation]]>> <</if>>
<<set $semenChange to -2>> <<set $isOutOfSemen to false>> <<include [[Checked Semen Change]]>> <<if $isOutOfSemen>> <<include [[Sapoonis: No Semen]]>> <<else>> <<include [[Sapoonis: Sex: 2nd Ejaculation]]>> <</if>>
<div class="text-display"> <div class="body-text"> <<set $player.roomScores[$currentRound - 1].scoreArray[4][1] to true>> You can't hold it in. You jerk and buck as your loins are gripped with orgasmic spasms. You moan uncontrollably in pleasure as you empty a great stream of semen inside her, even more than the previous ejaculation just scant moments before.<br> <br> </div> <div class="options-text"> [[That felt good.->Sapoonis: Good End]] </div> </div>
<div id="hohh-ui"></div> <div id="character-sheet"></div> <div id="hohh-fullart"></div> <div class="all-container"> <div id="hohh-art"></div> <div class="text-container"> <div id="passages"></div> </div> </div>
/* Move all the semen changes to one location. Can put all the triggers on semen count stat here. Can also track if player has been drained enough to trigger a Bad End. */ /* semen choker acts here to reduce all semen lost to units of 1 */ <<if $player.charms.includes(18) and $semenChange lt -1>> <<if $isTesting>> ''Semen loss changed from $semenChange to -1 thanks to Semen Choker Charm.''<br> <br> <</if>> <<set $semenChange to -1>> <</if>> <<set $player.semenCount += $semenChange>> <<if $player.semenCount lt 0>> <<set $isOutOfSemen to true>> /* triggers bad end */ <<set $player.semenCount to 0>> <</if>> <<if $player.semenCount gt $player.maxSemenCount>> <<set $player.semenCount to $player.maxSemenCount>> <</if>> <<if $semenChange lt 0 and not $isOutOfSemen>> <<script>>window.singleSemenSplurt(1000)<</script>> <</if>>
<<set $harlotCount to 1>> <<set $allHarlots = []>> <<for _harlotNum to 0; _harlotNum lt $harlotCount; _harlotNum++>> <<set $initLink to "Harlot" + _harlotNum + "Init">> <<include $initLink>> <</for>>
/* This is the way to do semen count changes in Bad End scenarios or where the player isn't coming back. Updates semen count, but only checks it stays at zero */ <<set $player.semenCount += $semenChange>> <<if $player.semenCount lt 0>> <<set $player.semenCount to 0>> <</if>> <<if $player.semenCount gt $player.maxSemenCount>> <<set $player.semenCount to $player.maxSemenCount>> <</if>> <<if _multiSpurt eq true>> <<script>>window.tripleSemenSplurt(1000)<</script>> <<else>> <<script>>window.singleSemenSplurt(1000)<</script>> <</if>>
<<if $isTesting or $player.charms.includes(1)>> <<set _semenText to $player.semenCount>> <<else>> <<if $player.semenCount gt 8>> <<set _semenText to "Floods">> <<elseif $player.semenCount gt 5>> <<set _semenText to "Gushes">> <<elseif $player.semenCount gt 2>> <<set _semenText to "Spurts">> <<else>> <<set _semenText to "Dribbles">> <</if>> <</if>> <<set _semenText to $player.semenCount>> <div class="semen-gauge"> <<set _imgSrc to $imgLoc + "UI_SemenGaugeBack.png">> <<set _img to "\<img src=\"" + _imgSrc + "\" id=\"semen-back\"\>">> _img </div> <div class="semen-gauge"> <<set _imgSrc to $imgLoc + "UI_SemenBar.png">> <<set _img to "\<img src=\"" + _imgSrc + "\" id=\"semen-bar\"\>">> _img </div> <div class="semen-gauge"> <div class="img-container"> <<if $isGameOver>> <<set _imgSrc to $imgLoc + "UI_SemenGaugeFore_Cracked.png">> <<set _img to "\<img src=\"" + _imgSrc + "\" id=\"semen-fore\"\>">> _img <<else>> <<set _imgSrc to $imgLoc + "UI_SemenGaugeFore.png">> <<set _img to "\<img src=\"" + _imgSrc + "\" id=\"semen-fore\"\>">> _img <</if>> <div class="ui-text semen-text">_semenText</div> </div> </div> <div id="semen-splurt-container"> <<set _imgSrc to $imgLoc + "UI_Splurt.png">> <<set _img to "\<img src=\"" + _imgSrc + "\" width=\"64px\" height=\"64px\" id=\"semen-splurt\"\>">> _img </div>
<div class="ui-img-container" id="round-counter"> <div class="ui-text">$currentRound</div> </div> <<set _delta to $currentRound - 1>> <<if _delta lt 0>> <<set _delta to 0>> <</if>> <<if _delta gt 3>> <<set _delta to 3>> <</if>> <<set _clockSpriteXPos to -64 * _delta>> <<set _clockSrc to $imgLoc + "UI_ClockSprites.png">> <<script>> $(document).on(':passagedisplay', function (ev) { $('#round-counter').css("background", "url('" + State.getVar("_clockSrc") + "') " + State.getVar("_clockSpriteXPos") + "px 0px"); }); <</script>>
<<if $player.currIsSubmissive>> <<set _isSubText to "Submissive">> <<else>> <<set _isSubText to "Dominant">> <</if>> <<if $player.currIsSlutty>> <<set _isSlutText to "Slutty">> <<else>> <<set _isSlutText to "Romantic">> <</if>> <<if $player.currIsSerious>> <<set _isSeriousText to "Serious">> <<else>> <<set _isSeriousText to "Humorous">> <</if>> <<if $player.currIsCautious>> <<set _isCautiousText to "Cautious">> <<else>> <<set _isCautiousText to "Impulsive">> <</if>> <<if $player.currIsBlunt>> <<set _isBluntText to "Blunt">> <<else>> <<set _isBluntText to "Tactful">> <</if>> <<if $player.currIsGloomy>> <<set _isGloomyText to "Gloomy">> <<else>> <<set _isGloomyText to "Cheerful">> <</if>> <div class="csheet-main"> <div class="csheet-hflex-container csheet-vflex-sitem csheet-subborder"> <<include [[Character Sheet: Generate Header]]>> </div> <div class="csheet-vflex-container csheet-vflex-bitem csheet-statcontainer"> <div class="csheet-xflex-container csheet-vflex-sitem"> <div class="csheet-vflex-container csheet-xflex-item"> <div class="csheet-title csheet-vflex-sitem csheet-subborder">Physical Stats</div> <div class="csheet-table csheet-vflex-bitem csheet-subborder"> <<include [[Character Sheet: Generate Phys Stats Display]]>> </div> </div> <div class="csheet-vflex-container csheet-xflex-item"> <div class="csheet-title csheet-vflex-sitem csheet-subborder">Personality</div> <div class="csheet-table csheet-vflex-bitem csheet-subborder"> <<include [[Character Sheet: Generate Personality Display]]>> </div> </div> </div> <div class="csheet-xflex-container csheet-vflex-bitem"> <div class="csheet-vflex-container csheet-xflex-item"> <div class="csheet-title csheet-vflex-sitem csheet-subborder">Charms</div> <div class="csheet-table csheet-vflex-bitem csheet-subborder"> <<include [[Character Sheet: Generate Charms Display]]>> </div> </div> <div class="csheet-vflex-container csheet-xflex-item"> <div class="csheet-title csheet-vflex-sitem csheet-subborder">Ailments</div> <div class="csheet-table csheet-vflex-bitem csheet-subborder"> <<include [[Character Sheet: Generate Ailments Display]]>> </div> </div> </div> </div> </div>
<table style="width:100%"> <tr> <td class="stat-label">Strength:</td> <td class="stat-value">$player.currStr</td> </tr> <tr> <td class="stat-label">Agility:</td> <td class="stat-value">$player.currAgi</td> </tr> <tr> <td class="stat-label">Dexterity:</td> <td class="stat-value">$player.currDex</td> </tr> <tr> <td class="stat-label">Constitution:</td> <td class="stat-value">$player.currConst</td> </tr> <tr> <td class="stat-label">Willpower:</td> <td class="stat-value">$player.currWill</td> </tr> <tr> <td class="stat-label">Intelligence:</td> <td class="stat-value">$player.currInt</td> </tr> </table>
<table style="width:100%"> <tr> <td class="stat-label">_isSubText</td> </tr> <tr> <td class="stat-label">_isSlutText</td> </tr> <tr> <td class="stat-label">_isSeriousText</td> </tr> <tr> <td class="stat-label">_isCautiousText</td> </tr> <tr> <td class="stat-label">_isBluntText</td> </tr> <tr> <td class="stat-label">_isGloomyText</td> </tr> </table>
<table style="width:100%"> <<for _c to 0; _c lt $player.charms.length; _c++>> <<set _cid to $player.charms[_c]>> <tr> <td class="stat-label">$allCharms[_cid].name</td> </tr> <</for>> </table>
<table style="width:100%"> <<for _c to 0; _c lt $player.knownAilments.length; _c++>> <<set _cid to $player.knownAilments[_c]>> <tr> <td class="stat-label">$allAilments[_cid].name</td> </tr> <</for>> </table>
<div class="csheet-title csheet-maintitle"> Character Sheet </div> <div> <button onclick="window.toggleCharSheet()" class="csheet-btn"> <img src="images/UI_CSheet_Close.jpg"> </button> </div>
<div id="hohh-ui"> <<include [[UILeftArt]]>> <<include [[UISemen]]>> <<include [[UIRound]]>> <<include [[UIPlayer]]>> <<include [[UIMoney]]>> <<include [[UISave]]>> <<include [[UIRightArt]]>> </div>
<div> <button onclick="window.toggleCharSheet()" class="player-btn"> <<set _imgSrc to $imgLoc + "UI_Player.png">> <<set _img to "\<img src=\"" + _imgSrc + "\" width=\"56\" height=\"56\"\>">> _img </button> </div>
<div class="ui-money-box"> <div class="ui-money-container"> <<set _imgSrc to $imgLoc + "UI_MToken.jpg">> <<set _img to "\<img src=\"" + _imgSrc + "\"\>">> _img <div class="ui-text">$player.mulliganTokens</div> </div> <div class="ui-money-container"> <<set _imgSrc to $imgLoc + "UI_Coin.png">> <<set _img to "\<img src=\"" + _imgSrc + "\"\>">> _img <div class="ui-text">$player.money</div> </div> </div>
<div> <span class="save-btn"> <<set _imgSrc to $imgLoc + "UI_SaveGame.png">> <<button [img[_imgSrc]]>><<script>>UI.saves()<</script>><</button>> </span> </div> /* <div> <button onclick="<<script>>UI.saves()<</script>>" class="ui-btn save-btn"> <img src="images/UI_SaveGame.png" width="56" height="56"> </button> </div> */
/* Only add art if npc present */ <<if $npcsForArt.length gt 0>> <<if $npcsForArt[0] gt 99>> <<include [[Set Harlot Art]]>> <<else>> <<include [[Set Portrait Art]]>> <</if>> <</if>>
<<for _i to 0; _i lt $allNpcs.length; _i++>> $allNpcs[_i].name<br> <</for>>
<<for _i to 0; _i lt $allLocations.length; _i++>> $allLocations[_i].npc<br> <</for>>
<<set _imgSrc to $imgLoc + $allLocations[$player.location].backgroundSrc>> <<run $('body').css("background", "white url('" + _imgSrc + "') no-repeat center fixed")>> <<run $('body').css("background-size", "cover")>>
/* For when we want to check semen change in advance to pick a path but not update semen count. Does not update semen count Call Checked Semen Change later to do this (not Unchecked change) */ /* semen choker acts here to reduce all semen lost to units of 1 */ <<if $player.charms.includes(18) and $semenChange lt -1>> <<if $isTesting>> ''Semen loss changed from $semenChange to -1 thanks to Semen Choker Charm.''<br> <br> <</if>> <<set $semenChange to -1>> <</if>> <<set _tempSemenCount to $player.semenCount>> <<set _tempSemenCount += $semenChange>> <<if _tempSemenCount lt 0>> <<set $isOutOfSemen to true>> /* triggers bad end */ <</if>>
<div class="ui-left-art"></div>
<div class="ui-right-art"></div>
<div class="csheet-container"> <<include [[Character Sheet: Generate]]>> </div> <<set _csheetbgSrc to $imgLoc + "BG_CharacterSheet.jpg">> <<script>> $(document).on(':passagedisplay', function (ev) { $('.csheet-container').css("background", "white url('" + State.getVar("_csheetbgSrc") + "') no-repeat center fixed"); }); $(document).on(':passagedisplay', function (ev) { $('.csheet-container').css("background-size", "cover"); }); <</script>>
<<set _imgSrc to $imgLoc + "HA_Sapoonis.jpg">> <<set _img to "\<img src=\"" + _imgSrc + "\" class=\"full-art\"\>">> <<link _img>><<script>>window.toggleFullArt()<</script>><</link>>
<<set _imgSrc to $imgLoc + "HA_Sapoonis.jpg">> <<set _imgSrcS to $imgLoc + "HA_Sapoonis_S.jpg">> <<set _img to "\<picture class=\"pinup-container\"\> \<source media=\"(min-width:800px)\" srcset=\"" + _imgSrc + "\"\> \<img src=\"" + _imgSrcS + "\" class=\"pinup-art\"\> \<\/picture\>">> <<link _img>><<script>>window.toggleFullArt()<</script>><</link>>
/* should be no more than 3 portraits */ <div class="portrait-container"> <<for _i to 0; _i lt $npcsForArt.length; _i++>> <<set _npc to $npcsForArt[_i]>> <<set _imgSrc to $imgLoc + $allNpcs[_npc].portrait + ".jpg">> <<set _imgSrcS to $imgLoc + $allNpcs[_npc].portrait + "_S.jpg">> <<set _img to "\<picture\> \<source media=\"(min-width:800px) and (min-height:800px)\" srcset=\"" + _imgSrc + "\"\> \<img src=\"" + _imgSrcS + "\" class=\"portrait-art\"\> \<\/picture\>">> _img <</for>> </div>